From eab56680239fdd662bd7b401e0246c0f6e5aea01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BD=98=E8=8D=A3=E6=99=9F?= <9691125+pan-rongsheng@user.noreply.gitee.com> Date: Fri, 26 Sep 2025 14:59:38 +0800 Subject: [PATCH 001/120] =?UTF-8?q?=E6=A8=A1=E7=89=88=E7=BC=96=E5=88=B6?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/tmpltp/enums/DeleteStatusEnum.java | 2 +- .../templtp/TemplateInstanceController.java | 10 +- .../OnlyOfficeCallbackServiceImpl.java | 22 ++- .../admin/templtp/vo/DisableEnableReqVO.java | 2 +- .../tmpltp/TemplateInstanceService.java | 4 +- .../tmpltp/TemplateInstanceServiceImpl.java | 128 ++++++++++-------- 6 files changed, 101 insertions(+), 67 deletions(-) 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..9616b91 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,7 @@ 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());}}); private final String code; 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..f21f064 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 @@ -59,11 +59,11 @@ public class TemplateInstanceController extends AbstractFileUploadController { 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 = "创建模板实例") 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..108553e 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,14 @@ 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 lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -13,6 +16,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; @@ -23,6 +28,7 @@ import static com.zt.plat.module.base.controller.admin.templtp.onlyoffice.util.U 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()); @@ -151,7 +157,21 @@ public class OnlyOfficeCallbackServiceImpl implements OnlyOfficeCallbackService fileCreateReqDTO.setDirectory(directory); // 设置文件存储目录 // 7. 调用文件服务创建文件 - CommonResult result = fileApi.createFile(fileCreateReqDTO); + CommonResult result = fileApi.createFileWithReturn(fileCreateReqDTO); + if (result.isSuccess()) { + // 创建文件成功,处理结果 + log.info("文件创建成功,文件ID:{}", result.getData()); + // 创建文件成功,处理结果 + FileRespDTO fileRespDTO = result.getData(); + Map fileInfo = new HashMap<>(); + fileInfo.put("id", 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/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/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..505c287 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 @@ -83,6 +83,8 @@ public interface TemplateInstanceService { Map getVersion(String id); List listByCdg(String cdg); +// +// Map saveFile(MultipartFile file, String id); - Map saveFile(MultipartFile file, String id); + boolean updateTemplateInstanceFileUrlByInstanceId(@Valid @NotEmpty(message = "模版实例id不能为空") String id, @Valid @NotEmpty(message = "文件参数不能为空") String params); } 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..307d600 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 @@ -94,7 +94,7 @@ 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); } @@ -148,7 +148,7 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService { } -// private String incrementVersion(String currentVersion) { + // private String incrementVersion(String currentVersion) { // // 处理空值或空字符串 // if (currentVersion == null || currentVersion.trim().isEmpty()) { // return "v1.0"; @@ -205,40 +205,40 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService { // String newNumberPart = String.join(".", segments); // return prefix + newNumberPart + suffix; // } -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"; + } + + 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) { @@ -270,7 +270,7 @@ private String incrementVersion(String currentVersion) { throw exception(STATUS_OPERATION_FAIL); } }); - + log.info("发布模版实例【{}】", publishReqVOS.stream().map(PublishTemplateInstanceReqVO::getId)); templateInstanceMapper.update(new LambdaUpdateWrapper() .in(TemplateInstanceDO::getId, publishReqVOS.stream() .map(PublishTemplateInstanceReqVO::getId) @@ -286,14 +286,18 @@ private String incrementVersion(String currentVersion) { @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(); } + 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())); @@ -312,15 +316,15 @@ private String incrementVersion(String currentVersion) { newTpInstanceDO.setUpdateTime(null); templateInstanceMapper.insert(newTpInstanceDO); templateInstanceMapper.update(new LambdaUpdateWrapper() - .set(TemplateInstanceDO::getSts,TmplStsEnum.STOPPED.getCode()) + .set(TemplateInstanceDO::getSts, TmplStsEnum.STOPPED.getCode()) .eq(TemplateInstanceDO::getId, 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 +334,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 +356,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 +366,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,11 +383,7 @@ private String incrementVersion(String currentVersion) { return templateInstanceRespVOS; } - @Override - public Map saveFile(MultipartFile file, String id) { - return Map.of(); - } @Override @@ -392,6 +393,13 @@ private String incrementVersion(String currentVersion) { templateInstanceRespVO.setTemplateInstanceDataRespVOS(setTemplateInstanceDataRespVOS(templateInstanceRespVO.getId())); // 实例字段 } + @Override + public boolean updateTemplateInstanceFileUrlByInstanceId(String id, String params) { + validateTemplateInstanceExists(Long.valueOf(id)); + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(TemplateInstanceDO::getId, id).set(TemplateInstanceDO::getCntt, params); + return templateInstanceMapper.update(updateWrapper)>0; + } // 实例条款值 private List setInstanceItemRespVOS(Long id) { List templateInstanceItemDOS = templateInstanceItemMapper.selectList(new LambdaQueryWrapper() @@ -400,7 +408,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 +419,7 @@ private String incrementVersion(String currentVersion) { } }); }); - return templateInstanceItemRespVOS ; + return templateInstanceItemRespVOS; } // 实例数据 @@ -428,6 +436,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 +469,8 @@ private String incrementVersion(String currentVersion) { throw exception(STATUS_OPERATION_FAIL); } } - private String getCdg(){ + + private String getCdg() { return "TP" + DateUtils.format(new Date(), "yyyyMMddHHmmssSSS") + RandomUtil.randomNumbers(4); } } From 7507a53c8a11dd97a273eefa8b5a9caadb044c9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BD=98=E8=8D=A3=E6=99=9F?= <9691125+pan-rongsheng@user.noreply.gitee.com> Date: Fri, 26 Sep 2025 16:41:11 +0800 Subject: [PATCH 002/120] =?UTF-8?q?=E6=A8=A1=E7=89=88=E7=BC=96=E5=88=B6?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../templtp/TemplateInstanceController.java | 27 +++++-- .../OnlyOfficeCallbackServiceImpl.java | 79 ++++++++++--------- .../templtp/vo/TemplateInstanceRespVO.java | 12 ++- .../rpc/config/RpcConfiguration.java | 2 +- .../tmpltp/TemplateInstanceService.java | 4 +- .../tmpltp/TemplateInstanceServiceImpl.java | 22 ++++-- 6 files changed, 88 insertions(+), 58 deletions(-) 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 f21f064..304ba34 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 @@ -55,6 +55,7 @@ public class TemplateInstanceController extends AbstractFileUploadController { setFileUploadInfo(annotation); } } + @Resource private TemplateInstanceService templateInstanceService; @@ -105,6 +106,9 @@ public class TemplateInstanceController extends AbstractFileUploadController { public CommonResult getTemplateInstance(@RequestParam("id") Long id) { TemplateInstanceDO templateInstance = templateInstanceService.getTemplateInstance(id); TemplateInstanceRespVO templateInstanceRespVO = BeanUtils.toBean(templateInstance, TemplateInstanceRespVO.class); + if (templateInstance == null) { + return success(templateInstanceRespVO); + } templateInstanceService.getDetailedInfo(templateInstanceRespVO); return success(templateInstanceRespVO); } @@ -116,7 +120,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 +156,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 +186,13 @@ 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)); } } 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 108553e..a774c75 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 @@ -9,6 +9,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 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; @@ -26,56 +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) { + log.info("收到OnlyOffice文档回调: {}", callback.getKey()); + log.info("回调状态: {}", callback.getStatus()); // 根据不同的状态处理回调 switch (callback.getStatus()) { case 1: - handleEditingStatus(callback,id); + handleEditingStatus(callback, id); break; case 2: - handleDocumentSaved(callback,id); + handleDocumentSaved(callback, id); break; case 3: - handleSaveError(callback,id); + handleSaveError(callback, id); break; case 4: - handleDocumentClosedWithoutChanges(callback,id); + handleDocumentClosedWithoutChanges(callback, id); break; case 6: - handleForcedSave(callback,id); + handleForcedSave(callback, id); break; case 7: - handleForcedSaveError(callback,id); + handleForcedSaveError(callback, id); 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) { + 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); } } } @@ -83,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) { + log.info("文档 {} 已准备好保存", callback.getKey()); + saveDocument(callback, id); // 处理历史记录 - // 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) { + 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) { + log.info("文档 {} 已关闭,未做任何更改", callback.getKey()); // 可以在这里添加清理资源等逻辑 } /** * 处理强制保存的状态 */ - private void handleForcedSave(OnlyOfficeCallback callback,String id) { - log.info("Document {} forced save. Type: {}", + private void handleForcedSave(OnlyOfficeCallback callback, String id) { + log.info("文档 {} 执行强制保存。类型: {}", callback.getKey(), callback.getForceSaveType()); - saveDocument(callback,id); + saveDocument(callback, id); // 处理历史记录 - 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) { + log.error("文档 {} 强制保存时出错", callback.getKey()); // 可以在这里添加错误处理逻辑 } /** * 保存文档到存储 */ - private void saveDocument(OnlyOfficeCallback callback,String id) { + private void saveDocument(OnlyOfficeCallback callback, String id) { if (callback.getUrl() == null) { log.error("文件路径为空"); return; @@ -182,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方法存储 } @@ -201,8 +202,8 @@ 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下载并解析表单数据 } 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..324aa38 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,18 @@ 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; + } 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/tmpltp/TemplateInstanceService.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TemplateInstanceService.java index 505c287..10586bc 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 接口 @@ -86,5 +84,5 @@ public interface TemplateInstanceService { // // Map saveFile(MultipartFile file, String id); - boolean updateTemplateInstanceFileUrlByInstanceId(@Valid @NotEmpty(message = "模版实例id不能为空") String id, @Valid @NotEmpty(message = "文件参数不能为空") String params); + void updateTemplateInstanceFileUrlByInstanceId(@Valid @NotEmpty(message = "模版实例id不能为空") String id, @Valid @NotEmpty(message = "文件参数不能为空") String params); } 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 307d600..9209ddc 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,7 +13,8 @@ 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; @@ -23,7 +24,6 @@ import lombok.extern.slf4j.Slf4j; 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 +45,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 @@ -55,6 +55,9 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService { @Resource private TemplateInstanceItemMapper templateInstanceItemMapper; + @Resource + private TmplTpService tmplTpService; + private static final Pattern VERSION_PATTERN = Pattern.compile("^(.*?)([0-9]+(?:\\.[0-9]+)*)(.*)$"); @Override @@ -312,6 +315,7 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService { newTpInstanceDO.setId(null); newTpInstanceDO.setVer(incrementVersion(templateInstanceDO.getVer())); newTpInstanceDO.setPublishTime(LocalDateTime.now()); + newTpInstanceDO.setOrigCntt(templateInstanceDO.getCntt()); newTpInstanceDO.setCreateTime(null); newTpInstanceDO.setUpdateTime(null); templateInstanceMapper.insert(newTpInstanceDO); @@ -391,14 +395,22 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService { 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 boolean updateTemplateInstanceFileUrlByInstanceId(String id, String params) { + public void updateTemplateInstanceFileUrlByInstanceId(String id, String params) { validateTemplateInstanceExists(Long.valueOf(id)); LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.eq(TemplateInstanceDO::getId, id).set(TemplateInstanceDO::getCntt, params); - return templateInstanceMapper.update(updateWrapper)>0; + templateInstanceMapper.update(updateWrapper); } // 实例条款值 private List setInstanceItemRespVOS(Long id) { From abf9607c43a441f696732511173ef973775a944a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BD=98=E8=8D=A3=E6=99=9F?= <9691125+pan-rongsheng@user.noreply.gitee.com> Date: Fri, 26 Sep 2025 16:43:34 +0800 Subject: [PATCH 003/120] =?UTF-8?q?=E6=A8=A1=E7=89=88=E7=BC=96=E5=88=B6?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/templtp/onlyoffice/util/UrlFileDownloader.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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..9339c09 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 @@ -79,7 +79,7 @@ public class UrlFileDownloader { } /** - * 从URL和响应头中提取文件名 + * 从URL和响应头中提取文件名。 */ private static String getFileNameFromUrl(String fileUrl, URLConnection connection) { // 优先从响应头的Content-Disposition获取(如:attachment;filename="test.pdf") From fa7c08a493b3684475c4b1dcc237bbaa24b0096f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BD=98=E8=8D=A3=E6=99=9F?= <9691125+pan-rongsheng@user.noreply.gitee.com> Date: Fri, 26 Sep 2025 17:13:10 +0800 Subject: [PATCH 004/120] =?UTF-8?q?=E6=A8=A1=E7=89=88=E7=BC=96=E5=88=B6?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../OnlyOfficeCallbackController.java | 4 +-- .../service/OnlyOfficeCallbackService.java | 2 +- .../OnlyOfficeCallbackServiceImpl.java | 35 +++++++++---------- 3 files changed, 20 insertions(+), 21 deletions(-) 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..3735ad1 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,9 @@ 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); 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..7ba5e38 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,5 @@ public interface OnlyOfficeCallbackService { * 处理OnlyOffice回调 * @param callback 回调数据 */ - void processCallback(OnlyOfficeCallback callback,String id); + void processCallback(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 a774c75..017c24a 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 @@ -31,29 +31,29 @@ public class OnlyOfficeCallbackServiceImpl implements OnlyOfficeCallbackService private final TemplateInstanceService templateInstanceService; @Override - public void processCallback(OnlyOfficeCallback callback, String id) { + 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("收到未知的回调状态: {}", callback.getStatus()); @@ -63,7 +63,7 @@ public class OnlyOfficeCallbackServiceImpl implements OnlyOfficeCallbackService /** * 处理文档正在编辑的状态 */ - private void handleEditingStatus(OnlyOfficeCallback callback, String id) { + private void handleEditingStatus(OnlyOfficeCallback callback, String id,String fileName) { log.info("文档 {} 正在被以下用户编辑: {}", callback.getKey(), callback.getUsers()); @@ -84,9 +84,9 @@ public class OnlyOfficeCallbackServiceImpl implements OnlyOfficeCallbackService /** * 处理文档已保存的状态 */ - private void handleDocumentSaved(OnlyOfficeCallback callback, String id) { + private void handleDocumentSaved(OnlyOfficeCallback callback, String id,String fileName) { log.info("文档 {} 已准备好保存", callback.getKey()); - saveDocument(callback, id); + saveDocument(callback, id,fileName); // 处理历史记录 // handleHistoryChanges(callback,id); @@ -95,7 +95,7 @@ public class OnlyOfficeCallbackServiceImpl implements OnlyOfficeCallbackService /** * 处理保存错误的状态 */ - private void handleSaveError(OnlyOfficeCallback callback, String id) { + private void handleSaveError(OnlyOfficeCallback callback, String id,String fileName) { log.error("保存文档 {} 时出错", callback.getKey()); // 可以在这里添加错误处理逻辑,如发送通知等 } @@ -103,7 +103,7 @@ public class OnlyOfficeCallbackServiceImpl implements OnlyOfficeCallbackService /** * 处理文档关闭且无更改的状态 */ - private void handleDocumentClosedWithoutChanges(OnlyOfficeCallback callback, String id) { + private void handleDocumentClosedWithoutChanges(OnlyOfficeCallback callback, String id,String fileName) { log.info("文档 {} 已关闭,未做任何更改", callback.getKey()); // 可以在这里添加清理资源等逻辑 } @@ -111,10 +111,10 @@ public class OnlyOfficeCallbackServiceImpl implements OnlyOfficeCallbackService /** * 处理强制保存的状态 */ - private void handleForcedSave(OnlyOfficeCallback callback, String id) { + 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); @@ -128,7 +128,7 @@ public class OnlyOfficeCallbackServiceImpl implements OnlyOfficeCallbackService /** * 处理强制保存错误的状态 */ - private void handleForcedSaveError(OnlyOfficeCallback callback, String id) { + private void handleForcedSaveError(OnlyOfficeCallback callback, String id,String fileName) { log.error("文档 {} 强制保存时出错", callback.getKey()); // 可以在这里添加错误处理逻辑 } @@ -136,7 +136,7 @@ public class OnlyOfficeCallbackServiceImpl implements OnlyOfficeCallbackService /** * 保存文档到存储 */ - private void saveDocument(OnlyOfficeCallback callback, String id) { + private void saveDocument(OnlyOfficeCallback callback, String id,String fileName) { if (callback.getUrl() == null) { log.error("文件路径为空"); return; @@ -147,8 +147,6 @@ public class OnlyOfficeCallbackServiceImpl implements OnlyOfficeCallbackService // 1. 验证文件是否为空 - // 2. 获取并验证文件名 - String fileName = file.getOriginalFilename(); String directory = "模版实例"; FileCreateReqDTO fileCreateReqDTO = new FileCreateReqDTO(); @@ -161,6 +159,7 @@ public class OnlyOfficeCallbackServiceImpl implements OnlyOfficeCallbackService CommonResult result = fileApi.createFileWithReturn(fileCreateReqDTO); if (result.isSuccess()) { // 创建文件成功,处理结果 + result.getData().setContent(null); log.info("文件创建成功,文件ID:{}", result.getData()); // 创建文件成功,处理结果 FileRespDTO fileRespDTO = result.getData(); From dca1830c1bd2e4e15000ff73b65c7e08cef0fb34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BD=98=E8=8D=A3=E6=99=9F?= <9691125+pan-rongsheng@user.noreply.gitee.com> Date: Fri, 26 Sep 2025 17:41:55 +0800 Subject: [PATCH 005/120] =?UTF-8?q?=E6=A8=A1=E7=89=88=E7=BC=96=E5=88=B6?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../onlyoffice/service/OnlyOfficeCallbackServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 017c24a..d152979 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 @@ -164,7 +164,7 @@ public class OnlyOfficeCallbackServiceImpl implements OnlyOfficeCallbackService // 创建文件成功,处理结果 FileRespDTO fileRespDTO = result.getData(); Map fileInfo = new HashMap<>(); - fileInfo.put("id", fileRespDTO.getId()); + fileInfo.put("id",String.valueOf(fileRespDTO.getId())); fileInfo.put("name", fileRespDTO.getName()); fileInfo.put("directory", fileRespDTO.getDirectory()); templateInstanceService.updateTemplateInstanceFileUrlByInstanceId(id, JSONObject.toJSONString(fileInfo)); From 08c3ffef4f40617f3795786b2f36c716a2b9c8fc Mon Sep 17 00:00:00 2001 From: chenbowen Date: Sun, 28 Sep 2025 00:39:22 +0800 Subject: [PATCH 006/120] =?UTF-8?q?1.=E5=8D=87=E7=BA=A7=E7=89=88=E6=9C=AC?= =?UTF-8?q?=203.0.40?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../zt-module-contract-order-server/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 3ba6dd9..3019b22 100644 --- a/pom.xml +++ b/pom.xml @@ -19,7 +19,7 @@ https://github.com/YunaiV/ruoyi-vue-pro - 3.0.39 + 3.0.40 17 ${java.version} 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..07588eb 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,7 +129,7 @@ com.zt.plat zt-module-base-server - 3.0.39 + 3.0.40 compile From 0723c45b96db500f26d2083508899c385fed0c9f Mon Sep 17 00:00:00 2001 From: liss <1780094091@qq.com> Date: Sun, 28 Sep 2025 10:47:10 +0800 Subject: [PATCH 007/120] =?UTF-8?q?=E5=85=AC=E5=8F=B8=E3=80=81=E5=B7=A5?= =?UTF-8?q?=E5=8E=82=E6=96=B0=E5=A2=9Eui=E5=AF=B9=E5=BA=94=E7=BC=BA?= =?UTF-8?q?=E5=B0=91=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/base/vo/FactoryPageReqVO.java | 9 +++++++++ .../admin/base/vo/FactoryRespVO.java | 12 ++++++++++++ .../admin/base/vo/FactorySaveReqVO.java | 9 +++++++++ .../admin/base/vo/WarehousePageReqVO.java | 7 +++++++ .../admin/base/vo/WarehouseRespVO.java | 7 +++++++ .../admin/base/vo/WarehouseSaveReqVO.java | 7 +++++++ .../base/dal/dataobject/base/FactoryDO.java | 19 +++++++++++++++++++ .../base/dal/dataobject/base/WarehouseDO.java | 9 +++++++++ .../base/dal/mysql/base/FactoryMapper.java | 3 +++ .../base/dal/mysql/base/WarehouseMapper.java | 3 +++ 10 files changed, 85 insertions(+) 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/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/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/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/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/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()) From 1fb32bc43f307c4f0f5a0c35b9d4750149095cf6 Mon Sep 17 00:00:00 2001 From: liss <1780094091@qq.com> Date: Sun, 28 Sep 2025 11:09:32 +0800 Subject: [PATCH 008/120] =?UTF-8?q?=E4=BB=93=E5=BA=93=E6=9C=80=E5=A4=A7cod?= =?UTF-8?q?e=E6=9F=A5=E8=AF=A2=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/mapper/base/WarehouseMapper.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 From 2e629b8dc9423a24ec241c1a094f4c9681d8df7f Mon Sep 17 00:00:00 2001 From: chenbowen Date: Sun, 28 Sep 2025 12:17:55 +0800 Subject: [PATCH 009/120] =?UTF-8?q?=E7=BB=9F=E4=B8=80=E8=AE=BE=E7=BD=AE=20?= =?UTF-8?q?api=20=E8=B0=83=E7=94=A8=E6=97=B6=E8=B7=AF=E7=94=B1=E7=9A=84?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../contractorder/enums/ApiConstants.java | 23 +++++++++++++++++++ .../plat/module/erp/enums/ApiConstants.java | 2 +- 2 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/ApiConstants.java 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..f99bcef --- /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,23 @@ +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"; + +} 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..1a4ca8c 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,7 +14,7 @@ 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"; From 5463bc3d16e41231ef897df51b827cdb4e9fb57b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BD=98=E8=8D=A3=E6=99=9F?= <9691125+pan-rongsheng@user.noreply.gitee.com> Date: Sun, 28 Sep 2025 15:11:23 +0800 Subject: [PATCH 010/120] =?UTF-8?q?=E6=A8=A1=E7=89=88=E7=BC=96=E5=88=B6?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tmpltp/enums/ErrorCodeConstants.java | 1 + .../templtp/TemplateInstanceController.java | 14 ++- .../admin/templtp/TmplTpController.java | 11 ++- .../OnlyOfficeCallbackServiceImpl.java | 11 ++- .../onlyoffice/util/UrlFileDownloader.java | 4 +- .../tmpltp/TemplateInstanceDataMapper.java | 4 +- .../tmpltp/TemplateInstanceItemMapper.java | 4 +- ...partmentInstanceRelativityServiceImpl.java | 6 ++ .../TemplateInstanceDataServiceImpl.java | 12 ++- .../TemplateInstanceItemServiceImpl.java | 6 ++ .../tmpltp/TemplateInstanceServiceImpl.java | 99 ++++++------------- .../service/tmpltp/TmplItmServiceImpl.java | 12 ++- .../service/tmpltp/TmplTpFldServiceImpl.java | 7 ++ .../service/tmpltp/TmplTpServiceImpl.java | 21 ++++ .../tmpltp/TemplateInstanceDataMapper.xml | 8 +- .../tmpltp/TemplateInstanceItemMapper.xml | 10 +- 16 files changed, 134 insertions(+), 96 deletions(-) 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..e52b2d0 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 @@ -9,6 +9,7 @@ public interface ErrorCodeConstants { 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, "模版分类删除失败"); 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 304ba34..1107a12 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") @@ -103,14 +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); - if (templateInstance == null) { + if (templateInstanceRespVO != null) { + templateInstanceService.getDetailedInfo(templateInstanceRespVO); + log.info("==================模板实例详情查询成功================="); return success(templateInstanceRespVO); } - templateInstanceService.getDetailedInfo(templateInstanceRespVO); - return success(templateInstanceRespVO); + + return success(null); } @GetMapping("/page") 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/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 d152979..90db08b 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 @@ -71,8 +71,8 @@ public class OnlyOfficeCallbackServiceImpl implements OnlyOfficeCallbackService if (callback.getActions() != null) { for (Action action : callback.getActions()) { String actionType = switch (action.getType()) { - case 0 -> "断开了与"; - case 1 -> "连接到"; + case 0 -> "断开了连接"; + case 1 -> "连接成功"; case 2 -> "在中点击了强制保存"; default -> "在中执行了未知操作"; }; @@ -146,15 +146,16 @@ public class OnlyOfficeCallbackServiceImpl implements OnlyOfficeCallbackService 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()) { 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 9339c09..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")对应) 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/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/TemplateInstanceDataServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TemplateInstanceDataServiceImpl.java index dd117e9..582d1fe 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 @@ -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/TemplateInstanceItemServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TemplateInstanceItemServiceImpl.java index 8d9cc94..625f0f1 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 @@ -6,6 +6,7 @@ import com.zt.plat.module.base.controller.admin.templtp.vo.TemplateInstanceItemR 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; @@ -23,6 +24,7 @@ import static com.zt.plat.module.tmpltp.enums.ErrorCodeConstants.TEMPLATE_INSTAN */ @Service @Validated +@Slf4j public class TemplateInstanceItemServiceImpl implements TemplateInstanceItemService { @Resource @@ -33,6 +35,7 @@ public class TemplateInstanceItemServiceImpl implements TemplateInstanceItemServ // 插入 TemplateInstanceItemDO templateInstanceItem = BeanUtils.toBean(createReqVO, TemplateInstanceItemDO.class); templateInstanceItemMapper.insert(templateInstanceItem); + log.info("创建成功实例与条款关系成功,记录为【{}】", templateInstanceItem); // 返回 return BeanUtils.toBean(templateInstanceItem, TemplateInstanceItemRespVO.class); } @@ -44,6 +47,7 @@ public class TemplateInstanceItemServiceImpl implements TemplateInstanceItemServ // 更新 TemplateInstanceItemDO updateObj = BeanUtils.toBean(updateReqVO, TemplateInstanceItemDO.class); templateInstanceItemMapper.updateById(updateObj); + log.info("更新成功实例与条款关系成功,记录为【{}】", updateObj); } @Override @@ -52,6 +56,7 @@ public class TemplateInstanceItemServiceImpl implements TemplateInstanceItemServ validateTemplateInstanceItemExists(id); // 删除 templateInstanceItemMapper.deleteById(id); + log.info("删除成功实例与条款关系成功,记录为【{}】", id); } @Override @@ -60,6 +65,7 @@ public class TemplateInstanceItemServiceImpl implements TemplateInstanceItemServ validateTemplateInstanceItemExists(ids); // 删除 templateInstanceItemMapper.deleteByIds(ids); + log.info("删除成功实例与条款关系成功,记录为【{}】", ids); } private void validateTemplateInstanceItemExists(List ids) { 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 9209ddc..66be7df 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 @@ -21,6 +21,7 @@ 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; @@ -45,7 +46,7 @@ import static com.zt.plat.module.tmpltp.enums.ErrorCodeConstants.*; @Validated public class TemplateInstanceServiceImpl implements TemplateInstanceService { @Resource - private DeptApi deptApi; + private DeptApi deptApi; @Resource private TemplateInstanceMapper templateInstanceMapper; @Resource @@ -58,8 +59,6 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService { @Resource private TmplTpService tmplTpService; - private static final Pattern VERSION_PATTERN = Pattern.compile("^(.*?)([0-9]+(?:\\.[0-9]+)*)(.*)$"); - @Override @Transactional public TemplateInstanceRespVO createTemplateInstance(TemplateInstanceSaveReqVO createReqVO) { @@ -72,6 +71,7 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService { if (insert <= 0) { throw exception(TEMPLATE_INSTANCE_CREATE_FAIL); } + log.info("创建模板实例成功,模板实例:【{}】", templateInstance); //构建使用部门 List departmentInstanceRelativityDOS = new ArrayList<>(); @@ -82,6 +82,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()); @@ -99,6 +100,7 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService { TemplateInstanceDO updateObj = BeanUtils.toBean(updateReqVO, TemplateInstanceDO.class); // updateObj.setVer(incrementVersion(templateInstanceDO.getVer())); templateInstanceMapper.updateById(updateObj); + log.info("更新模板实例成功,模板实例:【{}】", templateInstanceDO); } @Override @@ -110,10 +112,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 @@ -123,8 +128,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) { @@ -150,64 +160,7 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService { return templateInstanceMapper.selectPage(pageReqVO); } - - // 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; -// } + @NotNull private String incrementVersion(String currentVersion) { // 处理空值或空字符串 if (currentVersion == null || currentVersion.trim().isEmpty()) { @@ -267,7 +220,7 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService { 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) { throw exception(STATUS_OPERATION_FAIL); @@ -279,10 +232,12 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService { .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); } @@ -319,9 +274,11 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService { newTpInstanceDO.setCreateTime(null); newTpInstanceDO.setUpdateTime(null); templateInstanceMapper.insert(newTpInstanceDO); + log.info("创建模版实例【{}】成功", newTpInstanceDO); templateInstanceMapper.update(new LambdaUpdateWrapper() .set(TemplateInstanceDO::getSts, TmplStsEnum.STOPPED.getCode()) .eq(TemplateInstanceDO::getId, id)); + log.info("更新模版实例【{}】状态状态为【STOP】成功", id); List templateInstanceDataDOS = new ArrayList<>(); List templateInstanceItemDOS = new ArrayList<>(); List newDepartmentInstanceRelativityDOS = new ArrayList<>(); @@ -388,19 +345,17 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService { } - - @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()){ + 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():"分类未命名"); + if (tmplTp != null) { + templateInstanceRespVO.setTpName(!tmplTp.getName().isEmpty() ? tmplTp.getName() : "分类未命名"); } } @@ -411,7 +366,9 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService { LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.eq(TemplateInstanceDO::getId, id).set(TemplateInstanceDO::getCntt, params); templateInstanceMapper.update(updateWrapper); + log.info("==================模板实例文件对象信息更新成功,文件对象信息为【{}】==================", params); } + // 实例条款值 private List setInstanceItemRespVOS(Long id) { List templateInstanceItemDOS = templateInstanceItemMapper.selectList(new LambdaQueryWrapper() @@ -483,6 +440,8 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService { } private String getCdg() { - return "TP" + DateUtils.format(new Date(), "yyyyMMddHHmmssSSS") + RandomUtil.randomNumbers(4); + String cdg = "TP" + DateUtils.format(new Date(), "yyyyMMddHHmmssSSS") + RandomUtil.randomNumbers(4); + log.info("==================模板实例编号生成成功,模板实例编号为【{}】==================", cdg); + return cdg; } } 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..7a9e62b 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 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..f274210 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 @@ -15,6 +15,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 +31,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 +49,7 @@ public class TmplTpFldServiceImpl extends ServiceImpl tmplTpFldPage(TmplFldPageReqVO pageReqVO) { + log.info("获取模板字段列表,参数:【{}】", pageReqVO); return baseMapper.selectPage(pageReqVO); } @@ -77,10 +82,12 @@ 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); } } 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/mapper/tmpltp/TemplateInstanceDataMapper.xml b/zt-module-base/zt-module-base-server/src/main/resources/mapper/tmpltp/TemplateInstanceDataMapper.xml index b5e1f87..2f2e0b8 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..8d98620 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} + From 646d847d46a765a4dcab1d1bac536137879f0dae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BD=98=E8=8D=A3=E6=99=9F?= <9691125+pan-rongsheng@user.noreply.gitee.com> Date: Sun, 28 Sep 2025 15:26:54 +0800 Subject: [PATCH 011/120] =?UTF-8?q?=E6=A8=A1=E7=89=88=E7=BC=96=E5=88=B6?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/templtp/vo/TemplateInstanceDataSaveReqVO.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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; } From 7965aa6eca9b0f10e1d1e7dc6b780f2308253838 Mon Sep 17 00:00:00 2001 From: chenbowen Date: Sun, 28 Sep 2025 16:02:54 +0800 Subject: [PATCH 012/120] =?UTF-8?q?=E5=8D=87=E7=BA=A7=203.0.41?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../zt-module-contract-order-server/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 3019b22..3ca9834 100644 --- a/pom.xml +++ b/pom.xml @@ -19,7 +19,7 @@ https://github.com/YunaiV/ruoyi-vue-pro - 3.0.40 + 3.0.41 17 ${java.version} 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 07588eb..65a9482 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,7 +129,7 @@ com.zt.plat zt-module-base-server - 3.0.40 + 3.0.41 compile From ca2b1c0b63087ba015a1cd6c4c0a1b8677ac7e39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BD=98=E8=8D=A3=E6=99=9F?= <9691125+pan-rongsheng@user.noreply.gitee.com> Date: Sun, 28 Sep 2025 16:06:21 +0800 Subject: [PATCH 013/120] =?UTF-8?q?=E6=A8=A1=E7=89=88=E7=BC=96=E5=88=B6?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../templtp/TemplateInstanceController.java | 7 +++++ .../TemplateInstanceDataController.java | 2 -- .../templtp/vo/FieldAndClauseRespVO.java | 16 +++++++++++ .../tmpltp/TemplateInstanceService.java | 2 ++ .../tmpltp/TemplateInstanceServiceImpl.java | 28 ++++++++++++++++++- .../base/service/tmpltp/TmplItmService.java | 3 ++ .../service/tmpltp/TmplItmServiceImpl.java | 5 ++++ .../base/service/tmpltp/TmplTpFldService.java | 3 ++ .../service/tmpltp/TmplTpFldServiceImpl.java | 6 ++++ 9 files changed, 69 insertions(+), 3 deletions(-) create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/FieldAndClauseRespVO.java 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 1107a12..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 @@ -199,4 +199,11 @@ public class TemplateInstanceController extends AbstractFileUploadController { 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/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/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 10586bc..bc4395b 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 @@ -85,4 +85,6 @@ public interface TemplateInstanceService { // Map saveFile(MultipartFile file, String id); void updateTemplateInstanceFileUrlByInstanceId(@Valid @NotEmpty(message = "模版实例id不能为空") String id, @Valid @NotEmpty(message = "文件参数不能为空") String params); + + FieldAndClauseRespVO getFieldAndClauseDetail(@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 66be7df..c7f9d2f 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 @@ -55,7 +55,10 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService { private TemplateInstanceDataMapper templateInstanceDataMapper; @Resource private TemplateInstanceItemMapper templateInstanceItemMapper; - + @Resource + private TmplItmService tmplItmService; + @Resource + private TmplTpFldService tmplTpFldService; @Resource private TmplTpService tmplTpService; @@ -444,4 +447,27 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService { 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; + } + } 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..7ac4db7 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,6 +7,8 @@ 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; @@ -17,4 +19,5 @@ public interface TmplItmService extends IService { boolean deleteTmplItm(List ids); PageResult pageTmplItm(TmpItmPageReqVO pageReqVO); + 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 7a9e62b..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 @@ -71,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..d36d8f9 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 @@ -19,4 +19,7 @@ public interface TmplTpFldService extends IService { void deleteTmplTpByIds(List< Long> ids); List>getTmplTpListByClass(String clazz); + 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 f274210..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; @@ -90,4 +91,9 @@ public class TmplTpFldServiceImpl extends ServiceImpl getTmplTpListByValKeys(List valNames) { + return baseMapper.selectList(new LambdaQueryWrapper().in(TmplTpFldDO::getFldKy, valNames)); + } } From ced4c519dc44ef41dbe1f24ab77ba02e4a4de82b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BD=98=E8=8D=A3=E6=99=9F?= <9691125+pan-rongsheng@user.noreply.gitee.com> Date: Sun, 28 Sep 2025 16:26:00 +0800 Subject: [PATCH 014/120] =?UTF-8?q?=E6=A8=A1=E7=89=88=E7=BC=96=E5=88=B6?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../base/service/tmpltp/TemplateInstanceDataServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 582d1fe..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 @@ -48,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); From 9cd8a41863871563481b5faa3d776dd8ce719d11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BD=98=E8=8D=A3=E6=99=9F?= <9691125+pan-rongsheng@user.noreply.gitee.com> Date: Sun, 28 Sep 2025 16:36:09 +0800 Subject: [PATCH 015/120] =?UTF-8?q?Bug=E4=BF=AE=E5=A4=8D=E3=80=82=E4=B8=BB?= =?UTF-8?q?=E8=A6=81=E4=BF=AE=E5=A4=8D=E5=86=85=E5=AE=B9=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=E6=9D=A1=E6=AC=BE=E5=92=8C=E5=AD=97=E6=AE=B5=E5=9C=A8=E5=90=8C?= =?UTF-8?q?=E4=B8=80=E4=B8=AA=E5=90=88=E5=90=8C=E5=AE=9E=E4=BE=8B=E4=B8=AD?= =?UTF-8?q?=E7=9A=84=E5=94=AF=E4=B8=80=E6=80=A7=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tmpltp/TemplateInstanceItemServiceImpl.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) 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 625f0f1..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,6 +1,8 @@ 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; @@ -14,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 实现类 @@ -32,6 +33,8 @@ 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); @@ -43,7 +46,7 @@ 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); @@ -101,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); + } + } + } From 982506eabdc743eb5701518e2d07b8cebb5be80d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BD=98=E8=8D=A3=E6=99=9F?= <9691125+pan-rongsheng@user.noreply.gitee.com> Date: Sun, 28 Sep 2025 16:50:16 +0800 Subject: [PATCH 016/120] =?UTF-8?q?Bug=E4=BF=AE=E5=A4=8D=E3=80=82=E4=B8=BB?= =?UTF-8?q?=E8=A6=81=E4=BF=AE=E5=A4=8D=E5=86=85=E5=AE=B9=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=E6=9D=A1=E6=AC=BE=E5=92=8C=E5=AD=97=E6=AE=B5=E5=9C=A8=E5=90=8C?= =?UTF-8?q?=E4=B8=80=E4=B8=AA=E5=90=88=E5=90=8C=E5=AE=9E=E4=BE=8B=E4=B8=AD?= =?UTF-8?q?=E7=9A=84=E5=94=AF=E4=B8=80=E6=80=A7=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/zt/plat/module/tmpltp/enums/ErrorCodeConstants.java | 1 + 1 file changed, 1 insertion(+) 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 e52b2d0..8e16893 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 @@ -24,6 +24,7 @@ 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_503, "模板条款已存在"); //Illegal operation type } From 04949bb027e9c9780bf049f562c1303ecff9933c Mon Sep 17 00:00:00 2001 From: liss <1780094091@qq.com> Date: Sun, 28 Sep 2025 17:05:30 +0800 Subject: [PATCH 017/120] =?UTF-8?q?=E7=89=A9=E6=96=99=E7=AE=A1=E7=90=86dec?= =?UTF-8?q?imal=E5=AD=97=E6=AE=B5=E5=85=B3=E9=94=AE=E5=AD=97=E5=86=B2?= =?UTF-8?q?=E7=AA=81=EF=BC=8C=E6=94=B9=E4=B8=BAdecimalValue?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../base/controller/admin/base/vo/MaterialOtherPageReqVO.java | 2 +- .../base/controller/admin/base/vo/MaterialOtherRespVO.java | 2 +- .../base/controller/admin/base/vo/MaterialOtherSaveReqVO.java | 2 +- .../plat/module/base/dal/dataobject/base/MaterialOtherDO.java | 2 +- .../zt/plat/module/base/dal/mysql/base/MaterialOtherMapper.java | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) 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/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/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..3064d3e 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 @@ -27,7 +27,7 @@ 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)); } From 26ecb030c9acdd5134b38a47455d527c42f00740 Mon Sep 17 00:00:00 2001 From: guojunyun Date: Sun, 28 Sep 2025 17:45:19 +0800 Subject: [PATCH 018/120] =?UTF-8?q?=E5=90=88=E5=90=8C=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=E5=AE=A1=E6=89=B9=E3=80=81=E5=90=88=E5=90=8C=E4=B8=BB=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E5=AD=97=E6=AE=B5=E4=BF=AE=E6=94=B9=E3=80=81=E5=90=88?= =?UTF-8?q?=E5=90=8C=E6=98=8E=E7=BB=86=E5=AD=97=E6=AE=B5=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E3=80=81=E5=90=88=E5=90=8C=E5=86=85=E5=AE=B9=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=E3=80=81zt-module-base-server=E5=BC=95=E5=85=A5=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E5=8F=B7=E5=BC=95=E7=94=A8=E5=8F=98=E9=87=8F=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../enums/ErrorCodeConstants.java | 3 +- .../contractorder/enums/ProcessConstants.java | 7 + .../enums/TableFieldConstants.java | 74 ++++++ .../enums/contract/ErpCtrtYesNoEnum.java | 47 ++++ .../zt-module-contract-order-server/pom.xml | 8 +- .../admin/contract/ContractController.java | 7 +- .../vo/contract/ContractDetailSaveReqVO.java | 3 + .../vo/contract/ContractSaveReqVO.java | 8 + .../dataobject/contract/ContractDetailDO.java | 5 + .../dataobject/contract/ContractMainDO.java | 25 ++ .../rpc/config/RpcConfiguration.java | 16 ++ .../service/contract/ContractService.java | 8 + .../service/contract/ContractServiceImpl.java | 226 +++++++++++++++++- 13 files changed, 429 insertions(+), 8 deletions(-) create mode 100644 zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/ProcessConstants.java create mode 100644 zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/ErpCtrtYesNoEnum.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/framework/rpc/config/RpcConfiguration.java 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..ef4c42e 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,6 @@ 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, "{}不存在"); } 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..9880f79 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 @@ -13,12 +13,86 @@ public class TableFieldConstants { /* 合同主信息表 */ // 合同名称;与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_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_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 = "计量单位"; /* 交货计划条款表 */ // 合同明细主键 diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/ErpCtrtYesNoEnum.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/ErpCtrtYesNoEnum.java new file mode 100644 index 0000000..63253ba --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/ErpCtrtYesNoEnum.java @@ -0,0 +1,47 @@ +package com.zt.plat.module.contractorder.enums.contract; + +/** + * ERP是否枚举 + */ +public enum ErpCtrtYesNoEnum { + + /** + * 是 + */ + YES("是","1",null), + /** + * 否 + */ + NO("否","0",null); + + ErpCtrtYesNoEnum(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-server/pom.xml b/zt-module-contract-order/zt-module-contract-order-server/pom.xml index 65a9482..2894858 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,12 @@ com.zt.plat zt-module-base-server - 3.0.41 - compile + ${revision} + + + com.zt.plat + zt-module-bpm-api + ${revision} 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..ea9ce98 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 @@ -102,10 +102,11 @@ public class ContractController implements BusinessControllerMarker { } // TODO - @PostMapping("/submit/approval") - @Operation(summary = "提交审批") + @GetMapping("/submit/approval") + @Operation(summary = "合同提交审批") @PreAuthorize("@ss.hasPermission('system:contract:approval')") - public void submitApproval() { + public CommonResult submitApproval(@RequestParam("id") Long id) { + return success(contractService.submitApproval(id)); } // TODO 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/ContractDetailSaveReqVO.java index 6055b01..29ed52a 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/ContractDetailSaveReqVO.java @@ -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; 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..beaff54 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 @@ -209,6 +209,14 @@ public class ContractSaveReqVO { @ExcelProperty("达到收款条件金额;与ERP(DDSKJE)对应,拓展信息,销售合同,且类型为SAP02COSR必填") private BigDecimal payeeConditionAmount; + @Schema(description = "附件对象存储") + @ExcelProperty("附件对象存储") + private String fileObject; + + @Schema(description = "其它附件对象存储") + @ExcelProperty("其它附件对象存储") + private String fileObjectOther; + // 模板部分查询 @Schema(description = "模板实例主键", example = "10196") @ExcelProperty("模板实例主键") 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/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..240c1b7 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 @@ -279,4 +279,29 @@ 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("FILE_OBJ") + private String fileObject; + /** + * 其它附件对象存储 + */ + @TableField("FILE_OBJ_OTH") + private String fileObjectOther; } \ 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/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..783cd53 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 @@ -45,4 +45,12 @@ public interface ContractService { * @return 修改结果 */ Boolean update(@Valid ContractSaveReqVO reqVO); + + /** + * 合同提交审批 + * + * @param id 合同ID + * @return 审批结果 + */ + String submitApproval(Long id); } 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..864cf4b 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 @@ -3,6 +3,7 @@ package com.zt.plat.module.contractorder.service.contract; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 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.TemplateInstanceDataRespVO; import com.zt.plat.module.base.controller.admin.templtp.vo.TemplateInstanceItemRespVO; @@ -11,14 +12,24 @@ import com.zt.plat.module.base.dal.dataobject.tmpltp.TemplateInstanceItemDO; 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.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.BpmProcessInstanceCreateReqDTO; +import com.zt.plat.module.bpm.api.task.dto.BpmTaskRespDTO; import com.zt.plat.module.contractorder.controller.admin.contract.vo.contract.*; import com.zt.plat.module.contractorder.dal.dataobject.contract.*; import com.zt.plat.module.contractorder.dal.mysql.contract.*; +import com.zt.plat.module.contractorder.enums.DateConstants; +import com.zt.plat.module.contractorder.enums.ProcessConstants; import com.zt.plat.module.contractorder.enums.TableFieldConstants; import com.zt.plat.module.contractorder.enums.contract.ContractStatusEnum; -import com.zt.plat.module.contractorder.enums.DateConstants; +import com.zt.plat.module.contractorder.enums.contract.ErpCtrtYesNoEnum; +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.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -64,6 +75,12 @@ public class ContractServiceImpl implements ContractService { private ContractPriceMapper contractPriceMapper; @Resource private ContractNotMapper contractNotMapper; + @Resource + private AdminUserApi adminUserApi; + @Resource + private BpmProcessInstanceApi bpmProcessInstanceApi; + @Resource + private BpmTaskApi bpmTaskApi; @Override public PageResult getContractPage(ContractPageReqVO pageReqVO) { @@ -315,7 +332,7 @@ public class ContractServiceImpl implements ContractService { // 查询合同是否存在 ContractMainDO oldContractMainDO = contractMainMapper.selectById(id); - if (contractMainMapper.selectById(id) == null) { + if (oldContractMainDO == null) { throw exception(CONTRACT_NOT_EXISTS); } @@ -512,6 +529,211 @@ public class ContractServiceImpl implements ContractService { } } + @Override + public String 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); + } + + // 合同内容校验 TODO + verifyContract(get(id)); + + // 查询用户 + AdminUserRespDTO adminUserRespDTO = adminUserApi + .getUser(SecurityFrameworkUtils.getLoginUserId()).getData(); + + // 先创建流程,后更新状态 + 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(ContractStatusEnum.UNDER_REVIEW.getCode()); + contractMainMapper.updateById(contractMainDO); + return "提交审批成功"; + } + + return "提交审批失败"; + } + + private void verifyContract(ContractViewRespVO 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 (ErpCtrtYesNoEnum.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 (ErpCtrtYesNoEnum.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 (ErpCtrtYesNoEnum.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 (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); + } + } + /** * 生成系统合同编号 * From 5d16c8b9ab46d6cd483685b51797467a1e542dd0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BD=98=E8=8D=A3=E6=99=9F?= <9691125+pan-rongsheng@user.noreply.gitee.com> Date: Sun, 28 Sep 2025 17:53:00 +0800 Subject: [PATCH 019/120] =?UTF-8?q?=E4=BF=AE=E6=94=B9TemplateInstanceItemS?= =?UTF-8?q?aveReqVO=E7=B1=BB=E5=B1=9E=E6=80=A7val=E7=9A=84=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C=E8=A7=84=E5=88=99=E4=B8=BA=E5=8F=AF=E4=BB=A5=E4=B8=BA?= =?UTF-8?q?=E7=A9=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/templtp/vo/TemplateInstanceItemSaveReqVO.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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; } From 4d79d1c676e9967e886cbdead1fcd4417674025d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BD=98=E8=8D=A3=E6=99=9F?= <9691125+pan-rongsheng@user.noreply.gitee.com> Date: Mon, 29 Sep 2025 11:07:30 +0800 Subject: [PATCH 020/120] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dmapper=E7=9A=84xml?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/base/service/tmpltp/TemplateInstanceServiceImpl.java | 2 +- .../main/resources/mapper/tmpltp/TemplateInstanceDataMapper.xml | 2 +- .../main/resources/mapper/tmpltp/TemplateInstanceItemMapper.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) 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 c7f9d2f..668aeb1 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 @@ -273,7 +273,7 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService { newTpInstanceDO.setId(null); newTpInstanceDO.setVer(incrementVersion(templateInstanceDO.getVer())); newTpInstanceDO.setPublishTime(LocalDateTime.now()); - newTpInstanceDO.setOrigCntt(templateInstanceDO.getCntt()); + newTpInstanceDO.setOrigCntt(templateInstanceDO.getCntt()!=null?templateInstanceDO.getCntt():templateInstanceDO.getOrigCntt());//模板实例内容,默认为上一个版本的当前文件内容 newTpInstanceDO.setCreateTime(null); newTpInstanceDO.setUpdateTime(null); templateInstanceMapper.insert(newTpInstanceDO); 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 2f2e0b8..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 @@ -13,7 +13,7 @@ update BSE_TMPL_INSC_DAT set deleted = 1 WHERE INSC_ID in - + #{id} 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 8d98620..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 @@ -17,7 +17,7 @@ update BSE_TMPL_INSC_ITM set deleted = 1 WHERE INSC_ID in - + #{id} From d1fa34f8e1c97435bebec6a2c99b936e48f0e840 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BD=98=E8=8D=A3=E6=99=9F?= <9691125+pan-rongsheng@user.noreply.gitee.com> Date: Mon, 29 Sep 2025 11:27:21 +0800 Subject: [PATCH 021/120] =?UTF-8?q?=E4=BF=AE=E5=A4=8DErrorCodeConstants?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E7=9A=84=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/zt/plat/module/tmpltp/enums/ErrorCodeConstants.java | 1 + 1 file changed, 1 insertion(+) 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 8e16893..48b6545 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,6 +5,7 @@ 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, "字段编码已存在"); From 9cdd7db87a650c9d5cde7b19d485a0c6f73aa872 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BD=98=E8=8D=A3=E6=99=9F?= <9691125+pan-rongsheng@user.noreply.gitee.com> Date: Mon, 29 Sep 2025 11:40:32 +0800 Subject: [PATCH 022/120] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tmpltp/TemplateInstanceDataService.java | 6 +++ .../tmpltp/TemplateInstanceItemService.java | 6 +++ .../tmpltp/TemplateInstanceService.java | 50 ++++++++++++++++++- .../base/service/tmpltp/TmplItmService.java | 30 ++++++++++- .../base/service/tmpltp/TmplTpFldService.java | 32 +++++++++++- 5 files changed, 120 insertions(+), 4 deletions(-) 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/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/TemplateInstanceService.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TemplateInstanceService.java index bc4395b..34d27dd 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 @@ -61,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); /** * 获得模板实例分页排除停用状态的 @@ -74,17 +90,49 @@ 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); + /** + * 通过实例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); } 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 7ac4db7..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 @@ -13,11 +13,37 @@ 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/TmplTpFldService.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplTpFldService.java index d36d8f9..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,12 +13,42 @@ 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); From e7a499fa017dc75e89674bfcffcf44d6402b32e4 Mon Sep 17 00:00:00 2001 From: liss <1780094091@qq.com> Date: Mon, 29 Sep 2025 12:00:59 +0800 Subject: [PATCH 023/120] =?UTF-8?q?=E8=B4=A6=E6=88=B7=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../base/controller/admin/base/vo/AccountPageReqVO.java | 8 ++++++++ .../base/controller/admin/base/vo/AccountRespVO.java | 8 ++++++++ .../base/controller/admin/base/vo/AccountSaveReqVO.java | 7 ++++++- .../admin/base/vo/CompanyRelativityPageReqVO.java | 2 +- .../plat/module/base/dal/dataobject/base/AccountDO.java | 7 +++++++ .../zt/plat/module/base/dal/mysql/base/AccountMapper.java | 2 ++ 6 files changed, 32 insertions(+), 2 deletions(-) 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/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/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..efe89ce 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 @@ -19,6 +19,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()) From 7b304c15292a9067544815693fee7d32bd329da1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BD=98=E8=8D=A3=E6=99=9F?= <9691125+pan-rongsheng@user.noreply.gitee.com> Date: Mon, 29 Sep 2025 15:49:53 +0800 Subject: [PATCH 024/120] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=90=AF=E7=94=A8?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../zt/plat/module/tmpltp/enums/DeleteStatusEnum.java | 3 ++- .../plat/module/tmpltp/enums/PublishStatusEnum.java | 3 ++- .../com/zt/plat/module/tmpltp/enums/TmplStsEnum.java | 3 ++- .../zt/plat/module/tmpltp/enums/UpdateStatusEnum.java | 5 +++-- .../admin/templtp/vo/TemplateInstanceRespVO.java | 5 +++++ .../service/tmpltp/TemplateInstanceServiceImpl.java | 11 ++++++++++- 6 files changed, 24 insertions(+), 6 deletions(-) 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 9616b91..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<>(){{add(TmplStsEnum.STOPPED.getCode());}}); + 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/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/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 324aa38..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 @@ -75,4 +75,9 @@ public class TemplateInstanceRespVO { @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/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 668aeb1..240ae14 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 @@ -224,6 +224,9 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService { boolean transitionAllowed = false; if (status != null) { transitionAllowed = status.isTransitionAllowed(TmplStsEnum.DRAFT.getCode()); + if (!transitionAllowed){ + transitionAllowed = status.isTransitionAllowed(TmplStsEnum.START.getCode()); + } } if (!transitionAllowed) { throw exception(STATUS_OPERATION_FAIL); @@ -253,7 +256,7 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService { code = TmplStsEnum.STOPPED.getCode(); } else if (reqVO.getType().equals("enable")) { // 启用 - code = TmplStsEnum.PUBLISHED.getCode(); + code = TmplStsEnum.START.getCode(); } if (code.isEmpty()) { throw exception(ILLEGAL_OPERATION_TYPE); @@ -269,8 +272,14 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService { 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());//模板实例内容,默认为上一个版本的当前文件内容 From a596b6f3207e5b43d24c406e7a1f028f24dca0c0 Mon Sep 17 00:00:00 2001 From: guojunyun Date: Mon, 29 Sep 2025 16:19:38 +0800 Subject: [PATCH 025/120] =?UTF-8?q?=E5=90=88=E5=90=8C=E4=B8=BB=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E5=AD=97=E6=AE=B5=E6=B7=BB=E5=8A=A0=E3=80=81=E5=90=88?= =?UTF-8?q?=E5=90=8C=E6=8F=90=E4=BA=A4=E5=AE=A1=E6=A0=B8=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=E3=80=81=E5=90=88=E5=90=8C=E6=96=B0=E5=A2=9E=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../enums/ErrorCodeConstants.java | 1 + .../admin/contract/ContractController.java | 6 +- .../vo/contract/ContractPageReqVO.java | 3 + .../vo/contract/ContractSaveReqVO.java | 101 ++++++++---------- .../vo/contract/ContractViewRespVO.java | 94 ++++++++++++++-- .../dataobject/contract/ContractMainDO.java | 60 +++++++++++ .../mysql/contract/ContractMainMapper.java | 1 + .../service/contract/ContractServiceImpl.java | 39 ++++++- 8 files changed, 232 insertions(+), 73 deletions(-) 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 ef4c42e..e958890 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 @@ -19,4 +19,5 @@ public interface ErrorCodeConstants { ErrorCode CONTRACT_ID_NOT_EXISTS = 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_005, "{}合同不允许提交审核"); } 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 ea9ce98..ea93e04 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,5 +1,6 @@ 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; @@ -43,9 +44,9 @@ public class ContractController implements BusinessControllerMarker { @PostMapping("/create") @Operation(summary = "新增合同") @PreAuthorize("@ss.hasPermission('system:contract:create')") - public CommonResult create(@Valid @RequestBody ContractSaveReqVO reqVO) { + public CommonResult create(@Valid @RequestBody ContractSaveReqVO reqVO) { Long id = contractService.createContract(reqVO); - return success(id); + return success(new JSONObject().putOnce("id", id)); } @GetMapping("/get") @@ -101,7 +102,6 @@ public class ContractController implements BusinessControllerMarker { public void archive() { } - // TODO @GetMapping("/submit/approval") @Operation(summary = "合同提交审批") @PreAuthorize("@ss.hasPermission('system:contract:approval')") 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..294acac 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; 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 beaff54..07a48b7 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 @@ -21,132 +21,144 @@ 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 String fileObject; + + @Schema(description = "其它附件对象存储") + private String 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 = "合同类型不能为空") + // @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; // 物料信息 @@ -154,72 +166,49 @@ public class ContractSaveReqVO { // 扩展信息 @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; @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 = "附件对象存储") - @ExcelProperty("附件对象存储") - private String fileObject; - - @Schema(description = "其它附件对象存储") - @ExcelProperty("其它附件对象存储") - private String fileObjectOther; - - // 模板部分查询 + // 模板部分 @Schema(description = "模板实例主键", example = "10196") - @ExcelProperty("模板实例主键") private Long instanceId; // 合同动态表单 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-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractViewRespVO.java index 9a6cb80..316a237 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-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractViewRespVO.java @@ -16,11 +16,11 @@ import java.util.List; @ExcelIgnoreUnannotated public class ContractViewRespVO { - @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "2090") + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "2476") @ExcelProperty("主键") private Long id; - @Schema(description = "模板实例主键", example = "10196") + @Schema(description = "模板实例主键", example = "5352") @ExcelProperty("模板实例主键") private Long instanceId; @@ -28,11 +28,11 @@ public class ContractViewRespVO { @ExcelProperty("系统合同编号;自动生成,校验唯一") private String systemContractNumber; - @Schema(description = "状态", example = "1") + @Schema(description = "状态", example = "2") @ExcelProperty("状态") private String status; - @Schema(description = "合同名称;与ERP(HTMC)对应,校验唯一", example = "芋艿") + @Schema(description = "合同名称;与ERP(HTMC)对应,校验唯一", example = "李四") @ExcelProperty("合同名称;与ERP(HTMC)对应,校验唯一") private String contractName; @@ -52,7 +52,7 @@ public class ContractViewRespVO { @ExcelProperty("收支性质;与ERP(SZXZ)对应") private String direction; - @Schema(description = "合同类型", example = "1") + @Schema(description = "合同类型", example = "2") @ExcelProperty("合同类型") private String contractType; @@ -76,7 +76,7 @@ public class ContractViewRespVO { @ExcelProperty("甲方公司编号;如果是采购合同,查询组织机构自动带出,且与ERP(HTQDZTBH)对应,如果是销售合同,手动选择,且与ERP(WLDWBH)对应。") private String purchaseCompanyNumber; - @Schema(description = "甲方公司名称", example = "王五") + @Schema(description = "甲方公司名称", example = "芋艿") @ExcelProperty("甲方公司名称") private String purchaseCompanyName; @@ -92,7 +92,7 @@ public class ContractViewRespVO { @ExcelProperty("乙方公司编号;如果是销售合同,查询组织机构自动带出,且与ERP(HTQDZTBH)对应,如果是采购合同,手动选择,且与ERP(WLDWBH)对应。") private String salesCompanyNumber; - @Schema(description = "乙方公司名称", example = "王五") + @Schema(description = "乙方公司名称", example = "赵六") @ExcelProperty("乙方公司名称") private String salesCompanyName; @@ -152,7 +152,7 @@ public class ContractViewRespVO { @ExcelProperty("质保金金额;与ERP(BZJJE)对应") private BigDecimal qualityAmount; - @Schema(description = "补充协议类型;变更协议/增加条款", example = "1") + @Schema(description = "补充协议类型;变更协议/增加条款", example = "2") @ExcelProperty("补充协议类型;变更协议/增加条款") private String replenishAgreementType; @@ -164,7 +164,7 @@ public class ContractViewRespVO { @ExcelProperty("施工类型编号;与ERP(HTLXBH)对应,拓展信息") private String constructionTypeNumber; - @Schema(description = "施工类型名称;与ERP(HTLXMC)对应,拓展信息", example = "张三") + @Schema(description = "施工类型名称;与ERP(HTLXMC)对应,拓展信息", example = "李四") @ExcelProperty("施工类型名称;与ERP(HTLXMC)对应,拓展信息") private String constructionTypeName; @@ -216,6 +216,82 @@ public class ContractViewRespVO { @ExcelProperty("步骤") private Integer step; + @Schema(description = "ERP请求状态", example = "1") + @ExcelProperty("ERP请求状态") + private String erpStatus; + + @Schema(description = "ERP请求失败原因") + @ExcelProperty("ERP请求失败原因") + private String cause; + + @Schema(description = "流程实例编号", example = "27511") + @ExcelProperty("流程实例编号") + private String processInstanceId; + + @Schema(description = "审批意见") + @ExcelProperty("审批意见") + private String reviewOpinion; + + @Schema(description = "任务节点主键", example = "26040") + @ExcelProperty("任务节点主键") + private String taskNodeId; + + @Schema(description = "模板附件对象存储") + @ExcelProperty("模板附件对象存储") + private String fileObject; + + @Schema(description = "其它附件对象存储") + @ExcelProperty("其它附件对象存储") + private String fileObjectOther; + + @Schema(description = "交货地点") + @ExcelProperty("交货地点") + private String deliveryAddress; + + @Schema(description = "交货方式(字典:FRCST_ASN)") + @ExcelProperty("交货方式(字典:FRCST_ASN)") + private String deliveryWay; + + @Schema(description = "甲方联系人") + @ExcelProperty("甲方联系人") + private String purchaseHuman; + + @Schema(description = "甲方电话") + @ExcelProperty("甲方电话") + private String purchaseTel; + + @Schema(description = "甲方邮箱") + @ExcelProperty("甲方邮箱") + private String purchaseEmail; + + @Schema(description = "甲方传真") + @ExcelProperty("甲方传真") + private String purchaseFax; + + @Schema(description = "甲方联系地址") + @ExcelProperty("甲方联系地址") + private String purchaseContactAddress; + + @Schema(description = "乙方联系人") + @ExcelProperty("乙方联系人") + private String salesHuman; + + @Schema(description = "乙方电话") + @ExcelProperty("乙方电话") + private String salesTel; + + @Schema(description = "乙方邮箱") + @ExcelProperty("乙方邮箱") + private String salesEmail; + + @Schema(description = "乙方传真") + @ExcelProperty("乙方传真") + private String salesFax; + + @Schema(description = "乙方联系地址") + @ExcelProperty("乙方联系地址") + private String salesContactAddress; + // 物料信息 private List detail; 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 240c1b7..4cc33ce 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 @@ -304,4 +304,64 @@ public class ContractMainDO extends BusinessBaseDO { */ @TableField("FILE_OBJ_OTH") private String fileObjectOther; + /** + * 交货地点 + */ + @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; } \ 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..bc36ddf 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,7 @@ 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()) .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/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 864cf4b..878659a 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 @@ -543,10 +543,21 @@ public class ContractServiceImpl implements ContractService { throw exception(CONTRACT_NOT_EXISTS); } - // 合同内容校验 TODO + // 合同状态校验 + if (ContractStatusEnum.UNDER_REVIEW.getCode().equals(contractMainDO.getStatus()) + || ContractStatusEnum.IN_PROGRESS.getCode().equals(contractMainDO.getStatus()) + || ContractStatusEnum.TERMINATED.getCode().equals(contractMainDO.getStatus()) + || ContractStatusEnum.ARCHIVED.getCode().equals(contractMainDO.getStatus()) + || ContractStatusEnum.DELETED.getCode().equals(contractMainDO.getStatus())) { + + throw exception(CONTRACT_STATUS_NOT_SUBMIT_APPROVAL, + ContractStatusEnum.valueOf(contractMainDO.getStatus()).getLabel()); + } + + // 合同内容校验 verifyContract(get(id)); - // 查询用户 + // 查询登陆用户 AdminUserRespDTO adminUserRespDTO = adminUserApi .getUser(SecurityFrameworkUtils.getLoginUserId()).getData(); @@ -571,6 +582,11 @@ public class ContractServiceImpl implements ContractService { return "提交审批失败"; } + /** + * 校验合同内容 + * + * @param contract 合同数据 + */ private void verifyContract(ContractViewRespVO contract) { /* 合同基本信息 */ @@ -703,9 +719,22 @@ public class ContractServiceImpl implements ContractService { } /* 物料信息 */ - // 物料名称不能为空 - // 数量不能为空 - // 计量单位不能为空 + 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); + } + }); + } /* 扩展信息 */ // 是否框架合同不能为空 From 1d9521b0d1f9a941705fc010bb9675fd794ada59 Mon Sep 17 00:00:00 2001 From: guojunyun Date: Mon, 29 Sep 2025 17:57:59 +0800 Subject: [PATCH 026/120] =?UTF-8?q?=E5=90=88=E5=90=8C=E5=86=85=E5=AE=B9?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vo/contract/ContractSaveReqVO.java | 1 + .../service/contract/ContractServiceImpl.java | 32 +++++++++---------- 2 files changed, 17 insertions(+), 16 deletions(-) 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 07a48b7..c826d7f 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 @@ -192,6 +192,7 @@ public class ContractSaveReqVO { @Schema(description = "代理方;与ERP(ZLIFNR)对应,拓展信息", example = "代理方") private String agent; + @NotBlank(message = "合同类别不能为空") @Schema(description = "类别;与ERP(HTLB)对应,拓展信息", example = "PROCESSING") private String category; 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 878659a..a891525 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 @@ -112,7 +112,7 @@ public class ContractServiceImpl implements ContractService { // 合同状态保存为草稿 contractMainDO.setStatus(ContractStatusEnum.DRAFT.getCode()); // 生成系统合同编号 - contractMainDO.setSystemContractNumber(generateSystemContractNumber(reqVO.getContractType())); + contractMainDO.setSystemContractNumber(generateSystemContractNumber(reqVO.getCategory())); // 保存合同主信息 contractMainMapper.insert(contractMainDO); @@ -639,15 +639,15 @@ public class ContractServiceImpl implements ContractService { throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_DRCT_LABEL); } // 签署日期不能为空 - if (contract.getSignDate() != null) { + if (contract.getSignDate() == null) { throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_SGN_DT_LABEL); } // 开始日期不能为空 - if (contract.getStartDate() != null) { + if (contract.getStartDate() == null) { throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_STRT_DT_LABEL); } // 结束日期不能为空 - if (contract.getEndDate() != null) { + if (contract.getEndDate() == null) { throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_END_DT_LABEL); } // 签署地不能为空 @@ -661,11 +661,11 @@ public class ContractServiceImpl implements ContractService { throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_CUR_LABEL); } // 本币金额不能为空 - if (contract.getBasicAmount() != null) { + if (contract.getBasicAmount() == null) { throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_BSC_AMT_LABEL); } // 原币金额不能为空 - if (contract.getCooAmount() != null) { + if (contract.getCooAmount() == null) { throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_COO_AMT_LABEL); } // 是否有履约保证金不能为空 @@ -675,11 +675,11 @@ public class ContractServiceImpl implements ContractService { // 是否有履约保证金为是的情况 if (ErpCtrtYesNoEnum.YES.getCode().equals(contract.getHasDeposit())) { // 原币履约保证金不能为空 - if (contract.getCooAmountDeposit() != null) { + if (contract.getCooAmountDeposit() == null) { throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_COO_AMT_DPST_LABEL); } // 本币履约保证金不能为空 - if (contract.getBasicAmountDeposit() != null) { + if (contract.getBasicAmountDeposit() == null) { throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_BSC_AMT_DPST_LABEL); } } @@ -690,11 +690,11 @@ public class ContractServiceImpl implements ContractService { // 是否有预付款为是的情况 if (ErpCtrtYesNoEnum.YES.getCode().equals(contract.getHasPrepayment())) { // 预付款比例不能为空 - if (contract.getPrepaymentRatio() != null) { + if (contract.getPrepaymentRatio() == null) { throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_PPYM_RTIO_LABEL); } // 预付款金额不能为空 - if (contract.getPrepaymentAmount() != null) { + if (contract.getPrepaymentAmount() == null) { throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_PPYM_AMT_LABEL); } } @@ -705,11 +705,11 @@ public class ContractServiceImpl implements ContractService { // 是否有质保金为是的情况 if (ErpCtrtYesNoEnum.YES.getCode().equals(contract.getHasPrepayment())) { // 质保金比例不能为空 - if (contract.getQualityRatio() != null) { + if (contract.getQualityRatio() == null) { throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_QLT_RTIO_LABEL); } // 质保金金额不能为空 - if (contract.getQualityAmount() != null) { + if (contract.getQualityAmount() == null) { throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_QLT_AMT_LABEL); } } @@ -726,7 +726,7 @@ public class ContractServiceImpl implements ContractService { throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_DTL_MTRL_NAME_LABEL); } // 数量不能为空 - if (detail.getQuantity() != null) { + if (detail.getQuantity() == null) { throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_DTL_QTY_LABEL); } // 计量单位不能为空 @@ -770,11 +770,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"; @@ -784,7 +784,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"); From 41250ab1279f0277f317749e8e0ed237a5f1b84d Mon Sep 17 00:00:00 2001 From: zhangt Date: Mon, 29 Sep 2025 18:10:25 +0800 Subject: [PATCH 027/120] =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=94=B6=E8=B4=A7erp?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/zt/plat/module/erp/api/ErpBillMainApiImpl.java | 3 +++ .../zt/plat/module/erp/service/erp/ErpBillMainServiceImpl.java | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) 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/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 From 88b5ae2b64cc5b407e006aaadcc1f6e9f7bf95bc Mon Sep 17 00:00:00 2001 From: liss <1780094091@qq.com> Date: Tue, 30 Sep 2025 10:56:58 +0800 Subject: [PATCH 028/120] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=E6=8A=9B=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/erp/enums/ErrorCodeConstants.java | 54 +++- .../module/erp/api/ErpExternalApiImpl.java | 2 +- .../module/erp/common/conf/ErpConfig.java | 299 ------------------ .../module/erp/common/conf/MyRedisConfig.java | 61 ---- .../erp/common/task/statisticstask.java | 32 -- .../erp/{common => }/enums/OftenEnum.java | 2 +- .../erp/service/erp/ErpAssetServiceImpl.java | 37 +-- .../service/erp/ErpBomDetailServiceImpl.java | 17 +- .../erp/service/erp/ErpBomServiceImpl.java | 30 +- .../service/erp/ErpCompanyServiceImpl.java | 26 +- .../service/erp/ErpContractServiceImpl.java | 20 +- .../service/erp/ErpCostcenterServiceImpl.java | 26 +- .../service/erp/ErpCustomerServiceImpl.java | 23 +- .../service/erp/ErpFactoryServiceImpl.java | 30 +- .../erp/ErpInternalOrderServiceImpl.java | 29 +- .../service/erp/ErpMaterialServiceImpl.java | 23 +- .../erp/ErpProcessDetailServiceImpl.java | 27 +- .../service/erp/ErpProcessServiceImpl.java | 30 +- .../erp/ErpProductiveOrderServiceImpl.java | 26 +- .../erp/ErpProductiveVersionServiceImpl.java | 29 +- .../ErpPurchaseOrganizationServiceImpl.java | 29 +- .../erp/ErpSalesOrganizationServiceImpl.java | 29 +- .../service/erp/ErpWarehouseServiceImpl.java | 30 +- .../zt/plat/module/erp/utils/ErpConfig.java | 170 ++++++++++ .../plat/module/erp/utils/MyRedisConfig.java | 191 +++++++++++ 25 files changed, 684 insertions(+), 588 deletions(-) delete mode 100644 zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/common/conf/ErpConfig.java delete mode 100644 zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/common/conf/MyRedisConfig.java delete mode 100644 zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/common/task/statisticstask.java rename zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/{common => }/enums/OftenEnum.java (97%) create mode 100644 zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/utils/ErpConfig.java create mode 100644 zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/utils/MyRedisConfig.java 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..9449fe0 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,43 @@ 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_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_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_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_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/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..ade41ae 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,7 +1,7 @@ package com.zt.plat.module.erp.api; import com.zt.plat.module.erp.api.dto.ErpSubmitReqDTO; -import com.zt.plat.module.erp.common.conf.ErpConfig; +import com.zt.plat.module.erp.utils.ErpConfig; import jakarta.annotation.Resource; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.RestController; 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/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/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..26bfaaf 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; @@ -110,33 +114,30 @@ public class ErpAssetServiceImpl implements ErpAssetService { OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.资产卡片; String funcnr = funcnrEnum.getFuncnr(); String key = "erpMap" + funcnr; - if (erpConfig.getRedisCacheMap(key).isEmpty()) { + if (myRedisConfig.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); + Map redisCache = myRedisConfig.getRedisCacheMap(companyKey); if (CollUtil.isEmpty(redisCache)) { - return; + throw exception(ERP_COMPANY_REDIS_NOT_EXISTS); } for (String number : redisCache.keySet()) { req.put("BUKRS", number); // 1. 调用ERP接口获取数据 - JSONArray dataArray = erpConfig.fetchDataFromERP(funcnr, req); - if (dataArray == null || dataArray.isEmpty()) { + 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); @@ -155,7 +156,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<>(); @@ -222,7 +223,7 @@ public class ErpAssetServiceImpl implements ErpAssetService { ); Map numberIdMap = insertedRecords.stream() .collect(Collectors.toMap(asset -> asset.getCompanyNumber() + "-" + asset.getMainAssetNumber(), ErpAssetDO::getId)); - erpConfig.addRedisCacheMap(result.key,numberIdMap); + myRedisConfig.addRedisCacheMap(result.key,numberIdMap); } if (!result.toUpdate.isEmpty()) { erpAssetMapper.updateBatch(result.toUpdate); @@ -231,7 +232,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())); } } @@ -259,7 +260,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/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..38354f2 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; @@ -117,25 +121,29 @@ public class ErpBomServiceImpl implements ErpBomService { OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.BOM清单; String funcnr = funcnrEnum.getFuncnr(); String key = "erpMap" + funcnr; - if (erpConfig.getRedisCacheMap(key).isEmpty()) { + if (myRedisConfig.getRedisCacheMap(key).isEmpty()) { initializeMap(key); } Map req = new HashMap<>(); JSONArray dataArrayALL = new JSONArray(); String factKey = "erpMap" + OftenEnum.FuncnrEnum.工厂信息.getFuncnr(); - Map redisCache = erpConfig.getRedisCacheMap(factKey); + Map redisCache = myRedisConfig.getRedisCacheMap(factKey); if (CollUtil.isEmpty(redisCache)) { - throw exception(ERP_BOM_NOT_EXISTS); + throw exception(ERP_FACTORY_REDIS_NOT_EXISTS); } for (String factoryNumber : redisCache.keySet()) { req.put("WERKS", factoryNumber); // 1. 调用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()) { continue; } dataArrayALL.addAll(dataArray); } + if (CollUtil.isEmpty(dataArrayALL)) { + throw exception(ERP_BOM_NOT_EXISTS); + } // 2. 处理公司数据,区分新增和更新 ProcessingResult result = processData(dataArrayALL, funcnrEnum); @@ -154,7 +162,7 @@ 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<>(); @@ -231,11 +239,11 @@ public class ErpBomServiceImpl implements ErpBomService { // 更新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); } } @@ -266,7 +274,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/ErpCompanyServiceImpl.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpCompanyServiceImpl.java index 64308e5..5f86f82 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,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.ErpCompanyPageReqVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpCompanyRespVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpCompanySaveReqVO; @@ -20,11 +21,13 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; 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.ErrorCodeConstants.ERP_BOM_NOT_EXISTS; import static com.zt.plat.module.erp.enums.ErrorCodeConstants.ERP_COMPANY_NOT_EXISTS; import static dm.jdbc.util.DriverUtil.log; @@ -40,6 +43,8 @@ public class ErpCompanyServiceImpl implements ErpCompanyService { @Resource private ErpCompanyMapper erpCompanyMapper; + @Resource + private MyRedisConfig myRedisConfig; @Resource private ErpConfig erpConfig; @@ -109,13 +114,14 @@ public class ErpCompanyServiceImpl implements ErpCompanyService { String funcnr = funcnrEnum.getFuncnr(); //防止缓存数据丢失 String key = "erpMap" + funcnrEnum.getFuncnr(); - if (erpConfig.getRedisCacheMap(key).isEmpty()) { + if (myRedisConfig.getRedisCacheMap(key).isEmpty()) { initializeMap(key); } // 1. 调用ERP接口获取数据 - JSONArray dataArray = erpConfig.fetchDataFromERP(funcnr, null); - if (dataArray == null || dataArray.isEmpty()) { - return; + HashMap dataFromERP = erpConfig.fetchDataFromERP(funcnr, null); + JSONArray dataArray = (JSONArray) dataFromERP.get("E_RESP"); + if (CollUtil.isEmpty(dataArray)) { + throw exception(ERP_COMPANY_NOT_EXISTS); } // 2. 处理公司数据,区分新增和更新 @@ -135,7 +141,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 +193,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 +201,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 +227,7 @@ 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); } } \ 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..ff51402 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,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.ErpContractPageReqVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpContractRespVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpContractSaveReqVO; @@ -19,10 +20,12 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zt.plat.module.erp.enums.ErrorCodeConstants.ERP_COMPANY_NOT_EXISTS; import static com.zt.plat.module.erp.enums.ErrorCodeConstants.ERP_CONTRACT_NOT_EXISTS; import static dm.jdbc.util.DriverUtil.log; @@ -38,6 +41,8 @@ public class ErpContractServiceImpl implements ErpContractService { @Resource private ErpContractMapper erpContractMapper; + @Resource + private MyRedisConfig myRedisConfig; @Resource private ErpConfig erpConfig; @@ -106,9 +111,10 @@ public class ErpContractServiceImpl implements ErpContractService { OftenEnum.FuncnrEnum funcnrEnum =OftenEnum.FuncnrEnum.合同信息; String funcnr = funcnrEnum.getFuncnr(); // 1. 调用ERP接口获取数据 - JSONArray dataArray = erpConfig.fetchDataFromERP(funcnr, null); - if (dataArray == null || dataArray.isEmpty()) { - return; + HashMap dataFromERP = erpConfig.fetchDataFromERP(funcnr, null); + JSONArray dataArray = (JSONArray) dataFromERP.get("E_RESP"); + if (CollUtil.isEmpty(dataArray)) { + throw exception(ERP_CONTRACT_NOT_EXISTS); } // 2. 处理公司数据,区分新增和更新 @@ -128,7 +134,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<>(); @@ -168,7 +174,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); } /** 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..094497c 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; @@ -111,13 +115,13 @@ public class ErpCostcenterServiceImpl implements ErpCostcenterService { String funcnr = funcnrEnum.getFuncnr(); //防止缓存数据丢失 String key = "erpMap" + funcnr; - if (erpConfig.getRedisCacheMap( key).isEmpty()){ + if (myRedisConfig.getRedisCacheMap( key).isEmpty()){ initializeMap(key); } Map req = new HashMap<>(); JSONArray dataArrayALL = new JSONArray(); String commanyKey ="erpMap"+ OftenEnum.FuncnrEnum.公司代码.getFuncnr(); - Map redisCache = erpConfig.getRedisCacheMap(commanyKey); + Map redisCache = myRedisConfig.getRedisCacheMap(commanyKey); if (CollUtil.isEmpty(redisCache)) { return; } @@ -125,12 +129,16 @@ public class ErpCostcenterServiceImpl implements ErpCostcenterService { for (String number : redisCache.keySet()) { req.put("BUKRS", number); // 1. 调用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()) { continue; } dataArrayALL.addAll(dataArray); } + if (CollUtil.isEmpty(dataArrayALL)) { + throw exception(ERP_COSTCENTER_NOT_EXISTS); + } // 2. 处理公司数据,区分新增和更新 ProcessingResult result = processData(dataArrayALL,funcnrEnum); @@ -149,7 +157,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<>(); @@ -208,7 +216,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 +224,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); } } @@ -240,6 +248,6 @@ public class ErpCostcenterServiceImpl implements ErpCostcenterService { 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..95c22e0 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) { @@ -112,7 +115,7 @@ public class ErpCustomerServiceImpl implements ErpCustomerService { String funcnr = funcnrEnum.getFuncnr(); String key = "erpMap" + funcnrEnum.getFuncnr(); - if (erpConfig.getRedisCacheMap(key).isEmpty()) { + if (myRedisConfig.getRedisCacheMap(key).isEmpty()) { initializeMap(key); } // 构建req参数 @@ -130,12 +133,16 @@ public class ErpCustomerServiceImpl implements ErpCustomerService { JSONArray dataArrayALL = new JSONArray(); for (OftenEnum.ModeTypeEnum type : OftenEnum.ModeTypeEnum.values()) { req.put("mode", type.modetype); - JSONArray dataArray = erpConfig.fetchDataFromERP(funcnr, req); + 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()){ + throw exception(ERP_CUSTOMER_NOT_EXISTS); + } // 2. 处理数据,区分新增和更新 ProcessingResult result = processData(dataArrayALL, funcnrEnum); @@ -154,7 +161,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<>(); @@ -211,7 +218,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 +244,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/ErpFactoryServiceImpl.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpFactoryServiceImpl.java index 039d8de..e4d09c6 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,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.ErpFactoryPageReqVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpFactoryRespVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpFactorySaveReqVO; @@ -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_FACTORY_NOT_EXISTS; +import static com.zt.plat.module.erp.enums.ErrorCodeConstants.*; import static dm.jdbc.util.DriverUtil.log; /** @@ -41,6 +42,8 @@ public class ErpFactoryServiceImpl implements ErpFactoryService { @Resource private ErpFactoryMapper erpFactoryMapper; + @Resource + private MyRedisConfig myRedisConfig; @Resource private ErpConfig erpConfig; @@ -109,21 +112,22 @@ public class ErpFactoryServiceImpl implements ErpFactoryService { String funcnr = funcnrEnum.getFuncnr(); //防止缓存数据丢失 String key = "erpMap" + funcnrEnum.getFuncnr(); - if (erpConfig.getRedisCacheMap(key).isEmpty()) { + if (myRedisConfig.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); + Map redisCache = myRedisConfig.getRedisCacheMap(companykey); if (CollUtil.isEmpty(redisCache)) { - throw new RuntimeException("ERP公司代码缓存数据丢失,请重新同步公司代码"); + throw exception(ERP_COMPANY_REDIS_NOT_EXISTS); } for (String companyNumber : redisCache.keySet()) { req.put("BUKRS", companyNumber); // 1. 调用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()) { continue; } @@ -134,9 +138,11 @@ public class ErpFactoryServiceImpl implements ErpFactoryService { item.put("BUKRS", companyNumber); } } - dataArrayALL.addAll(dataArray); } + if (CollUtil.isEmpty(dataArrayALL)) { + throw exception(ERP_FACTORY_NOT_EXISTS); + } // 2. 处理公司数据,区分新增和更新 ProcessingResult result = processData(dataArrayALL,funcnrEnum); @@ -155,7 +161,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<>(); @@ -207,7 +213,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 +221,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); } } @@ -240,6 +246,6 @@ public class ErpFactoryServiceImpl implements ErpFactoryService { Map existingNumbers = erpFactoryMapper.selectList(new LambdaQueryWrapperX()) .stream() .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..b16b474 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; @@ -110,27 +113,31 @@ public class ErpInternalOrderServiceImpl implements ErpInternalOrderService { String funcnr = funcnrEnum.getFuncnr(); //防止缓存数据丢失 String key = "erpMap" + funcnrEnum.getFuncnr(); - if (erpConfig.getRedisCacheMap(key).isEmpty()) { + if (myRedisConfig.getRedisCacheMap(key).isEmpty()) { initializeMap(key); } Map req = new HashMap<>(); JSONArray dataArrayALL = new JSONArray(); String companyCode = "erpMap" + OftenEnum.FuncnrEnum.公司代码.getFuncnr(); - Map redisCache = erpConfig.getRedisCacheMap(companyCode); + Map redisCache = myRedisConfig.getRedisCacheMap(companyCode); if (CollUtil.isEmpty(redisCache)) { - return; + throw exception(ERP_COMPANY_REDIS_NOT_EXISTS); } // 1. 调用ERP接口获取数据 for (String number : redisCache.keySet()) { req.put("BUKRS", number); // 1. 调用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()) { continue; } dataArrayALL.addAll(dataArray); } + if (CollUtil.isEmpty(dataArrayALL)) { + throw exception(ERP_INTERNAL_ORDER_NOT_EXISTS); + } // 2. 处理公司数据,区分新增和更新 ProcessingResult result = processData(dataArrayALL, funcnrEnum); @@ -149,7 +156,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<>(); @@ -203,7 +210,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 +218,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 +243,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/ErpMaterialServiceImpl.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpMaterialServiceImpl.java index 8d785d5..0d953ab 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,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.ErpMaterialPageReqVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpMaterialRespVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpMaterialSaveReqVO; @@ -28,6 +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_INTERNAL_ORDER_NOT_EXISTS; import static com.zt.plat.module.erp.enums.ErrorCodeConstants.ERP_MATERIAL_NOT_EXISTS; import static dm.jdbc.util.DriverUtil.log; @@ -43,6 +45,8 @@ public class ErpMaterialServiceImpl implements ErpMaterialService { @Resource private ErpMaterialMapper erpMaterialMapper; @Resource + private MyRedisConfig myRedisConfig; + @Resource private ErpConfig erpConfig; @Override @@ -111,7 +115,7 @@ public class ErpMaterialServiceImpl implements ErpMaterialService { String funcnr = funcnrEnum.getFuncnr(); //防止缓存数据丢失 String key = "erp" + funcnrEnum.getFuncnr(); - if (erpConfig.getRedisCache(key)==null) { + if (myRedisConfig.getRedisCache(key)==null) { initialize(key); } @@ -127,9 +131,10 @@ public class ErpMaterialServiceImpl implements ErpMaterialService { req.put(funcnrEnum.getDatekey(), datumList); // 1. 调用ERP接口获取数据 - JSONArray dataArray = erpConfig.fetchDataFromERP(funcnr, req); - if (dataArray == null || dataArray.isEmpty()) { - return; + HashMap dataFromERP = erpConfig.fetchDataFromERP(funcnr, req); + JSONArray dataArray = (JSONArray) dataFromERP.get("E_RESP"); + if (CollUtil.isEmpty(dataArray)) { + throw exception(ERP_MATERIAL_NOT_EXISTS); } // 2. 处理公司数据,区分新增和更新 @@ -149,7 +154,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<>(); @@ -200,7 +205,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); } /** @@ -225,6 +230,6 @@ public class ErpMaterialServiceImpl implements ErpMaterialService { .stream() .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/ErpProcessDetailServiceImpl.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpProcessDetailServiceImpl.java index 66dd1ce..183c2ab 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) { @@ -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(); if (existingNumbers.containsKey(mapKey)) { updateReqVO.setId(existingNumbers.get(mapKey)); } @@ -146,11 +149,11 @@ public class ErpProcessDetailServiceImpl implements ErpProcessDetailService { new LambdaQueryWrapperX() .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::getProcessingName, result.toInsert.stream().map(ErpProcessDetailDO::getProcessingName).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(), ErpProcessDetailDO::getId)); + myRedisConfig.addRedisCacheMap(result.key, numberIdMap); } if (!result.toUpdate.isEmpty()) { erpProcessDetailMapper.updateBatch(result.toUpdate); @@ -161,7 +164,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 +186,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(); 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..542f815 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; @@ -113,26 +118,30 @@ public class ErpProcessServiceImpl implements ErpProcessService { OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.工艺路线; String funcnr = funcnrEnum.getFuncnr(); String key = "erpMap" + funcnr; - if (erpConfig.getRedisCacheMap(key).isEmpty()) { + if (myRedisConfig.getRedisCacheMap(key).isEmpty()) { initializeMap(key); } Map req = new HashMap<>(); JSONArray dataArrayALL = new JSONArray(); String factKey = "erpMap" + OftenEnum.FuncnrEnum.工厂信息.getFuncnr(); - Map redisCache = erpConfig.getRedisCacheMap(factKey); + Map redisCache = myRedisConfig.getRedisCacheMap(factKey); if (CollUtil.isEmpty(redisCache)) { - throw exception(ERP_PROCESS_NOT_EXISTS); + throw exception(ERP_FACTORY_NOT_EXISTS); } // 1. 调用ERP接口获取数据 for (String factoryNumber : redisCache.keySet()) { req.put("WERKS", factoryNumber); // 1. 调用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()) { continue; } dataArrayALL.addAll(dataArray); } + if (dataArrayALL.isEmpty()){ + throw exception(ERP_PROCESS_NOT_EXISTS); + } // 2. 处理公司数据,区分新增和更新 ProcessingResult result = processData(dataArrayALL, funcnrEnum); @@ -151,7 +160,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<>(); @@ -175,6 +184,7 @@ public class ErpProcessServiceImpl implements ErpProcessService { dataArrayNumbers.add(number); if (numbers.get(number) != null) { // 更新 + DO.setId(numbers.get(number)); toUpdate.add(DO); } else { // 新增 @@ -229,11 +239,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); } } @@ -264,6 +274,6 @@ public class ErpProcessServiceImpl implements ErpProcessService { String mapKey = bom.getFactoryNumber() + "-" + bom.getMaterialNumber() + "-" + bom.getBlineGroup(); 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..af51f56 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); @@ -193,20 +197,24 @@ public class ErpProductiveOrderServiceImpl implements ErpProductiveOrderService datumList.add(datumEntry); req.put(funcnrEnum.getDatekey(), datumList); JSONArray dataArrayALL = new JSONArray(); - List redisCache = erpConfig.getRedisCache(OftenEnum.FuncnrEnum.工厂信息.getFuncnr()); + List redisCache = myRedisConfig.getRedisCache(OftenEnum.FuncnrEnum.工厂信息.getFuncnr()); if (CollUtil.isEmpty(redisCache)) { - return; + throw exception(ERP_FACTORY_NOT_EXISTS); } // 1. 调用ERP接口获取数据 for (String number : redisCache) { req.put("WERKS", number); // 1. 调用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()) { continue; } dataArrayALL.addAll(dataArray); } + if (dataArrayALL.isEmpty()){ + throw exception(ERP_PRODUCTIVE_ORDER_NOT_EXISTS); + } // 2. 处理公司数据,区分新增和更新 ProcessingResult result = processData(dataArrayALL, funcnrEnum); @@ -225,7 +233,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 +273,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/ErpProductiveVersionServiceImpl.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpProductiveVersionServiceImpl.java index ce6bbf5..0f94a4b 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,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.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 +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_PRODUCTIVE_VERSION_NOT_EXISTS; +import static com.zt.plat.module.erp.enums.ErrorCodeConstants.*; import static dm.jdbc.util.DriverUtil.log; /** @@ -41,6 +42,8 @@ public class ErpProductiveVersionServiceImpl implements ErpProductiveVersionServ @Resource private ErpProductiveVersionMapper erpProductiveVersionMapper; + @Resource + private MyRedisConfig myRedisConfig; @Resource private ErpConfig erpConfig; @@ -110,27 +113,31 @@ public class ErpProductiveVersionServiceImpl implements ErpProductiveVersionServ String funcnr = funcnrEnum.getFuncnr(); //防止缓存数据丢失 String key = "erpMap" + funcnrEnum.getFuncnr(); - if (erpConfig.getRedisCacheMap(key).isEmpty()) { + if (myRedisConfig.getRedisCacheMap(key).isEmpty()) { initializeMap(key); } Map req = new HashMap<>(); JSONArray dataArrayALL = new JSONArray(); String factKey ="erpMap"+ OftenEnum.FuncnrEnum.工厂信息.getFuncnr(); - Map redisCache = erpConfig.getRedisCacheMap(factKey); + Map redisCache = myRedisConfig.getRedisCacheMap(factKey); if (CollUtil.isEmpty(redisCache)) { - return; + throw exception(ERP_FACTORY_NOT_EXISTS); } // 1. 调用ERP接口获取数据 for (String number : redisCache.keySet()) { req.put("WERKS", number); // 1. 调用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()) { continue; } dataArrayALL.addAll(dataArray); } + if (dataArrayALL.isEmpty()){ + throw exception(ERP_PRODUCTIVE_VERSION_NOT_EXISTS); + } // 2. 处理公司数据,区分新增和更新 ProcessingResult result = processData(dataArrayALL,funcnrEnum); @@ -149,7 +156,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<>(); @@ -204,7 +211,7 @@ public class ErpProductiveVersionServiceImpl implements ErpProductiveVersionServ ); Map numberIdMap = insertedRecords.stream() .collect(Collectors.toMap(asset -> asset.getFactoryNumber() + "-" + asset.getMaterialNumber()+ "-" + asset.getProductiveVersionNumber(), ErpProductiveVersionDO::getId)); - erpConfig.addRedisCacheMap(result.key,numberIdMap); + myRedisConfig.addRedisCacheMap(result.key,numberIdMap); } if (!result.toUpdate.isEmpty()) { erpProductiveVersionMapper.updateBatch(result.toUpdate); @@ -213,7 +220,7 @@ public class ErpProductiveVersionServiceImpl implements ErpProductiveVersionServ // 使用流式处理和批处理优化删除逻辑 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())); } } @@ -241,6 +248,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..e0ee45d 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; @@ -110,7 +113,7 @@ public class ErpPurchaseOrganizationServiceImpl implements ErpPurchaseOrganizati String funcnr = funcnrEnum.getFuncnr(); //防止缓存数据丢失 String key = "erpMap" + funcnrEnum.getFuncnr(); - if (erpConfig.getRedisCacheMap(key).isEmpty()) { + if (myRedisConfig.getRedisCacheMap(key).isEmpty()) { initializeMap(key); } @@ -118,15 +121,16 @@ public class ErpPurchaseOrganizationServiceImpl implements ErpPurchaseOrganizati JSONArray dataArrayALL = new JSONArray(); // String factKey ="erpMap"+ OftenEnum.FuncnrEnum.工厂信息.getFuncnr(); String factKey ="erpMap"+ OftenEnum.FuncnrEnum.公司代码.getFuncnr(); - Map redisCache = erpConfig.getRedisCacheMap(factKey); + Map redisCache = myRedisConfig.getRedisCacheMap(factKey); if (CollUtil.isEmpty(redisCache)) { - return; + throw exception(ERP_COMPANY_REDIS_NOT_EXISTS); } // 1. 调用ERP接口获取数据 for (String number : redisCache.keySet()) { req.put("BUKRS", number); // 1. 调用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()) { continue; } @@ -139,6 +143,9 @@ public class ErpPurchaseOrganizationServiceImpl implements ErpPurchaseOrganizati } dataArrayALL.addAll(dataArray); } + if (dataArrayALL.isEmpty()){ + throw exception(ERP_PURCHASE_ORGANIZATION_NOT_EXISTS); + } // 2. 处理公司数据,区分新增和更新 ProcessingResult result = processData(dataArrayALL,funcnrEnum); @@ -157,7 +164,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<>(); @@ -209,7 +216,7 @@ 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); @@ -217,7 +224,7 @@ public class ErpPurchaseOrganizationServiceImpl implements ErpPurchaseOrganizati 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); } } @@ -242,6 +249,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..51cb5bf 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; @@ -110,22 +113,23 @@ public class ErpSalesOrganizationServiceImpl implements ErpSalesOrganizationServ String funcnr = funcnrEnum.getFuncnr(); //防止缓存数据丢失 String key = "erpMap" + funcnrEnum.getFuncnr(); - if (erpConfig.getRedisCacheMap(key).isEmpty()) { + if (myRedisConfig.getRedisCacheMap(key).isEmpty()) { initializeMap(key); } Map req = new HashMap<>(); JSONArray dataArrayALL = new JSONArray(); String factKey ="erpMap"+ OftenEnum.FuncnrEnum.公司代码.getFuncnr(); - Map redisCache = erpConfig.getRedisCacheMap(factKey); + Map redisCache = myRedisConfig.getRedisCacheMap(factKey); if (CollUtil.isEmpty(redisCache)) { - return; + throw exception(ERP_COMPANY_REDIS_NOT_EXISTS); } // 1. 调用ERP接口获取数据 for (String number : redisCache.keySet()) { req.put("BUKRS", number); // 1. 调用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()) { continue; } @@ -138,6 +142,9 @@ public class ErpSalesOrganizationServiceImpl implements ErpSalesOrganizationServ } dataArrayALL.addAll(dataArray); } + if (dataArrayALL.isEmpty()){ + throw exception(ERP_SALES_ORGANIZATION_NOT_EXISTS); + } // 2. 处理公司数据,区分新增和更新 ProcessingResult result = processData(dataArrayALL,funcnrEnum); @@ -156,7 +163,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<>(); @@ -207,7 +214,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 +222,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); } } @@ -240,6 +247,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/ErpWarehouseServiceImpl.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpWarehouseServiceImpl.java index 41bb769..27c07a4 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,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.ErpWarehousePageReqVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpWarehouseRespVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpWarehouseSaveReqVO; @@ -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_WAREHOUSE_NOT_EXISTS; +import static com.zt.plat.module.erp.enums.ErrorCodeConstants.*; import static dm.jdbc.util.DriverUtil.log; /** @@ -41,6 +42,8 @@ public class ErpWarehouseServiceImpl implements ErpWarehouseService { @Resource private ErpWarehouseMapper erpWarehouseMapper; + @Resource + private MyRedisConfig myRedisConfig; @Resource private ErpConfig erpConfig; @@ -110,22 +113,23 @@ public class ErpWarehouseServiceImpl implements ErpWarehouseService { String funcnr = funcnrEnum.getFuncnr(); //防止缓存数据丢失 String key = "erpMap" + funcnrEnum.getFuncnr(); - if (erpConfig.getRedisCacheMap(key).isEmpty()) { + if (myRedisConfig.getRedisCacheMap(key).isEmpty()) { initializeMap(key); } Map req = new HashMap<>(); JSONArray dataArrayALL = new JSONArray(); String factKey = "erpMap" + OftenEnum.FuncnrEnum.工厂信息.getFuncnr(); - Map redisCache = erpConfig.getRedisCacheMap(factKey); + Map redisCache = myRedisConfig.getRedisCacheMap(factKey); if (CollUtil.isEmpty(redisCache)) { - return; + throw exception(ERP_FACTORY_NOT_EXISTS); } // 1. 调用ERP接口获取数据 for (String number : redisCache.keySet()) { req.put("WERKS", number); // 1. 调用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()) { continue; } @@ -136,9 +140,11 @@ public class ErpWarehouseServiceImpl implements ErpWarehouseService { item.put("WERKS", number); } } - dataArrayALL.addAll(dataArray); } + if (dataArrayALL.isEmpty()){ + throw exception(ERP_WAREHOUSE_NOT_EXISTS); + } // 2. 处理公司数据,区分新增和更新 ProcessingResult result = processData(dataArrayALL, funcnrEnum); @@ -157,7 +163,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<>(); @@ -207,7 +213,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 +222,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())); } } @@ -244,6 +250,6 @@ public class ErpWarehouseServiceImpl implements ErpWarehouseService { 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..1d8f667 --- /dev/null +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/utils/ErpConfig.java @@ -0,0 +1,170 @@ +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 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 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); + } + } + + /** + * 调用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 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"); + } + 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..e7fb2b7 --- /dev/null +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/utils/MyRedisConfig.java @@ -0,0 +1,191 @@ +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 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) { + // 使用 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; + } + } + + + + + + + + + + + +} \ No newline at end of file From e0f1cb58aa832b3791230a0c2a4c90cd7747c7e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BD=98=E8=8D=A3=E6=99=9F?= <9691125+pan-rongsheng@user.noreply.gitee.com> Date: Tue, 30 Sep 2025 17:35:39 +0800 Subject: [PATCH 029/120] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=B8=9A=E5=8A=A1?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tmpltp/enums/ErrorCodeConstants.java | 8 +- .../templtp/TmplInscBsnRelController.java | 123 ++++++++ .../templtp/TmplInscDatBsnController.java | 109 +++++++ .../templtp/TmplInscItmBsnController.java | 108 +++++++ .../templtp/vo/TmplInscBsnRelPageReqVO.java | 32 ++ .../templtp/vo/TmplInscBsnRelRespVO.java | 69 +++++ .../templtp/vo/TmplInscBsnRelSaveReqVO.java | 27 ++ .../templtp/vo/TmplInscDatBsnPageReqVO.java | 30 ++ .../templtp/vo/TmplInscDatBsnRespVO.java | 42 +++ .../templtp/vo/TmplInscDatBsnSaveReqVO.java | 26 ++ .../templtp/vo/TmplInscItmBsnPageReqVO.java | 30 ++ .../templtp/vo/TmplInscItmBsnRespVO.java | 42 +++ .../templtp/vo/TmplInscItmBsnSaveReqVO.java | 26 ++ .../dataobject/tmpltp/TmplInscBsnRelDO.java | 55 ++++ .../dataobject/tmpltp/TmplInscDatBsnDO.java | 48 +++ .../dataobject/tmpltp/TmplInscItmBsnDO.java | 48 +++ .../mysql/tmpltp/TmplInscBsnRelMapper.java | 32 ++ .../mysql/tmpltp/TmplInscDatBsnMapper.java | 30 ++ .../mysql/tmpltp/TmplInscItmBsnMapper.java | 29 ++ .../tmpltp/TemplateInstanceService.java | 6 + .../tmpltp/TemplateInstanceServiceImpl.java | 5 + .../service/tmpltp/TmplInscBsnRelService.java | 71 +++++ .../tmpltp/TmplInscBsnRelServiceImpl.java | 276 ++++++++++++++++++ .../service/tmpltp/TmplInscDatBsnService.java | 73 +++++ .../tmpltp/TmplInscDatBsnServiceImpl.java | 104 +++++++ .../service/tmpltp/TmplInscItmBsnService.java | 71 +++++ .../tmpltp/TmplInscItmBsnServiceImpl.java | 104 +++++++ .../mapper/tmpltp/TmplInscBsnRelMapper.xml | 12 + 28 files changed, 1635 insertions(+), 1 deletion(-) create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/TmplInscBsnRelController.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/TmplInscDatBsnController.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/TmplInscItmBsnController.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TmplInscBsnRelPageReqVO.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TmplInscBsnRelRespVO.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TmplInscBsnRelSaveReqVO.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TmplInscDatBsnPageReqVO.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TmplInscDatBsnRespVO.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TmplInscDatBsnSaveReqVO.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TmplInscItmBsnPageReqVO.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TmplInscItmBsnRespVO.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TmplInscItmBsnSaveReqVO.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/tmpltp/TmplInscBsnRelDO.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/tmpltp/TmplInscDatBsnDO.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/tmpltp/TmplInscItmBsnDO.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/tmpltp/TmplInscBsnRelMapper.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/tmpltp/TmplInscDatBsnMapper.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/tmpltp/TmplInscItmBsnMapper.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplInscBsnRelService.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplInscBsnRelServiceImpl.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplInscDatBsnService.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplInscDatBsnServiceImpl.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplInscItmBsnService.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplInscItmBsnServiceImpl.java create mode 100644 zt-module-base/zt-module-base-server/src/main/resources/mapper/tmpltp/TmplInscBsnRelMapper.xml 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 48b6545..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 @@ -25,7 +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_503, "模板条款已存在"); + 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-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/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/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/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/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 34d27dd..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 @@ -135,4 +135,10 @@ public interface TemplateInstanceService { * @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 240ae14..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 @@ -479,4 +479,9 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService { 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..ec25783 --- /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,71 @@ +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); +} 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..a7a5745 --- /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,276 @@ +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() : "分类未命名"); + } + } + + //业务条款 + 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/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 From 88063d84ae784857e6b2299911fb8c6d862e413a Mon Sep 17 00:00:00 2001 From: chenbowen Date: Thu, 9 Oct 2025 09:16:48 +0800 Subject: [PATCH 030/120] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20xxl-job=20?= =?UTF-8?q?=E5=9B=9E=E8=B0=83=E7=AB=AF=E5=8F=A3=E6=98=A0=E5=B0=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deployment.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/deployment.yaml b/deployment.yaml index 59cad93..fb94915 100644 --- a/deployment.yaml +++ b/deployment.yaml @@ -65,3 +65,7 @@ spec: port: 48100 targetPort: 48100 nodePort: 30097 + - protocol: TCP + port: 9999 + targetPort: 9999 + nodePort: 30197 From 303ce4ec4de8c59563214c3994693df08d3c52bf Mon Sep 17 00:00:00 2001 From: guojunyun Date: Thu, 9 Oct 2025 09:34:08 +0800 Subject: [PATCH 031/120] =?UTF-8?q?=E5=90=88=E5=90=8C=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E7=BB=93=E6=9E=84=E4=BF=AE=E6=94=B9=E3=80=81=E5=90=88=E5=90=8C?= =?UTF-8?q?=E5=AE=A1=E6=A0=B8=E6=8E=A5=E5=8F=A3=E9=83=A8=E5=88=86=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../enums/ErrorCodeConstants.java | 5 +- .../enums/TableFieldConstants.java | 4 +- .../enums/contract/AuditResultEnum.java | 46 ++ .../admin/contract/ContractController.java | 17 +- .../vo/contract/ContractApprovalReqVO.java | 23 + .../vo/contract/ContractDetailSaveReqVO.java | 3 - .../vo/contract/ContractFormulaSaveReqVO.java | 16 +- .../vo/contract/ContractSaveReqVO.java | 3 + .../vo/contract/ContractViewDetailRespVO.java | 3 - .../contract/ContractViewFormulaRespVO.java | 15 +- .../vo/contract/ContractViewRespVO.java | 3 + .../contract/ContractFormulaDO.java | 6 +- .../service/contract/ContractService.java | 3 + .../service/contract/ContractServiceImpl.java | 459 ++++++++++-------- 14 files changed, 364 insertions(+), 242 deletions(-) create mode 100644 zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/AuditResultEnum.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractApprovalReqVO.java 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 e958890..57c28fb 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,7 +17,8 @@ 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_005, "{}合同不允许修改"); + 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_005, "{}合同不允许提交审核"); + ErrorCode CONTRACT_STATUS_NOT_SUBMIT_APPROVAL = new ErrorCode(1_027_000_007, "{}状态合同不允许提交审核"); + ErrorCode CONTRACT_STATUS_NOT_APPROVAL = new ErrorCode(1_027_000_008, "{}状态合同不允许审核"); } 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 9880f79..ff910b3 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 @@ -99,8 +99,8 @@ public class TableFieldConstants { 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"; /* 基础系数配置表 */ // 条款主键 diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/AuditResultEnum.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/AuditResultEnum.java new file mode 100644 index 0000000..14da5a3 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/AuditResultEnum.java @@ -0,0 +1,46 @@ +package com.zt.plat.module.contractorder.enums.contract; + +/** + * 合同审核结果 + */ +public enum AuditResultEnum { + /** + * 合同状态-草稿 + */ + PASS("通过","PASS", null), + /** + * 合同状态-正在审核 + */ + REJECT("驳回","REJECT",null); + + AuditResultEnum(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-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 ea93e04..545fce1 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 @@ -5,10 +5,7 @@ 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; @@ -109,6 +106,14 @@ public class ContractController implements BusinessControllerMarker { return success(contractService.submitApproval(id)); } + // TODO + @PostMapping("/approval") + @Operation(summary = "合同审批") + @PreAuthorize("@ss.hasPermission('system:contract:approval')") + public CommonResult approval(@Valid @RequestBody ContractApprovalReqVO reqVO) { + return success(contractService.approval(reqVO)); + } + // TODO @PostMapping("/view/approval") @Operation(summary = "查看审批") @@ -117,9 +122,9 @@ public class ContractController implements BusinessControllerMarker { } // TODO - @PostMapping("/submit/ERP") + @PostMapping("/submit/erp") @Operation(summary = "提交ERP") @PreAuthorize("@ss.hasPermission('system:contract:erp')") - public void submitERP() { + public void submitErp() { } } 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/ContractApprovalReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractApprovalReqVO.java new file mode 100644 index 0000000..5e14731 --- /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/ContractApprovalReqVO.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 ContractApprovalReqVO { + + @Schema(description = "合同主键ID", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "合同主键ID不能为空") + private Long id; + + @Schema(description = "审核结果(通过:PASS,驳回:REJECT)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank(message = "审核结果不能为空") + private String auditResult; + + @Schema(description = "审批意见", requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank(message = "审核意见不能为空") + 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/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/ContractDetailSaveReqVO.java index 29ed52a..d6a9460 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/ContractDetailSaveReqVO.java @@ -42,7 +42,4 @@ public class ContractDetailSaveReqVO { // 交货计划 private List plans; - - // 价款结算条款 - private List formulas; } \ 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/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/ContractFormulaSaveReqVO.java index f96295c..528d930 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/ContractFormulaSaveReqVO.java @@ -10,14 +10,14 @@ import java.util.List; @Data public class ContractFormulaSaveReqVO { - @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 +26,7 @@ public class ContractFormulaSaveReqVO { @Schema(description = "编码公式") private String numberFormula; - @Schema(description = "物料名称", example = "物料名称") + @Schema(description = "物料名称", example = "赵六") private String materialName; @Schema(description = "物料编码") @@ -41,10 +41,10 @@ public class ContractFormulaSaveReqVO { @Schema(description = "金属元素缩写") private String elementAbbreviation; - @Schema(description = "金属元素名称", example = "金属元素名称") + @Schema(description = "金属元素名称", example = "赵六") private String elementName; - @Schema(description = "结算类型,多条使用逗号分隔(字典:PRCH_STLM_TP)", example = "LST") + @Schema(description = "结算类型,多条使用逗号分隔(字典:PRCH_STLM_TP)", example = "1") private String settlementType; // 基础系数配置 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 c826d7f..34bb064 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 @@ -214,4 +214,7 @@ public class ContractSaveReqVO { // 合同动态表单 private List dynamicsFields; + + // 价款结算条款 + private List formulas; } \ 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/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/ContractViewDetailRespVO.java index 9385e22..938385b 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/ContractViewDetailRespVO.java @@ -38,7 +38,4 @@ public class ContractViewDetailRespVO { // 交货计划 private List plans; - - // 价款结算条款 - private List formulas; } 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/ContractViewFormulaRespVO.java index ae04390..1db5876 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/ContractViewFormulaRespVO.java @@ -8,13 +8,13 @@ import java.util.List; @Schema(description = "管理后台 - 价款结算条款 Response VO") @Data public class ContractViewFormulaRespVO { - @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") - private Long contractDetailId; + @Schema(description = "合同主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "9162") + private Long contractId; - @Schema(description = "公式类型;单价/总价/水扣款/加工费", example = "UNIT_PRICE") + @Schema(description = "公式类型;单价/总价/水扣款/加工费", example = "1") private String formulaType; @Schema(description = "公式") @@ -23,7 +23,7 @@ public class ContractViewFormulaRespVO { @Schema(description = "编码公式") private String numberFormula; - @Schema(description = "物料名称", example = "物料名称") + @Schema(description = "物料名称", example = "赵六") private String materialName; @Schema(description = "物料编码") @@ -38,9 +38,12 @@ public class ContractViewFormulaRespVO { @Schema(description = "金属元素缩写") private String elementAbbreviation; - @Schema(description = "金属元素名称", example = "金属元素名称") + @Schema(description = "金属元素名称", example = "赵六") private String elementName; + @Schema(description = "结算类型,多条使用逗号分隔(字典:PRCH_STLM_TP)", example = "1") + private String settlementType; + // 基础系数配置 private List coefficients; // 品位等级价配置 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-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractViewRespVO.java index 316a237..049bed7 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-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractViewRespVO.java @@ -300,4 +300,7 @@ public class ContractViewRespVO { // 合同动态条款 private List dynamicsItems; + + // 价款结算条款 + private List formulas; } 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/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 783cd53..dc64e89 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,6 +1,7 @@ package com.zt.plat.module.contractorder.service.contract; import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.module.contractorder.controller.admin.contract.vo.contract.ContractApprovalReqVO; 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; @@ -53,4 +54,6 @@ public interface ContractService { * @return 审批结果 */ String submitApproval(Long id); + + String approval(@Valid ContractApprovalReqVO reqVO); } diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/contract/ContractServiceImpl.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/contract/ContractServiceImpl.java index a891525..fd003dd 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 @@ -142,74 +142,74 @@ 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 (formula.getNots() != null && !formula.getNots().isEmpty()) { + formula.getNots().forEach(not -> { + // 品位不计价配置DO + ContractNotDO notDO = BeanUtils.toBean(not, ContractNotDO.class); + // 条款主键 + notDO.setFormulaId(formulaDOId); + // 保存品位不计价配置 + contractNotMapper.insert(notDO); }); } }); @@ -259,46 +259,46 @@ public class ContractServiceImpl implements ContractService { 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)); + // 查询并设置价款结算条款 + List formulaDOS = contractFormulaMapper + .selectList(TableFieldConstants.BSE_CTRT_FMU_CTRT_ID, contractMainDO.getId()); + if (formulaDOS != null && !formulaDOS.isEmpty()) { + respVO.setFormulas(BeanUtils.toBean(formulaDOS, ContractViewFormulaRespVO.class)); - detail.getFormulas().forEach(formula -> { + 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, 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)); - } - }); + // 查询并设置基础系数配置 + 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)); } }); } @@ -378,37 +378,37 @@ 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()); + // 删除品位不计价配置 + contractNotMapper.delete(TableFieldConstants.BSE_CTRT_NT_FMU_ID, formulaDOId.toString()); + }); + + // 删除价款结算条款 + contractFormulaMapper.delete(TableFieldConstants.BSE_CTRT_FMU_CTRT_ID, id.toString()); + } + // 重新插入关联信息 if (reqVO.getDetail() != null && !reqVO.getDetail().isEmpty()) { reqVO.getDetail().forEach(detail -> { @@ -432,74 +432,74 @@ 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(id); + // 保存价款结算条款 + 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 (formula.getNots() != null && !formula.getNots().isEmpty()) { + formula.getNots().forEach(not -> { + // 品位不计价配置DO + ContractNotDO notDO = BeanUtils.toBean(not, ContractNotDO.class); + // 条款主键 + notDO.setFormulaId(formulaDOId); + // 保存品位不计价配置 + contractNotMapper.insert(notDO); }); } }); @@ -561,27 +561,68 @@ public class ContractServiceImpl implements ContractService { AdminUserRespDTO adminUserRespDTO = adminUserApi .getUser(SecurityFrameworkUtils.getLoginUserId()).getData(); - // 先创建流程,后更新状态 - 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()); + if (StringUtils.isNotBlank(contractMainDO.getProcessInstanceId())) { + + // TODO:驳回状态重新提交审批处理 + // 进入审批流程的合同,查询当前审批的任务节点 + List taskList = bpmTaskApi.getTaskListByProcessInstanceId(contractMainDO.getProcessInstanceId()).getData(); + } else { + + // 未进入审批流程的合同,创建审批流程 + 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(ContractStatusEnum.UNDER_REVIEW.getCode()); + contractMainMapper.updateById(contractMainDO); + return "提交审批成功"; } - contractMainDO.setStatus(ContractStatusEnum.UNDER_REVIEW.getCode()); - contractMainMapper.updateById(contractMainDO); - return "提交审批成功"; } return "提交审批失败"; } + @Override + public String approval(ContractApprovalReqVO 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 (ContractStatusEnum.DRAFT.getCode().equals(contractMainDO.getStatus()) + || ContractStatusEnum.IN_PROGRESS.getCode().equals(contractMainDO.getStatus()) + || ContractStatusEnum.REJECTED.getCode().equals(contractMainDO.getStatus()) + || ContractStatusEnum.TERMINATED.getCode().equals(contractMainDO.getStatus()) + || ContractStatusEnum.ARCHIVED.getCode().equals(contractMainDO.getStatus()) + || ContractStatusEnum.DELETED.getCode().equals(contractMainDO.getStatus())) { + + throw exception(CONTRACT_STATUS_NOT_APPROVAL, + ContractStatusEnum.valueOf(contractMainDO.getStatus()).getLabel()); + } + + return ""; + } + /** * 校验合同内容 * From b3452902bc82bae4ca70f6e2152a886e191a52ea Mon Sep 17 00:00:00 2001 From: guojunyun Date: Thu, 9 Oct 2025 16:53:38 +0800 Subject: [PATCH 032/120] =?UTF-8?q?=E5=90=88=E5=90=8C=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E7=BB=93=E6=9E=84=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../enums/TableFieldConstants.java | 8 +- .../vo/contract/ContractDemoteSaveReqVO.java | 43 ++++++++ .../vo/contract/ContractFormulaSaveReqVO.java | 2 - .../vo/contract/ContractNotSaveReqVO.java | 33 +++--- .../vo/contract/ContractSaveReqVO.java | 6 ++ .../vo/contract/ContractViewDemoteRespVO.java | 59 ++++++++++ .../contract/ContractViewFormulaRespVO.java | 2 - .../vo/contract/ContractViewNotRespVO.java | 53 +++++---- .../vo/contract/ContractViewRespVO.java | 6 ++ .../dataobject/contract/ContractDemoteDO.java | 77 +++++++++++++ .../dataobject/contract/ContractNotDO.java | 33 +++--- .../contract/ContractOtherFieldDO.java | 70 ++++++++++++ .../contract/ContractOtherFormDO.java | 67 ++++++++++++ .../mysql/contract/ContractDemoteMapper.java | 15 +++ .../contract/ContractOtherFieldMapper.java | 15 +++ .../contract/ContractOtherFormMapper.java | 14 +++ .../service/contract/ContractServiceImpl.java | 102 ++++++++++++------ 17 files changed, 509 insertions(+), 96 deletions(-) create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractDemoteSaveReqVO.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractViewDemoteRespVO.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractDemoteDO.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractOtherFieldDO.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractOtherFormDO.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/contract/ContractDemoteMapper.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/contract/ContractOtherFieldMapper.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/contract/ContractOtherFormMapper.java 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 ff910b3..1f9847e 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 @@ -118,9 +118,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"; /* 实例字段值表 */ // 关联实例主键 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/ContractDemoteSaveReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractDemoteSaveReqVO.java new file mode 100644 index 0000000..007f10a --- /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/ContractDemoteSaveReqVO.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 ContractDemoteSaveReqVO { + + @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/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/ContractFormulaSaveReqVO.java index 528d930..b47ba7d 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/ContractFormulaSaveReqVO.java @@ -55,6 +55,4 @@ public class ContractFormulaSaveReqVO { private List deducts; // 市场价配置 private List prices; - // 品位不计价配置 - 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/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 index 2f8a793..117594f 100644 --- 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 @@ -1,24 +1,21 @@ 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") +@Schema(description = "管理后台 - 品位不计价规则新增/修改 Request VO") @Data public class ContractNotSaveReqVO { - @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "21132") + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "18545") 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 = "合同主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "5333") + @NotNull(message = "合同主键不能为空") + private Long contractId; @Schema(description = "金属元素编码") private String elementNumber; @@ -26,23 +23,21 @@ public class ContractNotSaveReqVO { @Schema(description = "金属元素缩写") private String elementAbbreviation; - @Schema(description = "金属元素名称", example = "张三") + @Schema(description = "金属元素名称", example = "王五") private String elementName; - @Schema(description = "上限", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "上限不能为空") + @Schema(description = "上限") private BigDecimal gradeUp; @Schema(description = "下限") private BigDecimal gradeDown; - @Schema(description = "是否包含上限") - private String isInUp; + @Schema(description = "区间方式(字典:STLM_RNG_WY)") + private String rangeWay; - @Schema(description = "是否包含下限") - private String isInDown; + @Schema(description = "物料名称", example = "芋艿") + private String materialName; - @Schema(description = "是否省内", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "是否省内不能为空") - private String inState; + @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/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 34bb064..ea8a563 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 @@ -217,4 +217,10 @@ public class ContractSaveReqVO { // 价款结算条款 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/ContractViewDemoteRespVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractViewDemoteRespVO.java new file mode 100644 index 0000000..26e851e --- /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/ContractViewDemoteRespVO.java @@ -0,0 +1,59 @@ +package com.zt.plat.module.contractorder.controller.admin.contract.vo.contract; + +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 ContractViewDemoteRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "31818") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "合同主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "14971") + @ExcelProperty("合同主键") + private Long contractId; + + @Schema(description = "金属元素编码") + @ExcelProperty("金属元素编码") + private String elementNumber; + + @Schema(description = "金属元素缩写") + @ExcelProperty("金属元素缩写") + private String elementAbbreviation; + + @Schema(description = "金属元素名称", example = "王五") + @ExcelProperty("金属元素名称") + private String elementName; + + @Schema(description = "上限") + @ExcelProperty("上限") + private BigDecimal gradeUp; + + @Schema(description = "区间方式(字典:STLM_RNG_WY)") + @ExcelProperty("区间方式(字典:STLM_RNG_WY)") + private String rangeWay; + + @Schema(description = "下限") + @ExcelProperty("下限") + private BigDecimal gradeDown; + + @Schema(description = "降级后物料名称", example = "李四") + @ExcelProperty("降级后物料名称") + private String materialName; + + @Schema(description = "降级后物料编码") + @ExcelProperty("降级后物料编码") + private String materialNumber; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + 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/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/ContractViewFormulaRespVO.java index 1db5876..fe3344d 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/ContractViewFormulaRespVO.java @@ -52,6 +52,4 @@ public class ContractViewFormulaRespVO { private List deducts; // 市场价配置 private List prices; - // 品位不计价配置 - 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/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 index 5899f95..1d0f28e 100644 --- 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 @@ -1,48 +1,59 @@ package com.zt.plat.module.contractorder.controller.admin.contract.vo.contract; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; 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; -@Schema(description = "管理后台 - 品位不计价配置 Response VO") +@Schema(description = "管理后台 - 品位不计价规则 Response VO") @Data +@ExcelIgnoreUnannotated public class ContractViewNotRespVO { - @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "21132") + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "18545") + @ExcelProperty("主键") 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 = "合同主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "5333") + @ExcelProperty("合同主键") + private Long contractId; @Schema(description = "金属元素编码") + @ExcelProperty("金属元素编码") private String elementNumber; @Schema(description = "金属元素缩写") + @ExcelProperty("金属元素缩写") private String elementAbbreviation; - @Schema(description = "金属元素名称", example = "张三") + @Schema(description = "金属元素名称", example = "王五") + @ExcelProperty("金属元素名称") private String elementName; - @Schema(description = "上限", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "上限不能为空") + @Schema(description = "上限") + @ExcelProperty("上限") private BigDecimal gradeUp; @Schema(description = "下限") + @ExcelProperty("下限") private BigDecimal gradeDown; - @Schema(description = "是否包含上限") - private String isInUp; + @Schema(description = "区间方式(字典:STLM_RNG_WY)") + @ExcelProperty("区间方式(字典:STLM_RNG_WY)") + private String rangeWay; - @Schema(description = "是否包含下限") - private String isInDown; + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; - @Schema(description = "是否省内", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "是否省内不能为空") - private String inState; -} + @Schema(description = "物料名称", example = "芋艿") + @ExcelProperty("物料名称") + private String materialName; + + @Schema(description = "物料编码") + @ExcelProperty("物料编码") + 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/ContractViewRespVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractViewRespVO.java index 049bed7..1ff3516 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-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractViewRespVO.java @@ -303,4 +303,10 @@ public class ContractViewRespVO { // 价款结算条款 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/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/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/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..25ea87a --- /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,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.ContractDemoteDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 参数降级规则 Mapper + * + * @author 后台管理-1 + */ +@Mapper +public interface ContractDemoteMapper 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/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/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 fd003dd..a9918d3 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 @@ -81,6 +81,8 @@ public class ContractServiceImpl implements ContractService { private BpmProcessInstanceApi bpmProcessInstanceApi; @Resource private BpmTaskApi bpmTaskApi; + @Resource + private ContractDemoteMapper contractDemoteMapper; @Override public PageResult getContractPage(ContractPageReqVO pageReqVO) { @@ -201,17 +203,30 @@ public class ContractServiceImpl implements ContractService { 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); - }); - } + }); + } + + // 参数降级规则 + 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); }); } @@ -246,7 +261,7 @@ 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()) { @@ -294,15 +309,23 @@ public class ContractServiceImpl implements ContractService { 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)); - } }); } + // 查询并设置参数降级规则 + List demoteDOS = contractDemoteMapper + .selectList(TableFieldConstants.BSE_CTRT_DMOT_CTRT_ID, contractMainDO.getId()); + if (demoteDOS != null && !demoteDOS.isEmpty()) { + respVO.setDemotes(BeanUtils.toBean(demoteDOS, ContractViewDemoteRespVO.class)); + } + + // 查询并设置品位不计价规则 + List notDOS = contractNotMapper + .selectList(TableFieldConstants.BSE_CTRT_NT_CTRT_ID, contractMainDO.getId()); + if (notDOS != null && !notDOS.isEmpty()) { + respVO.setNots(BeanUtils.toBean(notDOS, ContractViewNotRespVO.class)); + } + // 查询并设置合同动态表单 List templateInstanceDataDOS = templateInstanceDataMapper .selectList(TableFieldConstants.BSE_TMPL_INSC_DAT_INSC_ID, contractMainDO.getInstanceId()); @@ -401,14 +424,18 @@ public class ContractServiceImpl implements ContractService { 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_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 -> { @@ -491,17 +518,30 @@ public class ContractServiceImpl implements ContractService { 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); - }); - } + }); + } + + // 参数降级规则 + if (reqVO.getDemotes() != null && !reqVO.getDemotes().isEmpty()) { + reqVO.getDemotes().forEach(demote -> { + // 参数降级规则DO + ContractDemoteDO demoteDO = BeanUtils.toBean(demote, ContractDemoteDO.class); + // 设置合同主键 + demoteDO.setContractId(id); + // 保存参数降级规则 + 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); + // 保存品位不计价规则 + contractNotMapper.insert(notDO); }); } From ad9116ef84629730450ac15b5f26c06533389f83 Mon Sep 17 00:00:00 2001 From: chenbowen Date: Fri, 10 Oct 2025 09:50:25 +0800 Subject: [PATCH 033/120] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20xxl-job=20?= =?UTF-8?q?=E7=AB=AF=E5=8F=A3=E9=85=8D=E7=BD=AE=E9=94=99=E8=AF=AF=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deployment.yaml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/deployment.yaml b/deployment.yaml index fb94915..1da2c08 100644 --- a/deployment.yaml +++ b/deployment.yaml @@ -61,11 +61,13 @@ spec: selector: app: base-server ports: - - protocol: TCP + - name: http + protocol: TCP port: 48100 targetPort: 48100 nodePort: 30097 - - protocol: TCP + - name: xxl-job + protocol: TCP port: 9999 targetPort: 9999 nodePort: 30197 From 9e87d811eff72779f3cf53640a25e1b8f82ffdfc Mon Sep 17 00:00:00 2001 From: liss <1780094091@qq.com> Date: Fri, 10 Oct 2025 09:54:23 +0800 Subject: [PATCH 034/120] =?UTF-8?q?=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/zt/plat/module/erp/utils/ErpConfig.java | 1 + 1 file changed, 1 insertion(+) 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 index 1d8f667..114ccda 100644 --- 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 @@ -25,6 +25,7 @@ import static dm.jdbc.util.DriverUtil.log; @Configuration public class ErpConfig { + @Value("${erp.address}") private String erpAddress; From 3ad87d6d29008af9ee1428f0bfe6ff35763c1aa3 Mon Sep 17 00:00:00 2001 From: guojunyun Date: Fri, 10 Oct 2025 10:41:12 +0800 Subject: [PATCH 035/120] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=97=B6=EF=BC=8C?= =?UTF-8?q?=E5=88=A4=E6=96=AD=E7=94=B2=E6=96=B9=E5=92=8C=E4=B9=99=E6=96=B9?= =?UTF-8?q?=E7=9A=84ERP=E7=9A=84=E5=85=AC=E5=8F=B8=E7=BC=96=E7=A0=81?= =?UTF-8?q?=E5=92=8CERP=E5=85=AC=E5=8F=B8=E5=90=8D=E7=A7=B0=E6=98=AF?= =?UTF-8?q?=E5=90=A6=E5=AD=98=E5=9C=A8=EF=BC=8C=E4=B8=8D=E5=AD=98=E5=9C=A8?= =?UTF-8?q?=E5=88=99=E8=BF=94=E5=9B=9E=E2=80=9C=E8=AF=B7=E5=85=88=E7=BB=91?= =?UTF-8?q?=E5=AE=9AERP=E5=85=AC=E5=8F=B8=E4=BF=A1=E6=81=AF=E2=80=9D=20?= =?UTF-8?q?=E5=90=88=E5=90=8C=E4=B8=BB=E4=BF=A1=E6=81=AF=E8=A1=A8=E7=BB=93?= =?UTF-8?q?=E6=9E=84=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../contractorder/enums/ApiConstants.java | 3 ++ .../enums/ErrorCodeConstants.java | 1 + .../zt-module-contract-order-server/pom.xml | 5 +++ .../vo/contract/ContractSaveReqVO.java | 5 ++- .../dataobject/contract/ContractMainDO.java | 31 +++++++++++++++++-- .../service/contract/ContractServiceImpl.java | 19 ++++++++++++ .../plat/module/erp/enums/ApiConstants.java | 1 + .../erp/service/erp/ErpCompanyService.java | 8 +++++ .../service/erp/ErpCompanyServiceImpl.java | 13 +++++--- 9 files changed, 78 insertions(+), 8 deletions(-) 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 index f99bcef..7fba414 100644 --- 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 @@ -20,4 +20,7 @@ public class ApiConstants { 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 57c28fb..050bbd5 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 @@ -21,4 +21,5 @@ public interface ErrorCodeConstants { 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公司信息"); } 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 2894858..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 @@ -136,6 +136,11 @@ 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/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 ea8a563..361069c 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 @@ -208,6 +208,9 @@ public class ContractSaveReqVO { @Schema(description = "达到收款条件金额;与ERP(DDSKJE)对应,拓展信息,销售合同,且类型为SAP02COSR必填") private BigDecimal payeeConditionAmount; + @Schema(description = "是否内部企业(字典:ERP_CTRT_YN)") + private String isInternal; + // 模板部分 @Schema(description = "模板实例主键", example = "10196") private Long instanceId; @@ -221,6 +224,6 @@ public class ContractSaveReqVO { // 参数降级规则 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/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 4cc33ce..b8ce37d 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; @@ -364,4 +364,29 @@ public class ContractMainDO extends BusinessBaseDO { */ @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; } \ No newline at end of file diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/contract/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 a9918d3..616eb58 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 @@ -19,11 +19,13 @@ import com.zt.plat.module.bpm.api.task.dto.BpmTaskRespDTO; import com.zt.plat.module.contractorder.controller.admin.contract.vo.contract.*; import com.zt.plat.module.contractorder.dal.dataobject.contract.*; import com.zt.plat.module.contractorder.dal.mysql.contract.*; +import com.zt.plat.module.contractorder.enums.ApiConstants; import com.zt.plat.module.contractorder.enums.DateConstants; import com.zt.plat.module.contractorder.enums.ProcessConstants; import com.zt.plat.module.contractorder.enums.TableFieldConstants; import com.zt.plat.module.contractorder.enums.contract.ContractStatusEnum; import com.zt.plat.module.contractorder.enums.contract.ErpCtrtYesNoEnum; +import com.zt.plat.module.erp.service.erp.ErpCompanyService; import com.zt.plat.module.system.api.user.AdminUserApi; import com.zt.plat.module.system.api.user.dto.AdminUserRespDTO; import jakarta.annotation.Resource; @@ -83,6 +85,8 @@ public class ContractServiceImpl implements ContractService { private BpmTaskApi bpmTaskApi; @Resource private ContractDemoteMapper contractDemoteMapper; + @Resource + private ErpCompanyService erpCompanyService; @Override public PageResult getContractPage(ContractPageReqVO pageReqVO) { @@ -109,6 +113,21 @@ public class ContractServiceImpl implements ContractService { } } + // 校验ERP的公司 + if (StringUtils.isNotEmpty(reqVO.getPurchaseCompanyNumber()) + || StringUtils.isNotEmpty(reqVO.getSalesCompanyNumber())) { + if (StringUtils.isNotEmpty(reqVO.getPurchaseCompanyNumber())) { + if (erpCompanyService.getErpCompanyByNumber(reqVO.getPurchaseCompanyNumber()) == null) { + throw exception(CONTRACT_ERP_COMPANY_PLEASE_BIND, ApiConstants.PURCHASE); + } + } + if (StringUtils.isNotEmpty(reqVO.getSalesCompanyNumber())) { + if (erpCompanyService.getErpCompanyByNumber(reqVO.getSalesCompanyNumber()) == null) { + throw exception(CONTRACT_ERP_COMPANY_PLEASE_BIND, ApiConstants.SALES); + } + } + } + // 合同主信息 ContractMainDO contractMainDO = BeanUtils.toBean(reqVO, ContractMainDO.class); // 合同状态保存为草稿 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 1a4ca8c..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 @@ -20,4 +20,5 @@ public class ApiConstants { 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-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..2dd2cee 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,12 @@ public interface ErpCompanyService { PageResult getErpCompanyPage(ErpCompanyPageReqVO pageReqVO); void callErpRfcInterface(); + + /** + * 通过公司编码获得ERP公司 + * + * @param number 公司编码 + * @return ERP公司 + */ + ErpCompanyDO getErpCompanyByNumber(String number); } \ 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 5f86f82..464b7d6 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,14 +7,14 @@ 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.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.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.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -27,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_BOM_NOT_EXISTS; +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; @@ -136,6 +136,11 @@ public class ErpCompanyServiceImpl implements ErpCompanyService { } } + @Override + public ErpCompanyDO getErpCompanyByNumber(String number) { + return erpCompanyMapper.selectOne(TABLE_FIELD_SPLY_ERP_CPN_NUM, number); + } + /** * 处理数据,区分新增和更新 */ From a271f1b8f5fc261399e8a6d963b48743c988ee7a Mon Sep 17 00:00:00 2001 From: liss <1780094091@qq.com> Date: Fri, 10 Oct 2025 15:05:51 +0800 Subject: [PATCH 036/120] =?UTF-8?q?ERP=E4=BC=98=E5=8C=96=EF=BC=8C=E7=89=A9?= =?UTF-8?q?=E6=96=99TP=E9=BB=98=E8=AE=A4ERP,=E5=90=88=E5=90=8C=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E7=9B=B4=E6=8E=A5=E6=9F=A5ERP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/erp/vo/ErpMaterialPageReqVO.java | 3 + .../admin/erp/vo/ErpMaterialRespVO.java | 4 ++ .../admin/erp/vo/ErpMaterialSaveReqVO.java | 4 ++ .../erp/dal/dataobject/erp/ErpMaterialDO.java | 11 ++- .../service/erp/ErpContractServiceImpl.java | 71 ++++++++++++++++++- .../service/erp/ErpMaterialServiceImpl.java | 3 +- .../resources/mapper/ErpMaterialMapper.xml | 43 +++++------ 7 files changed, 110 insertions(+), 29 deletions(-) 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..449525b 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 @@ -68,4 +68,8 @@ public class ErpMaterialRespVO { @ExcelProperty("物料长描述") private String materialLengthDescription; + @Schema(description = "类型") + @ExcelProperty("类型") + 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/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..c118ff3 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; @@ -65,4 +66,7 @@ public class ErpMaterialSaveReqVO { @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/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..c3f35d7 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,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.*; import java.time.LocalDateTime; @@ -21,10 +22,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 +96,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/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 ff51402..c55748b 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,6 +6,7 @@ import com.alibaba.fastjson.JSONObject; import com.xxl.job.core.handler.annotation.XxlJob; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.util.object.BeanUtils; +import com.zt.plat.module.erp.dal.dataobject.erp.ErpProductiveOrderDO; import com.zt.plat.module.erp.utils.ErpConfig; import com.zt.plat.module.erp.utils.MyRedisConfig; import com.zt.plat.module.erp.enums.OftenEnum; @@ -19,6 +20,9 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -100,7 +104,72 @@ public class ErpContractServiceImpl implements ErpContractService { @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 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 0d953ab..6cfec6e 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 @@ -125,7 +125,7 @@ public class ErpMaterialServiceImpl implements ErpMaterialService { Map datumEntry = new HashMap<>(); datumEntry.put("sign", "I"); datumEntry.put("option", "EQ"); -// datumEntry.put("low", "2021-05-16"); +// datumEntry.put("low", "2021-05-20"); datumEntry.put("low", LocalDate.now().toString()); datumList.add(datumEntry); req.put(funcnrEnum.getDatekey(), datumList); @@ -180,6 +180,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)) { // 更新 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..458ea05 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,27 @@ - - 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} + + From 868ad9c20f6f4cc73600f01bdb03c1a08d953b46 Mon Sep 17 00:00:00 2001 From: guojunyun Date: Fri, 10 Oct 2025 17:26:27 +0800 Subject: [PATCH 037/120] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=EF=BC=9A=E6=9F=A5=E8=AF=A2=E4=B8=8D=E8=AE=A1=E4=BB=B7=E8=A7=84?= =?UTF-8?q?=E5=88=99=E5=88=97=E8=A1=A8=E3=80=81=E6=9F=A5=E8=AF=A2=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E9=99=8D=E7=BA=A7=E8=A7=84=E5=88=99=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E3=80=81=E6=9F=A5=E8=AF=A2=E7=BB=93=E7=AE=97=E5=85=AC=E5=BC=8F?= =?UTF-8?q?=E5=88=97=E8=A1=A8=20=E4=BF=AE=E6=94=B9=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E4=BB=B7=E9=85=8D=E7=BD=AE=E6=95=B0=E6=8D=AE=E7=BB=93=E6=9E=84?= =?UTF-8?q?=20=E8=B0=83=E6=95=B4vo=E6=96=87=E4=BB=B6=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/contract/ContractController.java | 55 ++- ...tApprovalReqVO.java => ApprovalReqVO.java} | 2 +- ...ientRespVO.java => CoefficientRespVO.java} | 14 +- ...veReqVO.java => CoefficientSaveReqVO.java} | 2 +- .../vo/contract/ContractDeductSaveReqVO.java | 54 --- .../contract/vo/contract/ContractRespVO.java | 151 +++++---- .../vo/contract/ContractSaveReqVO.java | 8 +- .../vo/contract/ContractViewDeductRespVO.java | 54 --- .../vo/contract/ContractViewRespVO.java | 312 ------------------ .../contract/vo/contract/DeductRespVO.java | 29 ++ .../contract/vo/contract/DeductSaveReqVO.java | 26 ++ ...iewDemoteRespVO.java => DemoteRespVO.java} | 30 +- ...oteSaveReqVO.java => DemoteSaveReqVO.java} | 2 +- .../vo/contract/DemotesQueryReqVO.java | 18 + ...iewDetailRespVO.java => DetailRespVO.java} | 18 +- ...ailSaveReqVO.java => DetailSaveReqVO.java} | 4 +- ...wFormulaRespVO.java => FormulaRespVO.java} | 28 +- ...laSaveReqVO.java => FormulaSaveReqVO.java} | 10 +- .../vo/contract/FormulasQueryReqVO.java | 18 + ...tViewGradeRespVO.java => GradeRespVO.java} | 16 +- ...radeSaveReqVO.java => GradeSaveReqVO.java} | 2 +- ...tractViewNotRespVO.java => NotRespVO.java} | 30 +- ...actNotSaveReqVO.java => NotSaveReqVO.java} | 2 +- .../contract/vo/contract/NotsQueryReqVO.java | 18 + ...actViewPlanRespVO.java => PlanRespVO.java} | 6 +- ...tPlanSaveReqVO.java => PlanSaveReqVO.java} | 2 +- ...tViewPriceRespVO.java => PriceRespVO.java} | 12 +- ...riceSaveReqVO.java => PriceSaveReqVO.java} | 2 +- .../dataobject/contract/ContractDeductDO.java | 46 +-- .../mysql/contract/ContractDemoteMapper.java | 26 ++ .../mysql/contract/ContractFormulaMapper.java | 26 ++ .../dal/mysql/contract/ContractNotMapper.java | 27 ++ .../service/contract/ContractService.java | 43 ++- .../service/contract/ContractServiceImpl.java | 71 +++- 34 files changed, 504 insertions(+), 660 deletions(-) rename zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/{ContractApprovalReqVO.java => ApprovalReqVO.java} (95%) rename zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/{ContractViewCoefficientRespVO.java => CoefficientRespVO.java} (65%) rename zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/{ContractCoefficientSaveReqVO.java => CoefficientSaveReqVO.java} (97%) delete mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractDeductSaveReqVO.java delete mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractViewDeductRespVO.java delete mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractViewRespVO.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/DeductRespVO.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/DeductSaveReqVO.java rename zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/{ContractViewDemoteRespVO.java => DemoteRespVO.java} (52%) rename zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/{ContractDemoteSaveReqVO.java => DemoteSaveReqVO.java} (97%) create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/DemotesQueryReqVO.java rename zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/{ContractViewDetailRespVO.java => DetailRespVO.java} (53%) rename zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/{ContractDetailSaveReqVO.java => DetailSaveReqVO.java} (93%) rename zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/{ContractViewFormulaRespVO.java => FormulaRespVO.java} (63%) rename zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/{ContractFormulaSaveReqVO.java => FormulaSaveReqVO.java} (86%) create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/FormulasQueryReqVO.java rename zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/{ContractViewGradeRespVO.java => GradeRespVO.java} (75%) rename zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/{ContractGradeSaveReqVO.java => GradeSaveReqVO.java} (98%) rename zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/{ContractViewNotRespVO.java => NotRespVO.java} (52%) rename zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/{ContractNotSaveReqVO.java => NotSaveReqVO.java} (97%) create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/NotsQueryReqVO.java rename zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/{ContractViewPlanRespVO.java => PlanRespVO.java} (81%) rename zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/{ContractPlanSaveReqVO.java => PlanSaveReqVO.java} (95%) rename zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/{ContractViewPriceRespVO.java => PriceRespVO.java} (75%) rename zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/{ContractPriceSaveReqVO.java => PriceSaveReqVO.java} (97%) 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 545fce1..b55de61 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 @@ -18,6 +18,8 @@ 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 @@ -38,9 +40,30 @@ 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')") + @PreAuthorize("@ss.hasPermission('base:contract:create')") public CommonResult create(@Valid @RequestBody ContractSaveReqVO reqVO) { Long id = contractService.createContract(reqVO); return success(new JSONObject().putOnce("id", id)); @@ -49,15 +72,15 @@ public class ContractController implements BusinessControllerMarker { @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); } @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)); } @@ -66,7 +89,7 @@ public class ContractController implements BusinessControllerMarker { @DeleteMapping("/delete") @Operation(summary = "删除合同") @Parameter(name = "ids", description = "合同ID集合", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('system:contract:delete')") + @PreAuthorize("@ss.hasPermission('base:contract:delete')") public CommonResult delete(@RequestParam("ids") Long[] ids) { return success(true); } @@ -74,34 +97,34 @@ public class ContractController implements BusinessControllerMarker { // TODO @PostMapping("/download") @Operation(summary = "下载文件") - @PreAuthorize("@ss.hasPermission('system:contract:download')") + @PreAuthorize("@ss.hasPermission('base:contract:download')") public void download() { } // TODO @PostMapping("/preview") @Operation(summary = "预览文件") - @PreAuthorize("@ss.hasPermission('system:contract:preview')") + @PreAuthorize("@ss.hasPermission('base:contract:preview')") public void preview() { } // TODO @PostMapping("/complete") @Operation(summary = "完结") - @PreAuthorize("@ss.hasPermission('system:contract:complete')") + @PreAuthorize("@ss.hasPermission('base:contract:complete')") public void complete() { } // TODO @PostMapping("/archive") @Operation(summary = "归档") - @PreAuthorize("@ss.hasPermission('system:contract:archive')") + @PreAuthorize("@ss.hasPermission('base:contract:archive')") public void archive() { } @GetMapping("/submit/approval") @Operation(summary = "合同提交审批") - @PreAuthorize("@ss.hasPermission('system:contract:approval')") + @PreAuthorize("@ss.hasPermission('base:contract:approval')") public CommonResult submitApproval(@RequestParam("id") Long id) { return success(contractService.submitApproval(id)); } @@ -109,22 +132,22 @@ public class ContractController implements BusinessControllerMarker { // TODO @PostMapping("/approval") @Operation(summary = "合同审批") - @PreAuthorize("@ss.hasPermission('system:contract:approval')") - public CommonResult approval(@Valid @RequestBody ContractApprovalReqVO reqVO) { + @PreAuthorize("@ss.hasPermission('base:contract:approval')") + public CommonResult approval(@Valid @RequestBody ApprovalReqVO reqVO) { return success(contractService.approval(reqVO)); } // TODO @PostMapping("/view/approval") @Operation(summary = "查看审批") - @PreAuthorize("@ss.hasPermission('system:contract:approval')") + @PreAuthorize("@ss.hasPermission('base:contract:approval')") public void viewApproval() { } // TODO @PostMapping("/submit/erp") @Operation(summary = "提交ERP") - @PreAuthorize("@ss.hasPermission('system:contract:erp')") + @PreAuthorize("@ss.hasPermission('base:contract:erp')") public void submitErp() { } } 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/ContractApprovalReqVO.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 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/ContractApprovalReqVO.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/ApprovalReqVO.java index 5e14731..4d59d2e 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractApprovalReqVO.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 @@ -7,7 +7,7 @@ import lombok.Data; @Schema(description = "管理后台 - 合同审核请求对象 Request VO") @Data -public class ContractApprovalReqVO { +public class ApprovalReqVO { @Schema(description = "合同主键ID", requiredMode = Schema.RequiredMode.REQUIRED) @NotNull(message = "合同主键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/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/CoefficientRespVO.java similarity index 65% rename from zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractViewCoefficientRespVO.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/CoefficientRespVO.java index 65938f4..56d258d 100644 --- 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/CoefficientRespVO.java @@ -1,21 +1,20 @@ 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") +public class CoefficientRespVO { + @Schema(description = "主键") private Long id; - @Schema(description = "配置主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "6534") + @Schema(description = "配置主键") private Long parameterId; - @Schema(description = "条款主键", example = "29652") + @Schema(description = "条款主键") private Long formulaId; @Schema(description = "金属元素编码") @@ -24,7 +23,7 @@ public class ContractViewCoefficientRespVO { @Schema(description = "金属元素缩写") private String elementAbbreviation; - @Schema(description = "金属元素名称", example = "芋艿") + @Schema(description = "金属元素名称") private String elementName; @Schema(description = "系数值") @@ -42,8 +41,7 @@ public class ContractViewCoefficientRespVO { @Schema(description = "是否包含下限") private String isInDown; - @Schema(description = "是否省内", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "是否省内不能为空") + @Schema(description = "是否省内") private String inState; @Schema(description = "类型", example = "1") 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 97% 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..9f5c513 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 @@ -8,7 +8,7 @@ import java.math.BigDecimal; @Schema(description = "管理后台 - 基础系数配置新增/修改 Request VO") @Data -public class ContractCoefficientSaveReqVO { +public class CoefficientSaveReqVO { @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "31657") 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/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/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..086e7c4 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,242 @@ 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; + + // 物料信息 + 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 361069c..75f8b08 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 @@ -162,7 +162,7 @@ public class ContractSaveReqVO { private String remark; // 物料信息 - private List detail; + private List detail; // 扩展信息 @Schema(description = "原币金额-变更后;与ERP(BGHHTYBZJE)对应,拓展信息") @@ -219,11 +219,11 @@ public class ContractSaveReqVO { private List dynamicsFields; // 价款结算条款 - private List formulas; + private List formulas; // 参数降级规则 - private List demotes; + private List demotes; // 品位不计价规则 - private List nots; + 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/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/ContractViewRespVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractViewRespVO.java deleted file mode 100644 index 1ff3516..0000000 --- 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 +++ /dev/null @@ -1,312 +0,0 @@ -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") -@Data -@ExcelIgnoreUnannotated -public class ContractViewRespVO { - - @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "2476") - @ExcelProperty("主键") - private Long id; - - @Schema(description = "模板实例主键", example = "5352") - @ExcelProperty("模板实例主键") - private Long instanceId; - - @Schema(description = "系统合同编号;自动生成,校验唯一") - @ExcelProperty("系统合同编号;自动生成,校验唯一") - private String systemContractNumber; - - @Schema(description = "状态", example = "2") - @ExcelProperty("状态") - private String status; - - @Schema(description = "合同名称;与ERP(HTMC)对应,校验唯一", example = "李四") - @ExcelProperty("合同名称;与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 = "2") - @ExcelProperty("合同类型") - 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("甲方公司名称") - 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("乙方公司名称") - 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 = "2") - @ExcelProperty("补充协议类型;变更协议/增加条款") - 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)对应,拓展信息") - 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请求状态", example = "1") - @ExcelProperty("ERP请求状态") - private String erpStatus; - - @Schema(description = "ERP请求失败原因") - @ExcelProperty("ERP请求失败原因") - private String cause; - - @Schema(description = "流程实例编号", example = "27511") - @ExcelProperty("流程实例编号") - private String processInstanceId; - - @Schema(description = "审批意见") - @ExcelProperty("审批意见") - private String reviewOpinion; - - @Schema(description = "任务节点主键", example = "26040") - @ExcelProperty("任务节点主键") - private String taskNodeId; - - @Schema(description = "模板附件对象存储") - @ExcelProperty("模板附件对象存储") - private String fileObject; - - @Schema(description = "其它附件对象存储") - @ExcelProperty("其它附件对象存储") - private String fileObjectOther; - - @Schema(description = "交货地点") - @ExcelProperty("交货地点") - private String deliveryAddress; - - @Schema(description = "交货方式(字典:FRCST_ASN)") - @ExcelProperty("交货方式(字典:FRCST_ASN)") - private String deliveryWay; - - @Schema(description = "甲方联系人") - @ExcelProperty("甲方联系人") - private String purchaseHuman; - - @Schema(description = "甲方电话") - @ExcelProperty("甲方电话") - private String purchaseTel; - - @Schema(description = "甲方邮箱") - @ExcelProperty("甲方邮箱") - private String purchaseEmail; - - @Schema(description = "甲方传真") - @ExcelProperty("甲方传真") - private String purchaseFax; - - @Schema(description = "甲方联系地址") - @ExcelProperty("甲方联系地址") - private String purchaseContactAddress; - - @Schema(description = "乙方联系人") - @ExcelProperty("乙方联系人") - private String salesHuman; - - @Schema(description = "乙方电话") - @ExcelProperty("乙方电话") - private String salesTel; - - @Schema(description = "乙方邮箱") - @ExcelProperty("乙方邮箱") - private String salesEmail; - - @Schema(description = "乙方传真") - @ExcelProperty("乙方传真") - private String salesFax; - - @Schema(description = "乙方联系地址") - @ExcelProperty("乙方联系地址") - private String salesContactAddress; - - // 物料信息 - 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/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..8471ee1 --- /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,29 @@ +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 = "数据项类型(字典:GRD_CFG_TP)") + private String configType; + + @Schema(description = "是否省内") + private String inState; + + @Schema(description = "调整价") + private BigDecimal gradeAmount; + + @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..fbecdb6 --- /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,26 @@ +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 = "数据项类型(字典:GRD_CFG_TP)") + private String configType; + + @Schema(description = "是否省内") + 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/ContractViewDemoteRespVO.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 similarity index 52% rename from zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractViewDemoteRespVO.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/DemoteRespVO.java index 26e851e..2c98340 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractViewDemoteRespVO.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 @@ -1,7 +1,6 @@ package com.zt.plat.module.contractorder.controller.admin.contract.vo.contract; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -11,49 +10,44 @@ import java.time.LocalDateTime; @Schema(description = "管理后台 - 参数降级规则 Response VO") @Data @ExcelIgnoreUnannotated -public class ContractViewDemoteRespVO { +public class DemoteRespVO { - @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "31818") - @ExcelProperty("主键") + @Schema(description = "主键") private Long id; - @Schema(description = "合同主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "14971") - @ExcelProperty("合同主键") + @Schema(description = "合同主键") private Long contractId; @Schema(description = "金属元素编码") - @ExcelProperty("金属元素编码") private String elementNumber; @Schema(description = "金属元素缩写") - @ExcelProperty("金属元素缩写") private String elementAbbreviation; - @Schema(description = "金属元素名称", example = "王五") - @ExcelProperty("金属元素名称") + @Schema(description = "金属元素名称") private String elementName; @Schema(description = "上限") - @ExcelProperty("上限") private BigDecimal gradeUp; @Schema(description = "区间方式(字典:STLM_RNG_WY)") - @ExcelProperty("区间方式(字典:STLM_RNG_WY)") private String rangeWay; @Schema(description = "下限") - @ExcelProperty("下限") private BigDecimal gradeDown; - @Schema(description = "降级后物料名称", example = "李四") - @ExcelProperty("降级后物料名称") + @Schema(description = "降级后物料名称") private String materialName; @Schema(description = "降级后物料编码") - @ExcelProperty("降级后物料编码") private String materialNumber; - @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("创建时间") + @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/ContractDemoteSaveReqVO.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 similarity index 97% rename from zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractDemoteSaveReqVO.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/DemoteSaveReqVO.java index 007f10a..a5808f1 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractDemoteSaveReqVO.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 @@ -8,7 +8,7 @@ import java.math.BigDecimal; @Schema(description = "管理后台 - 参数降级规则新增/修改 Request VO") @Data -public class ContractDemoteSaveReqVO { +public class DemoteSaveReqVO { @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "31818") 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/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 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/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 938385b..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,34 +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 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 93% 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 d6a9460..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; @@ -41,5 +41,5 @@ public class ContractDetailSaveReqVO { private String elementNumber; // 交货计划 - private List plans; + 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 63% 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 fe3344d..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 = "22933") +public class FormulaRespVO { + @Schema(description = "主键") private Long id; - @Schema(description = "合同主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "9162") + @Schema(description = "合同主键") private Long contractId; - @Schema(description = "公式类型;单价/总价/水扣款/加工费", example = "1") + @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,18 +38,24 @@ public class ContractViewFormulaRespVO { @Schema(description = "金属元素缩写") private String elementAbbreviation; - @Schema(description = "金属元素名称", example = "赵六") + @Schema(description = "金属元素名称") private String elementName; - @Schema(description = "结算类型,多条使用逗号分隔(字典:PRCH_STLM_TP)", example = "1") + @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 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 86% 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 b47ba7d..42026d7 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 @@ -8,7 +8,7 @@ import java.util.List; @Schema(description = "管理后台 - 价款结算条款新增/修改 Request VO") @Data -public class ContractFormulaSaveReqVO { +public class FormulaSaveReqVO { @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "22933") private Long id; @@ -48,11 +48,11 @@ public class ContractFormulaSaveReqVO { private String settlementType; // 基础系数配置 - private List coefficients; + private List coefficients; // 品位等级价配置 - private List grades; + private List grades; // 调整价配置 - private List deducts; + private List deducts; // 市场价配置 - private List prices; + 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/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/GradeRespVO.java similarity index 75% rename from zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractViewGradeRespVO.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/GradeRespVO.java index ccc3813..3662dca 100644 --- 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/GradeRespVO.java @@ -8,14 +8,14 @@ import java.math.BigDecimal; @Schema(description = "管理后台 - 品位等级价配置 Response VO") @Data -public class ContractViewGradeRespVO { - @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "15414") +public class GradeRespVO { + @Schema(description = "主键") private Long id; - @Schema(description = "配置主键", example = "16734") + @Schema(description = "配置主键") private Long parameterId; - @Schema(description = "条款主键", example = "15344") + @Schema(description = "条款主键") private Long formulaId; @Schema(description = "金属元素编码") @@ -24,7 +24,7 @@ public class ContractViewGradeRespVO { @Schema(description = "金属元素缩写") private String elementAbbreviation; - @Schema(description = "金属元素名称", example = "芋艿") + @Schema(description = "金属元素名称") private String elementName; @Schema(description = "品位单位") @@ -51,13 +51,13 @@ public class ContractViewGradeRespVO { @Schema(description = "不足系数值按比例计算") private String useCoefficient; - @Schema(description = "计价类型", example = "2") + @Schema(description = "计价类型") private String priceType; - @Schema(description = "是否省内", requiredMode = Schema.RequiredMode.REQUIRED) + @Schema(description = "是否省内") @NotEmpty(message = "是否省内不能为空") private String inState; - @Schema(description = "等级单价", example = "26237") + @Schema(description = "等级单价") 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/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/GradeSaveReqVO.java similarity index 98% rename from zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractGradeSaveReqVO.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/GradeSaveReqVO.java index 83d23da..9c67968 100644 --- 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/GradeSaveReqVO.java @@ -7,7 +7,7 @@ import java.math.BigDecimal; @Schema(description = "管理后台 - 品位等级价配置新增/修改 Request VO") @Data -public class ContractGradeSaveReqVO { +public class GradeSaveReqVO { @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "15414") 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/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/NotRespVO.java similarity index 52% rename from zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractViewNotRespVO.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/NotRespVO.java index 1d0f28e..1f918fa 100644 --- 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/NotRespVO.java @@ -1,7 +1,6 @@ package com.zt.plat.module.contractorder.controller.admin.contract.vo.contract; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -11,49 +10,44 @@ import java.time.LocalDateTime; @Schema(description = "管理后台 - 品位不计价规则 Response VO") @Data @ExcelIgnoreUnannotated -public class ContractViewNotRespVO { +public class NotRespVO { - @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "18545") - @ExcelProperty("主键") + @Schema(description = "主键") private Long id; - @Schema(description = "合同主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "5333") - @ExcelProperty("合同主键") + @Schema(description = "合同主键") private Long contractId; @Schema(description = "金属元素编码") - @ExcelProperty("金属元素编码") private String elementNumber; @Schema(description = "金属元素缩写") - @ExcelProperty("金属元素缩写") private String elementAbbreviation; - @Schema(description = "金属元素名称", example = "王五") - @ExcelProperty("金属元素名称") + @Schema(description = "金属元素名称") private String elementName; @Schema(description = "上限") - @ExcelProperty("上限") private BigDecimal gradeUp; @Schema(description = "下限") - @ExcelProperty("下限") private BigDecimal gradeDown; @Schema(description = "区间方式(字典:STLM_RNG_WY)") - @ExcelProperty("区间方式(字典:STLM_RNG_WY)") private String rangeWay; - @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("创建时间") + @Schema(description = "创建时间") private LocalDateTime createTime; - @Schema(description = "物料名称", example = "芋艿") - @ExcelProperty("物料名称") + @Schema(description = "物料名称") private String materialName; @Schema(description = "物料编码") - @ExcelProperty("物料编码") 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/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/NotSaveReqVO.java similarity index 97% rename from zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractNotSaveReqVO.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/NotSaveReqVO.java index 117594f..78afc87 100644 --- 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/NotSaveReqVO.java @@ -8,7 +8,7 @@ import java.math.BigDecimal; @Schema(description = "管理后台 - 品位不计价规则新增/修改 Request VO") @Data -public class ContractNotSaveReqVO { +public class NotSaveReqVO { @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "18545") 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/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 75% 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..5b82d87 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,14 @@ 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") + @Schema(description = "配置主键") private Long parameterId; - @Schema(description = "条款主键", example = "24677") + @Schema(description = "条款主键") private Long formulaId; @Schema(description = "市场价") @@ -42,10 +42,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 97% 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..a47e1f5 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,7 +7,7 @@ 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; 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..a6ed755 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,16 @@ 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 + * 数据项类型(字典:GRD_CFG_TP) */ - @TableField("MTRL_NUM") - private String materialNumber; - /** - * 物料名称 - */ - @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; /** * 是否省内 */ 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 index 25ea87a..15008e8 100644 --- 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 @@ -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.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 @@ -12,4 +16,26 @@ import org.apache.ibatis.annotations.Mapper; @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/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/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 dc64e89..e3b6fa9 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,13 +1,12 @@ package com.zt.plat.module.contractorder.service.contract; import com.zt.plat.framework.common.pojo.PageResult; -import com.zt.plat.module.contractorder.controller.admin.contract.vo.contract.ContractApprovalReqVO; -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.controller.admin.contract.vo.contract.*; import com.zt.plat.module.contractorder.dal.dataobject.contract.ContractMainDO; import jakarta.validation.Valid; +import java.util.List; + /** * 后台合同编制 Service 接口 * @@ -37,7 +36,7 @@ public interface ContractService { * @param id 合同ID * @return 合同信息 */ - ContractViewRespVO get(Long id); + ContractRespVO get(Long id); /** * 修改合同 @@ -51,9 +50,39 @@ public interface ContractService { * 合同提交审批 * * @param id 合同ID - * @return 审批结果 + * @return 提交审批结果 */ String submitApproval(Long id); - String approval(@Valid ContractApprovalReqVO reqVO); + /** + * 合同审批 + * + * @param reqVO 审批信息 + * @return 审批结果 + */ + String 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); } 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 616eb58..8ff71f3 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 @@ -3,6 +3,7 @@ package com.zt.plat.module.contractorder.service.contract; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 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; @@ -40,6 +41,7 @@ import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.zt.plat.module.contractorder.enums.ErrorCodeConstants.*; @@ -268,10 +270,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); @@ -284,14 +286,14 @@ public class ContractServiceImpl implements ContractService { 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)); + detail.setPlans(BeanUtils.toBean(planDOS, PlanRespVO.class)); } }); } @@ -300,7 +302,7 @@ public class ContractServiceImpl implements ContractService { List formulaDOS = contractFormulaMapper .selectList(TableFieldConstants.BSE_CTRT_FMU_CTRT_ID, contractMainDO.getId()); if (formulaDOS != null && !formulaDOS.isEmpty()) { - respVO.setFormulas(BeanUtils.toBean(formulaDOS, ContractViewFormulaRespVO.class)); + respVO.setFormulas(BeanUtils.toBean(formulaDOS, FormulaRespVO.class)); respVO.getFormulas().forEach(formula -> { @@ -308,25 +310,25 @@ public class ContractServiceImpl implements ContractService { List coefficientDOS = contractCoefficientMapper .selectList(TableFieldConstants.BSE_CTRT_COEF_FMU_ID, formula.getId()); if (coefficientDOS != null && !coefficientDOS.isEmpty()) { - formula.setCoefficients(BeanUtils.toBean(coefficientDOS, ContractViewCoefficientRespVO.class)); + 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, ContractViewGradeRespVO.class)); + 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, ContractViewDeductRespVO.class)); + 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, ContractViewPriceRespVO.class)); + formula.setPrices(BeanUtils.toBean(priceDOS, PriceRespVO.class)); } }); } @@ -335,14 +337,14 @@ public class ContractServiceImpl implements ContractService { List demoteDOS = contractDemoteMapper .selectList(TableFieldConstants.BSE_CTRT_DMOT_CTRT_ID, contractMainDO.getId()); if (demoteDOS != null && !demoteDOS.isEmpty()) { - respVO.setDemotes(BeanUtils.toBean(demoteDOS, ContractViewDemoteRespVO.class)); + 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, ContractViewNotRespVO.class)); + respVO.setNots(BeanUtils.toBean(notDOS, NotRespVO.class)); } // 查询并设置合同动态表单 @@ -651,7 +653,7 @@ public class ContractServiceImpl implements ContractService { } @Override - public String approval(ContractApprovalReqVO reqVO) { + public String approval(ApprovalReqVO reqVO) { // 合同主键ID Long id = reqVO.getId(); @@ -682,12 +684,55 @@ public class ContractServiceImpl implements ContractService { return ""; } + private List getContractIds(String contractName, String contractPaperNumber) { + List contractIds = new ArrayList<>(); + List contractMainDOS = contractMainMapper.selectList(new LambdaQueryWrapperX() + .likeIfPresent(ContractMainDO::getContractName, contractName) + .likeIfPresent(ContractMainDO::getContractPaperNumber, contractPaperNumber)); + if (CollectionUtils.isNotEmpty(contractMainDOS)) { + contractIds = contractMainDOS.stream() + .map(contractMainDO -> contractMainDO.getId()) + .collect(Collectors.toList()); + } + return contractIds; + } + + @Override + public List getNots(NotsQueryReqVO queryReqVO) { + // 查合同ID集合 + 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()); + } + /** * 校验合同内容 * * @param contract 合同数据 */ - private void verifyContract(ContractViewRespVO contract) { + private void verifyContract(ContractRespVO contract) { /* 合同基本信息 */ // 甲方公司编号不能为空 From 0534fcd991832d8b7cf596f306489dacf04c796c Mon Sep 17 00:00:00 2001 From: guojunyun Date: Fri, 10 Oct 2025 17:34:33 +0800 Subject: [PATCH 038/120] =?UTF-8?q?=E5=9F=BA=E7=A1=80=E7=B3=BB=E6=95=B0?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E6=95=B0=E6=8D=AE=E7=BB=93=E6=9E=84=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vo/contract/CoefficientRespVO.java | 18 ++++------- .../vo/contract/CoefficientSaveReqVO.java | 29 +++++++----------- .../contract/ContractCoefficientDO.java | 30 +++++++------------ 3 files changed, 26 insertions(+), 51 deletions(-) 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 index 56d258d..cd5c769 100644 --- 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 @@ -11,9 +11,6 @@ public class CoefficientRespVO { @Schema(description = "主键") private Long id; - @Schema(description = "配置主键") - private Long parameterId; - @Schema(description = "条款主键") private Long formulaId; @@ -26,24 +23,21 @@ public class CoefficientRespVO { @Schema(description = "金属元素名称") 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 = "区间方式(字典:STLM_RNG_WY)") + private String rangeWay; @Schema(description = "是否省内") private String inState; - @Schema(description = "类型", example = "1") + @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/CoefficientSaveReqVO.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 index 9f5c513..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/CoefficientSaveReqVO.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 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 CoefficientSaveReqVO { @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/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 From bd625566404411aa67efdc40bb5bf066f01d4918 Mon Sep 17 00:00:00 2001 From: guojunyun Date: Fri, 10 Oct 2025 17:53:02 +0800 Subject: [PATCH 039/120] =?UTF-8?q?=E9=80=9A=E8=BF=87=E5=90=88=E5=90=8C?= =?UTF-8?q?=E7=BC=96=E5=8F=B7=E8=8E=B7=E5=8F=96=E5=AF=B9=E5=BA=94=E7=9A=84?= =?UTF-8?q?=E7=BB=93=E7=AE=97=E6=9D=A1=E6=AC=BE=E6=95=B0=E6=8D=AEfeign?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/contractorder/api/ContractApi.java | 22 +++++++ .../api/dto/ContractCoefficientRespDTO.java | 52 ++++++++++++++++ .../api/dto/ContractDeductRespDTO.java | 50 +++++++++++++++ .../api/dto/ContractFormulaRespDTO.java | 56 +++++++++++++++++ .../api/dto/ContractGradeRespDTO.java | 62 +++++++++++++++++++ .../api/dto/ContractPriceRespDTO.java | 54 ++++++++++++++++ .../contractorder/api/ContractApiImpl.java | 25 ++++++++ 7 files changed, 321 insertions(+) create mode 100644 zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/ContractApi.java create mode 100644 zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractCoefficientRespDTO.java create mode 100644 zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractDeductRespDTO.java create mode 100644 zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractFormulaRespDTO.java create mode 100644 zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractGradeRespDTO.java create mode 100644 zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractPriceRespDTO.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/api/ContractApiImpl.java 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..8856ccf --- /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,22 @@ +package com.zt.plat.module.contractorder.api; + + +import com.zt.plat.module.contractorder.api.dto.ContractFormulaRespDTO; +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.RequestParam; + +import java.util.List; + +@FeignClient(name = ApiConstants.NAME) +@Tag(name = "RPC 服务 - 合同") +public interface ContractApi { + String PREFIX = ApiConstants.PREFIX + "/contract"; + + @GetMapping(PREFIX + "/formulas") + @Operation(summary = "通过合同编号获取对应的结算条款数据") + List getFormulas(@RequestParam("contractPaperNumber") String contractPaperNumber); +} diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractCoefficientRespDTO.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractCoefficientRespDTO.java new file mode 100644 index 0000000..6a5b9c6 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractCoefficientRespDTO.java @@ -0,0 +1,52 @@ +package com.zt.plat.module.contractorder.api.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "RPC 服务 - 基础系数配置 Response DTO") +@Data +public class ContractCoefficientRespDTO { + + @Schema(description = "主键") + private Long id; + + @Schema(description = "配置主键") + private Long parameterId; + + @Schema(description = "条款主键") + private Long formulaId; + + @Schema(description = "金属元素编码") + private String elementNumber; + + @Schema(description = "金属元素缩写") + private String elementAbbreviation; + + @Schema(description = "金属元素名称") + 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 = "是否省内") + @NotEmpty(message = "是否省内不能为空") + private String inState; + + @Schema(description = "类型") + private String type; +} \ 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/ContractDeductRespDTO.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractDeductRespDTO.java new file mode 100644 index 0000000..eb3c09d --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractDeductRespDTO.java @@ -0,0 +1,50 @@ +package com.zt.plat.module.contractorder.api.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "RPC 服务 - 调整价配置 Response DTO") +@Data +public class ContractDeductRespDTO { + + @Schema(description = "主键") + private Long id; + + @Schema(description = "配置主键") + private Long parameterId; + + @Schema(description = "条款主键") + private Long formulaId; + + @Schema(description = "物料编码;推送ERP") + private String materialNumber; + + @Schema(description = "物料名称") + private String materialName; + + @Schema(description = "上限") + 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 = "类型") + private String type; + + @Schema(description = "是否省内") + 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-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractFormulaRespDTO.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractFormulaRespDTO.java new file mode 100644 index 0000000..1d47fa1 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractFormulaRespDTO.java @@ -0,0 +1,56 @@ +package com.zt.plat.module.contractorder.api.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.List; + +@Schema(description = "RPC 服务 - 价款结算条款 Response DTO") +@Data +public class ContractFormulaRespDTO { + + @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/ContractGradeRespDTO.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractGradeRespDTO.java new file mode 100644 index 0000000..ea97fde --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractGradeRespDTO.java @@ -0,0 +1,62 @@ +package com.zt.plat.module.contractorder.api.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "RPC 服务 - 品位等级价配置 Response DTO") +@Data +public class ContractGradeRespDTO { + + @Schema(description = "主键") + private Long id; + + @Schema(description = "配置主键") + private Long parameterId; + + @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 = "是否包含上限;包含则是大于等于,不包含则是大于") + 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 = "计价类型") + private String priceType; + + @Schema(description = "是否省内") + private String inState; + + @Schema(description = "等级单价") + private BigDecimal unitPrice; +} \ 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/ContractPriceRespDTO.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractPriceRespDTO.java new file mode 100644 index 0000000..40f3469 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractPriceRespDTO.java @@ -0,0 +1,54 @@ +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; + +@Schema(description = "RPC 服务 - 市场价配置 Response DTO") +@Data +public class ContractPriceRespDTO { + + @Schema(description = "主键") + private Long id; + + @Schema(description = "配置主键") + private Long parameterId; + + @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-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..9bdaccd --- /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,25 @@ +package com.zt.plat.module.contractorder.api; + +import com.zt.plat.module.contractorder.api.dto.ContractFormulaRespDTO; +import com.zt.plat.module.contractorder.service.contract.ContractService; +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.List; + +@RestController +@Validated +@Slf4j +public class ContractApiImpl implements ContractApi { + + @Resource + private ContractService contractService; + + @Override + public List getFormulas(String contractPaperNumber) { + System.out.println("contract feign" + contractPaperNumber); + return List.of(); + } +} From 30420ab96f5e075b9f9c0776795b882b94624047 Mon Sep 17 00:00:00 2001 From: liss <1780094091@qq.com> Date: Fri, 10 Oct 2025 17:55:01 +0800 Subject: [PATCH 040/120] =?UTF-8?q?erp=E5=B7=A5=E5=8E=82=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E3=80=81=E7=BC=96=E8=BE=91=E3=80=81=E6=89=B9=E9=87=8F=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E3=80=81=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1=E3=80=81?= =?UTF-8?q?=E5=88=86=E9=A1=B5=E6=9F=A5=E8=AF=A2=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/erp/enums/ErrorCodeConstants.java | 1 + .../admin/erp/ErpFactoryController.java | 16 +++++ .../admin/erp/vo/ErpFactoryPageReqVO.java | 10 +++ .../admin/erp/vo/ErpFactoryRespVO.java | 14 ++++ .../admin/erp/vo/ErpFactorySaveReqVO.java | 17 +++++ .../erp/dal/dataobject/erp/ErpFactoryDO.java | 65 ++++++++++++++----- .../dal/dataobject/erp/ErpWarehouseDO.java | 6 ++ .../erp/dal/mysql/erp/ErpBomMapper.java | 2 - .../dal/mysql/erp/ErpCostcenterMapper.java | 2 - .../erp/dal/mysql/erp/ErpFactoryMapper.java | 4 +- .../service/erp/ErpContractServiceImpl.java | 49 ++++++++++---- .../erp/service/erp/ErpFactoryService.java | 4 ++ .../service/erp/ErpFactoryServiceImpl.java | 57 +++++++++++++++- .../service/erp/ErpMaterialServiceImpl.java | 3 +- .../service/erp/ErpWarehouseServiceImpl.java | 3 +- .../main/resources/mapper/ErpAssetMapper.xml | 19 ------ .../main/resources/mapper/ErpBomMapper.xml | 14 ---- .../resources/mapper/ErpCompanyMapper.xml | 11 ---- .../resources/mapper/ErpContractMapper.xml | 11 ---- .../resources/mapper/ErpCostcenterMapper.xml | 57 ---------------- .../resources/mapper/ErpCustomerMapper.xml | 11 ---- .../resources/mapper/ErpFactoryMapper.xml | 34 +++++++--- .../mapper/ErpInternalOrderMapper.xml | 10 --- .../mapper/ErpProcessDetailMapper.xml | 10 --- .../resources/mapper/ErpProcessMapper.xml | 10 --- .../mapper/ErpProductiveOrderMapper.xml | 10 --- .../mapper/ErpProductiveVersionMapper.xml | 10 --- .../mapper/ErpPurchaseOrganizationMapper.xml | 10 --- .../mapper/ErpSalesOrganizationMapper.xml | 10 --- .../resources/mapper/ErpWarehouseMapper.xml | 10 --- 30 files changed, 239 insertions(+), 251 deletions(-) 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 9449fe0..b9f1f52 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 @@ -27,6 +27,7 @@ public interface ErrorCodeConstants { 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_COSTCENTER_NOT_EXISTS = new ErrorCode(1_009_000_001, "ERP成本中心数据不存在"); 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..5878582 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 @@ -88,6 +88,14 @@ public class ErpFactoryController { return success(BeanUtils.toBean(pageResult, ErpFactoryRespVO.class)); } + @GetMapping("/pageByCpn") + @Operation(summary = "获得ERP工厂分页") + @PreAuthorize("@ss.hasPermission('base:erp-factory:query')") + public CommonResult> getErpFactoryPageByCpn(@Valid ErpFactoryPageReqVO pageReqVO) { + PageResult pageResult = erpFactoryService.getErpFactoryPageByCpn(pageReqVO); + return success(BeanUtils.toBean(pageResult, ErpFactoryRespVO.class)); + } + @GetMapping("/export-excel") @Operation(summary = "导出ERP工厂 Excel") @PreAuthorize("@ss.hasPermission('base:erp-factory:export')") @@ -101,6 +109,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/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..bf71059 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 companyNumber; + + @Schema(description = "公司名称") + private String companyName; + + @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..9700347 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,18 @@ public class ErpFactoryRespVO { @ExcelProperty("工厂编码") private String number; + @Schema(description = "公司编号") + private String companyNumber; + + @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..f93795f 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,21 @@ public class ErpFactorySaveReqVO { @NotEmpty(message = "工厂编码不能为空") private String number; + @Schema(description = "公司编号") + private String companyNumber; + + @Schema(description = "公司编号") + private String companyName; + + @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..61a613b 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 companyNumber; + /** + * 公司名称 + */ + @TableField(exist = false) + private String companyName; + + /** + * 类型 + */ + @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/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..95a54c2 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 @@ -41,4 +41,10 @@ public class ErpWarehouseDO { @TableField("NUM") private String number; + /** + * 类别 + */ + @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/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..4661051 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 @@ -22,9 +22,11 @@ public interface ErpFactoryMapper extends BaseMapperX { return selectPage(reqVO, new LambdaQueryWrapperX() .likeIfPresent(ErpFactoryDO::getName, reqVO.getName()) .eqIfPresent(ErpFactoryDO::getNumber, reqVO.getNumber()) + .eqIfPresent(ErpFactoryDO::getType, reqVO.getType()) .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/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 c55748b..ce09950 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 @@ -77,12 +77,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); @@ -177,17 +177,44 @@ public class ErpContractServiceImpl implements ErpContractService { @XxlJob("getErpContractTask") public void callErpRfcInterface() { try { - OftenEnum.FuncnrEnum funcnrEnum =OftenEnum.FuncnrEnum.合同信息; + OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.合同信息; String funcnr = funcnrEnum.getFuncnr(); + + 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接口获取数据 - HashMap dataFromERP = erpConfig.fetchDataFromERP(funcnr, null); - JSONArray dataArray = (JSONArray) dataFromERP.get("E_RESP"); - if (CollUtil.isEmpty(dataArray)) { + 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(dataArray,funcnrEnum); + ProcessingResult result = processData(dataArrayALL, funcnrEnum); // 3. 批量保存数据 saveData(result); @@ -203,7 +230,7 @@ public class ErpContractServiceImpl implements ErpContractService { */ private ProcessingResult processData(JSONArray dataArray, OftenEnum.FuncnrEnum funcnr) { String key = "erp" + funcnr.getFuncnr(); - Map> numbers = myRedisConfig.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<>(); @@ -229,7 +256,7 @@ public class ErpContractServiceImpl implements ErpContractService { } } - return new ProcessingResult(toUpdate, toInsert,key,allnumbers); + return new ProcessingResult(toUpdate, toInsert, key, allnumbers); } /** @@ -243,7 +270,7 @@ public class ErpContractServiceImpl implements ErpContractService { if (!result.toUpdate.isEmpty()) { erpContractMapper.updateBatch(result.toUpdate); } - myRedisConfig.updateRedisCache(result.key,result.allnumbers); + myRedisConfig.updateRedisCache(result.key, result.allnumbers); } /** @@ -255,7 +282,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/ErpFactoryService.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpFactoryService.java index 3583dda..29f36f0 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,8 @@ public interface ErpFactoryService { PageResult getErpFactoryPage(ErpFactoryPageReqVO pageReqVO); void callErpRfcInterface(); + + void enableFactoryList(List saveReqVOS); + + PageResult getErpFactoryPageByCpn(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/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 e4d09c6..06c32fa 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 @@ -16,6 +16,7 @@ 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; @@ -51,6 +52,21 @@ public class ErpFactoryServiceImpl implements ErpFactoryService { public ErpFactoryRespVO createErpFactory(ErpFactorySaveReqVO createReqVO) { // 插入 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("供应链"); + erpFactory.setIsEnable("1"); erpFactoryMapper.insert(erpFactory); // 返回 return BeanUtils.toBean(erpFactory, ErpFactoryRespVO.class); @@ -62,6 +78,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); } @@ -103,6 +122,39 @@ public class ErpFactoryServiceImpl implements ErpFactoryService { public PageResult getErpFactoryPage(ErpFactoryPageReqVO pageReqVO) { return erpFactoryMapper.selectPage(pageReqVO); } + + @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 + public PageResult getErpFactoryPageByCpn(ErpFactoryPageReqVO 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 @Transactional @XxlJob("getErpFactoryTask") @@ -173,7 +225,8 @@ public class ErpFactoryServiceImpl implements ErpFactoryService { ErpFactoryDO DO = new ErpFactoryDO(); DO.setName(dataJson.getString("NAME1")); DO.setNumber(number); - DO.setCompanyId(dataJson.getString("BUKRS")); + DO.setCompanyNumber(dataJson.getString("BUKRS")); + DO.setType("ERP"); if (numbers.get(number)!=null) { // 更新 DO.setId(numbers.get(number)); @@ -244,7 +297,7 @@ 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)); myRedisConfig.addRedisCacheMap(key, existingNumbers); } 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 6cfec6e..224ed84 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 @@ -228,7 +228,8 @@ public class ErpMaterialServiceImpl implements ErpMaterialService { private void initialize(String key) { List existingNumbers = erpMaterialMapper.selectList(new LambdaQueryWrapperX()) - .stream() + .stream( ) + .filter(ErpMaterialDO -> ErpMaterialDO.getType().equals("ERP")) .map(ErpMaterialDO::getDownCenterNumber) .collect(Collectors.toList()); myRedisConfig.updateRedisCache(key, existingNumbers); 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 27c07a4..f7028bf 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 @@ -244,7 +244,8 @@ 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(); 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..baadafd 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,28 @@ 文档可见: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/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..c64aa8e 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,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/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..533eb39 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,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 From ee7cf01c81bb35bc6616283d383899c63b94b945 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BD=98=E8=8D=A3=E6=99=9F?= <9691125+pan-rongsheng@user.noreply.gitee.com> Date: Fri, 10 Oct 2025 18:00:17 +0800 Subject: [PATCH 041/120] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../purchaseorder/ErrorCodeConstants.java | 17 ++ .../purchaseorder/PrchOrdDtlController.java | 110 +++++++ .../PurchaseOrderController.java | 110 +++++++ .../purchaseorder/vo/PrchOrdDtlPageReqVO.java | 159 ++++++++++ .../purchaseorder/vo/PrchOrdDtlRespVO.java | 208 +++++++++++++ .../purchaseorder/vo/PrchOrdDtlSaveReqVO.java | 166 +++++++++++ .../vo/PurchaseOrderPageReqVO.java | 127 ++++++++ .../purchaseorder/vo/PurchaseOrderRespVO.java | 168 +++++++++++ .../vo/PurchaseOrderSaveReqVO.java | 151 ++++++++++ .../purchaseorder/PrchOrdDtlDO.java | 274 ++++++++++++++++++ .../purchaseorder/PurchaseOrderDO.java | 217 ++++++++++++++ .../mysql/purchaseorder/PrchOrdDtlMapper.java | 74 +++++ .../purchaseorder/PurchaseOrderMapper.java | 63 ++++ .../purchaseorder/PrchOrdDtlService.java | 78 +++++ .../purchaseorder/PrchOrdDtlServiceImpl.java | 116 ++++++++ .../purchaseorder/PurchaseOrderService.java | 66 +++++ .../PurchaseOrderServiceImpl.java | 108 +++++++ .../mapper/purchaseorder/PrchOrdDtlMapper.xml | 12 + .../purchaseorder/PurchaseOrderMapper.xml | 12 + 19 files changed, 2236 insertions(+) create mode 100644 zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/purchaseorder/ErrorCodeConstants.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/PrchOrdDtlController.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/PurchaseOrderController.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PrchOrdDtlPageReqVO.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PrchOrdDtlRespVO.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PrchOrdDtlSaveReqVO.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PurchaseOrderPageReqVO.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PurchaseOrderRespVO.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PurchaseOrderSaveReqVO.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/purchaseorder/PrchOrdDtlDO.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/purchaseorder/PurchaseOrderDO.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/purchaseorder/PrchOrdDtlMapper.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/purchaseorder/PurchaseOrderMapper.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PrchOrdDtlService.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PrchOrdDtlServiceImpl.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PurchaseOrderService.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PurchaseOrderServiceImpl.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/resources/mapper/purchaseorder/PrchOrdDtlMapper.xml create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/resources/mapper/purchaseorder/PurchaseOrderMapper.xml 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..fd38656 --- /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,17 @@ +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 PRCH_ORD_DTL_NOT_EXISTS = new ErrorCode(1_008_001_001, "采购订单明细不存在"); +} 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..9224f1c --- /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,110 @@ +package com.zt.plat.module.contractorder.controller.admin.purchaseorder; + +import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.PurchaseOrderPageReqVO; +import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.PurchaseOrderRespVO; +import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.PurchaseOrderSaveReqVO; +import com.zt.plat.module.contractorder.dal.dataobject.purchaseorder.PurchaseOrderDO; +import com.zt.plat.module.contractorder.service.purchaseorder.PurchaseOrderService; +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; + + @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 = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('bse:purchase-order:query')") + public CommonResult getPurchaseOrder(@RequestParam("id") Long id) { + PurchaseOrderDO purchaseOrder = purchaseOrderService.getPurchaseOrder(id); + return success(BeanUtils.toBean(purchaseOrder, PurchaseOrderRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得采购订单分页") + @PreAuthorize("@ss.hasPermission('bse:purchase-order:query')") + public CommonResult> getPurchaseOrderPage(@Valid PurchaseOrderPageReqVO pageReqVO) { + PageResult pageResult = purchaseOrderService.getPurchaseOrderPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, PurchaseOrderRespVO.class)); + } + + @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)); + } + +} 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..4e367d6 --- /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,159 @@ +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 BigDecimal 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; + +} 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..84208bf --- /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 BigDecimal 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 BigDecimal 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..c7390d0 --- /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,166 @@ +package com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo; + +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) + @NotNull(message = "计量单位;推送ERP(必须)不能为空") + private BigDecimal 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 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 = "金属元素缩写") + private String elemAbbr; + + @Schema(description = "金属元素名称", example = "李四") + private String elemName; + + @Schema(description = "金属元素编码") + 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/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..4c111ed --- /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,127 @@ +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 = "货币码(字典: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; + +} 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..ec7263a --- /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,168 @@ +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 = "采购组编码(字典: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; + +} 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..9dc0f48 --- /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,151 @@ +package com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +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 = "系统合同编号", 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; +} 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..1e0dd8f --- /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,274 @@ +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 String qty; + /** + * 计量单位;推送ERP(必须) + */ + @TableField("UNT") + private BigDecimal unt; + /** + * 含税单价;推送ERP(必须) + */ + @TableField("IN_TAX_UPRC") + private BigDecimal inTaxUprc; + /** + * 价格单位;推送ERP + */ + @TableField("PRC_UNT") + private BigDecimal prcUnt; + /** + * 税码(字典: PRCH_TAX);推送ERP + */ + @TableField("TAX_NUM") + private BigDecimal 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; + +} 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..c9b0c1c --- /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,217 @@ +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; + +} 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..b8ad2b4 --- /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,63 @@ +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.dal.dataobject.purchaseorder.PurchaseOrderDO; +import org.apache.ibatis.annotations.Mapper; + + +/** + * 采购订单 Mapper + * + * @author 后台管理-1 + */ +@Mapper +public interface PurchaseOrderMapper extends BaseMapperX { + + default PageResult selectPage(PurchaseOrderPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(PurchaseOrderDO::getOrderSAPNumber, reqVO.getOrderSAPNumber()) + .eqIfPresent(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::getCause, reqVO.getCause()) + .eqIfPresent(PurchaseOrderDO::getStatus, reqVO.getStatus()) + .likeIfPresent(PurchaseOrderDO::getPurchaseGroupName, reqVO.getPurchaseGroupName()) + .orderByDesc(PurchaseOrderDO::getId)); + } + +} 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..d3804be --- /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,78 @@ +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); +} 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..308f59a --- /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,116 @@ +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)); + } + +} 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..d66bbf5 --- /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,66 @@ +package com.zt.plat.module.contractorder.service.purchaseorder; + +import java.util.*; + +import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.PurchaseOrderPageReqVO; +import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.PurchaseOrderRespVO; +import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.PurchaseOrderSaveReqVO; +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); + + /** + * 获得采购订单分页 + * + * @param pageReqVO 分页查询 + * @return 采购订单分页 + */ + PageResult getPurchaseOrderPage(PurchaseOrderPageReqVO pageReqVO); + +} 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..c501234 --- /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,108 @@ +package com.zt.plat.module.contractorder.service.purchaseorder; + +import cn.hutool.core.collection.CollUtil; +import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.PrchOrdDtlRespVO; +import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.PurchaseOrderPageReqVO; +import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.PurchaseOrderRespVO; +import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.PurchaseOrderSaveReqVO; +import com.zt.plat.module.contractorder.dal.dataobject.purchaseorder.PurchaseOrderDO; +import com.zt.plat.module.contractorder.dal.mysql.purchaseorder.PurchaseOrderMapper; +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.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.PURCHASE_ORDER_NOT_EXISTS; + + +/** + * 采购订单 Service 实现类 + * + * @author 后台管理-1 + */ +@Service +@Validated +public class PurchaseOrderServiceImpl implements PurchaseOrderService { + + @Resource + private PurchaseOrderMapper purchaseOrderMapper; + @Resource + private PrchOrdDtlService prchOrdDtlService; + + @Override + public PurchaseOrderRespVO createPurchaseOrder(PurchaseOrderSaveReqVO createReqVO) { + // 插入 + PurchaseOrderDO purchaseOrder = BeanUtils.toBean(createReqVO, PurchaseOrderDO.class); + purchaseOrderMapper.insert(purchaseOrder); + // 返回 + //批量插入订单明细 + 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 + public void updatePurchaseOrder(PurchaseOrderSaveReqVO updateReqVO) { + // 校验存在 + validatePurchaseOrderExists(updateReqVO.getId()); + // 更新 + PurchaseOrderDO updateObj = BeanUtils.toBean(updateReqVO, PurchaseOrderDO.class); + purchaseOrderMapper.updateById(updateObj); + } + + @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 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) { + return purchaseOrderMapper.selectById(id); + } + + @Override + public PageResult getPurchaseOrderPage(PurchaseOrderPageReqVO pageReqVO) { + return purchaseOrderMapper.selectPage(pageReqVO); + } + +} 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..1498f3e --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/resources/mapper/purchaseorder/PurchaseOrderMapper.xml @@ -0,0 +1,12 @@ + + + + + + + From 72a9dff7c36816a547ac85c9f04e73dc4c3a7e6a Mon Sep 17 00:00:00 2001 From: liss <1780094091@qq.com> Date: Fri, 10 Oct 2025 19:11:48 +0800 Subject: [PATCH 042/120] =?UTF-8?q?erp=E5=BA=93=E4=BD=8D=E3=80=81=E7=89=A9?= =?UTF-8?q?=E6=96=99=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/erp/enums/ErrorCodeConstants.java | 4 ++ .../admin/erp/ErpFactoryController.java | 8 --- .../admin/erp/ErpWarehouseController.java | 8 +++ .../admin/erp/vo/ErpWarehousePageReqVO.java | 7 +++ .../admin/erp/vo/ErpWarehouseRespVO.java | 12 ++++ .../admin/erp/vo/ErpWarehouseSaveReqVO.java | 12 ++++ .../dal/dataobject/erp/ErpWarehouseDO.java | 26 +++++++- .../erp/dal/mysql/erp/ErpFactoryMapper.java | 8 --- .../erp/dal/mysql/erp/ErpMaterialMapper.java | 4 ++ .../erp/dal/mysql/erp/ErpWarehouseMapper.java | 12 ++-- .../erp/service/erp/ErpFactoryService.java | 2 - .../service/erp/ErpFactoryServiceImpl.java | 23 +++---- .../service/erp/ErpMaterialServiceImpl.java | 60 ++++++++++++++----- .../erp/service/erp/ErpWarehouseService.java | 2 + .../service/erp/ErpWarehouseServiceImpl.java | 59 ++++++++++++++++-- .../resources/mapper/ErpFactoryMapper.xml | 2 +- .../resources/mapper/ErpMaterialMapper.xml | 16 +++++ .../resources/mapper/ErpWarehouseMapper.xml | 24 ++++++++ 18 files changed, 228 insertions(+), 61 deletions(-) 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 b9f1f52..48d4828 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 @@ -13,6 +13,9 @@ public interface ErrorCodeConstants { ErrorCode ERP_CUSTOMER_NOT_EXISTS = new ErrorCode(1_001_000_001, "ERP客商主数据不存在"); ErrorCode ERP_MATERIAL_NOT_EXISTS = new ErrorCode(1_002_000_001, "ERP物料数据不存在"); + ErrorCode ERP_MATERIAL_NOT_ALLOW_UPDATE = new ErrorCode(1_002_000_001, "只允许编辑状态为“供应链”的数据"); + ErrorCode ERP_MATERIAL_NOT_ALLOW_DELETE = new ErrorCode(1_002_000_001, "不允许删除状态为“ERP”的数据"); + ErrorCode ERP_MATERIAL_OTHER_NOT_ALLOW_DELETE = new ErrorCode(1_002_000_001, "只允许删除不存在配置关系的数据"); 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公司代码缓存数据丢失,请重新同步公司代码"); @@ -40,6 +43,7 @@ public interface ErrorCodeConstants { 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_ASSET_NOT_EXISTS = new ErrorCode(1_015_000_001, "ERP资产卡片数据不存在"); 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 5878582..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 @@ -88,14 +88,6 @@ public class ErpFactoryController { return success(BeanUtils.toBean(pageResult, ErpFactoryRespVO.class)); } - @GetMapping("/pageByCpn") - @Operation(summary = "获得ERP工厂分页") - @PreAuthorize("@ss.hasPermission('base:erp-factory:query')") - public CommonResult> getErpFactoryPageByCpn(@Valid ErpFactoryPageReqVO pageReqVO) { - PageResult pageResult = erpFactoryService.getErpFactoryPageByCpn(pageReqVO); - return success(BeanUtils.toBean(pageResult, ErpFactoryRespVO.class)); - } - @GetMapping("/export-excel") @Operation(summary = "导出ERP工厂 Excel") @PreAuthorize("@ss.hasPermission('base:erp-factory:export')") 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/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..18e1ae7 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 @@ -26,4 +26,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/ErpWarehouseDO.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/dataobject/erp/ErpWarehouseDO.java index 95a54c2..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; /** * 库位描述 */ @@ -47,4 +53,22 @@ public class ErpWarehouseDO { @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/ErpFactoryMapper.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/mysql/erp/ErpFactoryMapper.java index 4661051..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,14 +18,6 @@ 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()) - .eqIfPresent(ErpFactoryDO::getType, reqVO.getType()) - .orderByDesc(ErpFactoryDO::getId)); - } - String selectMaxCode(); List getPageByReq(ErpFactoryPageReqVO pageReqVO); 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/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/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 29f36f0..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 @@ -64,6 +64,4 @@ public interface ErpFactoryService { void callErpRfcInterface(); void enableFactoryList(List saveReqVOS); - - PageResult getErpFactoryPageByCpn(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/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 06c32fa..b7966fd 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 @@ -120,20 +120,6 @@ public class ErpFactoryServiceImpl implements ErpFactoryService { @Override public PageResult getErpFactoryPage(ErpFactoryPageReqVO pageReqVO) { - return erpFactoryMapper.selectPage(pageReqVO); - } - - @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 - public PageResult getErpFactoryPageByCpn(ErpFactoryPageReqVO pageReqVO) { // 获取分页数据 List list = erpFactoryMapper.getPageByReq(pageReqVO); if (list == null) { @@ -155,6 +141,15 @@ public class ErpFactoryServiceImpl implements ErpFactoryService { 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") 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 224ed84..3f6a52f 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 @@ -29,8 +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_INTERNAL_ORDER_NOT_EXISTS; -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; /** @@ -53,6 +52,19 @@ public class ErpMaterialServiceImpl implements ErpMaterialService { public ErpMaterialRespVO createErpMaterial(ErpMaterialSaveReqVO createReqVO) { // 插入 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); + } + } erpMaterialMapper.insert(erpMaterial); // 返回 return BeanUtils.toBean(erpMaterial, ErpMaterialRespVO.class); @@ -64,7 +76,11 @@ public class ErpMaterialServiceImpl implements ErpMaterialService { validateErpMaterialExists(updateReqVO.getId()); // 更新 ErpMaterialDO updateObj = BeanUtils.toBean(updateReqVO, ErpMaterialDO.class); - erpMaterialMapper.updateById(updateObj); + if (updateObj.getType().equals("供应链")) { + erpMaterialMapper.updateById(updateObj); + } else { + throw exception(ERP_MATERIAL_NOT_ALLOW_UPDATE); + } } @Override @@ -76,18 +92,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) { @@ -111,11 +143,11 @@ public class ErpMaterialServiceImpl implements ErpMaterialService { @XxlJob("getErpMaterialTask") public void callErpRfcInterface() { try { - OftenEnum.FuncnrEnum funcnrEnum =OftenEnum.FuncnrEnum.物料数据; + OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.物料数据; String funcnr = funcnrEnum.getFuncnr(); //防止缓存数据丢失 String key = "erp" + funcnrEnum.getFuncnr(); - if (myRedisConfig.getRedisCache(key)==null) { + if (myRedisConfig.getRedisCache(key) == null) { initialize(key); } @@ -138,7 +170,7 @@ public class ErpMaterialServiceImpl implements ErpMaterialService { } // 2. 处理公司数据,区分新增和更新 - ProcessingResult result = processData(dataArray,funcnrEnum); + ProcessingResult result = processData(dataArray, funcnrEnum); // 3. 批量保存数据 saveData(result); @@ -154,7 +186,7 @@ public class ErpMaterialServiceImpl implements ErpMaterialService { */ private ProcessingResult processData(JSONArray dataArray, OftenEnum.FuncnrEnum funcnr) { String key = "erp" + funcnr.getFuncnr(); - Map> numbers = myRedisConfig.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<>(); @@ -168,7 +200,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")); @@ -192,7 +224,7 @@ public class ErpMaterialServiceImpl implements ErpMaterialService { } } - return new ProcessingResult(toUpdate, toInsert,key,allnumbers); + return new ProcessingResult(toUpdate, toInsert, key, allnumbers); } /** @@ -206,7 +238,7 @@ public class ErpMaterialServiceImpl implements ErpMaterialService { if (!result.toUpdate.isEmpty()) { erpMaterialMapper.updateBatchByNumber(result.toUpdate); } - myRedisConfig.updateRedisCache(result.key,result.allnumbers); + myRedisConfig.updateRedisCache(result.key, result.allnumbers); } /** @@ -218,7 +250,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; @@ -228,7 +260,7 @@ public class ErpMaterialServiceImpl implements ErpMaterialService { private void initialize(String key) { List existingNumbers = erpMaterialMapper.selectList(new LambdaQueryWrapperX()) - .stream( ) + .stream() .filter(ErpMaterialDO -> ErpMaterialDO.getType().equals("ERP")) .map(ErpMaterialDO::getDownCenterNumber) .collect(Collectors.toList()); 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 f7028bf..3003124 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,6 +7,7 @@ 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.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; @@ -16,6 +17,7 @@ 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; @@ -50,10 +52,25 @@ public class ErpWarehouseServiceImpl implements ErpWarehouseService { @Override public ErpWarehouseRespVO createErpWarehouse(ErpWarehouseSaveReqVO createReqVO) { // 插入 - ErpWarehouseDO erpWarehouse = BeanUtils.toBean(createReqVO, ErpWarehouseDO.class); - erpWarehouseMapper.insert(erpWarehouse); + ErpWarehouseDO warehouse = BeanUtils.toBean(createReqVO, ErpWarehouseDO.class); + // 库位编码自动生成,格式 KW-0001,依次新增 + String maxCode = erpWarehouseMapper.selectMaxCode(); + if (warehouse.getNumber() == null){ + 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("供应链"); + warehouse.setIsEnable("1"); + erpWarehouseMapper.insert(warehouse); // 返回 - return BeanUtils.toBean(erpWarehouse, ErpWarehouseRespVO.class); + return BeanUtils.toBean(warehouse, ErpWarehouseRespVO.class); } @Override @@ -62,7 +79,11 @@ public class ErpWarehouseServiceImpl implements ErpWarehouseService { validateErpWarehouseExists(updateReqVO.getId()); // 更新 ErpWarehouseDO updateObj = BeanUtils.toBean(updateReqVO, ErpWarehouseDO.class); - erpWarehouseMapper.updateById(updateObj); + if (updateObj.getType().equals("供应链")&&updateObj.getIsEnable().equals("0")){ + erpWarehouseMapper.updateById(updateObj); + }else { + throw exception(ERP_WAREHOUSE_NOT_ALLOW_UPDATE); + } } @Override @@ -99,9 +120,37 @@ public class ErpWarehouseServiceImpl implements ErpWarehouseService { 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 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 baadafd..d58ec00 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 @@ -31,6 +31,6 @@ \ 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 458ea05..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 @@ -33,5 +33,21 @@ WHERE DOWN_CTR_NUM = #{item.downCenterNumber} + + + + + 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 533eb39..9afa594 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,4 +9,28 @@ 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/ --> + + + \ No newline at end of file From 22ddb3356491ac14438f3dd3df69463bf81c0ebf Mon Sep 17 00:00:00 2001 From: guojunyun Date: Sat, 11 Oct 2025 09:41:00 +0800 Subject: [PATCH 043/120] =?UTF-8?q?=E5=93=81=E4=BD=8D=E7=AD=89=E7=BA=A7?= =?UTF-8?q?=E4=BB=B7=E9=85=8D=E7=BD=AE=E6=95=B0=E6=8D=AE=E7=BB=93=E6=9E=84?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../contract/vo/contract/GradeRespVO.java | 36 ++++++++++--------- .../contract/vo/contract/GradeSaveReqVO.java | 34 ++++++++---------- .../dataobject/contract/ContractGradeDO.java | 31 +++++++--------- 3 files changed, 47 insertions(+), 54 deletions(-) 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 index 3662dca..c698dc5 100644 --- 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 @@ -1,19 +1,19 @@ package com.zt.plat.module.contractorder.controller.admin.contract.vo.contract; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotEmpty; 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 parameterId; + @Schema(description = "主键") + @ExcelProperty("主键") + private Long id; @Schema(description = "条款主键") private Long formulaId; @@ -36,28 +36,30 @@ public class GradeRespVO { @Schema(description = "品位下限") private BigDecimal gradeDown; - @Schema(description = "是否包含上限;包含则是大于等于,不包含则是大于") - private String isInUp; + @Schema(description = "区间方式(字典:STLM_RNG_WY)") + private String rangeWay; - @Schema(description = "是否包含下限;包含则是小于等于,不包含则是小于") - private String isInDown; - - @Schema(description = "默认计价品位;计价方式为加时,默认为为下限,计价方式为减时,默认为为上限,可手动填写") + @Schema(description = "默认计价品位") private BigDecimal gradeDefault; - @Schema(description = "系数;计价类型为阶梯价使用,标识没上升多少系数进行加款还是减款") + @Schema(description = "系数值") private BigDecimal settlementCoefficient; - @Schema(description = "不足系数值按比例计算") + @Schema(description = "是否比例计算(字典:ERP_CTRT_YN)") private String useCoefficient; - @Schema(description = "计价类型") + @Schema(description = "计价类型(字典:STLM_GRD_TP)") private String priceType; - @Schema(description = "是否省内") - @NotEmpty(message = "是否省内不能为空") + @Schema(description = "是否省内(字典:ERP_CTRT_YN)") private String inState; - @Schema(description = "等级单价") + @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 index 9c67968..3dbc60f 100644 --- 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 @@ -1,21 +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 lombok.Data; + import java.math.BigDecimal; @Schema(description = "管理后台 - 品位等级价配置新增/修改 Request VO") @Data public class GradeSaveReqVO { - @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "15414") + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "6211") private Long id; - @Schema(description = "配置主键", example = "16734") - private Long parameterId; - - @Schema(description = "条款主键", example = "15344") + @Schema(description = "条款主键", example = "2426") private Long formulaId; @Schema(description = "金属元素编码") @@ -24,7 +21,7 @@ public class GradeSaveReqVO { @Schema(description = "金属元素缩写") private String elementAbbreviation; - @Schema(description = "金属元素名称", example = "芋艿") + @Schema(description = "金属元素名称", example = "王五") private String elementName; @Schema(description = "品位单位") @@ -36,28 +33,27 @@ public class GradeSaveReqVO { @Schema(description = "品位下限") private BigDecimal gradeDown; - @Schema(description = "是否包含上限;包含则是大于等于,不包含则是大于") - private String isInUp; + @Schema(description = "区间方式(字典:STLM_RNG_WY)") + private String rangeWay; - @Schema(description = "是否包含下限;包含则是小于等于,不包含则是小于") - private String isInDown; - - @Schema(description = "默认计价品位;计价方式为加时,默认为为下限,计价方式为减时,默认为为上限,可手动填写") + @Schema(description = "默认计价品位") private BigDecimal gradeDefault; - @Schema(description = "系数;计价类型为阶梯价使用,标识没上升多少系数进行加款还是减款") + @Schema(description = "系数值") private BigDecimal settlementCoefficient; - @Schema(description = "不足系数值按比例计算") + @Schema(description = "是否比例计算(字典:ERP_CTRT_YN)") private String useCoefficient; - @Schema(description = "计价类型", example = "2") + @Schema(description = "计价类型(字典:STLM_GRD_TP)", example = "2") private String priceType; - @Schema(description = "是否省内", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "是否省内不能为空") + @Schema(description = "是否省内(字典:ERP_CTRT_YN)") private String inState; - @Schema(description = "等级单价", example = "26237") + @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/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 From 47f445e2bba1e90f4d4cfb7f1e5019e99c00de64 Mon Sep 17 00:00:00 2001 From: guojunyun Date: Sat, 11 Oct 2025 11:25:59 +0800 Subject: [PATCH 044/120] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E7=BB=93=E6=9E=84?= =?UTF-8?q?=E8=B0=83=E6=95=B4=EF=BC=8C=E9=80=9A=E8=BF=87=E5=90=88=E5=90=8C?= =?UTF-8?q?=E7=BC=96=E5=8F=B7=E8=8E=B7=E5=8F=96=E5=AF=B9=E5=BA=94=E7=9A=84?= =?UTF-8?q?=E7=BB=93=E7=AE=97=E6=9D=A1=E6=AC=BE=E6=95=B0=E6=8D=AEfeign?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/dto/ContractCoefficientRespDTO.java | 18 ++---- .../api/dto/ContractDeductRespDTO.java | 32 ++--------- .../api/dto/ContractGradeRespDTO.java | 29 +++++----- .../api/dto/ContractPriceRespDTO.java | 3 - .../contractorder/api/ContractApiImpl.java | 3 +- .../contract/vo/contract/GradeRespVO.java | 2 - .../contract/vo/contract/PriceRespVO.java | 3 - .../contract/vo/contract/PriceSaveReqVO.java | 3 - .../dataobject/contract/ContractPriceDO.java | 5 -- .../service/contract/ContractService.java | 9 +++ .../service/contract/ContractServiceImpl.java | 55 +++++++++++++++++++ 11 files changed, 91 insertions(+), 71 deletions(-) diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractCoefficientRespDTO.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractCoefficientRespDTO.java index 6a5b9c6..39ab702 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractCoefficientRespDTO.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractCoefficientRespDTO.java @@ -1,7 +1,6 @@ package com.zt.plat.module.contractorder.api.dto; import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotEmpty; import lombok.Data; import java.math.BigDecimal; @@ -13,9 +12,6 @@ public class ContractCoefficientRespDTO { @Schema(description = "主键") private Long id; - @Schema(description = "配置主键") - private Long parameterId; - @Schema(description = "条款主键") private Long formulaId; @@ -28,25 +24,21 @@ public class ContractCoefficientRespDTO { @Schema(description = "金属元素名称") 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 = "区间方式(字典:STLM_RNG_WY)") + private String rangeWay; @Schema(description = "是否省内") - @NotEmpty(message = "是否省内不能为空") 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-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractDeductRespDTO.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractDeductRespDTO.java index eb3c09d..ea3409f 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractDeductRespDTO.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractDeductRespDTO.java @@ -4,6 +4,7 @@ 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 @@ -12,39 +13,18 @@ public class ContractDeductRespDTO { @Schema(description = "主键") private Long id; - @Schema(description = "配置主键") - private Long parameterId; - @Schema(description = "条款主键") private Long formulaId; - @Schema(description = "物料编码;推送ERP") - private String materialNumber; - - @Schema(description = "物料名称") - private String materialName; - - @Schema(description = "上限") - 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 = "类型") - private String type; + @Schema(description = "数据项类型(字典:GRD_CFG_TP)") + private String configType; @Schema(description = "是否省内") private String inState; @Schema(description = "调整价") private BigDecimal gradeAmount; + + @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/ContractGradeRespDTO.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractGradeRespDTO.java index ea97fde..c54efa8 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractGradeRespDTO.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractGradeRespDTO.java @@ -4,6 +4,7 @@ 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 @@ -12,9 +13,6 @@ public class ContractGradeRespDTO { @Schema(description = "主键") private Long id; - @Schema(description = "配置主键") - private Long parameterId; - @Schema(description = "条款主键") private Long formulaId; @@ -36,27 +34,30 @@ public class ContractGradeRespDTO { @Schema(description = "品位下限") private BigDecimal gradeDown; - @Schema(description = "是否包含上限;包含则是大于等于,不包含则是大于") - private String isInUp; + @Schema(description = "区间方式(字典:STLM_RNG_WY)") + private String rangeWay; - @Schema(description = "是否包含下限;包含则是小于等于,不包含则是小于") - private String isInDown; - - @Schema(description = "默认计价品位;计价方式为加时,默认为为下限,计价方式为减时,默认为为上限,可手动填写") + @Schema(description = "默认计价品位") private BigDecimal gradeDefault; - @Schema(description = "系数;计价类型为阶梯价使用,标识没上升多少系数进行加款还是减款") + @Schema(description = "系数值") private BigDecimal settlementCoefficient; - @Schema(description = "不足系数值按比例计算") + @Schema(description = "是否比例计算(字典:ERP_CTRT_YN)") private String useCoefficient; - @Schema(description = "计价类型") + @Schema(description = "计价类型(字典:STLM_GRD_TP)") private String priceType; - @Schema(description = "是否省内") + @Schema(description = "是否省内(字典:ERP_CTRT_YN)") private String inState; - @Schema(description = "等级单价") + @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/ContractPriceRespDTO.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractPriceRespDTO.java index 40f3469..98cc044 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractPriceRespDTO.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractPriceRespDTO.java @@ -13,9 +13,6 @@ public class ContractPriceRespDTO { @Schema(description = "主键") private Long id; - @Schema(description = "配置主键") - private Long parameterId; - @Schema(description = "条款主键") private Long formulaId; 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 index 9bdaccd..7f659f8 100644 --- 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 @@ -19,7 +19,6 @@ public class ContractApiImpl implements ContractApi { @Override public List getFormulas(String contractPaperNumber) { - System.out.println("contract feign" + contractPaperNumber); - return List.of(); + return contractService.getFormulasByPaperNumber(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/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 index c698dc5..fca29ec 100644 --- 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 @@ -1,6 +1,5 @@ package com.zt.plat.module.contractorder.controller.admin.contract.vo.contract; -import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -12,7 +11,6 @@ import java.time.LocalDateTime; public class GradeRespVO { @Schema(description = "主键") - @ExcelProperty("主键") private Long id; @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/PriceRespVO.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 index 5b82d87..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/PriceRespVO.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 @@ -12,9 +12,6 @@ public class PriceRespVO { @Schema(description = "主键") private Long id; - @Schema(description = "配置主键") - private Long parameterId; - @Schema(description = "条款主键") 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/PriceSaveReqVO.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 index a47e1f5..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/PriceSaveReqVO.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 @@ -12,9 +12,6 @@ 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/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/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 e3b6fa9..770467e 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,6 +1,7 @@ package com.zt.plat.module.contractorder.service.contract; import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.module.contractorder.api.dto.ContractFormulaRespDTO; import com.zt.plat.module.contractorder.controller.admin.contract.vo.contract.*; import com.zt.plat.module.contractorder.dal.dataobject.contract.ContractMainDO; import jakarta.validation.Valid; @@ -85,4 +86,12 @@ public interface ContractService { * @return 结算公式列表 */ List getFormulas(FormulasQueryReqVO queryReqVO); + + /** + * 通过合同编号获取对应的结算条款数据 + * + * @param contractPaperNumber 合同编号 + * @return 结算条款数据 + */ + List getFormulasByPaperNumber(String contractPaperNumber); } 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 8ff71f3..c5af4ed 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 @@ -17,6 +17,7 @@ import com.zt.plat.module.bpm.api.task.BpmProcessInstanceApi; import com.zt.plat.module.bpm.api.task.BpmTaskApi; import com.zt.plat.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO; import com.zt.plat.module.bpm.api.task.dto.BpmTaskRespDTO; +import com.zt.plat.module.contractorder.api.dto.*; import com.zt.plat.module.contractorder.controller.admin.contract.vo.contract.*; import com.zt.plat.module.contractorder.dal.dataobject.contract.*; import com.zt.plat.module.contractorder.dal.mysql.contract.*; @@ -727,6 +728,60 @@ public class ContractServiceImpl implements ContractService { return contractFormulaMapper.selectFormulas(contractIds, queryReqVO.getMaterialName(), queryReqVO.getElementName()); } + @Override + public List 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(); + + // 查询并设置价款结算条款 + List formulas = new ArrayList<>(); + List formulaDOS = contractFormulaMapper + .selectList(TableFieldConstants.BSE_CTRT_FMU_CTRT_ID, contractId); + if (formulaDOS != null && !formulaDOS.isEmpty()) { + formulas = BeanUtils.toBean(formulaDOS, ContractFormulaRespDTO.class); + + formulas.forEach(formula -> { + + // 查询并设置基础系数配置 + List coefficientDOS = contractCoefficientMapper + .selectList(TableFieldConstants.BSE_CTRT_COEF_FMU_ID, formula.getId()); + if (coefficientDOS != null && !coefficientDOS.isEmpty()) { + formula.setCoefficients(BeanUtils.toBean(coefficientDOS, ContractCoefficientRespDTO.class)); + } + // 查询并设置品位等级价配置 + List gradeDOS = contractGradeMapper + .selectList(TableFieldConstants.BSE_CTRT_GRD_FMU_ID, formula.getId()); + if (gradeDOS != null && !gradeDOS.isEmpty()) { + formula.setGrades(BeanUtils.toBean(gradeDOS, ContractGradeRespDTO.class)); + } + // 查询并设置调整价配置 + List deductDOS = contractDeductMapper + .selectList(TableFieldConstants.BSE_CTRT_DDCT_FMU_ID, formula.getId()); + if (deductDOS != null && !deductDOS.isEmpty()) { + formula.setDeducts(BeanUtils.toBean(deductDOS, ContractDeductRespDTO.class)); + } + // 查询并设置市场价配置 + List priceDOS = contractPriceMapper + .selectList(TableFieldConstants.BSE_CTRT_PRC_FMU_ID, formula.getId()); + if (priceDOS != null && !priceDOS.isEmpty()) { + formula.setPrices(BeanUtils.toBean(priceDOS, ContractPriceRespDTO.class)); + } + }); + } + + return formulas; + } + /** * 校验合同内容 * From 7fd3d4404c79858cbd01c47e30866a56b239d85b Mon Sep 17 00:00:00 2001 From: liss <1780094091@qq.com> Date: Sat, 11 Oct 2025 11:27:27 +0800 Subject: [PATCH 045/120] =?UTF-8?q?erp=E5=88=86=E9=A1=B5=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plat/module/erp/api/ErpExternalApi.java | 6 ++++ .../module/erp/api/dto/ErpQueryReqDTO.java | 32 +++++++++++++++++++ .../module/erp/api/ErpExternalApiImpl.java | 6 ++++ .../admin/erp/vo/ErpFactoryPageReqVO.java | 4 +-- .../admin/erp/vo/ErpFactoryRespVO.java | 5 ++- .../admin/erp/vo/ErpFactorySaveReqVO.java | 5 +-- .../admin/erp/vo/ErpWarehouseRespVO.java | 4 +++ .../erp/dal/dataobject/erp/ErpFactoryDO.java | 4 +-- .../service/erp/ErpFactoryServiceImpl.java | 2 +- .../zt/plat/module/erp/utils/ErpConfig.java | 4 --- .../resources/mapper/ErpFactoryMapper.xml | 32 ++++++++++++------- .../resources/mapper/ErpWarehouseMapper.xml | 26 +++++++++------ 12 files changed, 95 insertions(+), 35 deletions(-) create mode 100644 zt-module-erp/zt-module-erp-api/src/main/java/com/zt/plat/module/erp/api/dto/ErpQueryReqDTO.java 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..7bf7d12 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 @@ -6,10 +6,12 @@ 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 +23,8 @@ public interface ErpExternalApi { @Operation(summary = "erp数据提交") HashMap submitDataToErp(@Valid @RequestBody ErpSubmitReqDTO reqDTO); + @GetMapping(PREFIX + "/query") + @Operation(summary = "erp数据查询") + HashMap queryDataToErp(@Valid @RequestBody String funcnr, Map req); + } 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..a7e9232 --- /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,32 @@ +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数据 + * + * 请求参数说明: + * "uuid": 请求uuid,必须 + * "sapsys": SAP系统ID, 必须 + * "srcsys": 源调用系统ID,必须 + * "funcnr": 接口编号,必须,参见RFC功能列表,可调用接口编号范围051-900 + * "bskey": 调用系统业务单据编号,必须,在外部系统唯一,用于关联 + * "usrid": 外部系统用户id + * "usrnm": 外部系统用户名 + * "sign": 签名,uuid+srcsys+密码,MD5 32位小写签名,密码另行约定 + * "req": {具体参数,参见RFC功能列表} + */ + private String funcnr; + private String bskey; + private String usrid; + private String usrnm; + private String sign; + private Map req; + +} 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 ade41ae..016f0c4 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 @@ -7,6 +7,7 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.RestController; import java.util.HashMap; +import java.util.Map; /** * ERP Api 实现类 @@ -25,4 +26,9 @@ public class ErpExternalApiImpl implements ErpExternalApi { public HashMap submitDataToErp(ErpSubmitReqDTO reqDTO) { return erpConfig.pushDataToErp(reqDTO); } + + @Override + public HashMap queryDataToErp(String funcnr, Map req) { + return erpConfig.fetchDataFromERP(funcnr, req); + } } 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 bf71059..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 @@ -16,10 +16,10 @@ public class ErpFactoryPageReqVO extends PageParam { private String number; @Schema(description = "公司编号") - private String companyNumber; + private String erpCompanyNumber; @Schema(description = "公司名称") - private String companyName; + private String erpCompanyName; @Schema(description = "类型") private String type; 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 9700347..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 @@ -23,7 +23,10 @@ public class ErpFactoryRespVO { private String number; @Schema(description = "公司编号") - private String companyNumber; + private String erpCompanyNumber; + + @Schema(description = "公司编号") + private String erpCompanyName; @Schema(description = "类型") private String type; 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 f93795f..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 @@ -20,10 +20,7 @@ public class ErpFactorySaveReqVO { private String number; @Schema(description = "公司编号") - private String companyNumber; - - @Schema(description = "公司编号") - private String companyName; + private String erpCompanyNumber; @Schema(description = "类型") private String type; 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 18e1ae7..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; 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 61a613b..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 @@ -41,13 +41,13 @@ public class ErpFactoryDO extends BusinessBaseDO { * 公司编号 */ @TableField("CPN_ID") - private String companyNumber; + private String erpCompanyNumber; /** * 公司名称 */ @TableField(exist = false) - private String companyName; + private String erpCompanyName; /** * 类型 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 b7966fd..7f355e3 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 @@ -220,7 +220,7 @@ public class ErpFactoryServiceImpl implements ErpFactoryService { ErpFactoryDO DO = new ErpFactoryDO(); DO.setName(dataJson.getString("NAME1")); DO.setNumber(number); - DO.setCompanyNumber(dataJson.getString("BUKRS")); + DO.setErpCompanyNumber(dataJson.getString("BUKRS")); DO.setType("ERP"); if (numbers.get(number)!=null) { // 更新 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 index 114ccda..2548206 100644 --- 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 @@ -5,10 +5,8 @@ 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; @@ -16,7 +14,6 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.client.RestTemplate; 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.*; @@ -25,7 +22,6 @@ import static dm.jdbc.util.DriverUtil.log; @Configuration public class ErpConfig { - @Value("${erp.address}") private String erpAddress; 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 d58ec00..2444df4 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 @@ -10,23 +10,31 @@ --> 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 9afa594..5212755 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 @@ -14,23 +14,31 @@ \ No newline at end of file From 5923bfeb1706487316e5f6a4746edcb87cf39025 Mon Sep 17 00:00:00 2001 From: liss <1780094091@qq.com> Date: Sat, 11 Oct 2025 11:34:18 +0800 Subject: [PATCH 046/120] =?UTF-8?q?erp=E5=88=86=E9=A1=B5=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/zt/plat/module/erp/api/ErpExternalApi.java | 3 ++- .../zt/plat/module/erp/api/dto/ErpQueryReqDTO.java | 13 +------------ .../zt/plat/module/erp/api/ErpExternalApiImpl.java | 5 ++++- 3 files changed, 7 insertions(+), 14 deletions(-) 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 7bf7d12..e37718b 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,5 +1,6 @@ package com.zt.plat.module.erp.api; +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; @@ -25,6 +26,6 @@ public interface ErpExternalApi { @GetMapping(PREFIX + "/query") @Operation(summary = "erp数据查询") - HashMap queryDataToErp(@Valid @RequestBody String funcnr, Map req); + HashMap queryDataToErp(@Valid @RequestBody ErpQueryReqDTO reqDTO); } 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 index a7e9232..1648ad4 100644 --- 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 @@ -12,21 +12,10 @@ public class ErpQueryReqDTO { * 调用ERP接口查询erp数据 * * 请求参数说明: - * "uuid": 请求uuid,必须 - * "sapsys": SAP系统ID, 必须 - * "srcsys": 源调用系统ID,必须 - * "funcnr": 接口编号,必须,参见RFC功能列表,可调用接口编号范围051-900 - * "bskey": 调用系统业务单据编号,必须,在外部系统唯一,用于关联 - * "usrid": 外部系统用户id - * "usrnm": 外部系统用户名 - * "sign": 签名,uuid+srcsys+密码,MD5 32位小写签名,密码另行约定 + * "funcnr": 接口编号,必须,参见RFC功能列表,可调用接口编号范围001-021 * "req": {具体参数,参见RFC功能列表} */ private String funcnr; - private String bskey; - private String usrid; - private String usrnm; - private String sign; private Map req; } 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 016f0c4..bbf5b2e 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,5 +1,6 @@ package com.zt.plat.module.erp.api; +import com.zt.plat.module.erp.api.dto.ErpQueryReqDTO; import com.zt.plat.module.erp.api.dto.ErpSubmitReqDTO; import com.zt.plat.module.erp.utils.ErpConfig; import jakarta.annotation.Resource; @@ -28,7 +29,9 @@ public class ErpExternalApiImpl implements ErpExternalApi { } @Override - public HashMap queryDataToErp(String funcnr, Map req) { + public HashMap queryDataToErp(ErpQueryReqDTO reqDTO) { + String funcnr = reqDTO.getFuncnr(); + Map req = new HashMap<>(); return erpConfig.fetchDataFromERP(funcnr, req); } } From 42a81cbeb3e8ddea323b6be39c046c6a39a74a76 Mon Sep 17 00:00:00 2001 From: liss <1780094091@qq.com> Date: Sat, 11 Oct 2025 16:49:30 +0800 Subject: [PATCH 047/120] =?UTF-8?q?erp=20type=20=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/erp/enums/ErrorCodeConstants.java | 9 ++++++--- .../java/com/zt/plat/module/erp/job/erpJob.java | 9 +++++++++ .../erp/service/erp/ErpFactoryServiceImpl.java | 14 ++++++++++++-- .../erp/service/erp/ErpMaterialServiceImpl.java | 15 ++++++++++++++- .../erp/service/erp/ErpWarehouseServiceImpl.java | 16 ++++++++++++++-- 5 files changed, 55 insertions(+), 8 deletions(-) create mode 100644 zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/job/erpJob.java 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 48d4828..9c7b04f 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 @@ -13,9 +13,10 @@ public interface ErrorCodeConstants { ErrorCode ERP_CUSTOMER_NOT_EXISTS = new ErrorCode(1_001_000_001, "ERP客商主数据不存在"); ErrorCode ERP_MATERIAL_NOT_EXISTS = new ErrorCode(1_002_000_001, "ERP物料数据不存在"); - ErrorCode ERP_MATERIAL_NOT_ALLOW_UPDATE = new ErrorCode(1_002_000_001, "只允许编辑状态为“供应链”的数据"); - ErrorCode ERP_MATERIAL_NOT_ALLOW_DELETE = new ErrorCode(1_002_000_001, "不允许删除状态为“ERP”的数据"); - ErrorCode ERP_MATERIAL_OTHER_NOT_ALLOW_DELETE = new ErrorCode(1_002_000_001, "只允许删除不存在配置关系的数据"); + 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公司代码缓存数据丢失,请重新同步公司代码"); @@ -31,6 +32,7 @@ public interface ErrorCodeConstants { 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成本中心数据不存在"); @@ -44,6 +46,7 @@ public interface ErrorCodeConstants { 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资产卡片数据不存在"); 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..38fe33f --- /dev/null +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/job/erpJob.java @@ -0,0 +1,9 @@ +package com.zt.plat.module.erp.job; + +public class erpJob { + + public void execute() throws Exception { + // TODO Auto-generated method stub + + } +} 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 7f355e3..0799177 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 @@ -50,6 +50,8 @@ public class ErpFactoryServiceImpl implements ErpFactoryService { @Override public ErpFactoryRespVO createErpFactory(ErpFactorySaveReqVO createReqVO) { + // 校验存在 + validateErpFactoryExistsNumber(createReqVO.getNumber()); // 插入 ErpFactoryDO erpFactory = BeanUtils.toBean(createReqVO, ErpFactoryDO.class); // 工厂编码自动生成,格式 GC-0001,依次新增 @@ -65,7 +67,7 @@ public class ErpFactoryServiceImpl implements ErpFactoryService { erpFactory.setNumber(nextCode); } } - erpFactory.setType("供应链"); + erpFactory.setType("SPLY"); erpFactory.setIsEnable("1"); erpFactoryMapper.insert(erpFactory); // 返回 @@ -113,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); @@ -165,7 +175,7 @@ public class ErpFactoryServiceImpl implements ErpFactoryService { // 1. 调用ERP接口获取数据 Map req = new HashMap<>(); JSONArray dataArrayALL = new JSONArray(); - String companykey = "erp" + OftenEnum.FuncnrEnum.公司代码.getFuncnr(); + String companykey = "erpMap" + OftenEnum.FuncnrEnum.公司代码.getFuncnr(); Map redisCache = myRedisConfig.getRedisCacheMap(companykey); if (CollUtil.isEmpty(redisCache)) { throw exception(ERP_COMPANY_REDIS_NOT_EXISTS); 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 3f6a52f..7c6f4ff 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,6 +7,7 @@ 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.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; @@ -50,6 +51,8 @@ public class ErpMaterialServiceImpl implements ErpMaterialService { @Override public ErpMaterialRespVO createErpMaterial(ErpMaterialSaveReqVO createReqVO) { + // 校验存在 + validateErpFactoryExistsNumber(createReqVO.getDownCenterNumber()); // 插入 ErpMaterialDO erpMaterial = BeanUtils.toBean(createReqVO, ErpMaterialDO.class); // 工厂编码自动生成,格式 GC-0001,依次新增 @@ -65,6 +68,7 @@ public class ErpMaterialServiceImpl implements ErpMaterialService { erpMaterial.setDownCenterNumber(nextCode); } } + erpMaterial.setType("SPLY"); erpMaterialMapper.insert(erpMaterial); // 返回 return BeanUtils.toBean(erpMaterial, ErpMaterialRespVO.class); @@ -76,7 +80,7 @@ public class ErpMaterialServiceImpl implements ErpMaterialService { validateErpMaterialExists(updateReqVO.getId()); // 更新 ErpMaterialDO updateObj = BeanUtils.toBean(updateReqVO, ErpMaterialDO.class); - if (updateObj.getType().equals("供应链")) { + if (updateObj.getType().equals("SPLY")) { erpMaterialMapper.updateById(updateObj); } else { throw exception(ERP_MATERIAL_NOT_ALLOW_UPDATE); @@ -128,6 +132,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); 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 3003124..63cd8af 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 @@ -51,6 +51,8 @@ public class ErpWarehouseServiceImpl implements ErpWarehouseService { @Override public ErpWarehouseRespVO createErpWarehouse(ErpWarehouseSaveReqVO createReqVO) { + // 校验存在 + validateErpFactoryExistsNumber(createReqVO.getNumber(), createReqVO.getFactoryNumber()); // 插入 ErpWarehouseDO warehouse = BeanUtils.toBean(createReqVO, ErpWarehouseDO.class); // 库位编码自动生成,格式 KW-0001,依次新增 @@ -66,7 +68,7 @@ public class ErpWarehouseServiceImpl implements ErpWarehouseService { warehouse.setNumber(nextCode); } } - warehouse.setType("供应链"); + warehouse.setType("SPLY"); warehouse.setIsEnable("1"); erpWarehouseMapper.insert(warehouse); // 返回 @@ -79,7 +81,7 @@ public class ErpWarehouseServiceImpl implements ErpWarehouseService { validateErpWarehouseExists(updateReqVO.getId()); // 更新 ErpWarehouseDO updateObj = BeanUtils.toBean(updateReqVO, ErpWarehouseDO.class); - if (updateObj.getType().equals("供应链")&&updateObj.getIsEnable().equals("0")){ + if (updateObj.getType().equals("SPLY")&&updateObj.getIsEnable().equals("0")){ erpWarehouseMapper.updateById(updateObj); }else { throw exception(ERP_WAREHOUSE_NOT_ALLOW_UPDATE); @@ -115,6 +117,16 @@ 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); From 61802d4974f02e8e55672163424324c4a6e4bae1 Mon Sep 17 00:00:00 2001 From: liss <1780094091@qq.com> Date: Sat, 11 Oct 2025 17:08:02 +0800 Subject: [PATCH 048/120] =?UTF-8?q?erp=20type=20=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../erp/service/erp/ErpWarehouseServiceImpl.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) 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 63cd8af..dff374d 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 @@ -56,8 +56,8 @@ public class ErpWarehouseServiceImpl implements ErpWarehouseService { // 插入 ErpWarehouseDO warehouse = BeanUtils.toBean(createReqVO, ErpWarehouseDO.class); // 库位编码自动生成,格式 KW-0001,依次新增 - String maxCode = erpWarehouseMapper.selectMaxCode(); - if (warehouse.getNumber() == null){ + if (warehouse.getNumber() == null) { + String maxCode = erpWarehouseMapper.selectMaxCode(); if (maxCode == null) { warehouse.setNumber("KW-0001"); } else { @@ -81,9 +81,9 @@ public class ErpWarehouseServiceImpl implements ErpWarehouseService { validateErpWarehouseExists(updateReqVO.getId()); // 更新 ErpWarehouseDO updateObj = BeanUtils.toBean(updateReqVO, ErpWarehouseDO.class); - if (updateObj.getType().equals("SPLY")&&updateObj.getIsEnable().equals("0")){ + if (updateObj.getType().equals("SPLY") && updateObj.getIsEnable().equals("0")) { erpWarehouseMapper.updateById(updateObj); - }else { + } else { throw exception(ERP_WAREHOUSE_NOT_ALLOW_UPDATE); } } @@ -135,7 +135,7 @@ public class ErpWarehouseServiceImpl implements ErpWarehouseService { @Override public void enableWarehouseList(List saveReqVOS) { List updateObj = BeanUtils.toBean(saveReqVOS, ErpWarehouseDO.class); - List count = erpWarehouseMapper.updateById(updateObj); + List count = erpWarehouseMapper.updateById(updateObj); if (CollUtil.isEmpty(count)) { throw exception(ERP_WAREHOUSE_NOT_EXISTS); } @@ -203,7 +203,7 @@ public class ErpWarehouseServiceImpl implements ErpWarehouseService { } dataArrayALL.addAll(dataArray); } - if (dataArrayALL.isEmpty()){ + if (dataArrayALL.isEmpty()) { throw exception(ERP_WAREHOUSE_NOT_EXISTS); } @@ -252,7 +252,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)); } } @@ -274,7 +274,7 @@ public class ErpWarehouseServiceImpl implements ErpWarehouseService { ); Map numberIdMap = insertedRecords.stream() .collect(Collectors.toMap(asset -> asset.getFactoryNumber() + "-" + asset.getNumber(), ErpWarehouseDO::getId)); - myRedisConfig.addRedisCacheMap(result.key,numberIdMap); + myRedisConfig.addRedisCacheMap(result.key, numberIdMap); } if (!result.toUpdate.isEmpty()) { erpWarehouseMapper.updateBatch(result.toUpdate); From 2cd5df0d5f734ae21c2cb1914c8a4b4abfce9037 Mon Sep 17 00:00:00 2001 From: guojunyun Date: Sat, 11 Oct 2025 17:25:34 +0800 Subject: [PATCH 049/120] =?UTF-8?q?=E5=AD=97=E5=85=B8=E6=9E=9A=E4=B8=BE?= =?UTF-8?q?=E4=BC=98=E5=8C=96=EF=BC=8C=E5=90=88=E5=90=8C=E6=8F=90=E4=BA=A4?= =?UTF-8?q?erp=E5=8A=9F=E8=83=BD=E7=BC=96=E5=86=99=EF=BC=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../enums/contract/AuditResultEnum.java | 46 ----- .../enums/contract/ContractStatusEnum.java | 67 ------- .../enums/contract/ContractTypeEnum.java | 55 ------ .../enums/contract/DictEnum.java | 73 ++++++++ .../enums/contract/ErpCtrtYesNoEnum.java | 47 ----- .../admin/contract/ContractController.java | 3 +- .../service/contract/ContractService.java | 8 + .../service/contract/ContractServiceImpl.java | 168 +++++++++++++++--- 8 files changed, 225 insertions(+), 242 deletions(-) delete mode 100644 zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/AuditResultEnum.java delete mode 100644 zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/ContractStatusEnum.java delete mode 100644 zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/ContractTypeEnum.java create mode 100644 zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/DictEnum.java delete mode 100644 zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/ErpCtrtYesNoEnum.java diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/AuditResultEnum.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/AuditResultEnum.java deleted file mode 100644 index 14da5a3..0000000 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/AuditResultEnum.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.zt.plat.module.contractorder.enums.contract; - -/** - * 合同审核结果 - */ -public enum AuditResultEnum { - /** - * 合同状态-草稿 - */ - PASS("通过","PASS", null), - /** - * 合同状态-正在审核 - */ - REJECT("驳回","REJECT",null); - - AuditResultEnum(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/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..622ba09 --- /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,73 @@ +package com.zt.plat.module.contractorder.enums.contract; + +/** + * 字典枚举 + */ +public enum DictEnum { + + /** 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 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/ErpCtrtYesNoEnum.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/ErpCtrtYesNoEnum.java deleted file mode 100644 index 63253ba..0000000 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/ErpCtrtYesNoEnum.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.zt.plat.module.contractorder.enums.contract; - -/** - * ERP是否枚举 - */ -public enum ErpCtrtYesNoEnum { - - /** - * 是 - */ - YES("是","1",null), - /** - * 否 - */ - NO("否","0",null); - - ErpCtrtYesNoEnum(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-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 b55de61..bffc2a1 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 @@ -148,6 +148,7 @@ public class ContractController implements BusinessControllerMarker { @PostMapping("/submit/erp") @Operation(summary = "提交ERP") @PreAuthorize("@ss.hasPermission('base:contract:erp')") - public void submitErp() { + public void submitErp(@RequestBody List ids) { + contractService.submitErp(ids); } } 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 770467e..233fa9b 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 @@ -94,4 +94,12 @@ public interface ContractService { * @return 结算条款数据 */ List getFormulasByPaperNumber(String contractPaperNumber); + + /** + * 提交ERP + * + * @param ids 合同ID集合 + * @return + */ + void submitErp(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 c5af4ed..593493e 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 @@ -25,8 +25,8 @@ import com.zt.plat.module.contractorder.enums.ApiConstants; import com.zt.plat.module.contractorder.enums.DateConstants; import com.zt.plat.module.contractorder.enums.ProcessConstants; import com.zt.plat.module.contractorder.enums.TableFieldConstants; -import com.zt.plat.module.contractorder.enums.contract.ContractStatusEnum; -import com.zt.plat.module.contractorder.enums.contract.ErpCtrtYesNoEnum; +import com.zt.plat.module.contractorder.enums.contract.DictEnum; +import com.zt.plat.module.erp.dal.dataobject.erp.ErpContractDO; import com.zt.plat.module.erp.service.erp.ErpCompanyService; import com.zt.plat.module.system.api.user.AdminUserApi; import com.zt.plat.module.system.api.user.dto.AdminUserRespDTO; @@ -134,7 +134,7 @@ public class ContractServiceImpl implements ContractService { // 合同主信息 ContractMainDO contractMainDO = BeanUtils.toBean(reqVO, ContractMainDO.class); // 合同状态保存为草稿 - contractMainDO.setStatus(ContractStatusEnum.DRAFT.getCode()); + contractMainDO.setStatus(DictEnum.BSE_CTRT_STS_DRAFT.getCode()); // 生成系统合同编号 contractMainDO.setSystemContractNumber(generateSystemContractNumber(reqVO.getCategory())); @@ -400,14 +400,14 @@ 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())) { + if (DictEnum.BSE_CTRT_STS_DELETED.getCode().equals(oldContractMainDO.getStatus()) + || DictEnum.BSE_CTRT_STS_ARCHIVED.getCode().equals(oldContractMainDO.getStatus()) + || DictEnum.BSE_CTRT_STS_TERMINATED.getCode().equals(oldContractMainDO.getStatus()) + || DictEnum.BSE_CTRT_STS_IN_PROGRESS.getCode().equals(oldContractMainDO.getStatus()) + || DictEnum.BSE_CTRT_STS_UNDER_REVIEW.getCode().equals(oldContractMainDO.getStatus())) { throw exception(CONTRACT_STATUS_NOT_UPDATE, - ContractStatusEnum.valueOf(oldContractMainDO.getStatus()).getLabel()); + DictEnum.valueOf(oldContractMainDO.getStatus()).getLabel()); } // 请求更新的合同信息 @@ -606,14 +606,14 @@ public class ContractServiceImpl implements ContractService { } // 合同状态校验 - if (ContractStatusEnum.UNDER_REVIEW.getCode().equals(contractMainDO.getStatus()) - || ContractStatusEnum.IN_PROGRESS.getCode().equals(contractMainDO.getStatus()) - || ContractStatusEnum.TERMINATED.getCode().equals(contractMainDO.getStatus()) - || ContractStatusEnum.ARCHIVED.getCode().equals(contractMainDO.getStatus()) - || ContractStatusEnum.DELETED.getCode().equals(contractMainDO.getStatus())) { + if (DictEnum.BSE_CTRT_STS_UNDER_REVIEW.getCode().equals(contractMainDO.getStatus()) + || DictEnum.BSE_CTRT_STS_IN_PROGRESS.getCode().equals(contractMainDO.getStatus()) + || DictEnum.BSE_CTRT_STS_TERMINATED.getCode().equals(contractMainDO.getStatus()) + || DictEnum.BSE_CTRT_STS_ARCHIVED.getCode().equals(contractMainDO.getStatus()) + || DictEnum.BSE_CTRT_STS_DELETED.getCode().equals(contractMainDO.getStatus())) { throw exception(CONTRACT_STATUS_NOT_SUBMIT_APPROVAL, - ContractStatusEnum.valueOf(contractMainDO.getStatus()).getLabel()); + DictEnum.valueOf(contractMainDO.getStatus()).getLabel()); } // 合同内容校验 @@ -644,7 +644,7 @@ public class ContractServiceImpl implements ContractService { BpmTaskRespDTO undoTask = taskList.get(taskList.size() - 1); contractMainDO.setTaskNodeId(undoTask.getId()); } - contractMainDO.setStatus(ContractStatusEnum.UNDER_REVIEW.getCode()); + contractMainDO.setStatus(DictEnum.BSE_CTRT_STS_UNDER_REVIEW.getCode()); contractMainMapper.updateById(contractMainDO); return "提交审批成功"; } @@ -671,20 +671,27 @@ public class ContractServiceImpl implements ContractService { } // 合同状态校验 - if (ContractStatusEnum.DRAFT.getCode().equals(contractMainDO.getStatus()) - || ContractStatusEnum.IN_PROGRESS.getCode().equals(contractMainDO.getStatus()) - || ContractStatusEnum.REJECTED.getCode().equals(contractMainDO.getStatus()) - || ContractStatusEnum.TERMINATED.getCode().equals(contractMainDO.getStatus()) - || ContractStatusEnum.ARCHIVED.getCode().equals(contractMainDO.getStatus()) - || ContractStatusEnum.DELETED.getCode().equals(contractMainDO.getStatus())) { + if (DictEnum.BSE_CTRT_STS_DRAFT.getCode().equals(contractMainDO.getStatus()) + || DictEnum.BSE_CTRT_STS_IN_PROGRESS.getCode().equals(contractMainDO.getStatus()) + || DictEnum.BSE_CTRT_STS_REJECTED.getCode().equals(contractMainDO.getStatus()) + || DictEnum.BSE_CTRT_STS_TERMINATED.getCode().equals(contractMainDO.getStatus()) + || DictEnum.BSE_CTRT_STS_ARCHIVED.getCode().equals(contractMainDO.getStatus()) + || DictEnum.BSE_CTRT_STS_DELETED.getCode().equals(contractMainDO.getStatus())) { throw exception(CONTRACT_STATUS_NOT_APPROVAL, - ContractStatusEnum.valueOf(contractMainDO.getStatus()).getLabel()); + DictEnum.valueOf(contractMainDO.getStatus()).getLabel()); } return ""; } + /** + * 获取合同ID集合 + * + * @param contractName 合同名称 + * @param contractPaperNumber 合同编号 + * @return 合同ID集合 + */ private List getContractIds(String contractName, String contractPaperNumber) { List contractIds = new ArrayList<>(); List contractMainDOS = contractMainMapper.selectList(new LambdaQueryWrapperX() @@ -782,6 +789,115 @@ public class ContractServiceImpl implements ContractService { return formulas; } + @Override + public void submitErp(List ids) { + + // 遍历合同ID集合 + ids.forEach(id -> { + + // 查询合同信息 + ContractMainDO contractMainDO = contractMainMapper.selectById(id); + + if (contractMainDO != null) { + + // 生成ERP合同映射表 + ErpContractDO erpContractDO = new ErpContractDO(); + // 合同主信息表主键:BSE_CTRT_MAIN + erpContractDO.setContractMainId(id); + // 操作标识:OPTN_ID TODO + /* + 1、先调用009ERP接口查询合同信息 + 2、如果009接口返回值中“合同编号”字段存在值,并且与传入的相同,则OPTN_ID值为“1” + 3、如果009接口返回值中“合同编号”字段不存在值,根据合同主键查询映射表中是否存在没有删除的数据,如果有,值为“1”,如果没有,值为“0” + */ + // 合同编号:CTRT_PPR_NUM + erpContractDO.setContractPaperNumber(contractMainDO.getContractPaperNumber()); + // 合同名称:CTRT_NAME + erpContractDO.setContractName(contractMainDO.getContractName()); + // 合同类型编号:CTRT_TP_NUM + erpContractDO.setContractTypeNumber(contractMainDO.getConstructionTypeNumber()); + // 合同类型名称:CTRT_TP_NAME + erpContractDO.setContractTypeName(contractMainDO.getConstructionTypeName()); + // 合同类别:CTRT_CTGR + erpContractDO.setContractCategory(contractMainDO.getCategory()); + // 是否虚拟合同:IS_VRTL_CTRT + erpContractDO.setIsVirtualContract(contractMainDO.getContractVirtual()); + // 客商编号:SPLR_NUM 根据合同主表的收支方向判断,如果为“支出”,值为“ERP乙方公司编码”,反之为“ERP甲方公司编码” + // erpContractDO.setSupplierNumber(); + // 客商名称:SPLR_NAME 根据合同主表的收支方向判断,如果为“支出”,值为“ERP乙方公司名称”,反之为“ERP甲方公司名称” + // erpContractDO.setSupplierName(); + // 代理方:AGT + erpContractDO.setAgent(contractMainDO.getAgent()); + // 合同实施主体编号:CTRT_IMPL_NUM 根据合同主表的收支方向判断,如果为“支出”,值为“ERP甲方公司编码”,反之为“ERP乙方公司编码” + // erpContractDO.setContractImplementNumber(); + // 合同签订主体编号:CTRT_SGN_NUM 根据合同主表的收支方向判断,如果为“支出”,值为“ERP甲方公司名称”,反之为“ERP乙方公司名称” + // erpContractDO.setContractSignNumber(); + // 合同签订日期:SGN_DT + if (contractMainDO.getSignDate() != null) { + erpContractDO.setSignDate(contractMainDO.getSignDate().toLocalDate()); + } + // 合同起始日期:STRT_DT + if (contractMainDO.getStartDate() != null) { + erpContractDO.setStartDate(contractMainDO.getStartDate().toLocalDate()); + } + // 合同终止日期:STOP_DT + if (contractMainDO.getEndDate() != null) { + erpContractDO.setStopDate(contractMainDO.getEndDate().toLocalDate()); + } + // 币种编号:CUR + erpContractDO.setCurrency(contractMainDO.getCurrency()); + // 合同总金额(原币-含税):SRC_AMT + erpContractDO.setSourceAmount(contractMainDO.getCooAmount()); + // 合同总金额(本位币-含税):BSC_AMT + erpContractDO.setBasicAmount(contractMainDO.getBasicAmount()); + // 变更后合同总金额(原币-含税):CHG_SRC_AMT + erpContractDO.setChangeSourceAmount(contractMainDO.getChangeCooAmount()); + // 变更后合同总金额(本位币-含税):CHG_BSC_AMT + erpContractDO.setChangeBasicAmount(contractMainDO.getChangeBasicAmount()); + // 合同状态编号:STS_NUM 参照060接口 + // erpContractDO.setStatusNumber(); + // 合同状态名称:STS_NAME 参照060接口 + // erpContractDO.setStatusName(); + // 是否有预付款:IS_PPYM + erpContractDO.setIsPrepayment(contractMainDO.getHasPrepayment()); + // 预付款比例:PPYM_RTIO + erpContractDO.setPrepaymentRatio(contractMainDO.getPrepaymentRatio()); + // 预付款金额:PPYM_AMT + erpContractDO.setPrepaymentAmount(contractMainDO.getPrepaymentAmount()); + // 履约保证金-变更前(原币):SRC_BFR_BND + erpContractDO.setSourceBeforeBond(contractMainDO.getChangeCooAmountDeposit()); + // 履约保证金-变更前(本位币):BSC_BFR_BND + erpContractDO.setBasicBeforeBond(contractMainDO.getChangeBasicAmountDeposit()); + // 履约保证金-变更后(原币):SRC_AFT_BND + erpContractDO.setSourceAfterBond(contractMainDO.getChangeCooAmountDeposit()); + // 履约保证金-变更后(本位币):BSC_AFT_BND + erpContractDO.setBasicAfterBond(contractMainDO.getChangeBasicAmountDeposit()); + // 是否含质保金:IS_QUA_AMT + erpContractDO.setIsQualityassuranceAmount(contractMainDO.getHasQualityAmount()); + // 质保金比例:QUA_RTIO + erpContractDO.setQualityassuranceRatio(contractMainDO.getQualityRatio()); + // 质保金金额:QUA_AMT + erpContractDO.setQualityassuranceAmount(contractMainDO.getQualityAmount()); + // 是否内部企业:IS_INTL + erpContractDO.setIsInternal(contractMainDO.getIsInternal()); + // 收支性质:NTR + erpContractDO.setNature(contractMainDO.getDirection()); + // 备注信息:RMK + erpContractDO.setRemark(contractMainDO.getRemark()); + // 是否框架合同:IS_FMWK + erpContractDO.setIsFramework(contractMainDO.getIsFramework()); + // 境内/境外:IS_DOM + erpContractDO.setIsDomestic(contractMainDO.getIsDomestic()); + // 达到收款条件金额:PYEE_CND_AMT + erpContractDO.setPayeeConditionAmount(contractMainDO.getPayeeConditionAmount()); + // 建筑服务发生地:ARCH_SVC_PLCE + erpContractDO.setArchitectureService‌Place(contractMainDO.getArchitectureServicePlace()); + + // 调用ERP模块 + } + }); + } + /** * 校验合同内容 * @@ -873,7 +989,7 @@ public class ContractServiceImpl implements ContractService { throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_HS_DPST_LABEL); } // 是否有履约保证金为是的情况 - if (ErpCtrtYesNoEnum.YES.getCode().equals(contract.getHasDeposit())) { + 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); @@ -888,7 +1004,7 @@ public class ContractServiceImpl implements ContractService { throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_HS_PPYM_LABEL); } // 是否有预付款为是的情况 - if (ErpCtrtYesNoEnum.YES.getCode().equals(contract.getHasPrepayment())) { + 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); @@ -903,7 +1019,7 @@ public class ContractServiceImpl implements ContractService { throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_HS_QLT_AMT_LABEL); } // 是否有质保金为是的情况 - if (ErpCtrtYesNoEnum.YES.getCode().equals(contract.getHasPrepayment())) { + 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); From 40a2322cfb91aeec9f52186a889132676f9c98f8 Mon Sep 17 00:00:00 2001 From: liss <1780094091@qq.com> Date: Sat, 11 Oct 2025 17:36:43 +0800 Subject: [PATCH 050/120] =?UTF-8?q?erp=20=E5=BA=93=E4=BD=8Dsql=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/mapper/ErpFactoryMapper.xml | 2 +- .../src/main/resources/mapper/ErpWarehouseMapper.xml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) 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 2444df4..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 @@ -28,7 +28,7 @@ and f.NUM like concat('%', #{number}, '%') - and f.CPN_ID = like concat('%', #{erpCompanyNumber}, '%') + and f.CPN_ID like concat('%', #{erpCompanyNumber}, '%') and c.NAME like concat('%', #{erpCompanyName}, '%') 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 5212755..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 @@ -23,7 +23,7 @@ f.IS_ENB as isEnable, f.FACT_NUM as factoryNumber, c.NAME as factoryName - from sply_erp_wrh f left join sply_erp_fact c on f.FACT_NUM = c.NUM; + from sply_erp_wrh f left join sply_erp_fact c on f.FACT_NUM = c.NUM where f.DELETED = 0 and f.NAME like concat('%', #{name}, '%') @@ -32,7 +32,7 @@ and f.NUM like concat('%', #{number}, '%') - and f.FACT_NUM = like concat('%', #{factoryNumber}, '%') + and f.FACT_NUM like concat('%', #{factoryNumber}, '%') and c.NAME like concat('%', #{factoryName}, '%') From 5119c6cdd5e2e20ba8f30eb5f4e182221a70a0f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BD=98=E8=8D=A3=E6=99=9F?= <9691125+pan-rongsheng@user.noreply.gitee.com> Date: Sat, 11 Oct 2025 18:01:39 +0800 Subject: [PATCH 051/120] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../purchaseorder/ErrorCodeConstants.java | 2 +- .../PurchaseOrderStatusEnum.java | 41 ++++ .../PurchaseOrderController.java | 16 ++ .../vo/PurchaseOrderSaveReqVO.java | 19 ++ .../vo/PurchaseOrderWithDetailsVO.java | 28 +++ .../purchaseorder/PurchaseOrderDO.java | 23 ++ .../purchaseorder/PurchaseOrderMapper.java | 3 + .../purchaseorder/PurchaseOrderService.java | 4 + .../PurchaseOrderServiceImpl.java | 158 +++++++++++++- .../ProcessDefinitionKeyConstants.java | 6 + .../purchaseorder/PurchaseOrderMapper.xml | 199 ++++++++++++++++++ .../admin/erp/vo/ErpOrderSaveReqVO.java | 181 ++++++++++++++++ .../erp/service/erp/ErpOrderService.java | 9 + .../erp/service/erp/ErpOrderServiceImpl.java | 95 +++++++++ 14 files changed, 772 insertions(+), 12 deletions(-) create mode 100644 zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/purchaseorder/PurchaseOrderStatusEnum.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PurchaseOrderWithDetailsVO.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/util/constants/ProcessDefinitionKeyConstants.java create mode 100644 zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpOrderSaveReqVO.java create mode 100644 zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpOrderService.java create mode 100644 zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpOrderServiceImpl.java 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 index fd38656..6cc231a 100644 --- 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 @@ -12,6 +12,6 @@ import com.zt.plat.framework.common.exception.ErrorCode; 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, "采购订单明细不存在"); } 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-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 index 9224f1c..8fcc0a0 100644 --- 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 @@ -107,4 +107,20 @@ public class PurchaseOrderController implements BusinessControllerMarker { 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); + } + + //提交ERP订单 + @PostMapping("/submit-erp") + @Operation(summary = "提交ERP订单", description = "bse:purchase-order:update')") + public CommonResult submitErp(@RequestBody List ids) { + return success( purchaseOrderService.submitErp(ids)); + } + } 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 index 9dc0f48..b07012c 100644 --- 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 @@ -1,6 +1,7 @@ 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.*; @@ -148,4 +149,22 @@ public class PurchaseOrderSaveReqVO { @Schema(description = "订单明细") @ExcelProperty("订单明细") private List prchOrdDtlSaveReqVOS; + + + @Schema(description = "流程实例编号") + @ExcelProperty("流程实例编号") + @NotEmpty(message = "流程实例编号不能为空") + 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; } 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/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 index c9b0c1c..90572eb 100644 --- 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 @@ -214,4 +214,27 @@ public class PurchaseOrderDO extends BusinessBaseDO { @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; } 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 index b8ad2b4..07087ef 100644 --- 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 @@ -7,8 +7,10 @@ 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; /** @@ -60,4 +62,5 @@ public interface PurchaseOrderMapper extends BaseMapperX { .orderByDesc(PurchaseOrderDO::getId)); } + List selectOrderById(@Param("ids") List id); } 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 index d66bbf5..3d3e4e5 100644 --- 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 @@ -63,4 +63,8 @@ public interface PurchaseOrderService { */ PageResult getPurchaseOrderPage(PurchaseOrderPageReqVO pageReqVO); + String submitOrder(Long id); + + String submitErp(List ids); + } 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 index c501234..15ad95d 100644 --- 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 @@ -1,28 +1,41 @@ package com.zt.plat.module.contractorder.service.purchaseorder; import cn.hutool.core.collection.CollUtil; -import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.PrchOrdDtlRespVO; -import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.PurchaseOrderPageReqVO; -import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.PurchaseOrderRespVO; -import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.PurchaseOrderSaveReqVO; +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.BpmApprovalDetailReqDTO; +import com.zt.plat.module.bpm.api.task.dto.BpmApprovalDetailRespDTO; +import com.zt.plat.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO; +import com.zt.plat.module.bpm.api.task.dto.BpmTaskRespDTO; +import com.zt.plat.module.bpm.enums.task.BpmProcessInstanceStatusEnum; +import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.*; import com.zt.plat.module.contractorder.dal.dataobject.purchaseorder.PurchaseOrderDO; import com.zt.plat.module.contractorder.dal.mysql.purchaseorder.PurchaseOrderMapper; +import com.zt.plat.module.contractorder.enums.purchaseorder.PurchaseOrderStatusEnum; +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.service.erp.ErpOrderService; +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.util.*; +import java.util.concurrent.atomic.AtomicInteger; 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.contractorder.enums.purchaseorder.ErrorCodeConstants.ORDER_ID_NOT_EXISTS; import static com.zt.plat.module.contractorder.enums.purchaseorder.ErrorCodeConstants.PURCHASE_ORDER_NOT_EXISTS; @@ -31,23 +44,39 @@ import static com.zt.plat.module.contractorder.enums.purchaseorder.ErrorCodeCons * * @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; + @Override 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()); + } purchaseOrderMapper.insert(purchaseOrder); // 返回 //批量插入订单明细 - createReqVO.getPrchOrdDtlSaveReqVOS().forEach(prchOrdDtlSaveReqVO->prchOrdDtlSaveReqVO.setOrdId(purchaseOrder.getId())); + createReqVO.getPrchOrdDtlSaveReqVOS().forEach(prchOrdDtlSaveReqVO -> prchOrdDtlSaveReqVO.setOrdId(purchaseOrder.getId())); List prchOrdDtlRespVOS = prchOrdDtlService.batchCreatePrchOrdDtl(createReqVO.getPrchOrdDtlSaveReqVOS()); PurchaseOrderRespVO purchaseOrderRespVO = BeanUtils.toBean(purchaseOrder, PurchaseOrderRespVO.class); purchaseOrderRespVO.setPrchOrdDtlRespVOS(prchOrdDtlRespVOS); @@ -72,7 +101,7 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { } @Override - public void deletePurchaseOrderListByIds(List ids) { + public void deletePurchaseOrderListByIds(List ids) { // 校验存在 validatePurchaseOrderExists(ids); // 删除 @@ -80,7 +109,7 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { //删除根据订单号订单明细 prchOrdDtlService.deletePrchOrdDtlListByOrdIds(ids); - } + } private void validatePurchaseOrderExists(List ids) { List list = purchaseOrderMapper.selectByIds(ids); @@ -105,4 +134,111 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { 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 + public String submitErp(List ids) { + //通过订单号查询订单 + List purchaseOrderWithDetailsVOS = purchaseOrderMapper.selectOrderById(ids); + if (!purchaseOrderWithDetailsVOS.isEmpty()) { + purchaseOrderWithDetailsVOS.forEach(purchaseOrderWithDetailsVO -> { + ErpOrderSaveReqVO erpOrderSaveReqVO = new ErpOrderSaveReqVO(); + if (purchaseOrderWithDetailsVO.getPurchaseOrder() != null) { + erpOrderSaveReqVO.setOrderid(purchaseOrderWithDetailsVO.getPurchaseOrder().getOrderNumber()); + erpOrderSaveReqVO.setCompCode(purchaseOrderWithDetailsVO.getPurchaseOrder().getCompanyNumber());//公司代码 + erpOrderSaveReqVO.setVendor(purchaseOrderWithDetailsVO.getPurchaseOrder().getSupplierNumber());// 供应商帐号 + erpOrderSaveReqVO.setDocType(purchaseOrderWithDetailsVO.getPurchaseOrder().getType());//采购凭证类型 + erpOrderSaveReqVO.setDocDate(purchaseOrderWithDetailsVO.getPurchaseOrder().getVoucherDate()); //采购凭证日期 + erpOrderSaveReqVO.setPurchOrg(purchaseOrderWithDetailsVO.getPurchaseOrder().getPurchaseOrganizationCustomsDeclaration());//采购组织 + erpOrderSaveReqVO.setPurGroup(purchaseOrderWithDetailsVO.getPurchaseOrder().getPurchaseGroup());//采购组 + erpOrderSaveReqVO.setCurrency(purchaseOrderWithDetailsVO.getPurchaseOrder().getCurrencyNumber()); // 货币码 + erpOrderSaveReqVO.setExchRate(purchaseOrderWithDetailsVO.getPurchaseOrder().getExchangeRate());//汇率 + erpOrderSaveReqVO.setZzhth(purchaseOrderWithDetailsVO.getPurchaseOrder().getContractNumber());//纸质合同号 + erpOrderSaveReqVO.setZxxyh(purchaseOrderWithDetailsVO.getPurchaseOrder().getPaperContractNumber());//小协议号 + + } + if (purchaseOrderWithDetailsVO.getOrderDetails()!= null){ + purchaseOrderWithDetailsVO.getOrderDetails().forEach(orderDetail -> { + erpOrderSaveReqVO.setPoItem(orderDetail.getLineNum()); //行号 + erpOrderSaveReqVO.setMaterial(orderDetail.getRcvFactNum());//物料号 + erpOrderSaveReqVO.setQuantity(orderDetail.getQty());// 数量 + erpOrderSaveReqVO.setPoUnit(orderDetail.getUnt());// 计量单位 + erpOrderSaveReqVO.setNetPrice(orderDetail.getInTaxUprc());// 含税单价 + erpOrderSaveReqVO.setActsCtgrDtl(orderDetail.getActsCtgrDtl()); + }); + } + erpOrderService.submitOrderToErp(erpOrderSaveReqVO); + log.info("订单推送成功,订单id【{}】", purchaseOrderWithDetailsVO.getPurchaseOrder().getId()); + }); + return "ERP推送成功"; + } else { + return "订单不存在"; + } + } + + } 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..03b5759 --- /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_process"; +} 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 index 1498f3e..4ae77e0 100644 --- 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 @@ -9,4 +9,203 @@ 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/ --> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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..5ddee76 --- /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,181 @@ +package com.zt.plat.module.erp.controller.admin.erp.vo; + +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; + +/** + * ERP采购订单保存请求VO + */ +@Data +@Schema(description = "ERP采购订单保存请求参数") +public class ErpOrderSaveReqVO { + + @Schema(description = "公司代码") + @NotEmpty(message = "公司代码不能为空") + private String compCode; // BUKRS CHAR4 + + @Schema(description = "供应商帐号") + @NotEmpty(message = "供应商帐号不能为空") + private String vendor; // LIFNR CHAR10 + + @Schema(description = "采购凭证类型") + @NotEmpty(message = "采购凭证类型不能为空") + private String docType; // BSART CHAR4 + + @Schema(description = "采购凭证日期") + @NotEmpty(message = "采购凭证日期不能为空") + private LocalDateTime docDate; // BEDAT DATS8(格式:YYYYMMDD) + + @Schema(description = "采购组织") + @NotEmpty(message = "采购组织不能为空") + private String purchOrg; // EKORG CHAR4 + + @Schema(description = "采购组") + @NotEmpty(message = "采购组不能为空") + private String purGroup; // EKGRP CHAR3 + + @Schema(description = "货币码") + @NotEmpty(message = "货币码不能为空") + private String currency; // WAERS CUKY5 + + @Schema(description = "汇率") + private BigDecimal exchRate; // WKURS DEC9,5 + @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 = "行号") + @NotEmpty(message = "行号不能为空") + private Long poItem; // EBELP NUMC5 + + @Schema(description = "物料号") + private String material; // MATNR CHAR18 + + @Schema(description = "工厂") + @NotEmpty(message = "工厂不能为空") + private String plant; // WERKS CHAR4 + + @Schema(description = "库存地点") + private String stgeLoc; // LGORT CHAR4 + + @Schema(description = "数量") + @NotEmpty(message = "数量不能为空") + private String quantity; // MENGE QUAN13,3 + + @Schema(description = "计量单位") + @NotNull(message = "计量单位不能为空") + private BigDecimal poUnit; // MEINS UNIT3 + + @Schema(description = "含税单价") + @NotNull(message = "含税单价不能为空") + private BigDecimal netPrice; // NETPR CURR11,2 + + @Schema(description = "价格单位(默认值1,表示以上单价对应的采购单位数量)") + private Integer priceUnit; // PEINH DEC5 + + @Schema(description = "税码") + private String taxCode; // MWSKZ CHAR2 + + @Schema(description = "基于GR的发票校验") + private String grBasedIv; // WEBRE CHAR1 + + @Schema(description = "允许无限制过量交货") + private String unlimitedDlv; // UEBTK CHAR1 + + @Schema(description = "批次") + private String batch; // CHARG CHAR10 + + @Schema(description = "项目类别(委托加工订单时填入L)") + private String itemCat; // PSTYP CHAR1(原表CAHR为笔误,按CHAR处理) + + @Schema(description = "科目分配类别(固定资产采购:A;服务采购:S-销售服务费、K-成本中心、F-订单)") + private String acctassCat; // KNTTP CHAR1 + + @Schema(description = "物料组(服务采购订单必填)") + private String matlGroup; // MATKL CHAR9 + + @Schema(description = "短文本(服务采购订单必填,绿星链通系统必须填入)") + private String shortText; // TXZ01 CHAR40 + + @Schema(description = "退货项目标识(退货行项目填X)") + private String retItem; // RETPO CHAR1 + + @Schema(description = "免费项目标识(免费行项目填X)") + private String freeItem; // UMSON CHAR1 + + @Schema(description = "外部行项目号(绿星链通必填)") + private String vendrBatch; // LICHN CHAR15 + + @Schema(description = "备注信息-需求单位") + private String noteXq; // TDLINE CHAR132 + + @Schema(description = "备注信息-物料详细") + private String noteWl; // TDLINE CHAR132 + + @Schema(description = "交货起止日期(格式:YYYYMMDD-YYYYMMDD)") + private String vendMat; // IDNLF CHAR22(原表说明为交货起止日期,按说明定义) + + @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 = "科目分配的序号(从1开始编号)") + @NotEmpty(message = "科目分配的序号不能为空") + private String serialNo; // DZEKKN NUMC2 + + @Schema(description = "总账科目编号") + private String glAccount; // SAKNR CHAR10 + + @Schema(description = "成本中心(科目分配类别为F时必填)") + private String costcenter; // KOSTL CHAR10 + + @Schema(description = "订单号(科目分配类别为F时必填)") + private String orderid; // AUFNR CHAR12 + + @Schema(description = "主资产号(科目分配类别为A时必填)") + private String assetNo; // ANLN1 CHAR12 + + @Schema(description = "资产子编号(科目分配类别为A时必填,固定值‘0’)") + private String subNumber; // ANLN2 CHAR4 + + + @Schema(description = "计划行号(从1开始编号)") + private String schedLine; // ETENR NUMC4 + + @Schema(description = "项目编号(从1开始编号)") + private String itemNo; // RSPOS NUMC4 + + @Schema(description = "委托加工需求数量") + @NotNull(message = "委托加工需求数量不能为空") + private BigDecimal entryQuantity; // MENGE QUAN13,3 + + @Schema(description = "组件计量单位(为空时使用基本计量单位)") + private String entryUom; // MEINS UNIT3 + + @Schema(description = " 科目分配详情") + private String actsCtgrDtl; + +} 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..2ff59bd --- /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,9 @@ +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; + +public interface ErpOrderService { + + String submitOrderToErp(ErpOrderSaveReqVO 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..2dd9d23 --- /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,95 @@ +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 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 submitOrderToErp(ErpOrderSaveReqVO createVo) { + + ErpSubmitReqDTO reqDTO = buildBaseReqDTO(createVo, "061"); + + Map req = new HashMap<>(); + Map head = new HashMap<>(); + // head + head.put("comp_code", createVo.getCompCode()); + head.put("vendor", createVo.getVendor()); + head.put("doc_type", createVo.getDocType()); + head.put("doc_date", createVo.getDocDate()); + head.put("purch_org", createVo.getPurchOrg()); + head.put("pur_group", createVo.getPurGroup()); + head.put("currency", createVo.getCurrency()); + head.put("exch_rate", createVo.getExchRate()); + req.put("head", head); + //exte + Map exte = new HashMap<>(); + exte.put("zzhth", createVo.getZzhth()); + exte.put("zxxyh", createVo.getZxxyh()); + exte.put("znote", createVo.getZnote()); + exte.put("zlifnr", createVo.getZlifnr()); + req.put("exte", exte); + getMaps(createVo, req); + reqDTO.setReq(req); + + return submitToErp(reqDTO); + } + + private ErpSubmitReqDTO buildBaseReqDTO(ErpOrderSaveReqVO vo, String funcnr) { + ErpSubmitReqDTO reqDTO = new ErpSubmitReqDTO(); + reqDTO.setFuncnr(funcnr); + reqDTO.setBskey(vo.getOrderid()); + 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"); + } + private void getMaps(ErpOrderSaveReqVO vo, Map req) { + List> items = new ArrayList<>(); + Map item = new HashMap<>(); + item.put("po_item", vo.getPoItem()); + item.put("material", vo.getMaterial()); + item.put("plant", vo.getPlant()); + item.put("stge_loc", vo.getStgeLoc()); + item.put("quantity", vo.getQuantity()); + item.put("po_unit", vo.getPoUnit()); + item.put("net_price", vo.getNetPrice()); + item.put("price_unit", vo.getPriceUnit()); + item.put("tax_code", vo.getTaxCode()); + item.put("gr_based_iv", vo.getGrBasedIv()); + item.put("unlimited_dlv", vo.getUnlimitedDlv()); + item.put("batch", vo.getBatch()); + item.put("item_cat", vo.getItemCat()); + item.put("acctass_cat", vo.getAcctassCat()); + item.put("matl_group", vo.getMatlGroup()); + item.put("short_text", vo.getShortText()); + item.put("ret_item", vo.getRetItem()); + item.put("free_item", vo.getFreeItem()); + item.put("vendr_batch", vo.getVendrBatch()); + item.put("note_xq", vo.getNoteXq()); + item.put("note_wl", vo.getNoteWl()); + item.put("vend_mat", vo.getVendMat()); + items.add(item); + if ("K".equals(vo.getAcctassCat())||"P".equals(vo.getAcctassCat())){ + req.put("acct", vo.getActsCtgrDtl()); + } + req.put("item", items); + } +} From beb4f5ddaf979f655c6b5f9f736a808f1b0e7cf1 Mon Sep 17 00:00:00 2001 From: liss <1780094091@qq.com> Date: Mon, 13 Oct 2025 10:34:16 +0800 Subject: [PATCH 052/120] =?UTF-8?q?=E5=85=AC=E5=8F=B8sql=E6=94=B9=E4=B8=BA?= =?UTF-8?q?=E5=8F=AA=E6=9F=A5=E8=AF=A2=E5=85=AC=E5=8F=B8=E7=BA=A7=E5=88=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/mapper/base/CompanyRelativityMapper.xml | 1 + 1 file changed, 1 insertion(+) 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..90fdc68 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} From b50ec80484c92d5b587bd8be2e18cf5aa3a23bdf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BD=98=E8=8D=A3=E6=99=9F?= <9691125+pan-rongsheng@user.noreply.gitee.com> Date: Mon, 13 Oct 2025 11:10:41 +0800 Subject: [PATCH 053/120] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plat/module/contractorder/api/ContractApi.java | 4 ++++ .../enums/purchaseorder/ErrorCodeConstants.java | 1 + .../module/contractorder/api/ContractApiImpl.java | 11 +++++++++++ .../purchaseorder/PurchaseOrderService.java | 7 +++++++ .../purchaseorder/PurchaseOrderServiceImpl.java | 14 ++++++++++++-- 5 files changed, 35 insertions(+), 2 deletions(-) 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 index 8856ccf..728092c 100644 --- 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 @@ -1,6 +1,7 @@ package com.zt.plat.module.contractorder.api; +import com.zt.plat.framework.common.pojo.CommonResult; import com.zt.plat.module.contractorder.api.dto.ContractFormulaRespDTO; import com.zt.plat.module.contractorder.enums.ApiConstants; import io.swagger.v3.oas.annotations.Operation; @@ -19,4 +20,7 @@ public interface ContractApi { @GetMapping(PREFIX + "/formulas") @Operation(summary = "通过合同编号获取对应的结算条款数据") List getFormulas(@RequestParam("contractPaperNumber") String contractPaperNumber); + @GetMapping(PREFIX + "/updateOrderStatus") + @Operation(summary = "更新订单状态") + CommonResult updateOrderStatus(@RequestParam("orderId") Long orderId, @RequestParam("status") String status); } 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 index 6cc231a..faf5d2d 100644 --- 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 @@ -14,4 +14,5 @@ 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-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 index 7f659f8..78d7878 100644 --- 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 @@ -1,7 +1,9 @@ package com.zt.plat.module.contractorder.api; +import com.zt.plat.framework.common.pojo.CommonResult; import com.zt.plat.module.contractorder.api.dto.ContractFormulaRespDTO; import com.zt.plat.module.contractorder.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; @@ -9,6 +11,8 @@ import org.springframework.web.bind.annotation.RestController; import java.util.List; +import static com.zt.plat.framework.common.pojo.CommonResult.success; + @RestController @Validated @Slf4j @@ -16,9 +20,16 @@ public class ContractApiImpl implements ContractApi { @Resource private ContractService contractService; + @Resource + private PurchaseOrderService purchaseOrderService; @Override public List getFormulas(String contractPaperNumber) { return contractService.getFormulasByPaperNumber(contractPaperNumber); } + + @Override + public CommonResult updateOrderStatus(Long orderId, String status) { + return success(purchaseOrderService.updateOrderStatus(orderId, status)); + } } 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 index 3d3e4e5..7971c9f 100644 --- 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 @@ -67,4 +67,11 @@ public interface PurchaseOrderService { String submitErp(List ids); + /** + * 通过订单id更新订单状态 + * + * @param orderId status 订单id 订单状态 + * @return boolean + */ + boolean updateOrderStatus(Long orderId, String status); } 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 index 15ad95d..31a1a63 100644 --- 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 @@ -35,8 +35,7 @@ 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.ORDER_ID_NOT_EXISTS; -import static com.zt.plat.module.contractorder.enums.purchaseorder.ErrorCodeConstants.PURCHASE_ORDER_NOT_EXISTS; +import static com.zt.plat.module.contractorder.enums.purchaseorder.ErrorCodeConstants.*; /** @@ -240,5 +239,16 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { } } + @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; + } + } From 0e7bea0e4de8c670508998ea8757dbbc6a7e6eb6 Mon Sep 17 00:00:00 2001 From: liss <1780094091@qq.com> Date: Mon, 13 Oct 2025 11:42:42 +0800 Subject: [PATCH 054/120] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=BC=93=E5=AD=98?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=BC=82=E5=B8=B8=E6=8A=9B=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/erp/enums/ErrorCodeConstants.java | 1 + .../admin/erp/ErpCompanyController.java | 8 ++++++- .../erp/service/erp/ErpCompanyService.java | 2 ++ .../service/erp/ErpCompanyServiceImpl.java | 19 +++++++++++++-- .../plat/module/erp/utils/MyRedisConfig.java | 23 ++++++++----------- 5 files changed, 36 insertions(+), 17 deletions(-) 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 9c7b04f..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 @@ -9,6 +9,7 @@ public interface ErrorCodeConstants { 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客商主数据不存在"); 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..197ca70 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,12 @@ 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); + } } \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpCompanyService.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpCompanyService.java index 2dd2cee..f995f12 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 @@ -70,4 +70,6 @@ public interface ErpCompanyService { * @return ERP公司 */ ErpCompanyDO getErpCompanyByNumber(String number); + + void test(); } \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpCompanyServiceImpl.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpCompanyServiceImpl.java index 464b7d6..0229735 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 @@ -131,8 +131,9 @@ public class ErpCompanyServiceImpl implements ErpCompanyService { saveData(result); } catch (Exception e) { - log.error("调用ERP RFC接口失败: {}", e); - throw new RuntimeException("调用ERP RFC接口失败: " + e.getMessage(), e); +// log.error("调用ERP RFC接口失败: {}", e); + throw e; +// throw new RuntimeException("调用ERP RFC接口失败: " + e.getMessage(), e); } } @@ -235,4 +236,18 @@ public class ErpCompanyServiceImpl implements ErpCompanyService { 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); + } + } } \ 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/MyRedisConfig.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/utils/MyRedisConfig.java index e7fb2b7..17f5522 100644 --- 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 @@ -20,6 +20,8 @@ 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; @@ -72,8 +74,6 @@ public class MyRedisConfig { } - - //list public Map> numbers(JSONArray dataArray, String key, String dataKey) { // 使用 Redis 获取缓存数据 @@ -152,9 +152,13 @@ public class MyRedisConfig { //map public Map getRedisCacheMap(String key) { - // 使用 Redis 获取缓存数据 - Map result = (Map) redisTemplate.opsForHash().entries(key); - return result; + 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) { @@ -179,13 +183,4 @@ public class MyRedisConfig { } - - - - - - - - - } \ No newline at end of file From b8be2bce92eac236a48a8762687e7f55145585a6 Mon Sep 17 00:00:00 2001 From: liss <1780094091@qq.com> Date: Mon, 13 Oct 2025 11:52:45 +0800 Subject: [PATCH 055/120] =?UTF-8?q?=E4=BC=98=E5=8C=96erp=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=E6=8A=9B=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/zt/plat/module/erp/utils/ErpConfig.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 index 2548206..7b3b8f4 100644 --- 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 @@ -87,7 +87,7 @@ public class ErpConfig { } } catch (Exception e) { log.error("调用ERP RFC接口失败: {}", e); - throw exception(ERP_ERROR_EXISTS); + throw exception(ERP_ERROR_EXISTS, e); } } From 83a11132b7058195c5ccaac81a5eb2fe1bfe3e39 Mon Sep 17 00:00:00 2001 From: guojunyun Date: Mon, 13 Oct 2025 14:56:16 +0800 Subject: [PATCH 056/120] =?UTF-8?q?=E5=90=88=E5=90=8C=E6=8F=90=E4=BA=A4erp?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E7=BC=96=E5=86=99=20=E9=80=9A=E8=BF=87?= =?UTF-8?q?=E5=90=88=E5=90=8C=E7=BC=96=E5=8F=B7=E8=8E=B7=E5=8F=96=E5=AF=B9?= =?UTF-8?q?=E5=BA=94=E7=9A=84=E7=BB=93=E7=AE=97=E6=9D=A1=E6=AC=BE=E6=95=B0?= =?UTF-8?q?=E6=8D=AEfeign=E6=8E=A5=E5=8F=A3=E4=BF=AE=E6=94=B9=E4=B8=BA?= =?UTF-8?q?=E9=80=9A=E8=BF=87=E5=90=88=E5=90=8C=E7=BC=96=E5=8F=B7=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E5=AF=B9=E5=BA=94=E7=9A=84=E5=90=88=E5=90=8C=E4=BF=A1?= =?UTF-8?q?=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/contractorder/api/ContractApi.java | 11 +- .../CoefficientRespDTO.java} | 4 +- .../api/dto/contract/ContractRespDTO.java | 238 ++++++++++++++++++ .../DeductRespDTO.java} | 4 +- .../api/dto/contract/DemoteRespDTO.java | 51 ++++ .../api/dto/contract/DetailRespDTO.java | 41 +++ .../FormulaRespDTO.java} | 12 +- .../GradeRespDTO.java} | 4 +- .../api/dto/contract/NotRespDTO.java | 51 ++++ .../api/dto/contract/PlanRespDTO.java | 28 +++ .../PriceRespDTO.java} | 4 +- .../enums/contract/DictEnum.java | 23 +- .../contractorder/api/ContractApiImpl.java | 6 +- .../service/contract/ContractService.java | 6 +- .../service/contract/ContractServiceImpl.java | 118 +++++++-- .../erp/service/erp/ErpContractService.java | 8 + .../service/erp/ErpContractServiceImpl.java | 15 +- 17 files changed, 553 insertions(+), 71 deletions(-) rename zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/{ContractCoefficientRespDTO.java => contract/CoefficientRespDTO.java} (91%) create mode 100644 zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/ContractRespDTO.java rename zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/{ContractDeductRespDTO.java => contract/DeductRespDTO.java} (88%) create mode 100644 zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/DemoteRespDTO.java create mode 100644 zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/DetailRespDTO.java rename zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/{ContractFormulaRespDTO.java => contract/FormulaRespDTO.java} (81%) rename zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/{ContractGradeRespDTO.java => contract/GradeRespDTO.java} (94%) create mode 100644 zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/NotRespDTO.java create mode 100644 zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/PlanRespDTO.java rename zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/{ContractPriceRespDTO.java => contract/PriceRespDTO.java} (93%) 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 index 728092c..ee91eac 100644 --- 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 @@ -2,7 +2,7 @@ package com.zt.plat.module.contractorder.api; import com.zt.plat.framework.common.pojo.CommonResult; -import com.zt.plat.module.contractorder.api.dto.ContractFormulaRespDTO; +import com.zt.plat.module.contractorder.api.dto.contract.ContractRespDTO; import com.zt.plat.module.contractorder.enums.ApiConstants; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -10,16 +10,15 @@ import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; -import java.util.List; - @FeignClient(name = ApiConstants.NAME) @Tag(name = "RPC 服务 - 合同") public interface ContractApi { String PREFIX = ApiConstants.PREFIX + "/contract"; - @GetMapping(PREFIX + "/formulas") - @Operation(summary = "通过合同编号获取对应的结算条款数据") - List getFormulas(@RequestParam("contractPaperNumber") String contractPaperNumber); + @GetMapping(PREFIX + "/get/by-paper-number") + @Operation(summary = "通过合同编号获取对应的合同信息") + ContractRespDTO getContractByPaperNumber(@RequestParam("contractPaperNumber") String contractPaperNumber); + @GetMapping(PREFIX + "/updateOrderStatus") @Operation(summary = "更新订单状态") CommonResult updateOrderStatus(@RequestParam("orderId") Long orderId, @RequestParam("status") String status); diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractCoefficientRespDTO.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/CoefficientRespDTO.java similarity index 91% rename from zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractCoefficientRespDTO.java rename to zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/CoefficientRespDTO.java index 39ab702..89d4fd1 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractCoefficientRespDTO.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/CoefficientRespDTO.java @@ -1,4 +1,4 @@ -package com.zt.plat.module.contractorder.api.dto; +package com.zt.plat.module.contractorder.api.dto.contract; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -7,7 +7,7 @@ import java.math.BigDecimal; @Schema(description = "RPC 服务 - 基础系数配置 Response DTO") @Data -public class ContractCoefficientRespDTO { +public class CoefficientRespDTO { @Schema(description = "主键") private Long id; diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/ContractRespDTO.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/ContractRespDTO.java new file mode 100644 index 0000000..0025dc1 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/ContractRespDTO.java @@ -0,0 +1,238 @@ +package com.zt.plat.module.contractorder.api.dto.contract; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; + +@Schema(description = "管理后台 - 合同详情 Response VO") +@Data +public class ContractRespDTO { + + @Schema(description = "主键") + private Long id; + + @Schema(description = "模板实例主键") + private Long instanceId; + + @Schema(description = "系统合同编号;自动生成,校验唯一") + private String systemContractNumber; + + @Schema(description = "状态") + private String status; + + @Schema(description = "合同名称;与ERP(HTMC)对应,校验唯一") + private String contractName; + + @Schema(description = "合同编号;与ERP(HTBH)对应,校验唯一") + private String contractPaperNumber; + + @Schema(description = "是否虚拟合同;与ERP(SFXNHT)对应") + private String contractVirtual; + + @Schema(description = "是否先款后货") + private String hasPayable; + + @Schema(description = "收支性质;与ERP(SZXZ)对应") + private String direction; + + @Schema(description = "合同类型") + private String contractType; + + @Schema(description = "签署日期;与ERP(HTQDRQ)对应") + private LocalDateTime signDate; + + @Schema(description = "开始日期;与ERP(HTQSRQ)对应") + private LocalDateTime startDate; + + @Schema(description = "结束日期;与ERP(HTZZRQ)对应") + private LocalDateTime endDate; + + @Schema(description = "签署地") + private String signPlace; + + @Schema(description = "甲方公司编号;如果是采购合同,查询组织机构自动带出,且与ERP(HTQDZTBH)对应,如果是销售合同,手动选择,且与ERP(WLDWBH)对应。") + private String purchaseCompanyNumber; + + @Schema(description = "甲方公司名称") + private String purchaseCompanyName; + + @Schema(description = "甲方地址") + private String purchaseAddress; + + @Schema(description = "甲方法定代表人") + private String purchaseLeader; + + @Schema(description = "乙方公司编号;如果是销售合同,查询组织机构自动带出,且与ERP(HTQDZTBH)对应,如果是采购合同,手动选择,且与ERP(WLDWBH)对应。") + private String salesCompanyNumber; + + @Schema(description = "乙方公司名称") + private String salesCompanyName; + + @Schema(description = "乙方地址") + private String salesAddress; + + @Schema(description = "乙方企业负责人") + private String salesPurchaseLeader; + + @Schema(description = "币种;与ERP(BZBH)对应") + private String currency; + + @Schema(description = "原币金额;与ERP(HTYBZJE)对应,币种不是人民币时,显示并手动填写,如果是人民币,隐藏且等于本币金额") + private BigDecimal cooAmount; + + @Schema(description = "本币金额;与ERP(HTBWBZJE)对应") + private BigDecimal basicAmount; + + @Schema(description = "是否有履约保证金;为是,则保证金必填。") + private String hasDeposit; + + @Schema(description = "原币履约保证金;与ERP(LYBZJBGQYB)对应,币种不是人民币时,显示并手动填写,如果是人民币,隐藏且等于本币金额") + private BigDecimal cooAmountDeposit; + + @Schema(description = "本币履约保证金;与ERP(LYBZJBGQBWB)对应") + private BigDecimal basicAmountDeposit; + + @Schema(description = "是否有预付款;与ERP(SFYYFK)对应") + private String hasPrepayment; + + @Schema(description = "预付款比例;与ERP(YFKBL)对应") + private BigDecimal prepaymentRatio; + + @Schema(description = "预付款金额;与ERP(YFKJE)对应") + private BigDecimal prepaymentAmount; + + @Schema(description = "是否有质保金;与ERP(SFHZBJ)对应") + private String hasQualityAmount; + + @Schema(description = "质保金比例;与ERP(ZBJBL)对应") + private BigDecimal qualityRatio; + + @Schema(description = "质保金金额;与ERP(BZJJE)对应") + private BigDecimal qualityAmount; + + @Schema(description = "补充协议类型;变更协议/增加条款") + private String replenishAgreementType; + + @Schema(description = "备注;与ERP(BZXX)对应") + private String remark; + + @Schema(description = "施工类型编号;与ERP(HTLXBH)对应,拓展信息") + private String constructionTypeNumber; + + @Schema(description = "施工类型名称;与ERP(HTLXMC)对应,拓展信息") + private String constructionTypeName; + + @Schema(description = "代理方;与ERP(ZLIFNR)对应,拓展信息") + private String agent; + + @Schema(description = "类别;与ERP(HTLB)对应,拓展信息") + private String category; + + @Schema(description = "原币金额-变更后;与ERP(BGHHTYBZJE)对应,拓展信息") + private BigDecimal changeCooAmount; + + @Schema(description = "本币金额-变更后;与ERP(BGHHTBWBZJE)对应,拓展信息") + private BigDecimal changeBasicAmount; + + @Schema(description = "原币履约保证金-变更后;与ERP(LYBZJBGHYB)对应,拓展信息") + private BigDecimal changeCooAmountDeposit; + + @Schema(description = "本币履约保证金-变更后;与ERP(LYBZJBGHBWB)对应,拓展信息") + private BigDecimal changeBasicAmountDeposit; + + @Schema(description = "是否框架合同;与ERP(SFKJHT)对应,拓展信息") + private String isFramework; + + @Schema(description = "境内/境外;与ERP(JNJW)对应,拓展信息") + private String isDomestic; + + @Schema(description = "建筑服务发生地;与ERP(JZFWFSD)对应,拓展信息,销售合同,且类型为SAP02COSR必填") + private String architectureServicePlace; + + @Schema(description = "达到收款条件金额;与ERP(DDSKJE)对应,拓展信息,销售合同,且类型为SAP02COSR必填") + private BigDecimal payeeConditionAmount; + + @Schema(description = "创建时间") + private LocalDateTime createTime; + + @Schema(description = "步骤") + private Integer step; + + @Schema(description = "ERP请求状态") + private String erpStatus; + + @Schema(description = "ERP请求失败原因") + private String cause; + + @Schema(description = "流程实例编号") + private String processInstanceId; + + @Schema(description = "审批意见") + private String reviewOpinion; + + @Schema(description = "任务节点主键") + private String taskNodeId; + + @Schema(description = "模板附件对象存储") + private String fileObject; + + @Schema(description = "其它附件对象存储") + private String fileObjectOther; + + @Schema(description = "交货地点") + private String deliveryAddress; + + @Schema(description = "交货方式(字典:FRCST_ASN)") + private String deliveryWay; + + @Schema(description = "甲方联系人") + private String purchaseHuman; + + @Schema(description = "甲方电话") + private String purchaseTel; + + @Schema(description = "甲方邮箱") + private String purchaseEmail; + + @Schema(description = "甲方传真") + private String purchaseFax; + + @Schema(description = "甲方联系地址") + private String purchaseContactAddress; + + @Schema(description = "乙方联系人") + private String salesHuman; + + @Schema(description = "乙方电话") + private String salesTel; + + @Schema(description = "乙方邮箱") + private String salesEmail; + + @Schema(description = "乙方传真") + private String salesFax; + + @Schema(description = "乙方联系地址") + private String salesContactAddress; + + // 物料信息 + private List 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-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractDeductRespDTO.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/DeductRespDTO.java similarity index 88% rename from zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractDeductRespDTO.java rename to zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/DeductRespDTO.java index ea3409f..27ef2e2 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractDeductRespDTO.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/DeductRespDTO.java @@ -1,4 +1,4 @@ -package com.zt.plat.module.contractorder.api.dto; +package com.zt.plat.module.contractorder.api.dto.contract; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -8,7 +8,7 @@ import java.time.LocalDateTime; @Schema(description = "RPC 服务 - 调整价配置 Response DTO") @Data -public class ContractDeductRespDTO { +public class DeductRespDTO { @Schema(description = "主键") private Long id; 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/ContractFormulaRespDTO.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/FormulaRespDTO.java similarity index 81% rename from zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractFormulaRespDTO.java rename to zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/FormulaRespDTO.java index 1d47fa1..87c4faf 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractFormulaRespDTO.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/FormulaRespDTO.java @@ -1,4 +1,4 @@ -package com.zt.plat.module.contractorder.api.dto; +package com.zt.plat.module.contractorder.api.dto.contract; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -7,7 +7,7 @@ import java.util.List; @Schema(description = "RPC 服务 - 价款结算条款 Response DTO") @Data -public class ContractFormulaRespDTO { +public class FormulaRespDTO { @Schema(description = "主键") private Long id; @@ -46,11 +46,11 @@ public class ContractFormulaRespDTO { private String settlementType; // 基础系数配置 - private List coefficients; + private List coefficients; // 品位等级价配置 - private List grades; + private List grades; // 调整价配置 - private List deducts; + private List deducts; // 市场价配置 - private List prices; + 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/ContractGradeRespDTO.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/GradeRespDTO.java similarity index 94% rename from zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractGradeRespDTO.java rename to zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/GradeRespDTO.java index c54efa8..c481294 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractGradeRespDTO.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/GradeRespDTO.java @@ -1,4 +1,4 @@ -package com.zt.plat.module.contractorder.api.dto; +package com.zt.plat.module.contractorder.api.dto.contract; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -8,7 +8,7 @@ import java.time.LocalDateTime; @Schema(description = "RPC 服务 - 品位等级价配置 Response DTO") @Data -public class ContractGradeRespDTO { +public class GradeRespDTO { @Schema(description = "主键") private Long id; 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/ContractPriceRespDTO.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/PriceRespDTO.java similarity index 93% rename from zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractPriceRespDTO.java rename to zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/PriceRespDTO.java index 98cc044..d54989d 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractPriceRespDTO.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/PriceRespDTO.java @@ -1,4 +1,4 @@ -package com.zt.plat.module.contractorder.api.dto; +package com.zt.plat.module.contractorder.api.dto.contract; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -8,7 +8,7 @@ import java.time.LocalDateTime; @Schema(description = "RPC 服务 - 市场价配置 Response DTO") @Data -public class ContractPriceRespDTO { +public class PriceRespDTO { @Schema(description = "主键") private Long id; diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/DictEnum.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/DictEnum.java index 622ba09..5aeeeb3 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/DictEnum.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/DictEnum.java @@ -5,38 +5,31 @@ package com.zt.plat.module.contractorder.enums.contract; */ public enum DictEnum { + /** 提交ERP合同状态 */ + SUBMIT_ERP_CTRT_STS_EF("正在执行","EF","其它所有状态"), + SUBMIT_ERP_CTRT_STS_BFZT("部分暂停","BFZT",null), + SUBMIT_ERP_CTRT_STS_QBZT("全部暂停","QBZT",null), + SUBMIT_ERP_CTRT_STS_HHZZ("合同中止","HHZZ",null), + SUBMIT_ERP_CTRT_STS_CA("作废","CA","对应合同中的“已作废”"), + SUBMIT_ERP_CTRT_STS_HTZZ("合同终止","HTZZ",null), + SUBMIT_ERP_CTRT_STS_ZXWB("执行完毕","ZXWB","对应合同中的“已完结”"), /** ERP收支方向 */ - // 支出 ERP_RCV_DLVY_EXPENSES("支出","2","对应采购"), - // 收入 ERP_RCV_DLVY_INCOME("收入","1","对应销售"), /** ERP是否 */ - // 是 ERP_CTRT_YN_YES("是","1",null), - // 否 ERP_CTRT_YN_NO("否","0",null), /** 合同状态 */ - // 草稿 BSE_CTRT_STS_DRAFT("草稿","DRAFT","可以删除"), - // 正在审核 BSE_CTRT_STS_UNDER_REVIEW("正在审核","UNDER_REVIEW","不允许任何操作"), - // 已驳回 BSE_CTRT_STS_REJECTED("已驳回","REJECTED","可以删除"), - // 待推送 BSE_CTRT_STS_WAIT_PUSH("待推送","WAIT_PUSH",null), - // 推送失败 BSE_CTRT_STS_PUSH_ERROR("推送失败","PUSH_ERROR",null), - // 执行中 BSE_CTRT_STS_IN_PROGRESS("执行中","IN_PROGRESS","可以终止、归档"), - // 已删除 BSE_CTRT_STS_DELETED("已删除","DELETED","不允许任何操作"), - // 已归档 BSE_CTRT_STS_ARCHIVED("已归档","ARCHIVED","不允许任何操作"), - // 已完结 BSE_CTRT_STS_TERMINATED("已完结","TERMINATED","只允许归档"), - // 待审核 BSE_CTRT_STS_WAIT_AUDIT("待审核","WAIT_AUDIT",null), - // 已作废 BSE_CTRT_STS_VOID("已作废","VOID",null); 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 index 78d7878..b6fbd25 100644 --- 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 @@ -1,7 +1,7 @@ package com.zt.plat.module.contractorder.api; import com.zt.plat.framework.common.pojo.CommonResult; -import com.zt.plat.module.contractorder.api.dto.ContractFormulaRespDTO; +import com.zt.plat.module.contractorder.api.dto.contract.ContractRespDTO; import com.zt.plat.module.contractorder.service.contract.ContractService; import com.zt.plat.module.contractorder.service.purchaseorder.PurchaseOrderService; import jakarta.annotation.Resource; @@ -9,8 +9,6 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.RestController; -import java.util.List; - import static com.zt.plat.framework.common.pojo.CommonResult.success; @RestController @@ -24,7 +22,7 @@ public class ContractApiImpl implements ContractApi { private PurchaseOrderService purchaseOrderService; @Override - public List getFormulas(String contractPaperNumber) { + public ContractRespDTO getContractByPaperNumber(String contractPaperNumber) { return contractService.getFormulasByPaperNumber(contractPaperNumber); } 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 233fa9b..7df8cf5 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,7 +1,7 @@ package com.zt.plat.module.contractorder.service.contract; import com.zt.plat.framework.common.pojo.PageResult; -import com.zt.plat.module.contractorder.api.dto.ContractFormulaRespDTO; +import com.zt.plat.module.contractorder.api.dto.contract.ContractRespDTO; import com.zt.plat.module.contractorder.controller.admin.contract.vo.contract.*; import com.zt.plat.module.contractorder.dal.dataobject.contract.ContractMainDO; import jakarta.validation.Valid; @@ -88,12 +88,12 @@ public interface ContractService { List getFormulas(FormulasQueryReqVO queryReqVO); /** - * 通过合同编号获取对应的结算条款数据 + * 通过合同编号获取对应的合同信息 * * @param contractPaperNumber 合同编号 * @return 结算条款数据 */ - List getFormulasByPaperNumber(String contractPaperNumber); + ContractRespDTO getFormulasByPaperNumber(String contractPaperNumber); /** * 提交ERP 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 593493e..868d3bd 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 @@ -17,7 +17,7 @@ import com.zt.plat.module.bpm.api.task.BpmProcessInstanceApi; import com.zt.plat.module.bpm.api.task.BpmTaskApi; import com.zt.plat.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO; import com.zt.plat.module.bpm.api.task.dto.BpmTaskRespDTO; -import com.zt.plat.module.contractorder.api.dto.*; +import com.zt.plat.module.contractorder.api.dto.contract.*; import com.zt.plat.module.contractorder.controller.admin.contract.vo.contract.*; import com.zt.plat.module.contractorder.dal.dataobject.contract.*; import com.zt.plat.module.contractorder.dal.mysql.contract.*; @@ -26,8 +26,10 @@ import com.zt.plat.module.contractorder.enums.DateConstants; import com.zt.plat.module.contractorder.enums.ProcessConstants; import com.zt.plat.module.contractorder.enums.TableFieldConstants; import com.zt.plat.module.contractorder.enums.contract.DictEnum; +import com.zt.plat.module.erp.controller.admin.erp.vo.ErpContractPageReqVO; import com.zt.plat.module.erp.dal.dataobject.erp.ErpContractDO; import com.zt.plat.module.erp.service.erp.ErpCompanyService; +import com.zt.plat.module.erp.service.erp.ErpContractService; import com.zt.plat.module.system.api.user.AdminUserApi; import com.zt.plat.module.system.api.user.dto.AdminUserRespDTO; import jakarta.annotation.Resource; @@ -90,6 +92,8 @@ public class ContractServiceImpl implements ContractService { private ContractDemoteMapper contractDemoteMapper; @Resource private ErpCompanyService erpCompanyService; + @Resource + private ErpContractService erpContractService; @Override public PageResult getContractPage(ContractPageReqVO pageReqVO) { @@ -736,7 +740,7 @@ public class ContractServiceImpl implements ContractService { } @Override - public List getFormulasByPaperNumber(String contractPaperNumber) { + public ContractRespDTO getFormulasByPaperNumber(String contractPaperNumber) { // 通过合同编号查询合同信息 ContractMainDO contractMainDO = contractMainMapper @@ -750,43 +754,76 @@ public class ContractServiceImpl implements ContractService { // 合同ID Long contractId = contractMainDO.getId(); + // 返回结果 + ContractRespDTO respDTO = new ContractRespDTO(); + BeanUtils.copyProperties(contractMainDO, respDTO); + + // 查询并设置合同明细 + List 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 formulas = new ArrayList<>(); List formulaDOS = contractFormulaMapper .selectList(TableFieldConstants.BSE_CTRT_FMU_CTRT_ID, contractId); if (formulaDOS != null && !formulaDOS.isEmpty()) { - formulas = BeanUtils.toBean(formulaDOS, ContractFormulaRespDTO.class); + respDTO.setFormulas(BeanUtils.toBean(formulaDOS, FormulaRespDTO.class)); - formulas.forEach(formula -> { + respDTO.getFormulas().forEach(formula -> { // 查询并设置基础系数配置 List coefficientDOS = contractCoefficientMapper .selectList(TableFieldConstants.BSE_CTRT_COEF_FMU_ID, formula.getId()); if (coefficientDOS != null && !coefficientDOS.isEmpty()) { - formula.setCoefficients(BeanUtils.toBean(coefficientDOS, ContractCoefficientRespDTO.class)); + formula.setCoefficients(BeanUtils.toBean(coefficientDOS, CoefficientRespDTO.class)); } // 查询并设置品位等级价配置 List gradeDOS = contractGradeMapper .selectList(TableFieldConstants.BSE_CTRT_GRD_FMU_ID, formula.getId()); if (gradeDOS != null && !gradeDOS.isEmpty()) { - formula.setGrades(BeanUtils.toBean(gradeDOS, ContractGradeRespDTO.class)); + formula.setGrades(BeanUtils.toBean(gradeDOS, GradeRespDTO.class)); } // 查询并设置调整价配置 List deductDOS = contractDeductMapper .selectList(TableFieldConstants.BSE_CTRT_DDCT_FMU_ID, formula.getId()); if (deductDOS != null && !deductDOS.isEmpty()) { - formula.setDeducts(BeanUtils.toBean(deductDOS, ContractDeductRespDTO.class)); + formula.setDeducts(BeanUtils.toBean(deductDOS, DeductRespDTO.class)); } // 查询并设置市场价配置 List priceDOS = contractPriceMapper .selectList(TableFieldConstants.BSE_CTRT_PRC_FMU_ID, formula.getId()); if (priceDOS != null && !priceDOS.isEmpty()) { - formula.setPrices(BeanUtils.toBean(priceDOS, ContractPriceRespDTO.class)); + formula.setPrices(BeanUtils.toBean(priceDOS, PriceRespDTO.class)); } }); } - return formulas; + // 查询并设置参数降级规则 + List 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 @@ -804,12 +841,39 @@ public class ContractServiceImpl implements ContractService { ErpContractDO erpContractDO = new ErpContractDO(); // 合同主信息表主键:BSE_CTRT_MAIN erpContractDO.setContractMainId(id); - // 操作标识:OPTN_ID TODO - /* - 1、先调用009ERP接口查询合同信息 - 2、如果009接口返回值中“合同编号”字段存在值,并且与传入的相同,则OPTN_ID值为“1” - 3、如果009接口返回值中“合同编号”字段不存在值,根据合同主键查询映射表中是否存在没有删除的数据,如果有,值为“1”,如果没有,值为“0” - */ + // 操作标识:OPTN_ID + // 1、先调用009ERP接口查询合同信息 + ErpContractPageReqVO pageReqVO = new ErpContractPageReqVO(); + // BUKRS 合同签订主体公司代码 收支方向判断,如果为“支出”,传“ERP甲方公司编码”,反之传“ERP乙方公司编码” + // PARTNER 对方客商编号 收支方向判断,如果为“支出”,传“ERP乙方公司编码”,反之传“ERP甲方公司编码” + // INEDR 1-借(销售合同),2-贷(采购合同) 收支方向判断,如果为“支出”,传“2”,反之传“1” + if (DictEnum.ERP_RCV_DLVY_EXPENSES.getCode().equals(contractMainDO.getDirection())) { + pageReqVO.setContractSignNumber(contractMainDO.getSalesCompanyNumber()); + pageReqVO.setSupplierNumber(contractMainDO.getSalesCompanyNumber()); + pageReqVO.setContractCategory("2"); + } else if (DictEnum.ERP_RCV_DLVY_INCOME.getCode().equals(contractMainDO.getDirection())) { + pageReqVO.setContractSignNumber(contractMainDO.getSalesCompanyNumber()); + pageReqVO.setSupplierNumber(contractMainDO.getSalesCompanyNumber()); + pageReqVO.setContractCategory("1"); + } + // ZHTBH 合同编号 合同编号:CTRT_PPR_NUM + pageReqVO.setContractTypeNumber(contractMainDO.getContractPaperNumber()); + // ZHTMC 合同名称 合同名称:CTRT_NAME + pageReqVO.setContractName(contractMainDO.getContractName()); + PageResult erpContractPage = erpContractService.getErpContractPage(pageReqVO); + if (erpContractPage.getTotal() > 0) { + // 2、如果009接口返回值中“合同编号”字段存在值,并且与传入的相同,则OPTN_ID值为“1” + erpContractDO.setOperationId("1"); + } else { + // 3、如果009接口返回值中“合同编号”字段不存在值,根据合同主键查询映射表中是否存在没有删除的数据,如果有,值为“1”,如果没有,值为“0” + /*ErpContractDO erpContract = erpContractService.getErpContractByMainId(id); + if (erpContract != null) { + erpContractDO.setOperationId("1"); + } else { + erpContractDO.setOperationId("0"); + }*/ + } + // erpContractDO.setOperationId(); // 合同编号:CTRT_PPR_NUM erpContractDO.setContractPaperNumber(contractMainDO.getContractPaperNumber()); // 合同名称:CTRT_NAME @@ -823,15 +887,25 @@ public class ContractServiceImpl implements ContractService { // 是否虚拟合同:IS_VRTL_CTRT erpContractDO.setIsVirtualContract(contractMainDO.getContractVirtual()); // 客商编号:SPLR_NUM 根据合同主表的收支方向判断,如果为“支出”,值为“ERP乙方公司编码”,反之为“ERP甲方公司编码” - // erpContractDO.setSupplierNumber(); // 客商名称:SPLR_NAME 根据合同主表的收支方向判断,如果为“支出”,值为“ERP乙方公司名称”,反之为“ERP甲方公司名称” - // erpContractDO.setSupplierName(); + if (DictEnum.ERP_RCV_DLVY_EXPENSES.getCode().equals(contractMainDO.getDirection())) { + erpContractDO.setSupplierNumber(contractMainDO.getSalesCompanyNumber()); + erpContractDO.setSupplierName(contractMainDO.getSalesCompanyName()); + } else if (DictEnum.ERP_RCV_DLVY_INCOME.getCode().equals(contractMainDO.getDirection())) { + erpContractDO.setSupplierNumber(contractMainDO.getPurchaseCompanyNumber()); + erpContractDO.setSupplierName(contractMainDO.getPurchaseCompanyName()); + } // 代理方:AGT erpContractDO.setAgent(contractMainDO.getAgent()); // 合同实施主体编号:CTRT_IMPL_NUM 根据合同主表的收支方向判断,如果为“支出”,值为“ERP甲方公司编码”,反之为“ERP乙方公司编码” - // erpContractDO.setContractImplementNumber(); // 合同签订主体编号:CTRT_SGN_NUM 根据合同主表的收支方向判断,如果为“支出”,值为“ERP甲方公司名称”,反之为“ERP乙方公司名称” - // erpContractDO.setContractSignNumber(); + if (DictEnum.ERP_RCV_DLVY_EXPENSES.getCode().equals(contractMainDO.getDirection())) { + erpContractDO.setContractImplementNumber(contractMainDO.getPurchaseCompanyNumber()); + erpContractDO.setContractSignNumber(contractMainDO.getPurchaseCompanyName()); + } else if (DictEnum.ERP_RCV_DLVY_INCOME.getCode().equals(contractMainDO.getDirection())) { + erpContractDO.setContractImplementNumber(contractMainDO.getSalesCompanyNumber()); + erpContractDO.setContractSignNumber(contractMainDO.getSalesCompanyName()); + } // 合同签订日期:SGN_DT if (contractMainDO.getSignDate() != null) { erpContractDO.setSignDate(contractMainDO.getSignDate().toLocalDate()); @@ -855,9 +929,9 @@ public class ContractServiceImpl implements ContractService { // 变更后合同总金额(本位币-含税):CHG_BSC_AMT erpContractDO.setChangeBasicAmount(contractMainDO.getChangeBasicAmount()); // 合同状态编号:STS_NUM 参照060接口 - // erpContractDO.setStatusNumber(); + erpContractDO.setStatusNumber(DictEnum.SUBMIT_ERP_CTRT_STS_EF.getCode()); // 合同状态名称:STS_NAME 参照060接口 - // erpContractDO.setStatusName(); + erpContractDO.setStatusName(DictEnum.SUBMIT_ERP_CTRT_STS_EF.getLabel()); // 是否有预付款:IS_PPYM erpContractDO.setIsPrepayment(contractMainDO.getHasPrepayment()); // 预付款比例:PPYM_RTIO 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..cef2ab5 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 @@ -53,6 +53,14 @@ public interface ErpContractService { */ ErpContractDO getErpContract(Long id); + /** + * 获得ERP合同映射通过合同主信息主键 + * + * @param contractMainId 合同主信息主键 + * @return ERP合同映射 + */ + ErpContractDO getErpContractByMainId(Long contractMainId); + /** * 获得ERP合同映射分页 * 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 ce09950..4b5e095 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,30 +6,26 @@ import com.alibaba.fastjson.JSONObject; import com.xxl.job.core.handler.annotation.XxlJob; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.util.object.BeanUtils; -import com.zt.plat.module.erp.dal.dataobject.erp.ErpProductiveOrderDO; -import com.zt.plat.module.erp.utils.ErpConfig; -import com.zt.plat.module.erp.utils.MyRedisConfig; -import com.zt.plat.module.erp.enums.OftenEnum; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpContractPageReqVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpContractRespVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpContractSaveReqVO; import com.zt.plat.module.erp.dal.dataobject.erp.ErpContractDO; import com.zt.plat.module.erp.dal.mysql.erp.ErpContractMapper; +import com.zt.plat.module.erp.enums.OftenEnum; +import com.zt.plat.module.erp.utils.ErpConfig; +import com.zt.plat.module.erp.utils.MyRedisConfig; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; -import static com.zt.plat.module.erp.enums.ErrorCodeConstants.ERP_COMPANY_NOT_EXISTS; import static com.zt.plat.module.erp.enums.ErrorCodeConstants.ERP_CONTRACT_NOT_EXISTS; import static dm.jdbc.util.DriverUtil.log; @@ -102,6 +98,11 @@ public class ErpContractServiceImpl implements ErpContractService { return erpContractMapper.selectById(id); } + @Override + public ErpContractDO getErpContractByMainId(Long contractMainId) { + return erpContractMapper.selectOne("CTRT_MAIN_ID", contractMainId); + } + @Override public PageResult getErpContractPage(ErpContractPageReqVO pageReqVO) { OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.合同信息; From bfdce8c90ae47bbd79a651edbab83b1b53d90589 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BD=98=E8=8D=A3=E6=99=9F?= <9691125+pan-rongsheng@user.noreply.gitee.com> Date: Mon, 13 Oct 2025 16:40:46 +0800 Subject: [PATCH 057/120] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/contractorder/api/ContractApi.java | 7 + .../contractorder/api/dto/PrchOrdDtlDTO.java | 246 ++++++++++++++++++ .../api/dto/PurchaseOrderWithDetailsDTO.java | 190 ++++++++++++++ .../contractorder/api/ContractApiImpl.java | 25 ++ .../PurchaseOrderController.java | 31 ++- .../vo/PrchOrdDtlDetailsRespVO.java | 246 ++++++++++++++++++ .../vo/PurchaseOrderDetailsRespVO.java | 195 ++++++++++++++ .../vo/PurchaseOrderPageReqVO.java | 3 + .../purchaseorder/vo/PurchaseOrderRespVO.java | 4 +- .../vo/PurchaseOrderSaveReqVO.java | 3 + .../purchaseorder/PrchOrdDtlDO.java | 7 + .../purchaseorder/PurchaseOrderMapper.java | 5 +- .../purchaseorder/PurchaseOrderService.java | 15 +- .../PurchaseOrderServiceImpl.java | 27 +- .../purchaseorder/PurchaseOrderMapper.xml | 120 ++++++++- .../admin/erp/vo/ErpOrderUpdateReqVO.java | 223 ++++++++++++++++ 16 files changed, 1330 insertions(+), 17 deletions(-) create mode 100644 zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/PrchOrdDtlDTO.java create mode 100644 zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/PurchaseOrderWithDetailsDTO.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PrchOrdDtlDetailsRespVO.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PurchaseOrderDetailsRespVO.java create mode 100644 zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpOrderUpdateReqVO.java 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 index 728092c..4af6d14 100644 --- 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 @@ -3,11 +3,14 @@ package com.zt.plat.module.contractorder.api; import com.zt.plat.framework.common.pojo.CommonResult; import com.zt.plat.module.contractorder.api.dto.ContractFormulaRespDTO; +import com.zt.plat.module.contractorder.api.dto.PurchaseOrderWithDetailsDTO; 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; @@ -23,4 +26,8 @@ public interface ContractApi { @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..d28df2e --- /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,190 @@ +package com.zt.plat.module.contractorder.api.dto; + +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 List orderDetails; +} 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 index 78d7878..dbde932 100644 --- 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 @@ -1,7 +1,12 @@ 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.ContractFormulaRespDTO; +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.service.contract.ContractService; import com.zt.plat.module.contractorder.service.purchaseorder.PurchaseOrderService; import jakarta.annotation.Resource; @@ -9,6 +14,7 @@ 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; @@ -32,4 +38,23 @@ public class ContractApiImpl implements ContractApi { 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/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 index 8fcc0a0..dd83a3e 100644 --- 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 @@ -1,8 +1,8 @@ package com.zt.plat.module.contractorder.controller.admin.purchaseorder; -import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.PurchaseOrderPageReqVO; -import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.PurchaseOrderRespVO; -import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.PurchaseOrderSaveReqVO; +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.dal.dataobject.purchaseorder.PurchaseOrderDO; import com.zt.plat.module.contractorder.service.purchaseorder.PurchaseOrderService; import org.springframework.web.bind.annotation.*; @@ -43,6 +43,9 @@ public class PurchaseOrderController implements BusinessControllerMarker { @Resource private PurchaseOrderService purchaseOrderService; + @Resource + private ContractApiImpl contractApi; + @PostMapping("/create") @Operation(summary = "创建采购订单") @@ -117,10 +120,24 @@ public class PurchaseOrderController implements BusinessControllerMarker { } //提交ERP订单 - @PostMapping("/submit-erp") - @Operation(summary = "提交ERP订单", description = "bse:purchase-order:update')") - public CommonResult submitErp(@RequestBody List ids) { - return success( purchaseOrderService.submitErp(ids)); + @PostMapping("/submit-erp061") + @Operation(summary = "推送ERP订单", description = "061')") + @PreAuthorize("@ss.hasPermission('bse:purchase-order:update')") + public CommonResult submitErp061(@RequestBody @Validated @NotNull(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 = "通过订单号查询订单信息") + public CommonResult> getOrderByOrderNo(@RequestBody @Validated @NotEmpty(message = "采购订单不能为空") List orderNos){ + return success(purchaseOrderService.getOrderByOrderNo(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/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..36792da --- /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 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-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 index 4c111ed..9a91617 100644 --- 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 @@ -124,4 +124,7 @@ public class PurchaseOrderPageReqVO extends PageParam { @Schema(description = "采购组名称", example = "张三") private String purchaseGroupName; + @Schema(description = "物料类型(字典:MTRL_TP)", example = "2") + private String mtrlTp; + } 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 index ec7263a..85070c3 100644 --- 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 @@ -164,5 +164,7 @@ public class PurchaseOrderRespVO { @Schema(description = "订单明细") @ExcelProperty("订单明细") private List prchOrdDtlRespVOS; - + @Schema(description = "物料类型(字典:MTRL_TP)", example = "2") + @ExcelProperty("物料类型(字典:MTRL_TP)") + private String mtrlTp; } 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 index b07012c..13ddf95 100644 --- 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 @@ -167,4 +167,7 @@ public class PurchaseOrderSaveReqVO { @Schema(description = "是否提交审核,value为0或1") @ExcelProperty("是否提交审核") private int isPush; + @Schema(description = "物料类别(字典:MTRL_TP)", example = "1") + @ExcelProperty("物料类别") + private String mtrlTp; } 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 index 1e0dd8f..9420a4f 100644 --- 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 @@ -271,4 +271,11 @@ public class PrchOrdDtlDO extends BusinessBaseDO { @TableField("ELEM_CDG") private String elemCdg; + /** + * 物料字典 + * + */ + @TableField("MTRL_TP") + private String mtrlTp; + } 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 index 07087ef..bea9436 100644 --- 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 @@ -61,6 +61,7 @@ public interface PurchaseOrderMapper extends BaseMapperX { .likeIfPresent(PurchaseOrderDO::getPurchaseGroupName, reqVO.getPurchaseGroupName()) .orderByDesc(PurchaseOrderDO::getId)); } - - List selectOrderById(@Param("ids") List id); + 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/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 index 7971c9f..cc83993 100644 --- 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 @@ -2,9 +2,7 @@ package com.zt.plat.module.contractorder.service.purchaseorder; import java.util.*; -import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.PurchaseOrderPageReqVO; -import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.PurchaseOrderRespVO; -import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.PurchaseOrderSaveReqVO; +import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.*; import com.zt.plat.module.contractorder.dal.dataobject.purchaseorder.PurchaseOrderDO; import jakarta.validation.*; @@ -65,7 +63,9 @@ public interface PurchaseOrderService { String submitOrder(Long id); - String submitErp(List ids); + String submitErp061(List ids); + + boolean submitErp062(Long id); /** * 通过订单id更新订单状态 @@ -74,4 +74,11 @@ public interface PurchaseOrderService { * @return boolean */ boolean updateOrderStatus(Long orderId, String status); + /** + * 通过订单编号查询订单信息 + * + * @param orderNo 订单编号 + * @return 订单信息 + */ + List getOrderByOrderNo(List orderNo); } 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 index 31a1a63..511ff0a 100644 --- 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 @@ -200,9 +200,9 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { } @Override - public String submitErp(List ids) { + public String submitErp061(List ids) { //通过订单号查询订单 - List purchaseOrderWithDetailsVOS = purchaseOrderMapper.selectOrderById(ids); + List purchaseOrderWithDetailsVOS = purchaseOrderMapper.selectOrderByIds(ids); if (!purchaseOrderWithDetailsVOS.isEmpty()) { purchaseOrderWithDetailsVOS.forEach(purchaseOrderWithDetailsVO -> { ErpOrderSaveReqVO erpOrderSaveReqVO = new ErpOrderSaveReqVO(); @@ -239,6 +239,17 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { } } + @Override + public boolean submitErp062(Long id) { + PurchaseOrderDO purchaseOrderDO = purchaseOrderMapper.selectByOrderId(id); + if (purchaseOrderDO== null){ + throw exception(PURCHASE_ORDER_NOT_EXISTS); + } + if (purchaseOrderDO.getOrderSAPNumber().isEmpty()){ return true;} + + return true; + } + @Override public boolean updateOrderStatus(Long orderId, String status) { // 校验存在 @@ -250,5 +261,17 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { 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; + } + } 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 index 4ae77e0..c5c9819 100644 --- 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 @@ -9,7 +9,7 @@ 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/ --> - SELECT po.ID as po_id, po.ORD_SAP_NUM, @@ -47,11 +47,17 @@ po.ERP_STS, po.CAUS, po.STS, + po.MTRL_TP, po.PRCH_GRP_NAME, po.PRCS_INSC_ID, po.RVW_ONN, po.TSK_NDE_ID, po.IS_PUSH, + po.CREATE_TIME, + po.UPDATE_TIME, + po.CREATOR, + po.UPDATER, + po.DELETED, pod.ID as pod_id, pod.ORD_ID, pod.LINE_NUM, @@ -109,6 +115,118 @@ ORDER BY po.SYS_ORD_NUM, pod.LINE_NUM + + + + + 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..e537fd6 --- /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,223 @@ +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; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * 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 String 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) ====================== + @Schema(description = "行号(EBELP)", requiredMode = Schema.RequiredMode.REQUIRED, example = "00010") + @NotEmpty(message = "行号不能为空") + @ExcelProperty("行号") + private String poItem; + + @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 stgeLoc; + + @Schema(description = "数量(MENGE),保留3位小数", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.000") + @NotNull(message = "数量不能为空") + @ExcelProperty("数量") + private BigDecimal quantity; + + @Schema(description = "计量单位(MEINS),必须与该物料基本计量单位一致", requiredMode = Schema.RequiredMode.REQUIRED, example = "PC") + @NotEmpty(message = "计量单位不能为空") + @ExcelProperty("计量单位") + private String poUnit; + + @Schema(description = "含税单价(NETPR),保留2位小数", requiredMode = Schema.RequiredMode.REQUIRED, example = "199.99") + @NotNull(message = "含税单价不能为空") + @ExcelProperty("含税单价") + private BigDecimal netPrice; + + @Schema(description = "价格单位(PEINH),固定值1", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "价格单位不能为空") + @ExcelProperty("价格单位") + private Integer priceUnit; + + @Schema(description = "税码(MWSKZ)", example = "J1") + @ExcelProperty("税码") + private String taxCode; + + @Schema(description = "基于GR的发票校验(WEBRE)", example = "Y") + @ExcelProperty("基于GR发票校验") + private String grBasediv; + + @Schema(description = "允许无限制过量交货(UEBTK)", example = "N") + @ExcelProperty("允许过量交货") + private String unlimitedDlv; + + @Schema(description = "批次(CHARG)", example = "B202405001") + @ExcelProperty("批次") + private String batch; + + @Schema(description = "项目类别(PSTYP),委托加工订单时填入L", example = "L") + @ExcelProperty("项目类别") + private String itemCat; + + @Schema(description = "科目分配类别(KNTTP),固定资产采购:A;服务采购:S-销售服务费/K-成本中心/F-订单", example = "K") + @ExcelProperty("科目分配类别") + private String acctasscat; + + @Schema(description = "物料组(MATKL),服务采购订单必填", example = "01") + @ExcelProperty("物料组") + private String matlGroup; + + @Schema(description = "短文本(TXZ01),服务采购订单必填", example = "设备维修服务") + @ExcelProperty("短文本") + private String shortText; + + @Schema(description = "退货项目标识(RETPO),退货行项目填X", example = "X") + @ExcelProperty("退货标识") + private String retItem; + + @Schema(description = "免费项目标识(UMSON),免费行项目填X", example = "X") + @ExcelProperty("免费标识") + private String freeItem; + + @Schema(description = "外部行项目号(LICHN),绿星链通必填", example = "EXT0010") + @ExcelProperty("外部行号") + private String vendrbatch; + + @Schema(description = "备注信息-需求单位(TDLINE)", example = "生产一部") + @ExcelProperty("需求单位备注") + private String noteXq; + + @Schema(description = "备注信息-物料详细(TDLINE)", example = "304不锈钢,厚度2mm") + @ExcelProperty("物料详细备注") + private String noteWl; + + @Schema(description = "行项目删除标识(ELOEK)", example = "N") + @ExcelProperty("行项目删除标识") + private String itemDeleteInd; + + // ====================== 4. 行项目扩展字段(列表-itex) ====================== + @Schema(description = "销售物料号(zmatnr),科目分配类别为S时必填", example = "S0010001") + @ExcelProperty("销售物料号") + private String 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; + + // ====================== 5. 科目分配字段(列表-acct,类别为K或P时使用) ====================== + @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; + + // ====================== 6. 委托加工物料字段(列表-comp,委托加工订单时使用) ====================== + @Schema(description = "计划行号(ETENR),从1开始编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "计划行号不能为空") + @ExcelProperty("计划行号") + private Integer schedLine; + + @Schema(description = "项目编号(RSPOS),从1开始编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "项目编号不能为空") + @ExcelProperty("项目编号") + private Integer itemNo; + + @Schema(description = "加工前物料号(MATNR)", requiredMode = Schema.RequiredMode.REQUIRED, example = "M0020001") + @NotEmpty(message = "加工前物料号不能为空") + @ExcelProperty("加工前物料号") + private String compMaterial; + + @Schema(description = "委托加工发货工厂(PLANT)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1001") + @NotEmpty(message = "委托加工发货工厂不能为空") + @ExcelProperty("委托发货工厂") + private String compPlant; + + @Schema(description = "委托加工需求数量(MENGE),保留3位小数", requiredMode = Schema.RequiredMode.REQUIRED, example = "95.000") + @NotNull(message = "委托加工需求数量不能为空") + @ExcelProperty("委托需求数量") + private BigDecimal entryQuantity; + + @Schema(description = "组件计量单位(MEINS),为空使用基本计量单位", example = "PC") + @ExcelProperty("组件计量单位") + private String entryUom; +} From 2268b802dfd80388ae1271a797b91c7ef84c9b41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BD=98=E8=8D=A3=E6=99=9F?= <9691125+pan-rongsheng@user.noreply.gitee.com> Date: Mon, 13 Oct 2025 16:52:00 +0800 Subject: [PATCH 058/120] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/zt/plat/module/contractorder/api/ContractApi.java | 3 ++- .../com/zt/plat/module/contractorder/api/ContractApiImpl.java | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) 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 index 1880e63..9f90fcc 100644 --- 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 @@ -2,7 +2,6 @@ package com.zt.plat.module.contractorder.api; import com.zt.plat.framework.common.pojo.CommonResult; -import com.zt.plat.module.contractorder.api.dto.ContractFormulaRespDTO; import com.zt.plat.module.contractorder.api.dto.PurchaseOrderWithDetailsDTO; import com.zt.plat.module.contractorder.api.dto.contract.ContractRespDTO; import com.zt.plat.module.contractorder.enums.ApiConstants; @@ -14,6 +13,8 @@ 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 { 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 index 4350fb6..5b0c737 100644 --- 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 @@ -2,7 +2,6 @@ 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.ContractFormulaRespDTO; 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; From 8cce3a2aaaa3562a33b6cb2f67cdebed76baa5b8 Mon Sep 17 00:00:00 2001 From: liss <1780094091@qq.com> Date: Mon, 13 Oct 2025 17:11:36 +0800 Subject: [PATCH 059/120] =?UTF-8?q?=E4=BC=98=E5=8C=96erp=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=E6=8A=9B=E5=87=BA=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/erp/ErpCompanyController.java | 8 ++++ .../erp/service/erp/ErpCompanyService.java | 2 + .../service/erp/ErpCompanyServiceImpl.java | 44 ++++++++++++++++++- 3 files changed, 52 insertions(+), 2 deletions(-) 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 197ca70..acb5473 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 @@ -117,4 +117,12 @@ public class ErpCompanyController { return success(true); } + @PostMapping("/test1") + @Operation(summary = "获取配置") + @PreAuthorize("@ss.hasPermission('sply:erp-company:get')") + public CommonResult test1() { + String TEST = erpCompanyService.test1(); + return success(TEST); + } + } \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpCompanyService.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpCompanyService.java index f995f12..c69ba0a 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 @@ -72,4 +72,6 @@ public interface ErpCompanyService { ErpCompanyDO getErpCompanyByNumber(String number); void test(); + + String test1(); } \ 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 0229735..81301dd 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 @@ -16,9 +16,15 @@ 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; @@ -29,6 +35,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.ApiConstants.TABLE_FIELD_SPLY_ERP_CPN_NUM; import static com.zt.plat.module.erp.enums.ErrorCodeConstants.ERP_COMPANY_NOT_EXISTS; +import static com.zt.plat.module.erp.enums.ErrorCodeConstants.ERP_ERROR_EXISTS; import static dm.jdbc.util.DriverUtil.log; /** @@ -42,11 +49,14 @@ 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; @Override public ErpCompanyRespVO createErpCompany(ErpCompanySaveReqVO createReqVO) { @@ -199,7 +209,7 @@ public class ErpCompanyServiceImpl implements ErpCompanyService { ); Map numberIdMap = insertedRecords.stream() .collect(Collectors.toMap(ErpCompanyDO::getNumber, ErpCompanyDO::getId)); - myRedisConfig.addRedisCacheMap(result.key,numberIdMap); + myRedisConfig.addRedisCacheMap(result.key, numberIdMap); } if (!result.toUpdate.isEmpty()) { erpCompanyMapper.updateBatch(result.toUpdate); @@ -250,4 +260,34 @@ public class ErpCompanyServiceImpl implements ErpCompanyService { throw exception(ERP_COMPANY_NOT_EXISTS); } } + + @Override + public String test1() { + try { + 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(); +// ResponseEntity response = restTemplate.postForEntity(url, requestEntity, String.class); + return address; + } catch (Exception e) { + throw exception(ERP_ERROR_EXISTS); + } + } } \ No newline at end of file From 8b584ab1aff8a07876415760aac052240e91db6f Mon Sep 17 00:00:00 2001 From: liss <1780094091@qq.com> Date: Mon, 13 Oct 2025 18:01:23 +0800 Subject: [PATCH 060/120] =?UTF-8?q?yml=20=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- base-server/src/main/resources/application-dev.yml | 4 ---- 1 file changed, 4 deletions(-) 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 - From f1b90a51acc03cd85ab16795b8bd27078574eec2 Mon Sep 17 00:00:00 2001 From: guojunyun Date: Tue, 14 Oct 2025 09:37:28 +0800 Subject: [PATCH 061/120] =?UTF-8?q?=E5=90=88=E5=90=8C=E6=8F=90=E4=BA=A4erp?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E7=BC=96=E5=86=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/contract/ContractServiceImpl.java | 116 +++++++++-------- .../admin/erp/vo/ErpContractSaveReqVO.java | 20 +++ .../erp/service/erp/ErpContractService.java | 8 ++ .../service/erp/ErpContractServiceImpl.java | 121 ++++++++++++++++++ 4 files changed, 215 insertions(+), 50 deletions(-) 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 868d3bd..6cf1aec 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 @@ -27,6 +27,7 @@ import com.zt.plat.module.contractorder.enums.ProcessConstants; import com.zt.plat.module.contractorder.enums.TableFieldConstants; import com.zt.plat.module.contractorder.enums.contract.DictEnum; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpContractPageReqVO; +import com.zt.plat.module.erp.controller.admin.erp.vo.ErpContractSaveReqVO; 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; @@ -838,9 +839,9 @@ public class ContractServiceImpl implements ContractService { if (contractMainDO != null) { // 生成ERP合同映射表 - ErpContractDO erpContractDO = new ErpContractDO(); + ErpContractSaveReqVO erpContractVO = new ErpContractSaveReqVO(); // 合同主信息表主键:BSE_CTRT_MAIN - erpContractDO.setContractMainId(id); + erpContractVO.setContractMainId(id); // 操作标识:OPTN_ID // 1、先调用009ERP接口查询合同信息 ErpContractPageReqVO pageReqVO = new ErpContractPageReqVO(); @@ -863,111 +864,126 @@ public class ContractServiceImpl implements ContractService { PageResult erpContractPage = erpContractService.getErpContractPage(pageReqVO); if (erpContractPage.getTotal() > 0) { // 2、如果009接口返回值中“合同编号”字段存在值,并且与传入的相同,则OPTN_ID值为“1” - erpContractDO.setOperationId("1"); + erpContractVO.setOperationId("1"); } else { // 3、如果009接口返回值中“合同编号”字段不存在值,根据合同主键查询映射表中是否存在没有删除的数据,如果有,值为“1”,如果没有,值为“0” - /*ErpContractDO erpContract = erpContractService.getErpContractByMainId(id); + ErpContractDO erpContract = erpContractService.getErpContractByMainId(id); if (erpContract != null) { - erpContractDO.setOperationId("1"); + erpContractVO.setOperationId("1"); } else { - erpContractDO.setOperationId("0"); - }*/ + erpContractVO.setOperationId("0"); + } } - // erpContractDO.setOperationId(); // 合同编号:CTRT_PPR_NUM - erpContractDO.setContractPaperNumber(contractMainDO.getContractPaperNumber()); + erpContractVO.setContractPaperNumber(contractMainDO.getContractPaperNumber()); // 合同名称:CTRT_NAME - erpContractDO.setContractName(contractMainDO.getContractName()); + erpContractVO.setContractName(contractMainDO.getContractName()); // 合同类型编号:CTRT_TP_NUM - erpContractDO.setContractTypeNumber(contractMainDO.getConstructionTypeNumber()); + erpContractVO.setContractTypeNumber(contractMainDO.getConstructionTypeNumber()); // 合同类型名称:CTRT_TP_NAME - erpContractDO.setContractTypeName(contractMainDO.getConstructionTypeName()); + erpContractVO.setContractTypeName(contractMainDO.getConstructionTypeName()); // 合同类别:CTRT_CTGR - erpContractDO.setContractCategory(contractMainDO.getCategory()); + erpContractVO.setContractCategory(contractMainDO.getCategory()); // 是否虚拟合同:IS_VRTL_CTRT - erpContractDO.setIsVirtualContract(contractMainDO.getContractVirtual()); + erpContractVO.setIsVirtualContract(contractMainDO.getContractVirtual()); // 客商编号:SPLR_NUM 根据合同主表的收支方向判断,如果为“支出”,值为“ERP乙方公司编码”,反之为“ERP甲方公司编码” // 客商名称:SPLR_NAME 根据合同主表的收支方向判断,如果为“支出”,值为“ERP乙方公司名称”,反之为“ERP甲方公司名称” if (DictEnum.ERP_RCV_DLVY_EXPENSES.getCode().equals(contractMainDO.getDirection())) { - erpContractDO.setSupplierNumber(contractMainDO.getSalesCompanyNumber()); - erpContractDO.setSupplierName(contractMainDO.getSalesCompanyName()); + erpContractVO.setSupplierNumber(contractMainDO.getSalesCompanyNumber()); + erpContractVO.setSupplierName(contractMainDO.getSalesCompanyName()); } else if (DictEnum.ERP_RCV_DLVY_INCOME.getCode().equals(contractMainDO.getDirection())) { - erpContractDO.setSupplierNumber(contractMainDO.getPurchaseCompanyNumber()); - erpContractDO.setSupplierName(contractMainDO.getPurchaseCompanyName()); + erpContractVO.setSupplierNumber(contractMainDO.getPurchaseCompanyNumber()); + erpContractVO.setSupplierName(contractMainDO.getPurchaseCompanyName()); } // 代理方:AGT - erpContractDO.setAgent(contractMainDO.getAgent()); + erpContractVO.setAgent(contractMainDO.getAgent()); // 合同实施主体编号:CTRT_IMPL_NUM 根据合同主表的收支方向判断,如果为“支出”,值为“ERP甲方公司编码”,反之为“ERP乙方公司编码” // 合同签订主体编号:CTRT_SGN_NUM 根据合同主表的收支方向判断,如果为“支出”,值为“ERP甲方公司名称”,反之为“ERP乙方公司名称” if (DictEnum.ERP_RCV_DLVY_EXPENSES.getCode().equals(contractMainDO.getDirection())) { - erpContractDO.setContractImplementNumber(contractMainDO.getPurchaseCompanyNumber()); - erpContractDO.setContractSignNumber(contractMainDO.getPurchaseCompanyName()); + erpContractVO.setContractImplementNumber(contractMainDO.getPurchaseCompanyNumber()); + erpContractVO.setContractSignNumber(contractMainDO.getPurchaseCompanyName()); } else if (DictEnum.ERP_RCV_DLVY_INCOME.getCode().equals(contractMainDO.getDirection())) { - erpContractDO.setContractImplementNumber(contractMainDO.getSalesCompanyNumber()); - erpContractDO.setContractSignNumber(contractMainDO.getSalesCompanyName()); + erpContractVO.setContractImplementNumber(contractMainDO.getSalesCompanyNumber()); + erpContractVO.setContractSignNumber(contractMainDO.getSalesCompanyName()); } // 合同签订日期:SGN_DT if (contractMainDO.getSignDate() != null) { - erpContractDO.setSignDate(contractMainDO.getSignDate().toLocalDate()); + erpContractVO.setSignDate(contractMainDO.getSignDate().toLocalDate()); } // 合同起始日期:STRT_DT if (contractMainDO.getStartDate() != null) { - erpContractDO.setStartDate(contractMainDO.getStartDate().toLocalDate()); + erpContractVO.setStartDate(contractMainDO.getStartDate().toLocalDate()); } // 合同终止日期:STOP_DT if (contractMainDO.getEndDate() != null) { - erpContractDO.setStopDate(contractMainDO.getEndDate().toLocalDate()); + erpContractVO.setStopDate(contractMainDO.getEndDate().toLocalDate()); } // 币种编号:CUR - erpContractDO.setCurrency(contractMainDO.getCurrency()); + erpContractVO.setCurrency(contractMainDO.getCurrency()); // 合同总金额(原币-含税):SRC_AMT - erpContractDO.setSourceAmount(contractMainDO.getCooAmount()); + erpContractVO.setSourceAmount(contractMainDO.getCooAmount()); // 合同总金额(本位币-含税):BSC_AMT - erpContractDO.setBasicAmount(contractMainDO.getBasicAmount()); + erpContractVO.setBasicAmount(contractMainDO.getBasicAmount()); // 变更后合同总金额(原币-含税):CHG_SRC_AMT - erpContractDO.setChangeSourceAmount(contractMainDO.getChangeCooAmount()); + erpContractVO.setChangeSourceAmount(contractMainDO.getChangeCooAmount()); // 变更后合同总金额(本位币-含税):CHG_BSC_AMT - erpContractDO.setChangeBasicAmount(contractMainDO.getChangeBasicAmount()); + erpContractVO.setChangeBasicAmount(contractMainDO.getChangeBasicAmount()); // 合同状态编号:STS_NUM 参照060接口 - erpContractDO.setStatusNumber(DictEnum.SUBMIT_ERP_CTRT_STS_EF.getCode()); + erpContractVO.setStatusNumber(DictEnum.SUBMIT_ERP_CTRT_STS_EF.getCode()); // 合同状态名称:STS_NAME 参照060接口 - erpContractDO.setStatusName(DictEnum.SUBMIT_ERP_CTRT_STS_EF.getLabel()); + erpContractVO.setStatusName(DictEnum.SUBMIT_ERP_CTRT_STS_EF.getLabel()); // 是否有预付款:IS_PPYM - erpContractDO.setIsPrepayment(contractMainDO.getHasPrepayment()); + erpContractVO.setIsPrepayment(contractMainDO.getHasPrepayment()); // 预付款比例:PPYM_RTIO - erpContractDO.setPrepaymentRatio(contractMainDO.getPrepaymentRatio()); + erpContractVO.setPrepaymentRatio(contractMainDO.getPrepaymentRatio()); // 预付款金额:PPYM_AMT - erpContractDO.setPrepaymentAmount(contractMainDO.getPrepaymentAmount()); + erpContractVO.setPrepaymentAmount(contractMainDO.getPrepaymentAmount()); // 履约保证金-变更前(原币):SRC_BFR_BND - erpContractDO.setSourceBeforeBond(contractMainDO.getChangeCooAmountDeposit()); + erpContractVO.setSourceBeforeBond(contractMainDO.getChangeCooAmountDeposit()); // 履约保证金-变更前(本位币):BSC_BFR_BND - erpContractDO.setBasicBeforeBond(contractMainDO.getChangeBasicAmountDeposit()); + erpContractVO.setBasicBeforeBond(contractMainDO.getChangeBasicAmountDeposit()); // 履约保证金-变更后(原币):SRC_AFT_BND - erpContractDO.setSourceAfterBond(contractMainDO.getChangeCooAmountDeposit()); + erpContractVO.setSourceAfterBond(contractMainDO.getChangeCooAmountDeposit()); // 履约保证金-变更后(本位币):BSC_AFT_BND - erpContractDO.setBasicAfterBond(contractMainDO.getChangeBasicAmountDeposit()); + erpContractVO.setBasicAfterBond(contractMainDO.getChangeBasicAmountDeposit()); // 是否含质保金:IS_QUA_AMT - erpContractDO.setIsQualityassuranceAmount(contractMainDO.getHasQualityAmount()); + erpContractVO.setIsQualityassuranceAmount(contractMainDO.getHasQualityAmount()); // 质保金比例:QUA_RTIO - erpContractDO.setQualityassuranceRatio(contractMainDO.getQualityRatio()); + erpContractVO.setQualityassuranceRatio(contractMainDO.getQualityRatio()); // 质保金金额:QUA_AMT - erpContractDO.setQualityassuranceAmount(contractMainDO.getQualityAmount()); + erpContractVO.setQualityassuranceAmount(contractMainDO.getQualityAmount()); // 是否内部企业:IS_INTL - erpContractDO.setIsInternal(contractMainDO.getIsInternal()); + erpContractVO.setIsInternal(contractMainDO.getIsInternal()); // 收支性质:NTR - erpContractDO.setNature(contractMainDO.getDirection()); + erpContractVO.setNature(contractMainDO.getDirection()); // 备注信息:RMK - erpContractDO.setRemark(contractMainDO.getRemark()); + erpContractVO.setRemark(contractMainDO.getRemark()); // 是否框架合同:IS_FMWK - erpContractDO.setIsFramework(contractMainDO.getIsFramework()); + erpContractVO.setIsFramework(contractMainDO.getIsFramework()); // 境内/境外:IS_DOM - erpContractDO.setIsDomestic(contractMainDO.getIsDomestic()); + erpContractVO.setIsDomestic(contractMainDO.getIsDomestic()); // 达到收款条件金额:PYEE_CND_AMT - erpContractDO.setPayeeConditionAmount(contractMainDO.getPayeeConditionAmount()); + erpContractVO.setPayeeConditionAmount(contractMainDO.getPayeeConditionAmount()); // 建筑服务发生地:ARCH_SVC_PLCE - erpContractDO.setArchitectureService‌Place(contractMainDO.getArchitectureServicePlace()); + 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()); // 调用ERP模块 + erpContractService.submitErp(erpContractVO); } }); } 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/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 cef2ab5..ca681b4 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 @@ -70,4 +70,12 @@ public interface ErpContractService { PageResult getErpContractPage(ErpContractPageReqVO pageReqVO); void callErpRfcInterface(); + + /** + * 合同提交ERP + * + * @param erpContractVO ERP合同映射数据 + * @return ERP合同映射 + */ + String 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 4b5e095..78cd703 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,6 +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.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; @@ -46,6 +49,9 @@ public class ErpContractServiceImpl implements ErpContractService { @Resource private ErpConfig erpConfig; + @Resource + public ErpExternalApi erpExternalApi; + @Override public ErpContractRespVO createErpContract(ErpContractSaveReqVO createReqVO) { // 插入 @@ -226,6 +232,121 @@ public class ErpContractServiceImpl implements ErpContractService { } } + @Override + public String submitErp(ErpContractSaveReqVO erpContractVO) { + + // 转换为DO + ErpContractDO erpContract = BeanUtils.toBean(erpContractVO, ErpContractDO.class); + + // 根据合同主信息ID查询合同映射 + ErpContractDO erpContractDO = getErpContractByMainId(erpContract.getContractMainId()); + if (erpContractDO == null) { + // 不存在映射表则新增 + 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("head", head); + erpSubmitReqDTO.setReq(req); + + HashMap response = erpExternalApi.submitDataToErp(erpSubmitReqDTO); + + System.out.println(response.get("resStr")); + + return ""; + } + /** * 处理数据,区分新增和更新 */ From f042ab88b37b3720fb5364fdddf40900ee1aae79 Mon Sep 17 00:00:00 2001 From: liss <1780094091@qq.com> Date: Tue, 14 Oct 2025 10:14:27 +0800 Subject: [PATCH 062/120] =?UTF-8?q?erp=E6=B3=A8=E8=A7=A3=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/zt/plat/module/erp/utils/ErpConfig.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 index 7b3b8f4..e00d9e6 100644 --- 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 @@ -22,10 +22,10 @@ import static dm.jdbc.util.DriverUtil.log; @Configuration public class ErpConfig { - @Value("${erp.address}") + @Value("${erp.address:}") private String erpAddress; - @Value("${erp.sapsys}") + @Value("${erp.sapsys:}") private String sapsys; /** From 2cdcf23a4c73d096c701d3f2f0230aedc2de2f71 Mon Sep 17 00:00:00 2001 From: liss <1780094091@qq.com> Date: Tue, 14 Oct 2025 14:47:06 +0800 Subject: [PATCH 063/120] =?UTF-8?q?erp=E7=89=A9=E6=96=99=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E5=BF=85=E5=A1=AB=E9=99=90=E5=88=B6=E8=A7=A3=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/erp/vo/ErpMaterialSaveReqVO.java | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) 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 c118ff3..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 @@ -20,50 +20,50 @@ 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 = "类型") From d0e7938e4d6b5d1758bb403ba5e376299ae8f077 Mon Sep 17 00:00:00 2001 From: liss <1780094091@qq.com> Date: Tue, 14 Oct 2025 15:14:11 +0800 Subject: [PATCH 064/120] =?UTF-8?q?erp=E8=B0=83=E7=94=A8=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/erp/ErpCompanyServiceImpl.java | 43 +++++++++---------- 1 file changed, 21 insertions(+), 22 deletions(-) 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 81301dd..cc4993d 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 @@ -263,31 +263,30 @@ public class ErpCompanyServiceImpl implements ErpCompanyService { @Override public String test1() { - try { - String address = erpAddress + "-" + sapsys; - OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.公司代码; - String funcnr = funcnrEnum.getFuncnr(); + 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); // 获取枚举值 + // 构建完整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)); + // 设置请求头 + 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(); -// ResponseEntity response = restTemplate.postForEntity(url, requestEntity, String.class); - return address; - } catch (Exception e) { - throw exception(ERP_ERROR_EXISTS); + // 创建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; } } } \ No newline at end of file From a25e85cb8ee537195b166f1cc1c1965202b08406 Mon Sep 17 00:00:00 2001 From: guojunyun Date: Tue, 14 Oct 2025 15:42:17 +0800 Subject: [PATCH 065/120] =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=90=88=E5=90=8C?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E3=80=81=E6=8F=90erp=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../enums/ErrorCodeConstants.java | 1 + .../enums/contract/DictEnum.java | 4 + .../admin/contract/ContractController.java | 11 +- .../service/contract/ContractService.java | 11 +- .../service/contract/ContractServiceImpl.java | 107 ++++++++++++++++-- .../service/erp/ErpContractServiceImpl.java | 4 +- 6 files changed, 118 insertions(+), 20 deletions(-) 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 050bbd5..c41c670 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 @@ -22,4 +22,5 @@ public interface ErrorCodeConstants { 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, "{}状态合同不允许删除"); } diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/DictEnum.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/DictEnum.java index 5aeeeb3..274dc75 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/DictEnum.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/DictEnum.java @@ -63,4 +63,8 @@ public enum DictEnum { public String getRemark() { return remark; } + + public static DictEnum getByCode(String code, String dictType) { + return DictEnum.valueOf(dictType + "_" +code); + } } 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 bffc2a1..27489ba 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 @@ -85,13 +85,11 @@ public class ContractController implements BusinessControllerMarker { return success(contractService.update(reqVO)); } - // TODO @DeleteMapping("/delete") @Operation(summary = "删除合同") - @Parameter(name = "ids", description = "合同ID集合", required = true, example = "1024") @PreAuthorize("@ss.hasPermission('base:contract:delete')") - public CommonResult delete(@RequestParam("ids") Long[] ids) { - return success(true); + public CommonResult> delete(@RequestBody List ids) { + return success(contractService.delete(ids)); } // TODO @@ -144,11 +142,10 @@ public class ContractController implements BusinessControllerMarker { public void viewApproval() { } - // TODO @PostMapping("/submit/erp") @Operation(summary = "提交ERP") @PreAuthorize("@ss.hasPermission('base:contract:erp')") - public void submitErp(@RequestBody List ids) { - contractService.submitErp(ids); + public CommonResult> submitErp(@RequestBody List ids) { + return success(contractService.submitErp(ids)); } } 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 7df8cf5..d51fe28 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,5 +1,6 @@ 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.api.dto.contract.ContractRespDTO; import com.zt.plat.module.contractorder.controller.admin.contract.vo.contract.*; @@ -101,5 +102,13 @@ public interface ContractService { * @param ids 合同ID集合 * @return */ - void submitErp(List ids); + List submitErp(List ids); + + /** + * 删除合同 + * + * @param ids 合同ID集合 + * @return 删除结果 + */ + List delete(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 6cf1aec..78642fd 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,5 +1,6 @@ package com.zt.plat.module.contractorder.service.contract; +import cn.hutool.json.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.util.object.BeanUtils; @@ -21,10 +22,7 @@ import com.zt.plat.module.contractorder.api.dto.contract.*; import com.zt.plat.module.contractorder.controller.admin.contract.vo.contract.*; import com.zt.plat.module.contractorder.dal.dataobject.contract.*; import com.zt.plat.module.contractorder.dal.mysql.contract.*; -import com.zt.plat.module.contractorder.enums.ApiConstants; -import com.zt.plat.module.contractorder.enums.DateConstants; -import com.zt.plat.module.contractorder.enums.ProcessConstants; -import com.zt.plat.module.contractorder.enums.TableFieldConstants; +import com.zt.plat.module.contractorder.enums.*; 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; @@ -412,7 +410,7 @@ public class ContractServiceImpl implements ContractService { || DictEnum.BSE_CTRT_STS_UNDER_REVIEW.getCode().equals(oldContractMainDO.getStatus())) { throw exception(CONTRACT_STATUS_NOT_UPDATE, - DictEnum.valueOf(oldContractMainDO.getStatus()).getLabel()); + DictEnum.getByCode(oldContractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel()); } // 请求更新的合同信息 @@ -596,6 +594,83 @@ public class ContractServiceImpl implements ContractService { } } + @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.getByCode(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()); + + // 删除合同数据 + contractMainMapper.deleteById(id); + + result.add(new JSONObject().putOnce("deleted", true).putOnce("msg", id.toString())); + }); + + return result; + } + @Override public String submitApproval(Long id) { @@ -618,7 +693,7 @@ public class ContractServiceImpl implements ContractService { || DictEnum.BSE_CTRT_STS_DELETED.getCode().equals(contractMainDO.getStatus())) { throw exception(CONTRACT_STATUS_NOT_SUBMIT_APPROVAL, - DictEnum.valueOf(contractMainDO.getStatus()).getLabel()); + DictEnum.getByCode(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel()); } // 合同内容校验 @@ -684,7 +759,7 @@ public class ContractServiceImpl implements ContractService { || DictEnum.BSE_CTRT_STS_DELETED.getCode().equals(contractMainDO.getStatus())) { throw exception(CONTRACT_STATUS_NOT_APPROVAL, - DictEnum.valueOf(contractMainDO.getStatus()).getLabel()); + DictEnum.getByCode(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel()); } return ""; @@ -828,7 +903,10 @@ public class ContractServiceImpl implements ContractService { } @Override - public void submitErp(List ids) { + public List submitErp(List ids) { + + // 返回结果 + List result = new ArrayList<>(); // 遍历合同ID集合 ids.forEach(id -> { @@ -983,9 +1061,20 @@ public class ContractServiceImpl implements ContractService { erpContractVO.setUpdaterName(contractMainDO.getUpdaterName()); // 调用ERP模块 - erpContractService.submitErp(erpContractVO); + String erpResult = null; + try { + erpContractService.submitErp(erpContractVO); + } catch (Exception e) { + erpResult = e.getMessage(); + } + log.info("合同提交ERP结果:{}", erpResult); + result.add(id.toString() + ":" + erpResult); + } else { + result.add(id.toString() + ":" + CONTRACT_NOT_EXISTS); } }); + + return result; } /** 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 78cd703..ec54ad4 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 @@ -342,9 +342,7 @@ public class ErpContractServiceImpl implements ErpContractService { HashMap response = erpExternalApi.submitDataToErp(erpSubmitReqDTO); - System.out.println(response.get("resStr")); - - return ""; + return response.get("resStr"); } /** From db0486266071d000fc9c5b1bfe267cbe9b188a51 Mon Sep 17 00:00:00 2001 From: guojunyun Date: Tue, 14 Oct 2025 16:11:56 +0800 Subject: [PATCH 066/120] =?UTF-8?q?=E6=A0=B9=E6=8D=AE=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?=E5=90=88=E5=90=8C=E7=BC=96=E5=8F=B7=E8=8E=B7=E5=BE=97=E5=90=88?= =?UTF-8?q?=E5=90=8C=E8=AF=A6=E6=83=85=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../enums/TableFieldConstants.java | 2 + .../admin/contract/ContractController.java | 10 +- .../service/contract/ContractService.java | 8 ++ .../service/contract/ContractServiceImpl.java | 94 +++++++++++++++++++ 4 files changed, 112 insertions(+), 2 deletions(-) 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 1f9847e..3c2dc38 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,6 +11,8 @@ 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 = "合同名称"; 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 27489ba..214a8a8 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 @@ -9,7 +9,6 @@ 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; @@ -71,13 +70,20 @@ public class ContractController implements BusinessControllerMarker { @GetMapping("/get") @Operation(summary = "获得合同详情") - @Parameter(name = "id", description = "合同ID", required = true, example = "1024") @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('base:contract:update')") 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 d51fe28..2c3b57c 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 @@ -111,4 +111,12 @@ public interface ContractService { * @return 删除结果 */ List delete(List ids); + + /** + * 根据系统合同编号获得合同详情 + * + * @param systemContractNumber 系统合同编号 + * @return 合同信息 + */ + ContractRespVO getBySystemContractNumber(String systemContractNumber); } 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 78642fd..54576a6 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 @@ -368,6 +368,100 @@ 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; + } + @Transactional @Override public Boolean update(ContractSaveReqVO reqVO) { From a1747fba8ba21124c2a11667156c4cd0cae84aa6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BD=98=E8=8D=A3=E6=99=9F?= <9691125+pan-rongsheng@user.noreply.gitee.com> Date: Tue, 14 Oct 2025 17:40:18 +0800 Subject: [PATCH 067/120] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseOrderController.java | 10 +- .../purchaseorder/vo/PrchOrdDtlSaveReqVO.java | 5 +- .../purchaseorder/vo/PurchaseOrderRespVO.java | 1 + .../vo/PurchaseOrderSaveReqVO.java | 14 +- .../purchaseorder/PrchOrdDtlDO.java | 9 +- .../purchaseorder/PurchaseOrderDO.java | 12 +- .../purchaseorder/PurchaseOrderMapper.java | 2 +- .../purchaseorder/PurchaseOrderService.java | 2 + .../PurchaseOrderServiceImpl.java | 123 ++++++- .../purchaseorder/PurchaseOrderMapper.xml | 3 - .../admin/erp/vo/ErpOrderUpdateReqVO.java | 346 ++++++++++-------- .../erp/service/erp/ErpOrderService.java | 5 +- .../erp/service/erp/ErpOrderServiceImpl.java | 43 ++- 13 files changed, 381 insertions(+), 194 deletions(-) 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 index dd83a3e..fa01c1d 100644 --- 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 @@ -86,7 +86,9 @@ public class PurchaseOrderController implements BusinessControllerMarker { @PreAuthorize("@ss.hasPermission('bse:purchase-order:query')") public CommonResult getPurchaseOrder(@RequestParam("id") Long id) { PurchaseOrderDO purchaseOrder = purchaseOrderService.getPurchaseOrder(id); - return success(BeanUtils.toBean(purchaseOrder, PurchaseOrderRespVO.class)); + PurchaseOrderRespVO purchaseOrderRespVO = BeanUtils.toBean(purchaseOrder, PurchaseOrderRespVO.class); + purchaseOrderService.setOrderDetails(purchaseOrderRespVO); + return success(purchaseOrderRespVO); } @GetMapping("/page") @@ -94,7 +96,9 @@ public class PurchaseOrderController implements BusinessControllerMarker { @PreAuthorize("@ss.hasPermission('bse:purchase-order:query')") public CommonResult> getPurchaseOrderPage(@Valid PurchaseOrderPageReqVO pageReqVO) { PageResult pageResult = purchaseOrderService.getPurchaseOrderPage(pageReqVO); - return success(BeanUtils.toBean(pageResult, PurchaseOrderRespVO.class)); + PageResult purchaseOrderRespVOPageResult = BeanUtils.toBean(pageResult, PurchaseOrderRespVO.class); + purchaseOrderRespVOPageResult.getList().forEach(purchaseOrderRespVO -> purchaseOrderService.setOrderDetails(purchaseOrderRespVO)); + return success(purchaseOrderRespVOPageResult); } @GetMapping("/export-excel") @@ -135,7 +139,7 @@ public class PurchaseOrderController implements BusinessControllerMarker { //通过订单号查询订单信息 @PostMapping("/get-order-by-order-no") - @Operation(summary = "通过订单号查询订单信息") + @Operation(summary = "通过订单号查询订单信息", description = "通过订单号查询订单信息") public CommonResult> getOrderByOrderNo(@RequestBody @Validated @NotEmpty(message = "采购订单不能为空") List orderNos){ return success(purchaseOrderService.getOrderByOrderNo(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/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 index c7390d0..29533ab 100644 --- 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 @@ -1,5 +1,6 @@ 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.*; @@ -62,7 +63,7 @@ public class PrchOrdDtlSaveReqVO { @Schema(description = "税码(字典: PRCH_TAX);推送ERP", requiredMode = Schema.RequiredMode.REQUIRED) @NotNull(message = "税码(字典: PRCH_TAX);推送ERP不能为空") - private BigDecimal taxNum; + private String taxNum; @Schema(description = "是否基于GR的发票校验;推送ERP") private String isGrInv; @@ -149,7 +150,7 @@ public class PrchOrdDtlSaveReqVO { private String isEnb; @Schema(description = "科目分配详情;科目分配类别为K或P时使用(JSON)") - private String actsCtgrDtl; + private JSONObject actsCtgrDtl; @Schema(description = "委托加工详情;委托加工订单使用(JSON)") private String enttDtl; 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 index 85070c3..6264d86 100644 --- 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 @@ -164,6 +164,7 @@ public class PurchaseOrderRespVO { @Schema(description = "订单明细") @ExcelProperty("订单明细") private List prchOrdDtlRespVOS; + @Schema(description = "物料类型(字典:MTRL_TP)", example = "2") @ExcelProperty("物料类型(字典:MTRL_TP)") private String mtrlTp; 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 index 13ddf95..bd3ceea 100644 --- 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 @@ -24,9 +24,9 @@ public class PurchaseOrderSaveReqVO { @Schema(description = "ERP订单号") private String orderSAPNumber; - @Schema(description = "订单号", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "订单号不能为空") - private String systemOrderNumber; +// @Schema(description = "订单号", requiredMode = Schema.RequiredMode.REQUIRED) +// @NotEmpty(message = "订单号不能为空") +// private String systemOrderNumber; @Schema(description = "公司编码;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) @NotEmpty(message = "公司编码;推送ERP(必须)不能为空") @@ -94,10 +94,10 @@ public class PurchaseOrderSaveReqVO { @Schema(description = "代理方名称", example = "张三") private String agentName; - - @Schema(description = "订单编码", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "订单编码不能为空") - private String orderNumber; +// +// @Schema(description = "订单编码", requiredMode = Schema.RequiredMode.REQUIRED) +// @NotEmpty(message = "订单编码不能为空") +// private String orderNumber; @Schema(description = "系统合同编号", requiredMode = Schema.RequiredMode.REQUIRED) @NotEmpty(message = "系统合同编号不能为空") 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 index 9420a4f..8aab3f9 100644 --- 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 @@ -104,7 +104,7 @@ public class PrchOrdDtlDO extends BusinessBaseDO { * 税码(字典: PRCH_TAX);推送ERP */ @TableField("TAX_NUM") - private BigDecimal taxNum; + private String taxNum; /** * 是否基于GR的发票校验;推送ERP */ @@ -271,11 +271,4 @@ public class PrchOrdDtlDO extends BusinessBaseDO { @TableField("ELEM_CDG") private String elemCdg; - /** - * 物料字典 - * - */ - @TableField("MTRL_TP") - private String mtrlTp; - } 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 index 90572eb..a68f1f6 100644 --- 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 @@ -141,8 +141,8 @@ public class PurchaseOrderDO extends BusinessBaseDO { /** * 订单编码 */ - @TableField("ORD_NUM") - private String orderNumber; +// @TableField("ORD_NUM") +// private String orderNumber; /** * 系统合同编号 */ @@ -237,4 +237,12 @@ public class PurchaseOrderDO extends BusinessBaseDO { */ @TableField("IS_PUSH") private int isPush; + + + /** + * 物料字典 + * + */ + @TableField("MTRL_TP") + private String mtrlTp; } 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 index bea9436..9ec0ad2 100644 --- 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 @@ -43,7 +43,7 @@ public interface PurchaseOrderMapper extends BaseMapperX { .eqIfPresent(PurchaseOrderDO::getRemark, reqVO.getRemark()) .eqIfPresent(PurchaseOrderDO::getAgentNumber, reqVO.getAgentNumber()) .likeIfPresent(PurchaseOrderDO::getAgentName, reqVO.getAgentName()) - .eqIfPresent(PurchaseOrderDO::getOrderNumber, reqVO.getOrderNumber()) +// .eqIfPresent(PurchaseOrderDO::getOrderNumber, reqVO.getOrderNumber()) .eqIfPresent(PurchaseOrderDO::getContractNumber, reqVO.getContractNumber()) .eqIfPresent(PurchaseOrderDO::getMaterialNumber, reqVO.getMaterialNumber()) .likeIfPresent(PurchaseOrderDO::getMaterialName, reqVO.getMaterialName()) 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 index cc83993..e6506a3 100644 --- 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 @@ -81,4 +81,6 @@ public interface PurchaseOrderService { * @return 订单信息 */ List getOrderByOrderNo(List orderNo); + + void setOrderDetails(PurchaseOrderRespVO purchaseOrderRespVO); } 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 index 511ff0a..fe7f653 100644 --- 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 @@ -1,6 +1,9 @@ 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.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; @@ -10,12 +13,16 @@ import com.zt.plat.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO; import com.zt.plat.module.bpm.api.task.dto.BpmTaskRespDTO; import com.zt.plat.module.bpm.enums.task.BpmProcessInstanceStatusEnum; import 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 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.purchaseorder.PurchaseOrderStatusEnum; 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; @@ -62,6 +69,12 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { @Resource private BpmTaskApi bpmTaskApi; + @Resource + private PrchOrdDtlMapper prchOrdDtlMapper; + + @Resource + private SequenceApi sequenceApi; + @Override public PurchaseOrderRespVO createPurchaseOrder(PurchaseOrderSaveReqVO createReqVO) { @@ -72,6 +85,9 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { } else { purchaseOrder.setStatus(PurchaseOrderStatusEnum.TO_SUBMIT_ERP.getCode()); } + //生成订单号 + String orderNumber = generateOrderNumber(purchaseOrder.getMtrlTp()); + purchaseOrder.setSystemOrderNumber(orderNumber); purchaseOrderMapper.insert(purchaseOrder); // 返回 //批量插入订单明细 @@ -200,6 +216,7 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { } @Override + @Transactional public String submitErp061(List ids) { //通过订单号查询订单 List purchaseOrderWithDetailsVOS = purchaseOrderMapper.selectOrderByIds(ids); @@ -207,7 +224,7 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { purchaseOrderWithDetailsVOS.forEach(purchaseOrderWithDetailsVO -> { ErpOrderSaveReqVO erpOrderSaveReqVO = new ErpOrderSaveReqVO(); if (purchaseOrderWithDetailsVO.getPurchaseOrder() != null) { - erpOrderSaveReqVO.setOrderid(purchaseOrderWithDetailsVO.getPurchaseOrder().getOrderNumber()); + erpOrderSaveReqVO.setOrderid(purchaseOrderWithDetailsVO.getPurchaseOrder().getSystemOrderNumber()); erpOrderSaveReqVO.setCompCode(purchaseOrderWithDetailsVO.getPurchaseOrder().getCompanyNumber());//公司代码 erpOrderSaveReqVO.setVendor(purchaseOrderWithDetailsVO.getPurchaseOrder().getSupplierNumber());// 供应商帐号 erpOrderSaveReqVO.setDocType(purchaseOrderWithDetailsVO.getPurchaseOrder().getType());//采购凭证类型 @@ -220,7 +237,7 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { erpOrderSaveReqVO.setZxxyh(purchaseOrderWithDetailsVO.getPurchaseOrder().getPaperContractNumber());//小协议号 } - if (purchaseOrderWithDetailsVO.getOrderDetails()!= null){ + if (purchaseOrderWithDetailsVO.getOrderDetails() != null) { purchaseOrderWithDetailsVO.getOrderDetails().forEach(orderDetail -> { erpOrderSaveReqVO.setPoItem(orderDetail.getLineNum()); //行号 erpOrderSaveReqVO.setMaterial(orderDetail.getRcvFactNum());//物料号 @@ -230,9 +247,22 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { erpOrderSaveReqVO.setActsCtgrDtl(orderDetail.getActsCtgrDtl()); }); } - erpOrderService.submitOrderToErp(erpOrderSaveReqVO); + String s = erpOrderService.submitOrderToErp061(erpOrderSaveReqVO); log.info("订单推送成功,订单id【{}】", purchaseOrderWithDetailsVO.getPurchaseOrder().getId()); + String erpId = JSONObject.parseObject(s).get("id").toString(); + if (erpId != null) { + //更新订单 + int i = purchaseOrderMapper.updateById(new PurchaseOrderDO().setId(purchaseOrderWithDetailsVO.getPurchaseOrder().getId()).setOrderSAPNumber(erpId)); + if (i > 0) { + log.info("更新订单ERPID成功,订单id【{}】", purchaseOrderWithDetailsVO.getPurchaseOrder().getId()); + } else { + log.info("订单更新失败,订单id【{}】", purchaseOrderWithDetailsVO.getPurchaseOrder().getId()); + throw new RuntimeException("订单更新失败"); + } + } }); + //推送后把erp订单id设置到订单里 + return "ERP推送成功"; } else { return "订单不存在"; @@ -241,12 +271,16 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { @Override public boolean submitErp062(Long id) { - PurchaseOrderDO purchaseOrderDO = purchaseOrderMapper.selectByOrderId(id); - if (purchaseOrderDO== null){ + List purchaseOrderWithDetailsVOS = purchaseOrderMapper.selectOrderByIds(List.of(id)); + if (purchaseOrderWithDetailsVOS.isEmpty()) { throw exception(PURCHASE_ORDER_NOT_EXISTS); } - if (purchaseOrderDO.getOrderSAPNumber().isEmpty()){ return true;} - + if (purchaseOrderWithDetailsVOS.get(0).getPurchaseOrder().getOrderSAPNumber().isEmpty()) { + return true; + } + ErpOrderUpdateReqVO erpOrderUpdateReqVO = new ErpOrderUpdateReqVO(); + setValue(erpOrderUpdateReqVO, purchaseOrderWithDetailsVOS.get(0)); + erpOrderService.submitOrderToErp062(erpOrderUpdateReqVO); return true; } @@ -255,10 +289,10 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { // 校验存在 validatePurchaseOrderExists(orderId); PurchaseOrderStatusEnum byCode = PurchaseOrderStatusEnum.getByCode(status); - if (byCode== null){ + if (byCode == null) { throw exception(PURCHASE_ORDER_STATUS_ERROR); } - return purchaseOrderMapper.updateById(new PurchaseOrderDO().setId(orderId).setStatus(status))>0; + return purchaseOrderMapper.updateById(new PurchaseOrderDO().setId(orderId).setStatus(status)) > 0; } @Override @@ -273,5 +307,76 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { 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)); + } + + 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 + // 使用FastJSON2直接将List转换为JSONArray + // acct部分:转换List为JSONArray + List actsCtgrDtlList = purchaseOrderWithDetailsVO.getOrderDetails().stream() + .map(PrchOrdDtlDO::getActsCtgrDtl).map(JSONObject::parseObject) + .toList(); + + // 直接使用FastJSON2将List转换为JSONArray(关键优化点) + 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(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(); + } } 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 index c5c9819..419e80c 100644 --- 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 @@ -33,7 +33,6 @@ po.RMK, po.AGT_NUM, po.AGT_NAME, - po.ORD_NUM, po.CTRT_NUM, po.MTRL_NUM, po.MTRL_NAME, @@ -140,7 +139,6 @@ po.RMK, po.AGT_NUM, po.AGT_NAME, - po.ORD_NUM, po.CTRT_NUM, po.MTRL_NUM, po.MTRL_NAME, @@ -256,7 +254,6 @@ - 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 index e537fd6..3003158 100644 --- 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 @@ -1,12 +1,15 @@ 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 @@ -24,7 +27,7 @@ public class ErpOrderUpdateReqVO { @Schema(description = "删除标识(ELOEK)", example = " ") @ExcelProperty("删除标识") - private String deleteInd; + private Integer deleteInd; @Schema(description = "货币码(WAERS)", requiredMode = Schema.RequiredMode.REQUIRED, example = "CNY") @NotEmpty(message = "货币码不能为空") @@ -54,170 +57,201 @@ public class ErpOrderUpdateReqVO { private String zlifnr; // ====================== 3. 行项目字段(列表-item) ====================== - @Schema(description = "行号(EBELP)", requiredMode = Schema.RequiredMode.REQUIRED, example = "00010") - @NotEmpty(message = "行号不能为空") - @ExcelProperty("行号") - private String poItem; + private List items; - @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 stgeLoc; - - @Schema(description = "数量(MENGE),保留3位小数", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.000") - @NotNull(message = "数量不能为空") - @ExcelProperty("数量") - private BigDecimal quantity; - - @Schema(description = "计量单位(MEINS),必须与该物料基本计量单位一致", requiredMode = Schema.RequiredMode.REQUIRED, example = "PC") - @NotEmpty(message = "计量单位不能为空") - @ExcelProperty("计量单位") - private String poUnit; - - @Schema(description = "含税单价(NETPR),保留2位小数", requiredMode = Schema.RequiredMode.REQUIRED, example = "199.99") - @NotNull(message = "含税单价不能为空") - @ExcelProperty("含税单价") - private BigDecimal netPrice; - - @Schema(description = "价格单位(PEINH),固定值1", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @NotNull(message = "价格单位不能为空") - @ExcelProperty("价格单位") - private Integer priceUnit; - - @Schema(description = "税码(MWSKZ)", example = "J1") - @ExcelProperty("税码") - private String taxCode; - - @Schema(description = "基于GR的发票校验(WEBRE)", example = "Y") - @ExcelProperty("基于GR发票校验") - private String grBasediv; - - @Schema(description = "允许无限制过量交货(UEBTK)", example = "N") - @ExcelProperty("允许过量交货") - private String unlimitedDlv; - - @Schema(description = "批次(CHARG)", example = "B202405001") - @ExcelProperty("批次") - private String batch; - - @Schema(description = "项目类别(PSTYP),委托加工订单时填入L", example = "L") - @ExcelProperty("项目类别") - private String itemCat; - - @Schema(description = "科目分配类别(KNTTP),固定资产采购:A;服务采购:S-销售服务费/K-成本中心/F-订单", example = "K") - @ExcelProperty("科目分配类别") - private String acctasscat; - - @Schema(description = "物料组(MATKL),服务采购订单必填", example = "01") - @ExcelProperty("物料组") - private String matlGroup; - - @Schema(description = "短文本(TXZ01),服务采购订单必填", example = "设备维修服务") - @ExcelProperty("短文本") - private String shortText; - - @Schema(description = "退货项目标识(RETPO),退货行项目填X", example = "X") - @ExcelProperty("退货标识") - private String retItem; - - @Schema(description = "免费项目标识(UMSON),免费行项目填X", example = "X") - @ExcelProperty("免费标识") - private String freeItem; - - @Schema(description = "外部行项目号(LICHN),绿星链通必填", example = "EXT0010") - @ExcelProperty("外部行号") - private String vendrbatch; - - @Schema(description = "备注信息-需求单位(TDLINE)", example = "生产一部") - @ExcelProperty("需求单位备注") - private String noteXq; - - @Schema(description = "备注信息-物料详细(TDLINE)", example = "304不锈钢,厚度2mm") - @ExcelProperty("物料详细备注") - private String noteWl; - - @Schema(description = "行项目删除标识(ELOEK)", example = "N") - @ExcelProperty("行项目删除标识") - private String itemDeleteInd; // ====================== 4. 行项目扩展字段(列表-itex) ====================== - @Schema(description = "销售物料号(zmatnr),科目分配类别为S时必填", example = "S0010001") - @ExcelProperty("销售物料号") - private String 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; - + private List itexs; // ====================== 5. 科目分配字段(列表-acct,类别为K或P时使用) ====================== - @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; + private JSONArray accts; // ====================== 6. 委托加工物料字段(列表-comp,委托加工订单时使用) ====================== - @Schema(description = "计划行号(ETENR),从1开始编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @NotNull(message = "计划行号不能为空") - @ExcelProperty("计划行号") - private Integer schedLine; + private List comps; - @Schema(description = "项目编号(RSPOS),从1开始编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @NotNull(message = "项目编号不能为空") - @ExcelProperty("项目编号") - private Integer itemNo; + @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)", requiredMode = Schema.RequiredMode.REQUIRED, example = "M0020001") - @NotEmpty(message = "加工前物料号不能为空") - @ExcelProperty("加工前物料号") - private String compMaterial; + @Schema(description = "物料号(MATNR)", example = "M0010001") + @ExcelProperty("物料号") + private String material; - @Schema(description = "委托加工发货工厂(PLANT)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1001") - @NotEmpty(message = "委托加工发货工厂不能为空") - @ExcelProperty("委托发货工厂") - private String compPlant; + @Schema(description = "工厂(WERKS)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1001") + @NotEmpty(message = "工厂不能为空") + @ExcelProperty("工厂") + private String plant; - @Schema(description = "委托加工需求数量(MENGE),保留3位小数", requiredMode = Schema.RequiredMode.REQUIRED, example = "95.000") - @NotNull(message = "委托加工需求数量不能为空") - @ExcelProperty("委托需求数量") - private BigDecimal entryQuantity; + @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 BigDecimal 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; + } - @Schema(description = "组件计量单位(MEINS),为空使用基本计量单位", example = "PC") - @ExcelProperty("组件计量单位") - private String entryUom; } 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 index 2ff59bd..06cfcff 100644 --- 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 @@ -2,8 +2,11 @@ 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 submitOrderToErp(ErpOrderSaveReqVO createVo); + 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 index 2dd9d23..0310f90 100644 --- 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 @@ -6,6 +6,7 @@ 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; @@ -13,12 +14,14 @@ 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 submitOrderToErp(ErpOrderSaveReqVO createVo) { + public String submitOrderToErp061(ErpOrderSaveReqVO createVo) { ErpSubmitReqDTO reqDTO = buildBaseReqDTO(createVo, "061"); @@ -61,6 +64,7 @@ public class ErpOrderServiceImpl implements ErpOrderService { HashMap response = erpExternalApi.submitDataToErp(reqDTO); return response.get("resStr"); } + private void getMaps(ErpOrderSaveReqVO vo, Map req) { List> items = new ArrayList<>(); Map item = new HashMap<>(); @@ -87,9 +91,44 @@ public class ErpOrderServiceImpl implements ErpOrderService { item.put("note_wl", vo.getNoteWl()); item.put("vend_mat", vo.getVendMat()); items.add(item); - if ("K".equals(vo.getAcctassCat())||"P".equals(vo.getAcctassCat())){ + if ("K".equals(vo.getAcctassCat()) || "P".equals(vo.getAcctassCat())) { req.put("acct", vo.getActsCtgrDtl()); } req.put("item", items); } + + @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; + } } From adc11f9a506f1c0825d09bf4b60e656d5f8a3e54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BD=98=E8=8D=A3=E6=99=9F?= <9691125+pan-rongsheng@user.noreply.gitee.com> Date: Tue, 14 Oct 2025 17:56:35 +0800 Subject: [PATCH 068/120] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/resources/mapper/purchaseorder/PurchaseOrderMapper.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 index 419e80c..82ba488 100644 --- 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 @@ -211,7 +211,7 @@ pod.ELEM_CDG FROM BSE_PRCH_ORD po LEFT JOIN BSE_PRCH_ORD_DTL pod ON po.ID = pod.ORD_ID - WHERE po.ORD_SAP_NUM IN + WHERE po.sys_ord_num IN #{orderNumber} From a9a0f04da717593c9a26c1f34e556a8c4a4dcb48 Mon Sep 17 00:00:00 2001 From: guojunyun Date: Tue, 14 Oct 2025 18:00:39 +0800 Subject: [PATCH 069/120] =?UTF-8?q?=E6=8F=90=E4=BA=A4erp=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../contractorder/service/contract/ContractServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 54576a6..ffdfd65 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 @@ -1157,7 +1157,7 @@ public class ContractServiceImpl implements ContractService { // 调用ERP模块 String erpResult = null; try { - erpContractService.submitErp(erpContractVO); + erpResult = erpContractService.submitErp(erpContractVO); } catch (Exception e) { erpResult = e.getMessage(); } From 99b01e9cc3ab00832826fa86a82032415e56d6f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BD=98=E8=8D=A3=E6=99=9F?= <9691125+pan-rongsheng@user.noreply.gitee.com> Date: Wed, 15 Oct 2025 10:39:52 +0800 Subject: [PATCH 070/120] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/purchaseorder/PurchaseOrderController.java | 6 ++++++ 1 file changed, 6 insertions(+) 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 index fa01c1d..eeaadc3 100644 --- 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 @@ -143,5 +143,11 @@ public class PurchaseOrderController implements BusinessControllerMarker { public CommonResult> getOrderByOrderNo(@RequestBody @Validated @NotEmpty(message = "采购订单不能为空") List orderNos){ return success(purchaseOrderService.getOrderByOrderNo(orderNos)); } + //根据订单id修改订单状态 + @PutMapping("/update-order-status") + @Operation(summary = "根据订单id修改订单状态", description = "sts取值于字典名称'采购订单状态',字典类型'PRCH_ORD_STS'`") + public CommonResult updateOrderStatus(@RequestParam("orderId") Long orderId, @RequestParam("sts") String sts){ + return success(purchaseOrderService.updateOrderStatus(orderId,sts)); + } } From 1e3be1c93e5d6d9e520b04f2bf02ce632f478f1a Mon Sep 17 00:00:00 2001 From: liss <1780094091@qq.com> Date: Wed, 15 Oct 2025 11:02:56 +0800 Subject: [PATCH 071/120] =?UTF-8?q?=E8=B4=A6=E6=88=B7=E6=9D=A1=E6=AC=BE?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2api?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/zt/plat/module/api/BaseApi.java | 23 ++++++++++++ .../plat/module/api/dto/AccountRespDto.java | 35 +++++++++++++++++++ .../plat/module/base/enums/ApiConstants.java | 24 +++++++++++++ .../zt/plat/module/base/api/BaseApiImpl.java | 31 ++++++++++++++++ .../base/dal/mysql/base/AccountMapper.java | 18 ++++++++++ .../base/service/base/AccountService.java | 3 ++ .../base/service/base/AccountServiceImpl.java | 6 ++++ .../mapper/base/CompanyRelativityMapper.xml | 1 + 8 files changed, 141 insertions(+) create mode 100644 zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/BaseApi.java create mode 100644 zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/dto/AccountRespDto.java create mode 100644 zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/base/enums/ApiConstants.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/api/BaseApiImpl.java diff --git a/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/BaseApi.java b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/BaseApi.java new file mode 100644 index 0000000..e43bc89 --- /dev/null +++ b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/BaseApi.java @@ -0,0 +1,23 @@ +package com.zt.plat.module.api; + +import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.module.api.dto.AccountRespDto; +import com.zt.plat.module.base.enums.ApiConstants; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.Valid; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; + +import java.util.List; + +@FeignClient(name = ApiConstants.NAME) +@Tag(name = "RPC 服务 - base") +public interface BaseApi { + + String PREFIX = ApiConstants.PREFIX + "/base"; + + @GetMapping(PREFIX + "/getNoPage") + @Operation(summary = "数据查询") + List getNoPage(@Valid AccountRespDto respVO); +} diff --git a/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/dto/AccountRespDto.java b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/dto/AccountRespDto.java new file mode 100644 index 0000000..00c43af --- /dev/null +++ b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/dto/AccountRespDto.java @@ -0,0 +1,35 @@ +package com.zt.plat.module.api.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +@Schema(description = "RPC 服务 DTO") +@Data +public class AccountRespDto { + private Long id; + + private String type; + + private String accountName; + + private String bankAccount; + + private String accountNumber; + + private String taxNumber; + + private LocalDateTime createTime; + + private String isEnable; + + private String customerNumber; + + private String customerName; + + private String address; + + private String phone; + +} diff --git a/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/base/enums/ApiConstants.java b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/base/enums/ApiConstants.java new file mode 100644 index 0000000..7fe892b --- /dev/null +++ b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/base/enums/ApiConstants.java @@ -0,0 +1,24 @@ +package com.zt.plat.module.base.enums; + +import com.zt.plat.framework.common.enums.RpcConstants; + +/** + * API 相关的枚举 + * + * @author ZT + */ +public class ApiConstants { + + /** + * 服务名 + * + * 注意,需要保证和 spring.application.name 保持一致 + */ + public static final String NAME = "base-server"; + + public static final String PREFIX = RpcConstants.RPC_API_PREFIX + "/base"; + + public static final String VERSION = "1.0.0"; + + public static final String TABLE_FIELD_SPLY_ERP_CPN_NUM = "NUM"; +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/api/BaseApiImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/api/BaseApiImpl.java new file mode 100644 index 0000000..b3cf9d8 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/api/BaseApiImpl.java @@ -0,0 +1,31 @@ +package com.zt.plat.module.base.api; + +import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.module.api.BaseApi; +import com.zt.plat.module.api.dto.AccountRespDto; +import com.zt.plat.module.base.dal.dataobject.base.AccountDO; +import com.zt.plat.module.base.service.base.AccountService; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * ERP Api 实现类 + * + * @author ZT + * @author jason + */ +@RestController +@Validated +public class BaseApiImpl implements BaseApi { + + @Resource + private AccountService accountService; + + @Override + public List getNoPage(AccountRespDto respVO) { + return accountService.getAccountNoPage(respVO); + } +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/AccountMapper.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/AccountMapper.java index efe89ce..93a5de8 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/AccountMapper.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/AccountMapper.java @@ -3,10 +3,14 @@ package com.zt.plat.module.base.dal.mysql.base; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX; import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.zt.plat.module.api.dto.AccountRespDto; import com.zt.plat.module.base.controller.admin.base.vo.AccountPageReqVO; +import com.zt.plat.module.base.controller.admin.base.vo.AccountRespVO; import com.zt.plat.module.base.dal.dataobject.base.AccountDO; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + /** * 账户条款 Mapper * @@ -31,4 +35,18 @@ public interface AccountMapper extends BaseMapperX { .orderByDesc(AccountDO::getId)); } + default List selectNoPage(AccountRespDto reqVO){ + return selectList(new LambdaQueryWrapperX() + .eqIfPresent(AccountDO::getType, reqVO.getType()) + .likeIfPresent(AccountDO::getAccountName, reqVO.getAccountName()) + .likeIfPresent(AccountDO::getAddress, reqVO.getAddress()) + .likeIfPresent(AccountDO::getPhone, reqVO.getPhone()) + .eqIfPresent(AccountDO::getBankAccount, reqVO.getBankAccount()) + .eqIfPresent(AccountDO::getCustomerName, reqVO.getCustomerName()) + .eqIfPresent(AccountDO::getCustomerNumber, reqVO.getCustomerNumber()) + .eqIfPresent(AccountDO::getIsEnable, reqVO.getIsEnable()) + .eqIfPresent(AccountDO::getAccountNumber, reqVO.getAccountNumber()) + .eqIfPresent(AccountDO::getTaxNumber, reqVO.getTaxNumber()) + .orderByDesc(AccountDO::getId)); + } } \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/base/AccountService.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/base/AccountService.java index b45cc72..2ab8b02 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/base/AccountService.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/base/AccountService.java @@ -1,6 +1,7 @@ package com.zt.plat.module.base.service.base; import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.module.api.dto.AccountRespDto; import com.zt.plat.module.base.controller.admin.base.vo.AccountPageReqVO; import com.zt.plat.module.base.controller.admin.base.vo.AccountRespVO; import com.zt.plat.module.base.controller.admin.base.vo.AccountSaveReqVO; @@ -67,4 +68,6 @@ public interface AccountService { * @param saveReqVOS 账户条款 */ void enableAccountList(List saveReqVOS); + + List getAccountNoPage(AccountRespDto respVO); } \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/base/AccountServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/base/AccountServiceImpl.java index b24d576..0860557 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/base/AccountServiceImpl.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/base/AccountServiceImpl.java @@ -3,6 +3,7 @@ package com.zt.plat.module.base.service.base; import cn.hutool.core.collection.CollUtil; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.util.object.BeanUtils; +import com.zt.plat.module.api.dto.AccountRespDto; import com.zt.plat.module.base.controller.admin.base.vo.AccountPageReqVO; import com.zt.plat.module.base.controller.admin.base.vo.AccountRespVO; import com.zt.plat.module.base.controller.admin.base.vo.AccountSaveReqVO; @@ -96,4 +97,9 @@ public class AccountServiceImpl implements AccountService { } } + @Override + public List getAccountNoPage(AccountRespDto respVO) { + List entityList = accountMapper.selectNoPage(respVO); + return BeanUtils.toBean(entityList, AccountRespDto.class); + } } \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/resources/mapper/base/CompanyRelativityMapper.xml b/zt-module-base/zt-module-base-server/src/main/resources/mapper/base/CompanyRelativityMapper.xml index 90fdc68..4cea5a3 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 @@ -30,6 +30,7 @@ left join SPLY_ERP_CPN c on r.ERP_NUM = c.NUM where d.DELETED = 0 and d.IS_COMPANY = 1 + and r.DELETED = 0 and d.NAME = #{name} From 1bfff8f234ebff87770786e3f9d293a98930d91b Mon Sep 17 00:00:00 2001 From: guojunyun Date: Wed, 15 Oct 2025 11:03:27 +0800 Subject: [PATCH 072/120] =?UTF-8?q?=E8=8E=B7=E5=BE=97=E6=9C=AA=E5=85=B3?= =?UTF-8?q?=E8=81=94=E5=90=88=E5=90=8C=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../enums/ErrorCodeConstants.java | 1 + .../enums/TableFieldConstants.java | 2 + .../admin/contract/ContractController.java | 7 ++ .../contract/SystemRelativityDO.java | 50 ++++++++++++++ .../contract/SystemRelativityMapper.java | 14 ++++ .../service/contract/ContractService.java | 2 + .../service/contract/ContractServiceImpl.java | 65 +++++++++++++++++++ 7 files changed, 141 insertions(+) create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/SystemRelativityDO.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/contract/SystemRelativityMapper.java diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/ErrorCodeConstants.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/ErrorCodeConstants.java index c41c670..1a83532 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/ErrorCodeConstants.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/ErrorCodeConstants.java @@ -23,4 +23,5 @@ public interface ErrorCodeConstants { ErrorCode CONTRACT_STATUS_NOT_APPROVAL = new ErrorCode(1_027_000_008, "{}状态合同不允许审核"); ErrorCode CONTRACT_ERP_COMPANY_PLEASE_BIND = new ErrorCode(1_027_000_009, "请先绑定{}ERP公司信息"); ErrorCode CONTRACT_STATUS_NOT_DELETE = new ErrorCode(1_027_000_010, "{}状态合同不允许删除"); + ErrorCode CONTRACT_ERP_RCV_DLVY_NOT_EXISTS = new ErrorCode(1_027_000_010, "不存在的收支类型或收支类型为空"); } diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/TableFieldConstants.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/TableFieldConstants.java index 3c2dc38..1a520bb 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/TableFieldConstants.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/TableFieldConstants.java @@ -20,6 +20,7 @@ public class TableFieldConstants { public static final String BSE_CTRT_MAIN_CTRT_PPR_NUM = "CTRT_PPR_NUM"; public static final String BSE_CTRT_MAIN_CTRT_PPR_NUM_LABEL = "合同编号"; // 甲方公司编号 + public static final String BSE_CTRT_MAIN_PRCH_CPN_NUM = "PRCH_CPN_NUM"; public static final String BSE_CTRT_MAIN_PRCH_CPN_NUM_LABEL = "甲方公司编号"; // 甲方公司名称 public static final String BSE_CTRT_MAIN_PRCH_CPN_NAME_LABEL = "甲方公司名称"; @@ -28,6 +29,7 @@ public class TableFieldConstants { // 甲方法定代表人 public static final String BSE_CTRT_MAIN_PRCH_LDR_LABEL = "甲方法定代表人"; // 乙方公司编号 + public static final String BSE_CTRT_MAIN_SALE_CPN_NUM = "SALE_CPN_NUM_LABEL"; public static final String BSE_CTRT_MAIN_SALE_CPN_NUM_LABEL = "乙方公司编号"; // 乙方公司名称 public static final String BSE_CTRT_MAIN_SALE_CPN_NAME_LABEL = "乙方公司名称"; diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/ContractController.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/ContractController.java index 214a8a8..3f55ecb 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 @@ -154,4 +154,11 @@ public class ContractController implements BusinessControllerMarker { public CommonResult> submitErp(@RequestBody List ids) { return success(contractService.submitErp(ids)); } + + @GetMapping("/list/not-relation") + @Operation(summary = "获得未关联合同列表") + @PreAuthorize("@ss.hasPermission('base:contract:get')") + public CommonResult> getListNotRelation(@RequestParam("id") Long id) { + return success(contractService.getListNotRelation(id)); + } } diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/SystemRelativityDO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/SystemRelativityDO.java new file mode 100644 index 0000000..0891367 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/SystemRelativityDO.java @@ -0,0 +1,50 @@ +package com.zt.plat.module.contractorder.dal.dataobject.contract; + +import com.baomidou.mybatisplus.annotation.*; +import com.zt.plat.framework.mybatis.core.dataobject.BusinessBaseDO; +import lombok.*; + +/** + * 业务关联 DO + * + * @author 后台管理-1 + */ +@TableName("bse_sys_rel") +@KeySequence("bse_sys_rel_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** + * 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO + */ +public class SystemRelativityDO extends BusinessBaseDO { + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 上游主键 + */ + @TableField("UP_ID") + private Long upId; + /** + * 下游主键 + */ + @TableField("DOWN_ID") + private Long downId; + /** + * 方式系统;内关联/系统外关联 + */ + @TableField("WY") + private String way; + /** + * 类型;合同/订单 + */ + @TableField("STS") + private String status; +} \ No newline at end of file diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/contract/SystemRelativityMapper.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/contract/SystemRelativityMapper.java new file mode 100644 index 0000000..c124c2e --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/contract/SystemRelativityMapper.java @@ -0,0 +1,14 @@ +package com.zt.plat.module.contractorder.dal.mysql.contract; + +import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX; +import com.zt.plat.module.contractorder.dal.dataobject.contract.SystemRelativityDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 业务关联 Mapper + * + * @author 后台管理-1 + */ +@Mapper +public interface SystemRelativityMapper extends BaseMapperX { +} \ No newline at end of file diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/contract/ContractService.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/contract/ContractService.java index 2c3b57c..5cf55d5 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/contract/ContractService.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/contract/ContractService.java @@ -119,4 +119,6 @@ public interface ContractService { * @return 合同信息 */ ContractRespVO getBySystemContractNumber(String systemContractNumber); + + List getListNotRelation(Long id); } diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/contract/ContractServiceImpl.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/contract/ContractServiceImpl.java index ffdfd65..1064090 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 @@ -93,6 +93,8 @@ public class ContractServiceImpl implements ContractService { private ErpCompanyService erpCompanyService; @Resource private ErpContractService erpContractService; + @Resource + private SystemRelativityMapper systemRelativityMapper; @Override public PageResult getContractPage(ContractPageReqVO pageReqVO) { @@ -462,6 +464,69 @@ public class ContractServiceImpl implements ContractService { return respVO; } + @Override + public List getListNotRelation(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()); + 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); + + // 查询 + 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); + + // 查询 + List contractMainDOS = contractMainMapper.selectList(conditon); + result = BeanUtils.toBean(contractMainDOS, ContractRespVO.class); + } else { + // 不存在的收支类型或收支类型为空 + throw exception(CONTRACT_ERP_RCV_DLVY_NOT_EXISTS); + } + + return result; + } + @Transactional @Override public Boolean update(ContractSaveReqVO reqVO) { From a00dd53d9f8c12eb5b959989d1ea323855978c02 Mon Sep 17 00:00:00 2001 From: guojunyun Date: Wed, 15 Oct 2025 11:18:07 +0800 Subject: [PATCH 073/120] =?UTF-8?q?=E8=8E=B7=E5=BE=97=E4=B8=8A=E6=B8=B8?= =?UTF-8?q?=E5=85=B3=E8=81=94=E7=9A=84=E5=90=88=E5=90=8C=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=20=E8=8E=B7=E5=BE=97=E4=B8=8B=E6=B8=B8?= =?UTF-8?q?=E5=85=B3=E8=81=94=E7=9A=84=E5=90=88=E5=90=8C=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../enums/TableFieldConstants.java | 6 +++ .../admin/contract/ContractController.java | 14 +++++++ .../service/contract/ContractService.java | 4 ++ .../service/contract/ContractServiceImpl.java | 42 +++++++++++++++++++ 4 files changed, 66 insertions(+) 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 1a520bb..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 @@ -137,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-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 3f55ecb..bc35f93 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 @@ -161,4 +161,18 @@ public class ContractController implements BusinessControllerMarker { public CommonResult> getListNotRelation(@RequestParam("id") Long id) { return success(contractService.getListNotRelation(id)); } + + @GetMapping("/get/up-relation") + @Operation(summary = "获得上游关联的合同数据") + @PreAuthorize("@ss.hasPermission('base:contract:get')") + public CommonResult getUpRelation(@RequestParam("id") Long id) { + return success(contractService.getUpRelation(id)); + } + + @GetMapping("/get/down-relation") + @Operation(summary = "获得下游关联的合同数据") + @PreAuthorize("@ss.hasPermission('base:contract:get')") + public CommonResult getDownRelation(@RequestParam("id") Long id) { + return success(contractService.getDownRelation(id)); + } } 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 5cf55d5..8d4aa19 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 @@ -121,4 +121,8 @@ public interface ContractService { ContractRespVO getBySystemContractNumber(String systemContractNumber); List getListNotRelation(Long id); + + ContractRespVO getUpRelation(Long id); + + ContractRespVO getDownRelation(Long id); } 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 1064090..a4ab02d 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 @@ -527,6 +527,48 @@ public class ContractServiceImpl implements ContractService { return result; } + @Override + public ContractRespVO getUpRelation(Long id) { + + // 查询关联表 + 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) { + + // 查询关联表 + 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) { From 33d6453eace631e8bc62cd6f983ed2abe66abdd1 Mon Sep 17 00:00:00 2001 From: guojunyun Date: Wed, 15 Oct 2025 11:32:43 +0800 Subject: [PATCH 074/120] =?UTF-8?q?=E7=A7=BB=E9=99=A4=E8=8E=B7=E5=BE=97?= =?UTF-8?q?=E6=9C=AA=E5=85=B3=E8=81=94=E5=90=88=E5=90=8C=E5=88=97=E8=A1=A8?= =?UTF-8?q?=20=E6=96=B0=E5=A2=9E=E8=8E=B7=E5=BE=97=E4=B8=8A=E6=B8=B8?= =?UTF-8?q?=E6=9C=AA=E5=85=B3=E8=81=94=E5=90=88=E5=90=8C=E5=88=97=E8=A1=A8?= =?UTF-8?q?=20=E6=96=B0=E5=A2=9E=E8=8E=B7=E5=BE=97=E4=B8=8B=E6=B8=B8?= =?UTF-8?q?=E6=9C=AA=E5=85=B3=E8=81=94=E5=90=88=E5=90=8C=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/contract/ContractController.java | 15 ++- .../service/contract/ContractService.java | 28 +++++- .../service/contract/ContractServiceImpl.java | 94 ++++++++++++++++++- 3 files changed, 127 insertions(+), 10 deletions(-) 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 bc35f93..e34028f 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 @@ -155,11 +155,18 @@ public class ContractController implements BusinessControllerMarker { return success(contractService.submitErp(ids)); } - @GetMapping("/list/not-relation") - @Operation(summary = "获得未关联合同列表") + @GetMapping("/list/up-not-relation") + @Operation(summary = "获得上游未关联合同列表") @PreAuthorize("@ss.hasPermission('base:contract:get')") - public CommonResult> getListNotRelation(@RequestParam("id") Long id) { - return success(contractService.getListNotRelation(id)); + public CommonResult> getListUpNotRelation(@RequestParam("id") Long id) { + return success(contractService.getListUpNotRelation(id)); + } + + @GetMapping("/list/down-not-relation") + @Operation(summary = "获得下游未关联合同列表") + @PreAuthorize("@ss.hasPermission('base:contract:get')") + public CommonResult> getListDownNotRelation(@RequestParam("id") Long id) { + return success(contractService.getListDownNotRelation(id)); } @GetMapping("/get/up-relation") 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 8d4aa19..7c43346 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 @@ -120,9 +120,35 @@ public interface ContractService { */ ContractRespVO getBySystemContractNumber(String systemContractNumber); - List getListNotRelation(Long id); + /** + * 获得上游未关联合同列表 + * + * @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); } 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 a4ab02d..95b61cd 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/contract/ContractServiceImpl.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/contract/ContractServiceImpl.java @@ -42,6 +42,7 @@ import org.springframework.transaction.annotation.Transactional; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.ArrayList; +import java.util.LinkedHashSet; import java.util.List; import java.util.stream.Collectors; @@ -465,7 +466,7 @@ public class ContractServiceImpl implements ContractService { } @Override - public List getListNotRelation(Long id) { + public List getListUpNotRelation(Long id) { // 查询合同信息 ContractMainDO contractMainDO = contractMainMapper.selectById(id); @@ -480,15 +481,14 @@ public class ContractServiceImpl implements ContractService { // 乙方公司编号 String salesCompanyNumber = contractMainDO.getSalesCompanyNumber(); - // 已关联合同id集合 - /*List systemRelativityDOS = systemRelativityMapper.selectList(); + // 已关联的上游合同id集合 + List systemRelativityDOS = systemRelativityMapper.selectList(); LinkedHashSet relationIds = new LinkedHashSet<>(); if (systemRelativityDOS!= null && !systemRelativityDOS.isEmpty()) { systemRelativityDOS.forEach(systemRelativityDO -> { relationIds.add(systemRelativityDO.getUpId()); - relationIds.add(systemRelativityDO.getDownId()); }); - }*/ + } // 返回结果集 List result = new ArrayList<>(); @@ -501,6 +501,9 @@ public class ContractServiceImpl implements ContractService { // 查询条件 LambdaQueryWrapperX conditon = new LambdaQueryWrapperX<>(); conditon.eq(ContractMainDO::getSalesCompanyNumber, purchaseCompanyNumber); + if (!relationIds.isEmpty()) { + conditon.notIn(ContractMainDO::getId, relationIds); + } // 查询 List contractMainDOS = contractMainMapper.selectList(conditon); @@ -515,6 +518,77 @@ public class ContractServiceImpl implements ContractService { // 查询条件 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); @@ -530,6 +604,11 @@ public class ContractServiceImpl implements ContractService { @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) { @@ -551,6 +630,11 @@ public class ContractServiceImpl implements ContractService { @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) { From 413fc19bbd8f3b4252c05cd57b1f57ca58e17961 Mon Sep 17 00:00:00 2001 From: liss <1780094091@qq.com> Date: Wed, 15 Oct 2025 11:50:37 +0800 Subject: [PATCH 075/120] =?UTF-8?q?=E8=B4=A6=E6=88=B7=E6=9D=A1=E6=AC=BE?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2api=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- zt-module-erp/zt-module-erp-server/pom.xml | 6 ++++++ .../controller/admin/erp/ErpCompanyController.java | 8 ++++++++ .../module/erp/service/erp/ErpCompanyService.java | 2 ++ .../erp/service/erp/ErpCompanyServiceImpl.java | 12 ++++++++++++ 4 files changed, 28 insertions(+) diff --git a/zt-module-erp/zt-module-erp-server/pom.xml b/zt-module-erp/zt-module-erp-server/pom.xml index 0b13158..a758cf6 100644 --- a/zt-module-erp/zt-module-erp-server/pom.xml +++ b/zt-module-erp/zt-module-erp-server/pom.xml @@ -42,6 +42,12 @@ ${revision} + + com.zt.plat + zt-module-base-api + ${revision} + + com.zt.plat diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpCompanyController.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpCompanyController.java index acb5473..91ddd40 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpCompanyController.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpCompanyController.java @@ -125,4 +125,12 @@ public class ErpCompanyController { return success(TEST); } + @PostMapping("/test2") + @Operation(summary = "获取base的账户条款") + @PreAuthorize("@ss.hasPermission('sply:erp-company:get')") + public CommonResult test2() { + String TEST = erpCompanyService.test2(); + return success(TEST); + } + } \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpCompanyService.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpCompanyService.java index c69ba0a..b79382b 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpCompanyService.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpCompanyService.java @@ -74,4 +74,6 @@ public interface ErpCompanyService { void test(); String test1(); + + String test2(); } \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpCompanyServiceImpl.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpCompanyServiceImpl.java index cc4993d..c01fb1c 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpCompanyServiceImpl.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpCompanyServiceImpl.java @@ -7,6 +7,8 @@ import com.xxl.job.core.handler.annotation.XxlJob; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.util.object.BeanUtils; import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.zt.plat.module.api.BaseApi; +import com.zt.plat.module.api.dto.AccountRespDto; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpCompanyPageReqVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpCompanyRespVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpCompanySaveReqVO; @@ -57,6 +59,8 @@ public class ErpCompanyServiceImpl implements ErpCompanyService { private String erpAddress; @Value("${erp.sapsys}") private String sapsys; + @Resource + private BaseApi baseApi; @Override public ErpCompanyRespVO createErpCompany(ErpCompanySaveReqVO createReqVO) { @@ -289,4 +293,12 @@ public class ErpCompanyServiceImpl implements ErpCompanyService { return url + requestEntity; } } + + @Override + public String test2() { + AccountRespDto respVO = new AccountRespDto(); + respVO.setCustomerNumber("50000760"); + List dtos = baseApi.getNoPage(respVO); + return dtos.toString(); + } } \ No newline at end of file From 568c30922693efdc01a243397db22b91a13bf249 Mon Sep 17 00:00:00 2001 From: guojunyun Date: Wed, 15 Oct 2025 14:29:45 +0800 Subject: [PATCH 076/120] =?UTF-8?q?=E5=85=B3=E8=81=94=E5=90=88=E5=90=8C?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../enums/contract/DictEnum.java | 3 ++ .../admin/contract/ContractController.java | 15 ++++-- .../contract/vo/contract/RelationReqVo.java | 18 +++++++ .../service/contract/ContractService.java | 8 +++ .../service/contract/ContractServiceImpl.java | 50 +++++++++++-------- 5 files changed, 70 insertions(+), 24 deletions(-) create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/RelationReqVo.java diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/DictEnum.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/DictEnum.java index 274dc75..d2aa970 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/DictEnum.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/DictEnum.java @@ -5,6 +5,9 @@ package com.zt.plat.module.contractorder.enums.contract; */ public enum DictEnum { + /** 业务关联类型 */ + BSE_SYS_REL_TP_ORDER("订单","ORDER",null), + BSE_SYS_REL_TP_CONTRACT("合同","CONTRACT",null), /** 提交ERP合同状态 */ SUBMIT_ERP_CTRT_STS_EF("正在执行","EF","其它所有状态"), SUBMIT_ERP_CTRT_STS_BFZT("部分暂停","BFZT",null), diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/ContractController.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/ContractController.java index e34028f..951460a 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 @@ -157,29 +157,36 @@ public class ContractController implements BusinessControllerMarker { @GetMapping("/list/up-not-relation") @Operation(summary = "获得上游未关联合同列表") - @PreAuthorize("@ss.hasPermission('base:contract:get')") + @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:get')") + @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:get')") + @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:get')") + @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/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/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 7c43346..bae6e20 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/contract/ContractService.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/contract/ContractService.java @@ -151,4 +151,12 @@ public interface ContractService { * @return 关联的下游合同数据 */ ContractRespVO getDownRelation(Long id); + + /** + * 关联合同 + * + * @param reqVo 上下游合同ID + * @return 关联结果 + */ + Boolean relation(RelationReqVo reqVo); } diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/contract/ContractServiceImpl.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/contract/ContractServiceImpl.java index 95b61cd..004abd9 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 @@ -1050,26 +1050,6 @@ public class ContractServiceImpl implements ContractService { return ""; } - /** - * 获取合同ID集合 - * - * @param contractName 合同名称 - * @param contractPaperNumber 合同编号 - * @return 合同ID集合 - */ - private List getContractIds(String contractName, String contractPaperNumber) { - List contractIds = new ArrayList<>(); - List contractMainDOS = contractMainMapper.selectList(new LambdaQueryWrapperX() - .likeIfPresent(ContractMainDO::getContractName, contractName) - .likeIfPresent(ContractMainDO::getContractPaperNumber, contractPaperNumber)); - if (CollectionUtils.isNotEmpty(contractMainDOS)) { - contractIds = contractMainDOS.stream() - .map(contractMainDO -> contractMainDO.getId()) - .collect(Collectors.toList()); - } - return contractIds; - } - @Override public List getNots(NotsQueryReqVO queryReqVO) { // 查合同ID集合 @@ -1362,6 +1342,16 @@ public class ContractServiceImpl implements ContractService { return result; } + @Override + public Boolean relation(RelationReqVo reqVo) { + SystemRelativityDO saveDO = new SystemRelativityDO(); + saveDO.setStatus(DictEnum.BSE_SYS_REL_TP_CONTRACT.getCode()); + saveDO.setUpId(reqVo.getUpId()); + saveDO.setDownId(reqVo.getDownId()); + int insert = systemRelativityMapper.insert(saveDO); + return insert > 0; + } + /** * 校验合同内容 * @@ -1584,4 +1574,24 @@ public class ContractServiceImpl implements ContractService { } return numPrefix + "-" + num; } + + /** + * 获取合同ID集合 + * + * @param contractName 合同名称 + * @param contractPaperNumber 合同编号 + * @return 合同ID集合 + */ + private List getContractIds(String contractName, String contractPaperNumber) { + List contractIds = new ArrayList<>(); + List contractMainDOS = contractMainMapper.selectList(new LambdaQueryWrapperX() + .likeIfPresent(ContractMainDO::getContractName, contractName) + .likeIfPresent(ContractMainDO::getContractPaperNumber, contractPaperNumber)); + if (CollectionUtils.isNotEmpty(contractMainDOS)) { + contractIds = contractMainDOS.stream() + .map(contractMainDO -> contractMainDO.getId()) + .collect(Collectors.toList()); + } + return contractIds; + } } From 201bd5e88aca87caf428d04ddea7708c5d1e106b Mon Sep 17 00:00:00 2001 From: guojunyun Date: Wed, 15 Oct 2025 15:53:57 +0800 Subject: [PATCH 077/120] =?UTF-8?q?TODO=20=E6=8E=A5=E5=8F=A3=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E8=AF=B4=E6=98=8E=20=E5=85=B6=E5=AE=83=E9=99=84?= =?UTF-8?q?=E4=BB=B6=E5=AF=B9=E8=B1=A1=E5=AD=98=E5=82=A8=E8=AF=B7=E6=B1=82?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E7=B1=BB=E5=9E=8B=E4=BF=AE=E6=94=B9=20?= =?UTF-8?q?=E6=8F=90=E4=BA=A4erp=E5=AE=A2=E5=95=86=E5=90=8D=E7=A7=B0?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/contract/ContractController.java | 12 ++++++------ .../contract/vo/contract/ContractSaveReqVO.java | 3 ++- .../service/contract/ContractServiceImpl.java | 16 ++++++++-------- 3 files changed, 16 insertions(+), 15 deletions(-) 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 951460a..2509b20 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/ContractController.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/ContractController.java @@ -100,28 +100,28 @@ public class ContractController implements BusinessControllerMarker { // TODO @PostMapping("/download") - @Operation(summary = "下载文件") + @Operation(summary = "下载文件 TODO") @PreAuthorize("@ss.hasPermission('base:contract:download')") public void download() { } // TODO @PostMapping("/preview") - @Operation(summary = "预览文件") + @Operation(summary = "预览文件 TODO") @PreAuthorize("@ss.hasPermission('base:contract:preview')") public void preview() { } // TODO @PostMapping("/complete") - @Operation(summary = "完结") + @Operation(summary = "完结 TODO") @PreAuthorize("@ss.hasPermission('base:contract:complete')") public void complete() { } // TODO @PostMapping("/archive") - @Operation(summary = "归档") + @Operation(summary = "归档 TODO") @PreAuthorize("@ss.hasPermission('base:contract:archive')") public void archive() { } @@ -135,7 +135,7 @@ public class ContractController implements BusinessControllerMarker { // TODO @PostMapping("/approval") - @Operation(summary = "合同审批") + @Operation(summary = "合同审批 TODO") @PreAuthorize("@ss.hasPermission('base:contract:approval')") public CommonResult approval(@Valid @RequestBody ApprovalReqVO reqVO) { return success(contractService.approval(reqVO)); @@ -143,7 +143,7 @@ public class ContractController implements BusinessControllerMarker { // TODO @PostMapping("/view/approval") - @Operation(summary = "查看审批") + @Operation(summary = "查看审批 TODO") @PreAuthorize("@ss.hasPermission('base:contract:approval')") public void viewApproval() { } diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractSaveReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractSaveReqVO.java index 75f8b08..0555c4b 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractSaveReqVO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractSaveReqVO.java @@ -1,5 +1,6 @@ package com.zt.plat.module.contractorder.controller.admin.contract.vo.contract; +import cn.hutool.json.JSONArray; import com.alibaba.excel.annotation.ExcelProperty; import com.zt.plat.module.base.controller.admin.templtp.vo.TemplateInstanceDataSaveReqVO; import io.swagger.v3.oas.annotations.media.Schema; @@ -34,7 +35,7 @@ public class ContractSaveReqVO { private String fileObject; @Schema(description = "其它附件对象存储") - private String fileObjectOther; + private JSONArray fileObjectOther; // 合同基本信息 @Schema(description = "甲方公司编号;如果是采购合同,查询组织机构自动带出,且与ERP(HTQDZTBH)对应,如果是销售合同,手动选择,且与ERP(WLDWBH)对应。", example = "甲方公司编号") diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/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 004abd9..a363f61 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/contract/ContractServiceImpl.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/contract/ContractServiceImpl.java @@ -1232,22 +1232,22 @@ public class ContractServiceImpl implements ContractService { // 客商编号:SPLR_NUM 根据合同主表的收支方向判断,如果为“支出”,值为“ERP乙方公司编码”,反之为“ERP甲方公司编码” // 客商名称:SPLR_NAME 根据合同主表的收支方向判断,如果为“支出”,值为“ERP乙方公司名称”,反之为“ERP甲方公司名称” if (DictEnum.ERP_RCV_DLVY_EXPENSES.getCode().equals(contractMainDO.getDirection())) { - erpContractVO.setSupplierNumber(contractMainDO.getSalesCompanyNumber()); - erpContractVO.setSupplierName(contractMainDO.getSalesCompanyName()); + erpContractVO.setSupplierNumber(contractMainDO.getErpSalesCompanyNumber()); + erpContractVO.setSupplierName(contractMainDO.getErpSalesCompanyName()); } else if (DictEnum.ERP_RCV_DLVY_INCOME.getCode().equals(contractMainDO.getDirection())) { - erpContractVO.setSupplierNumber(contractMainDO.getPurchaseCompanyNumber()); - erpContractVO.setSupplierName(contractMainDO.getPurchaseCompanyName()); + erpContractVO.setSupplierNumber(contractMainDO.getErpPurchaseCompanyNumber()); + erpContractVO.setSupplierName(contractMainDO.getErpPurchaseCompanyName()); } // 代理方:AGT erpContractVO.setAgent(contractMainDO.getAgent()); // 合同实施主体编号:CTRT_IMPL_NUM 根据合同主表的收支方向判断,如果为“支出”,值为“ERP甲方公司编码”,反之为“ERP乙方公司编码” // 合同签订主体编号:CTRT_SGN_NUM 根据合同主表的收支方向判断,如果为“支出”,值为“ERP甲方公司名称”,反之为“ERP乙方公司名称” if (DictEnum.ERP_RCV_DLVY_EXPENSES.getCode().equals(contractMainDO.getDirection())) { - erpContractVO.setContractImplementNumber(contractMainDO.getPurchaseCompanyNumber()); - erpContractVO.setContractSignNumber(contractMainDO.getPurchaseCompanyName()); + erpContractVO.setContractImplementNumber(contractMainDO.getErpPurchaseCompanyNumber()); + erpContractVO.setContractSignNumber(contractMainDO.getErpPurchaseCompanyName()); } else if (DictEnum.ERP_RCV_DLVY_INCOME.getCode().equals(contractMainDO.getDirection())) { - erpContractVO.setContractImplementNumber(contractMainDO.getSalesCompanyNumber()); - erpContractVO.setContractSignNumber(contractMainDO.getSalesCompanyName()); + erpContractVO.setContractImplementNumber(contractMainDO.getErpSalesCompanyNumber()); + erpContractVO.setContractSignNumber(contractMainDO.getErpSalesCompanyName()); } // 合同签订日期:SGN_DT if (contractMainDO.getSignDate() != null) { From 3173a7509e0eb35b57d1b365d04dd99ed549e763 Mon Sep 17 00:00:00 2001 From: chenbowen Date: Wed, 15 Oct 2025 16:15:45 +0800 Subject: [PATCH 078/120] =?UTF-8?q?=E5=8D=87=E7=BA=A7=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3ca9834..705a25b 100644 --- a/pom.xml +++ b/pom.xml @@ -19,7 +19,7 @@ https://github.com/YunaiV/ruoyi-vue-pro - 3.0.41 + 3.0.42 17 ${java.version} From e5acac8fe3a71f2e3e1a9cb198572ae419c5408f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BD=98=E8=8D=A3=E6=99=9F?= <9691125+pan-rongsheng@user.noreply.gitee.com> Date: Wed, 15 Oct 2025 17:28:53 +0800 Subject: [PATCH 079/120] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../purchaseorder/ErrorCodeConstants.java | 2 +- .../PurchaseOrderController.java | 16 +++-- .../purchaseorder/vo/MaterialRespVO.java | 34 +++++++++ .../vo/PurchaseOrderStsReqVO.java | 23 +++++++ .../purchaseorder/PrchOrdDtlDO.java | 2 +- .../purchaseorder/PurchaseOrderDO.java | 5 ++ .../purchaseorder/PrchOrdDtlService.java | 2 + .../purchaseorder/PrchOrdDtlServiceImpl.java | 6 ++ .../purchaseorder/PurchaseOrderService.java | 4 ++ .../PurchaseOrderServiceImpl.java | 69 +++++++++++++++++-- .../purchaseorder/PurchaseOrderMapper.xml | 2 +- .../admin/erp/vo/ErpOrderSaveReqVO.java | 2 +- .../admin/erp/vo/ErpOrderUpdateReqVO.java | 2 +- 13 files changed, 155 insertions(+), 14 deletions(-) create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/MaterialRespVO.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PurchaseOrderStsReqVO.java 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 index faf5d2d..24b95d0 100644 --- 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 @@ -14,5 +14,5 @@ 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, "订单状态不存在"); + ErrorCode PURCHASE_ORDER_STATUS_ERROR = new ErrorCode(1_008_001_020, "非法的订单状态"); } 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 index eeaadc3..c0c33aa 100644 --- 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 @@ -127,7 +127,7 @@ public class PurchaseOrderController implements BusinessControllerMarker { @PostMapping("/submit-erp061") @Operation(summary = "推送ERP订单", description = "061')") @PreAuthorize("@ss.hasPermission('bse:purchase-order:update')") - public CommonResult submitErp061(@RequestBody @Validated @NotNull(message = "采购订单id不能为空") List ids) { + public CommonResult submitErp061(@RequestBody @Validated @NotEmpty(message = "采购订单id不能为空") List ids) { return success( purchaseOrderService.submitErp061(ids)); } @PostMapping("/submit-erp062") @@ -145,9 +145,17 @@ public class PurchaseOrderController implements BusinessControllerMarker { } //根据订单id修改订单状态 @PutMapping("/update-order-status") - @Operation(summary = "根据订单id修改订单状态", description = "sts取值于字典名称'采购订单状态',字典类型'PRCH_ORD_STS'`") - public CommonResult updateOrderStatus(@RequestParam("orderId") Long orderId, @RequestParam("sts") String sts){ - return success(purchaseOrderService.updateOrderStatus(orderId,sts)); + @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 @Validated @NotEmpty(message = "采购订单号不能为空") String orderNo){ + return purchaseOrderService.getMaterial(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/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/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/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 index 8aab3f9..4810f44 100644 --- 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 @@ -89,7 +89,7 @@ public class PrchOrdDtlDO extends BusinessBaseDO { * 计量单位;推送ERP(必须) */ @TableField("UNT") - private BigDecimal unt; + private String unt; /** * 含税单价;推送ERP(必须) */ 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 index a68f1f6..334fbbd 100644 --- 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 @@ -238,6 +238,11 @@ public class PurchaseOrderDO extends BusinessBaseDO { @TableField("IS_PUSH") private int isPush; + /** + * 计量单位 + */ + @TableField("UNT") + private String unt; /** * 物料字典 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 index d3804be..0454f86 100644 --- 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 @@ -75,4 +75,6 @@ public interface PrchOrdDtlService { * @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 index 308f59a..0384013 100644 --- 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 @@ -113,4 +113,10 @@ public class PrchOrdDtlServiceImpl implements PrchOrdDtlService { 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 index e6506a3..69edf05 100644 --- 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 @@ -2,6 +2,7 @@ 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.dal.dataobject.purchaseorder.PurchaseOrderDO; import jakarta.validation.*; @@ -83,4 +84,7 @@ public interface PurchaseOrderService { List getOrderByOrderNo(List orderNo); void setOrderDetails(PurchaseOrderRespVO purchaseOrderRespVO); + void updateOrderStatusByIdOrOrderNo(PurchaseOrderStsReqVO reqVO); + + CommonResult getMaterial(String orderNo); } 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 index fe7f653..1d82345 100644 --- 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 @@ -4,6 +4,8 @@ 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; @@ -125,6 +127,12 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { 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); @@ -317,6 +325,62 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { 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); + } + + } + private void setValue(ErpOrderUpdateReqVO erpOrderUpdateReqVO, PurchaseOrderWithDetailsVO purchaseOrderWithDetailsVO) { //head PurchaseOrderDO purchaseOrderDO = purchaseOrderMapper.selectById(purchaseOrderWithDetailsVO.getPurchaseOrder().getId()); @@ -328,13 +392,9 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { //itex setItex(erpOrderUpdateReqVO, purchaseOrderWithDetailsVO); //acct - // 使用FastJSON2直接将List转换为JSONArray - // acct部分:转换List为JSONArray List actsCtgrDtlList = purchaseOrderWithDetailsVO.getOrderDetails().stream() .map(PrchOrdDtlDO::getActsCtgrDtl).map(JSONObject::parseObject) .toList(); - - // 直接使用FastJSON2将List转换为JSONArray(关键优化点) JSONArray jsonArray = JSONArray.from(actsCtgrDtlList); // 设置到对象中 @@ -374,7 +434,6 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { }); erpOrderUpdateReqVO.setItexs(itexs); } - private String generateOrderNumber(String materialType) { return sequenceApi.getNextSequence("PURCHASE_ORDER_NUMBER", null, null).getData(); } 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 index 82ba488..5be20a8 100644 --- 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 @@ -221,7 +221,7 @@ 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 index 5ddee76..473d7b8 100644 --- 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 @@ -78,7 +78,7 @@ public class ErpOrderSaveReqVO { @Schema(description = "计量单位") @NotNull(message = "计量单位不能为空") - private BigDecimal poUnit; // MEINS UNIT3 + private String poUnit; // MEINS UNIT3 @Schema(description = "含税单价") @NotNull(message = "含税单价不能为空") 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 index 3003158..444acde 100644 --- 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 @@ -97,7 +97,7 @@ public class ErpOrderUpdateReqVO { @Schema(description = "计量单位(MEINS),必须与该物料基本计量单位一致", requiredMode = Schema.RequiredMode.REQUIRED, example = "PC") @NotEmpty(message = "计量单位不能为空") @ExcelProperty("计量单位") - private BigDecimal po_unit; + private String po_unit; @Schema(description = "含税单价(NETPR),保留2位小数", requiredMode = Schema.RequiredMode.REQUIRED, example = "199.99") @NotNull(message = "含税单价不能为空") From 5be2b280e6770f04f6b8bd2d5e0a895feed00095 Mon Sep 17 00:00:00 2001 From: liss <1780094091@qq.com> Date: Wed, 15 Oct 2025 17:44:29 +0800 Subject: [PATCH 080/120] =?UTF-8?q?=E5=85=AC=E5=8F=B8=E5=85=B3=E7=B3=BB?= =?UTF-8?q?=EF=BC=8C=E9=80=BB=E8=BE=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../base/dal/mysql/base/CompanyRelativityMapper.java | 3 +++ .../base/service/base/CompanyRelativityServiceImpl.java | 2 +- .../resources/mapper/base/CompanyRelativityMapper.xml | 8 +++++++- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/CompanyRelativityMapper.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/CompanyRelativityMapper.java index c3d7a40..c5be973 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/CompanyRelativityMapper.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/CompanyRelativityMapper.java @@ -7,6 +7,7 @@ import com.zt.plat.module.base.controller.admin.base.vo.CompanyRelativityPageReq import com.zt.plat.module.base.dal.dataobject.base.CompanyRelaDeptDO; import com.zt.plat.module.base.dal.dataobject.base.CompanyRelativityDO; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -27,4 +28,6 @@ public interface CompanyRelativityMapper extends BaseMapperX getPageByReq(CompanyRelativityPageReqVO pageReqVO); + + void removeByIds(@Param("ids")List ids); } \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/base/CompanyRelativityServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/base/CompanyRelativityServiceImpl.java index 25c05d3..95efc20 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/base/CompanyRelativityServiceImpl.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/base/CompanyRelativityServiceImpl.java @@ -64,7 +64,7 @@ public class CompanyRelativityServiceImpl implements CompanyRelativityService { // 校验存在 validateCompanyRelativityExists(ids); // 删除 - companyRelativityMapper.deleteByIds(ids); + companyRelativityMapper.removeByIds(ids); } private void validateCompanyRelativityExists(List ids) { diff --git a/zt-module-base/zt-module-base-server/src/main/resources/mapper/base/CompanyRelativityMapper.xml b/zt-module-base/zt-module-base-server/src/main/resources/mapper/base/CompanyRelativityMapper.xml index 4cea5a3..b1a1c06 100644 --- a/zt-module-base/zt-module-base-server/src/main/resources/mapper/base/CompanyRelativityMapper.xml +++ b/zt-module-base/zt-module-base-server/src/main/resources/mapper/base/CompanyRelativityMapper.xml @@ -30,7 +30,6 @@ left join SPLY_ERP_CPN c on r.ERP_NUM = c.NUM where d.DELETED = 0 and d.IS_COMPANY = 1 - and r.DELETED = 0 and d.NAME = #{name} @@ -44,4 +43,11 @@ and d.DEPT_SOURCE = #{departmentSource} + + + delete from SPLY_CPN_REL where ID in + + #{item} + + \ No newline at end of file From 5ee8d3e02df7e7726b5e373cb249f1a5249b4b62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BD=98=E8=8D=A3=E6=99=9F?= <9691125+pan-rongsheng@user.noreply.gitee.com> Date: Wed, 15 Oct 2025 17:57:36 +0800 Subject: [PATCH 081/120] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/purchaseorder/PurchaseOrderController.java | 7 ++++++- .../admin/purchaseorder/vo/PrchOrdDtlPageReqVO.java | 2 +- .../admin/purchaseorder/vo/PrchOrdDtlRespVO.java | 2 +- .../admin/purchaseorder/vo/PrchOrdDtlSaveReqVO.java | 4 ++-- .../admin/purchaseorder/vo/PurchaseOrderPageReqVO.java | 3 +++ .../admin/purchaseorder/vo/PurchaseOrderRespVO.java | 3 +++ .../admin/purchaseorder/vo/PurchaseOrderSaveReqVO.java | 5 +++++ .../resources/mapper/purchaseorder/PurchaseOrderMapper.xml | 2 ++ 8 files changed, 23 insertions(+), 5 deletions(-) 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 index c0c33aa..c26e67d 100644 --- 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 @@ -5,6 +5,7 @@ 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.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; @@ -154,7 +155,11 @@ public class PurchaseOrderController implements BusinessControllerMarker { //查询物料接口 @GetMapping("/material") @Operation(summary = "查询物料接口") - public CommonResult getMaterialList(@RequestParam @Validated @NotEmpty(message = "采购订单号不能为空") String orderNo){ + public CommonResult getMaterialList(@RequestParam + @Schema(description = "采购订单号") + @Validated + @NotEmpty(message = "采购订单号不能为空") + String orderNo){ return purchaseOrderService.getMaterial(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/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 index 4e367d6..6bd2787 100644 --- 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 @@ -42,7 +42,7 @@ public class PrchOrdDtlPageReqVO extends PageParam { private String qty; @Schema(description = "计量单位;推送ERP(必须)") - private BigDecimal unt; + private String unt; @Schema(description = "含税单价;推送ERP(必须)") private BigDecimal inTaxUprc; 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 index 84208bf..71b0f98 100644 --- 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 @@ -55,7 +55,7 @@ public class PrchOrdDtlRespVO { @Schema(description = "计量单位;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("计量单位;推送ERP(必须)") - private BigDecimal unt; + private String unt; @Schema(description = "含税单价;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("含税单价;推送ERP(必须)") 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 index 29533ab..a9c5e28 100644 --- 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 @@ -51,8 +51,8 @@ public class PrchOrdDtlSaveReqVO { private String qty; @Schema(description = "计量单位;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "计量单位;推送ERP(必须)不能为空") - private BigDecimal unt; + @NotEmpty(message = "计量单位;推送ERP(必须)不能为空") + private String unt; @Schema(description = "含税单价;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) @NotNull(message = "含税单价;推送ERP(必须)不能为空") 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 index 9a91617..34df2ce 100644 --- 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 @@ -54,6 +54,9 @@ public class PurchaseOrderPageReqVO extends PageParam { @Schema(description = "采购组编码(字典:PRCH_GRP_TP);推送ERP(必须)") private String purchaseGroup; + @Schema(description = "计量单位") + private String unt; + @Schema(description = "货币码(字典:CUR);推送ERP(必须)") private String currencyNumber; 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 index 6264d86..069cc2b 100644 --- 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 @@ -65,6 +65,9 @@ public class PurchaseOrderRespVO { @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; 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 index bd3ceea..7592715 100644 --- 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 @@ -99,6 +99,11 @@ public class PurchaseOrderSaveReqVO { // @NotEmpty(message = "订单编码不能为空") // private String orderNumber; + + @Schema(description = "计量单位") + @NotEmpty(message = "计量单位(unt)不能为空") + private String unt; + @Schema(description = "系统合同编号", requiredMode = Schema.RequiredMode.REQUIRED) @NotEmpty(message = "系统合同编号不能为空") private String contractNumber; 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 index 5be20a8..d2934fd 100644 --- 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 @@ -56,6 +56,7 @@ po.UPDATE_TIME, po.CREATOR, po.UPDATER, + po.UNT, po.DELETED, pod.ID as pod_id, pod.ORD_ID, @@ -137,6 +138,7 @@ po.PPR_CTRT_NUM, po.AGR_NUM, po.RMK, + po.UNT, po.AGT_NUM, po.AGT_NAME, po.CTRT_NUM, From 665975f3a198a72c85668eae299f57ea030730df Mon Sep 17 00:00:00 2001 From: guojunyun Date: Wed, 15 Oct 2025 18:00:28 +0800 Subject: [PATCH 082/120] =?UTF-8?q?=E4=B8=8B=E8=BD=BD=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=20=E9=99=84=E4=BB=B6=E5=AF=B9=E8=B1=A1?= =?UTF-8?q?=E5=AD=98=E5=82=A8=E5=AD=97=E6=AE=B5=E8=AF=B7=E6=B1=82=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/contract/ContractController.java | 6 ++--- .../vo/contract/ContractSaveReqVO.java | 2 +- .../service/contract/ContractService.java | 7 ++++++ .../service/contract/ContractServiceImpl.java | 24 +++++++++++++++++++ 4 files changed, 35 insertions(+), 4 deletions(-) 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 2509b20..cf602db 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 @@ -98,11 +98,11 @@ public class ContractController implements BusinessControllerMarker { return success(contractService.delete(ids)); } - // TODO @PostMapping("/download") - @Operation(summary = "下载文件 TODO") + @Operation(summary = "下载文件") @PreAuthorize("@ss.hasPermission('base:contract:download')") - public void download() { + public void download(@RequestBody List ids) { + contractService.download(ids); } // TODO 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 0555c4b..738d3b9 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 @@ -32,7 +32,7 @@ public class ContractSaveReqVO { // 基础信息 @Schema(description = "附件对象存储") - private String fileObject; + private JSONArray fileObject; @Schema(description = "其它附件对象存储") private JSONArray fileObjectOther; 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 bae6e20..74b74e9 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 @@ -159,4 +159,11 @@ public interface ContractService { * @return 关联结果 */ Boolean relation(RelationReqVo reqVo); + + /** + * 下载文件 + * + * @param ids 合同ID集合 + */ + void download(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 a363f61..6b6c639 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,7 +1,9 @@ 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.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; @@ -29,6 +31,8 @@ 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.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; @@ -96,6 +100,8 @@ public class ContractServiceImpl implements ContractService { private ErpContractService erpContractService; @Resource private SystemRelativityMapper systemRelativityMapper; + @Resource + private FileApi fileApi; @Override public PageResult getContractPage(ContractPageReqVO pageReqVO) { @@ -1352,6 +1358,24 @@ public class ContractServiceImpl implements ContractService { return insert > 0; } + @Override + public void download(List ids) { + try { + // 遍历合同ID集合 + ids.forEach(id -> { + + // 查询合同信息 + ContractMainDO contractMainDO = contractMainMapper.selectById(id); + JSONArray fileObjectOther = new JSONArray(contractMainDO.getFileObjectOther()); + System.out.println(fileObjectOther); + CommonResult fileRespDTOResult = fileApi + .getFile(fileObjectOther.getJSONObject(0).getLong("id")); + }); + } catch (Exception e) { + e.printStackTrace(); + } + } + /** * 校验合同内容 * From 63f377b4b5d38846d02efdca6f466298fd27edb5 Mon Sep 17 00:00:00 2001 From: liss <1780094091@qq.com> Date: Thu, 16 Oct 2025 10:31:15 +0800 Subject: [PATCH 083/120] =?UTF-8?q?=E5=85=AC=E5=8F=B8=E5=85=B3=E7=B3=BB?= =?UTF-8?q?=EF=BC=8C=E9=80=BB=E8=BE=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/base/dal/mysql/base/CompanyRelativityMapper.java | 2 +- .../src/main/resources/mapper/base/CompanyRelativityMapper.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) 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 c5be973..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 @@ -29,5 +29,5 @@ public interface CompanyRelativityMapper extends BaseMapperX getPageByReq(CompanyRelativityPageReqVO pageReqVO); - void removeByIds(@Param("ids")List ids); + void removeByIds(@Param("ids") List ids); } \ No newline at end of file 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 b1a1c06..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 @@ -46,7 +46,7 @@ delete from SPLY_CPN_REL where ID in - + #{item} From c78a465d5285e44ee66076b2463769c7511f1ae4 Mon Sep 17 00:00:00 2001 From: guojunyun Date: Thu, 16 Oct 2025 14:26:41 +0800 Subject: [PATCH 084/120] =?UTF-8?q?=E4=B8=8B=E8=BD=BD=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=AE=8C=E5=96=84=20=E5=90=88=E5=90=8C?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=8E=A5=E5=8F=A3=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/contract/ContractController.java | 6 +- .../service/contract/ContractService.java | 5 +- .../service/contract/ContractServiceImpl.java | 115 ++++++++++++++++-- 3 files changed, 110 insertions(+), 16 deletions(-) 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 cf602db..70dee2a 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 @@ -13,6 +13,8 @@ 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.*; @@ -101,8 +103,8 @@ public class ContractController implements BusinessControllerMarker { @PostMapping("/download") @Operation(summary = "下载文件") @PreAuthorize("@ss.hasPermission('base:contract:download')") - public void download(@RequestBody List ids) { - contractService.download(ids); + public ResponseEntity download(@RequestBody List ids) { + return contractService.download(ids); } // TODO 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 74b74e9..2e0bbfd 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 @@ -6,6 +6,8 @@ import com.zt.plat.module.contractorder.api.dto.contract.ContractRespDTO; import com.zt.plat.module.contractorder.controller.admin.contract.vo.contract.*; import com.zt.plat.module.contractorder.dal.dataobject.contract.ContractMainDO; import jakarta.validation.Valid; +import org.springframework.core.io.ByteArrayResource; +import org.springframework.http.ResponseEntity; import java.util.List; @@ -164,6 +166,7 @@ public interface ContractService { * 下载文件 * * @param ids 合同ID集合 + * @return 压缩文件流 */ - void download(List ids); + ResponseEntity download(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 6b6c639..12905e3 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 @@ -13,8 +13,10 @@ import com.zt.plat.module.base.controller.admin.templtp.vo.TemplateInstanceDataR 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; @@ -40,15 +42,23 @@ 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.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.LinkedHashSet; import java.util.List; 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.*; @@ -102,6 +112,8 @@ public class ContractServiceImpl implements ContractService { private SystemRelativityMapper systemRelativityMapper; @Resource private FileApi fileApi; + @Resource + private TmplInscBsnRelMapper tmplInscBsnRelMapper; @Override public PageResult getContractPage(ContractPageReqVO pageReqVO) { @@ -759,6 +771,8 @@ public class ContractServiceImpl implements ContractService { ContractDetailDO detailDO = BeanUtils.toBean(detail, ContractDetailDO.class); // 设置合同主信息ID detailDO.setContractMainId(id); + // 主键 + detailDO.setId(null); // 保存合同明细 contractDetailMapper.insert(detailDO); @@ -771,6 +785,8 @@ public class ContractServiceImpl implements ContractService { ContractPlanDO planDO = BeanUtils.toBean(plan, ContractPlanDO.class); // 合同明细主键 planDO.setContractDetailId(detailDOId); + // 主键 + planDO.setId(null); // 保存交货计划 contractPlanMapper.insert(planDO); }); @@ -785,6 +801,8 @@ public class ContractServiceImpl implements ContractService { ContractFormulaDO formulaDO = BeanUtils.toBean(formula, ContractFormulaDO.class); // 合同主键 formulaDO.setContractId(id); + // 主键 + formulaDO.setId(null); // 保存价款结算条款 contractFormulaMapper.insert(formulaDO); @@ -797,6 +815,8 @@ public class ContractServiceImpl implements ContractService { ContractCoefficientDO coefficientDO = BeanUtils.toBean(coefficient, ContractCoefficientDO.class); // 条款主键 coefficientDO.setFormulaId(formulaDOId); + // 主键 + coefficientDO.setId(null); // 保存基础系数配置 contractCoefficientMapper.insert(coefficientDO); }); @@ -808,6 +828,8 @@ public class ContractServiceImpl implements ContractService { ContractGradeDO gradeDO = BeanUtils.toBean(grade, ContractGradeDO.class); // 条款主键 gradeDO.setFormulaId(formulaDOId); + // 主键 + gradeDO.setId(null); // 保存品位等级价配置 contractGradeMapper.insert(gradeDO); }); @@ -819,6 +841,8 @@ public class ContractServiceImpl implements ContractService { ContractDeductDO deductDO = BeanUtils.toBean(deduct, ContractDeductDO.class); // 条款主键 deductDO.setFormulaId(formulaDOId); + // 主键 + deductDO.setId(null); // 保存品位等级价配置 contractDeductMapper.insert(deductDO); }); @@ -830,6 +854,8 @@ public class ContractServiceImpl implements ContractService { ContractPriceDO priceDO = BeanUtils.toBean(price, ContractPriceDO.class); // 条款主键 priceDO.setFormulaId(formulaDOId); + // 主键 + priceDO.setId(null); // 保存市场价配置 contractPriceMapper.insert(priceDO); }); @@ -844,6 +870,8 @@ public class ContractServiceImpl implements ContractService { ContractDemoteDO demoteDO = BeanUtils.toBean(demote, ContractDemoteDO.class); // 设置合同主键 demoteDO.setContractId(id); + // 主键 + demoteDO.setId(null); // 保存参数降级规则 contractDemoteMapper.insert(demoteDO); }); @@ -856,6 +884,8 @@ public class ContractServiceImpl implements ContractService { ContractNotDO notDO = BeanUtils.toBean(not, ContractNotDO.class); // 条款主键 notDO.setContractId(id); + // 主键 + notDO.setId(null); // 保存品位不计价规则 contractNotMapper.insert(notDO); }); @@ -878,11 +908,8 @@ public class ContractServiceImpl implements ContractService { // 更新合同主信息 int updateNum = contractMainMapper.updateById(newContractMainDO); - if (updateNum > 0) { - return true; - } else { - return false; - } + + return updateNum > 0; } @Override @@ -1359,20 +1386,82 @@ public class ContractServiceImpl implements ContractService { } @Override - public void download(List ids) { + 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); - // 查询合同信息 - ContractMainDO contractMainDO = contractMainMapper.selectById(id); - JSONArray fileObjectOther = new JSONArray(contractMainDO.getFileObjectOther()); - System.out.println(fileObjectOther); - CommonResult fileRespDTOResult = fileApi - .getFile(fileObjectOther.getJSONObject(0).getLong("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) { - e.printStackTrace(); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build(); } } From a2d9178c8e95dd98b95548f3f9457eb2766f6c95 Mon Sep 17 00:00:00 2001 From: guojunyun Date: Thu, 16 Oct 2025 16:10:31 +0800 Subject: [PATCH 085/120] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=97=A0=E7=94=A8?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=20=E6=B7=BB=E5=8A=A0=E5=BD=92=E6=A1=A3?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=20=E6=8F=90=E4=BA=A4=E5=AE=A1=E6=89=B9?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E8=B0=83=E6=95=B4=20=E5=90=88=E5=90=8C?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E6=A0=A1=E9=AA=8C=E4=BF=AE=E6=94=B9=20?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=8E=A5=E5=8F=A3=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../enums/ErrorCodeConstants.java | 3 +- .../admin/contract/ContractController.java | 23 ++---- .../vo/contract/ContractSaveReqVO.java | 6 +- .../vo/contract/FormulaSaveReqVO.java | 3 +- .../service/contract/ContractService.java | 10 ++- .../service/contract/ContractServiceImpl.java | 74 ++++++++++++++----- 6 files changed, 78 insertions(+), 41 deletions(-) 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 1a83532..ac8df7a 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/ErrorCodeConstants.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/ErrorCodeConstants.java @@ -23,5 +23,6 @@ public interface ErrorCodeConstants { ErrorCode CONTRACT_STATUS_NOT_APPROVAL = new ErrorCode(1_027_000_008, "{}状态合同不允许审核"); ErrorCode CONTRACT_ERP_COMPANY_PLEASE_BIND = new ErrorCode(1_027_000_009, "请先绑定{}ERP公司信息"); ErrorCode CONTRACT_STATUS_NOT_DELETE = new ErrorCode(1_027_000_010, "{}状态合同不允许删除"); - ErrorCode CONTRACT_ERP_RCV_DLVY_NOT_EXISTS = new ErrorCode(1_027_000_010, "不存在的收支类型或收支类型为空"); + ErrorCode CONTRACT_ERP_RCV_DLVY_NOT_EXISTS = new ErrorCode(1_027_000_011, "不存在的收支类型或收支类型为空"); + ErrorCode CONTRACT_STATUS_NOT_ARCHIVE = new ErrorCode(1_027_000_012, "{}状态合同不允许归档"); } 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 70dee2a..3424b4d 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 @@ -108,10 +108,10 @@ public class ContractController implements BusinessControllerMarker { } // TODO - @PostMapping("/preview") - @Operation(summary = "预览文件 TODO") - @PreAuthorize("@ss.hasPermission('base:contract:preview')") - public void preview() { + @PostMapping("/cancel") + @Operation(summary = "作废 TODO") + @PreAuthorize("@ss.hasPermission('base:contract:cancel')") + public void cancel() { } // TODO @@ -121,17 +121,17 @@ public class ContractController implements BusinessControllerMarker { public void complete() { } - // TODO @PostMapping("/archive") - @Operation(summary = "归档 TODO") + @Operation(summary = "归档") @PreAuthorize("@ss.hasPermission('base:contract:archive')") - public void archive() { + public CommonResult archive(@RequestBody List ids) { + return success(contractService.archive(ids)); } @GetMapping("/submit/approval") @Operation(summary = "合同提交审批") @PreAuthorize("@ss.hasPermission('base:contract:approval')") - public CommonResult submitApproval(@RequestParam("id") Long id) { + public CommonResult submitApproval(@RequestParam("id") Long id) { return success(contractService.submitApproval(id)); } @@ -143,13 +143,6 @@ public class ContractController implements BusinessControllerMarker { return success(contractService.approval(reqVO)); } - // TODO - @PostMapping("/view/approval") - @Operation(summary = "查看审批 TODO") - @PreAuthorize("@ss.hasPermission('base:contract:approval')") - public void viewApproval() { - } - @PostMapping("/submit/erp") @Operation(summary = "提交ERP") @PreAuthorize("@ss.hasPermission('base:contract:erp')") 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 738d3b9..3cd354e 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 @@ -162,9 +162,6 @@ public class ContractSaveReqVO { @Schema(description = "备注;与ERP(BZXX)对应", example = "备注") private String remark; - // 物料信息 - private List detail; - // 扩展信息 @Schema(description = "原币金额-变更后;与ERP(BGHHTYBZJE)对应,拓展信息") private BigDecimal changeCooAmount; @@ -216,6 +213,9 @@ public class ContractSaveReqVO { @Schema(description = "模板实例主键", example = "10196") private Long instanceId; + // 物料信息 + private List detail; + // 合同动态表单 private List dynamicsFields; 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/FormulaSaveReqVO.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 index 42026d7..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/FormulaSaveReqVO.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; @@ -45,7 +46,7 @@ public class FormulaSaveReqVO { private String elementName; @Schema(description = "结算类型,多条使用逗号分隔(字典:PRCH_STLM_TP)", example = "1") - private String settlementType; + private JSONArray settlementType; // 基础系数配置 private List coefficients; 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 2e0bbfd..1a8e418 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 @@ -56,7 +56,7 @@ public interface ContractService { * @param id 合同ID * @return 提交审批结果 */ - String submitApproval(Long id); + Boolean submitApproval(Long id); /** * 合同审批 @@ -169,4 +169,12 @@ public interface ContractService { * @return 压缩文件流 */ ResponseEntity download(List ids); + + /** + * 归档 + * + * @param ids 合同ID集合 + * @return 归档结果 + */ + Boolean archive(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 12905e3..41adb86 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 @@ -687,6 +687,17 @@ public class ContractServiceImpl implements ContractService { 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.getByCode(oldContractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel()); + } + // 校验合同名称是否重复 ContractMainDO contract = contractMainMapper.selectOne(new QueryWrapper() .eq(TableFieldConstants.BSE_CTRT_MAIN_CTRT_NAME, reqVO.getContractName()) @@ -705,17 +716,6 @@ public class ContractServiceImpl implements ContractService { } } - // 合同状态校验 - if (DictEnum.BSE_CTRT_STS_DELETED.getCode().equals(oldContractMainDO.getStatus()) - || DictEnum.BSE_CTRT_STS_ARCHIVED.getCode().equals(oldContractMainDO.getStatus()) - || DictEnum.BSE_CTRT_STS_TERMINATED.getCode().equals(oldContractMainDO.getStatus()) - || DictEnum.BSE_CTRT_STS_IN_PROGRESS.getCode().equals(oldContractMainDO.getStatus()) - || DictEnum.BSE_CTRT_STS_UNDER_REVIEW.getCode().equals(oldContractMainDO.getStatus())) { - - throw exception(CONTRACT_STATUS_NOT_UPDATE, - DictEnum.getByCode(oldContractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel()); - } - // 请求更新的合同信息 ContractMainDO newContractMainDO = BeanUtils.toBean(reqVO, ContractMainDO.class); @@ -906,6 +906,15 @@ 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); @@ -990,7 +999,7 @@ public class ContractServiceImpl implements ContractService { } @Override - public String submitApproval(Long id) { + public Boolean submitApproval(Long id) { // 判断主键 if (ObjectUtils.isEmpty(id)) { @@ -1004,11 +1013,8 @@ public class ContractServiceImpl implements ContractService { } // 合同状态校验 - if (DictEnum.BSE_CTRT_STS_UNDER_REVIEW.getCode().equals(contractMainDO.getStatus()) - || DictEnum.BSE_CTRT_STS_IN_PROGRESS.getCode().equals(contractMainDO.getStatus()) - || DictEnum.BSE_CTRT_STS_TERMINATED.getCode().equals(contractMainDO.getStatus()) - || DictEnum.BSE_CTRT_STS_ARCHIVED.getCode().equals(contractMainDO.getStatus()) - || DictEnum.BSE_CTRT_STS_DELETED.getCode().equals(contractMainDO.getStatus())) { + 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.getByCode(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel()); @@ -1023,7 +1029,7 @@ public class ContractServiceImpl implements ContractService { if (StringUtils.isNotBlank(contractMainDO.getProcessInstanceId())) { - // TODO:驳回状态重新提交审批处理 + // TODO:待审核状态重新提交审批处理 // 进入审批流程的合同,查询当前审批的任务节点 List taskList = bpmTaskApi.getTaskListByProcessInstanceId(contractMainDO.getProcessInstanceId()).getData(); } else { @@ -1044,11 +1050,11 @@ public class ContractServiceImpl implements ContractService { } contractMainDO.setStatus(DictEnum.BSE_CTRT_STS_UNDER_REVIEW.getCode()); contractMainMapper.updateById(contractMainDO); - return "提交审批成功"; + return true; } } - return "提交审批失败"; + return false; } @Override @@ -1465,6 +1471,34 @@ public class ContractServiceImpl implements ContractService { } } + @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.getByCode(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel()); + } + + // 设置归档状态 + contractMainDO.setStatus(DictEnum.BSE_CTRT_STS_ARCHIVED.getCode()); + + // 更新合同 + contractMainMapper.updateById(contractMainDO); + }); + + return true; + } + /** * 校验合同内容 * From f7155565d4808b5a957792055b44947cfeeaf7ae Mon Sep 17 00:00:00 2001 From: guojunyun Date: Thu, 16 Oct 2025 17:06:32 +0800 Subject: [PATCH 086/120] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BD=9C=E5=BA=9F?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=20=E6=96=B0=E5=A2=9E=E5=AE=8C=E7=BB=93?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=20=E4=BF=AE=E6=94=B9=E5=90=88=E5=90=8C?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E9=80=BB=E8=BE=91=EF=BC=9A=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?erp=E7=94=B2=E4=B9=99=E6=96=B9=E5=85=AC=E5=8F=B8=E7=BC=96?= =?UTF-8?q?=E5=8F=B7=E3=80=81=E5=90=8D=E7=A7=B0=20=E4=BF=9D=E5=AD=98erp?= =?UTF-8?q?=E5=90=88=E5=90=8C=E6=98=A0=E5=B0=84=E8=A1=A8=E6=98=AF=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E5=88=A0=E9=99=A4=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/contract/ContractController.java | 12 +-- .../service/contract/ContractService.java | 16 ++++ .../service/contract/ContractServiceImpl.java | 75 ++++++++++++++++++- .../service/erp/ErpContractServiceImpl.java | 1 + 4 files changed, 94 insertions(+), 10 deletions(-) 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 3424b4d..d8420e0 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 @@ -107,18 +107,18 @@ public class ContractController implements BusinessControllerMarker { return contractService.download(ids); } - // TODO @PostMapping("/cancel") - @Operation(summary = "作废 TODO") + @Operation(summary = "作废") @PreAuthorize("@ss.hasPermission('base:contract:cancel')") - public void cancel() { + public CommonResult cancel(@RequestBody List ids) { + return success(contractService.cancel(ids)); } - // TODO @PostMapping("/complete") - @Operation(summary = "完结 TODO") + @Operation(summary = "完结") @PreAuthorize("@ss.hasPermission('base:contract:complete')") - public void complete() { + public CommonResult complete(@RequestBody List ids) { + return success(contractService.complete(ids)); } @PostMapping("/archive") 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 1a8e418..9f2db38 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 @@ -177,4 +177,20 @@ public interface ContractService { * @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 41adb86..a49f76d 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 @@ -30,6 +30,7 @@ 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; @@ -140,23 +141,33 @@ 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())) { - if (erpCompanyService.getErpCompanyByNumber(reqVO.getPurchaseCompanyNumber()) == null) { + 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())) { - if (erpCompanyService.getErpCompanyByNumber(reqVO.getSalesCompanyNumber()) == null) { + 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 contractMainDO = BeanUtils.toBean(reqVO, ContractMainDO.class); + // 合同状态保存为草稿 contractMainDO.setStatus(DictEnum.BSE_CTRT_STS_DRAFT.getCode()); // 生成系统合同编号 @@ -1499,6 +1510,62 @@ public class ContractServiceImpl implements ContractService { 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.getByCode(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel()); + } + + // 设置作废状态 + contractMainDO.setStatus(DictEnum.BSE_CTRT_STS_VOID.getCode()); + + // 更新合同 + contractMainMapper.updateById(contractMainDO); + }); + + 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.getByCode(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel()); + } + + // 设置完结状态 + contractMainDO.setStatus(DictEnum.BSE_CTRT_STS_TERMINATED.getCode()); + + // 更新合同 + contractMainMapper.updateById(contractMainDO); + }); + + return true; + } + /** * 校验合同内容 * 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 ec54ad4..36c8f91 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 @@ -242,6 +242,7 @@ public class ErpContractServiceImpl implements ErpContractService { ErpContractDO erpContractDO = getErpContractByMainId(erpContract.getContractMainId()); if (erpContractDO == null) { // 不存在映射表则新增 + erpContract.setDeleted(false); erpContractMapper.insert(erpContract); } else { // 存在映射表则更新 From 0f41a08a104d6d25f8fe202d2fd70b2071dcd5c5 Mon Sep 17 00:00:00 2001 From: jiangh Date: Fri, 17 Oct 2025 11:34:20 +0800 Subject: [PATCH 087/120] =?UTF-8?q?=E8=AE=A1=E5=88=92=E5=AE=9A=E9=A2=9D?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E8=BF=81=E7=A7=BB=E5=88=B0=E6=94=B9=E5=8C=85?= =?UTF-8?q?=E5=90=8E=E7=BB=9F=E4=B8=80=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/base/enums/ErrorCodeConstants.java | 10 +- .../BusinessAlgorithmController.java | 106 ++++++++++ .../vo/BusinessAlgorithmPageReqVO.java | 23 +++ .../vo/BusinessAlgorithmRespVO.java | 45 +++++ .../vo/BusinessAlgorithmSaveReqVO.java | 37 ++++ ...BusinessDepartmentIndicatorController.java | 107 ++++++++++ .../BusinessDepartmentIndicatorPageReqVO.java | 17 ++ .../vo/BusinessDepartmentIndicatorRespVO.java | 59 ++++++ .../BusinessDepartmentIndicatorSaveReqVO.java | 43 ++++ .../BusinessDictionaryTypeController.java | 119 ++++++++++++ .../vo/BusinessDictionaryTypePageReqVO.java | 20 ++ .../vo/BusinessDictionaryTypeRespVO.java | 37 ++++ .../vo/BusinessDictionaryTypeSaveReqVO.java | 37 ++++ .../BusinessDimensionController.java | 118 +++++++++++ .../vo/BusinessDimensionPageReqVO.java | 28 +++ .../vo/BusinessDimensionRespVO.java | 44 +++++ .../vo/BusinessDimensionSaveReqVO.java | 32 +++ .../BusinessIndicatorController.java | 128 ++++++++++++ .../vo/BusinessIndicatorPageReqVO.java | 23 +++ .../vo/BusinessIndicatorRespVO.java | 93 +++++++++ .../vo/BusinessIndicatorSaveReqVO.java | 63 ++++++ .../businessrule/BusinessRuleController.java | 105 ++++++++++ .../vo/BusinessRulePageReqVO.java | 23 +++ .../businessrule/vo/BusinessRuleRespVO.java | 45 +++++ .../vo/BusinessRuleSaveReqVO.java | 37 ++++ .../BusinessAlgorithmMapper.java | 27 +++ .../BusinessDepartmentIndicatorMapper.java | 25 +++ .../BusinessDictionaryDataMapper.java | 29 +++ .../BusinessDictionaryTypeMapper.java | 26 +++ .../BusinessDimensionMapper.java | 55 ++++++ .../BusinessIndicatorMapper.java | 43 ++++ .../dao/businessrule/BusinessRuleMapper.java | 27 +++ .../BusinessAlgorithmDO.java | 59 ++++++ .../BusinessDepartmentIndicatorDO.java | 78 ++++++++ .../BusinessDictionaryDataDO.java | 63 ++++++ .../BusinessDictionaryTypeDO.java | 60 ++++++ .../BusinessDimensionDO.java | 54 ++++++ .../BusinessIndicatorDO.java | 99 ++++++++++ .../businessrule/BusinessRuleDO.java | 60 ++++++ .../BusinessAlgorithmService.java | 61 ++++++ .../BusinessAlgorithmServiceImpl.java | 85 ++++++++ .../BusinessDepartmentIndicatorService.java | 61 ++++++ ...usinessDepartmentIndicatorServiceImpl.java | 88 +++++++++ .../BusinessDictionaryTypeService.java | 72 +++++++ .../BusinessDictionaryTypeServiceImpl.java | 155 +++++++++++++++ .../BusinessDimensionService.java | 69 +++++++ .../BusinessDimensionServiceImpl.java | 90 +++++++++ .../BusinessIndicatorService.java | 77 ++++++++ .../BusinessIndicatorServiceImpl.java | 183 ++++++++++++++++++ .../businessrule/BusinessRuleService.java | 61 ++++++ .../businessrule/BusinessRuleServiceImpl.java | 88 +++++++++ .../src/main/resources/logback-spring.xml | 76 ++++++++ .../BusinessAlgorithmMapper.xml | 12 ++ .../BusinessDepartmentIndicatorMapper.xml | 12 ++ .../BusinessDictionaryTypeMapper.xml | 12 ++ .../BusinessDimensionMapper.xml | 12 ++ .../BusinessIndicatorMapper.xml | 12 ++ .../businessrule/BusinessRuleMapper.xml | 12 ++ 58 files changed, 3340 insertions(+), 2 deletions(-) create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessalgorithm/BusinessAlgorithmController.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessalgorithm/vo/BusinessAlgorithmPageReqVO.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessalgorithm/vo/BusinessAlgorithmRespVO.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessalgorithm/vo/BusinessAlgorithmSaveReqVO.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessdepartmentindicator/BusinessDepartmentIndicatorController.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessdepartmentindicator/vo/BusinessDepartmentIndicatorPageReqVO.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessdepartmentindicator/vo/BusinessDepartmentIndicatorRespVO.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessdepartmentindicator/vo/BusinessDepartmentIndicatorSaveReqVO.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessdictionarytype/BusinessDictionaryTypeController.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessdictionarytype/vo/BusinessDictionaryTypePageReqVO.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessdictionarytype/vo/BusinessDictionaryTypeRespVO.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessdictionarytype/vo/BusinessDictionaryTypeSaveReqVO.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessdimension/BusinessDimensionController.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessdimension/vo/BusinessDimensionPageReqVO.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessdimension/vo/BusinessDimensionRespVO.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessdimension/vo/BusinessDimensionSaveReqVO.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessindicator/BusinessIndicatorController.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessindicator/vo/BusinessIndicatorPageReqVO.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessindicator/vo/BusinessIndicatorRespVO.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessindicator/vo/BusinessIndicatorSaveReqVO.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessrule/BusinessRuleController.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessrule/vo/BusinessRulePageReqVO.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessrule/vo/BusinessRuleRespVO.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessrule/vo/BusinessRuleSaveReqVO.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/businessalgorithm/BusinessAlgorithmMapper.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/businessdepartmentindicator/BusinessDepartmentIndicatorMapper.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/businessdictionarytype/BusinessDictionaryDataMapper.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/businessdictionarytype/BusinessDictionaryTypeMapper.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/businessdimension/BusinessDimensionMapper.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/businessindicator/BusinessIndicatorMapper.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/businessrule/BusinessRuleMapper.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/businessalgorithm/BusinessAlgorithmDO.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/businessdepartmentindicator/BusinessDepartmentIndicatorDO.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/businessdictionarytype/BusinessDictionaryDataDO.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/businessdictionarytype/BusinessDictionaryTypeDO.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/businessdimension/BusinessDimensionDO.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/businessindicator/BusinessIndicatorDO.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/businessrule/BusinessRuleDO.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/businessalgorithm/BusinessAlgorithmService.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/businessalgorithm/BusinessAlgorithmServiceImpl.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/businessdepartmentindicator/BusinessDepartmentIndicatorService.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/businessdepartmentindicator/BusinessDepartmentIndicatorServiceImpl.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/businessdictionarytype/BusinessDictionaryTypeService.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/businessdictionarytype/BusinessDictionaryTypeServiceImpl.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/businessdimension/BusinessDimensionService.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/businessdimension/BusinessDimensionServiceImpl.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/businessindicator/BusinessIndicatorService.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/businessindicator/BusinessIndicatorServiceImpl.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/businessrule/BusinessRuleService.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/businessrule/BusinessRuleServiceImpl.java create mode 100644 zt-module-base/zt-module-base-server/src/main/resources/logback-spring.xml create mode 100644 zt-module-base/zt-module-base-server/src/main/resources/mapper/businessalgorithm/BusinessAlgorithmMapper.xml create mode 100644 zt-module-base/zt-module-base-server/src/main/resources/mapper/businessdepartmentindicator/BusinessDepartmentIndicatorMapper.xml create mode 100644 zt-module-base/zt-module-base-server/src/main/resources/mapper/businessdictionarytype/BusinessDictionaryTypeMapper.xml create mode 100644 zt-module-base/zt-module-base-server/src/main/resources/mapper/businessdimension/BusinessDimensionMapper.xml create mode 100644 zt-module-base/zt-module-base-server/src/main/resources/mapper/businessindicator/BusinessIndicatorMapper.xml create mode 100644 zt-module-base/zt-module-base-server/src/main/resources/mapper/businessrule/BusinessRuleMapper.xml 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..a53335b 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 { @@ -22,4 +20,12 @@ public interface ErrorCodeConstants { ErrorCode WAREHOUSE_NOT_EXISTS = new ErrorCode(1_001_000_001, "示例不存在"); ErrorCode FACTORY_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-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/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/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..4167f6e --- /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,59 @@ +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/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/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/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 From d8c795742e1cc9cdf0cea7a201948decb0db9288 Mon Sep 17 00:00:00 2001 From: liss <1780094091@qq.com> Date: Fri, 17 Oct 2025 11:46:08 +0800 Subject: [PATCH 088/120] =?UTF-8?q?=E7=89=A9=E6=96=99=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E5=85=B3=E8=81=94=E6=8B=93=E5=B1=95=E5=85=B3=E7=B3=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/zt/plat/module/api/BaseApi.java | 15 +++--- .../{AccountRespDto.java => AccountDTO.java} | 2 +- .../plat/module/api/dto/MaterialOtherDTO.java | 53 +++++++++++++++++++ .../zt/plat/module/base/api/BaseApiImpl.java | 16 ++++-- .../base/dal/mysql/base/AccountMapper.java | 25 +++++---- .../dal/mysql/base/MaterialOtherMapper.java | 19 +++++++ .../base/service/base/AccountService.java | 4 +- .../base/service/base/AccountServiceImpl.java | 8 +-- .../service/base/MaterialOtherService.java | 3 ++ .../base/MaterialOtherServiceImpl.java | 7 +++ .../admin/erp/ErpMaterialController.java | 8 +++ .../admin/erp/vo/ErpMaterialRespVO.java | 4 ++ .../erp/dal/dataobject/erp/ErpMaterialDO.java | 2 + .../service/erp/ErpCompanyServiceImpl.java | 8 ++- .../erp/service/erp/ErpMaterialService.java | 2 + .../service/erp/ErpMaterialServiceImpl.java | 23 ++++++++ 16 files changed, 164 insertions(+), 35 deletions(-) rename zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/dto/{AccountRespDto.java => AccountDTO.java} (94%) create mode 100644 zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/dto/MaterialOtherDTO.java 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 index e43bc89..95f2e30 100644 --- 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 @@ -1,11 +1,10 @@ package com.zt.plat.module.api; -import com.zt.plat.framework.common.pojo.CommonResult; -import com.zt.plat.module.api.dto.AccountRespDto; +import com.zt.plat.module.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 jakarta.validation.Valid; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; @@ -17,7 +16,11 @@ public interface BaseApi { String PREFIX = ApiConstants.PREFIX + "/base"; - @GetMapping(PREFIX + "/getNoPage") - @Operation(summary = "数据查询") - List getNoPage(@Valid AccountRespDto respVO); + @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/AccountRespDto.java b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/dto/AccountDTO.java similarity index 94% rename from zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/dto/AccountRespDto.java rename to zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/dto/AccountDTO.java index 00c43af..b013489 100644 --- a/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/dto/AccountRespDto.java +++ b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/dto/AccountDTO.java @@ -7,7 +7,7 @@ import java.time.LocalDateTime; @Schema(description = "RPC 服务 DTO") @Data -public class AccountRespDto { +public class AccountDTO { private Long id; private String type; 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-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 index b3cf9d8..62591c3 100644 --- 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 @@ -1,10 +1,10 @@ package com.zt.plat.module.base.api; -import com.zt.plat.framework.common.pojo.CommonResult; import com.zt.plat.module.api.BaseApi; -import com.zt.plat.module.api.dto.AccountRespDto; -import com.zt.plat.module.base.dal.dataobject.base.AccountDO; +import com.zt.plat.module.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; @@ -24,8 +24,16 @@ public class BaseApiImpl implements BaseApi { @Resource private AccountService accountService; + @Resource + private MaterialOtherService materialOtherService; + @Override - public List getNoPage(AccountRespDto respVO) { + 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/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 93a5de8..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,9 +3,8 @@ package com.zt.plat.module.base.dal.mysql.base; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX; import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; -import com.zt.plat.module.api.dto.AccountRespDto; +import com.zt.plat.module.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.dal.dataobject.base.AccountDO; import org.apache.ibatis.annotations.Mapper; @@ -35,18 +34,18 @@ public interface AccountMapper extends BaseMapperX { .orderByDesc(AccountDO::getId)); } - default List selectNoPage(AccountRespDto reqVO){ + default List selectNoPage(AccountDTO dto){ return selectList(new LambdaQueryWrapperX() - .eqIfPresent(AccountDO::getType, reqVO.getType()) - .likeIfPresent(AccountDO::getAccountName, reqVO.getAccountName()) - .likeIfPresent(AccountDO::getAddress, reqVO.getAddress()) - .likeIfPresent(AccountDO::getPhone, reqVO.getPhone()) - .eqIfPresent(AccountDO::getBankAccount, reqVO.getBankAccount()) - .eqIfPresent(AccountDO::getCustomerName, reqVO.getCustomerName()) - .eqIfPresent(AccountDO::getCustomerNumber, reqVO.getCustomerNumber()) - .eqIfPresent(AccountDO::getIsEnable, reqVO.getIsEnable()) - .eqIfPresent(AccountDO::getAccountNumber, reqVO.getAccountNumber()) - .eqIfPresent(AccountDO::getTaxNumber, reqVO.getTaxNumber()) + .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/MaterialOtherMapper.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/MaterialOtherMapper.java index 3064d3e..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 * @@ -32,4 +35,20 @@ public interface MaterialOtherMapper extends BaseMapperX { .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/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 2ab8b02..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,7 +1,7 @@ package com.zt.plat.module.base.service.base; import com.zt.plat.framework.common.pojo.PageResult; -import com.zt.plat.module.api.dto.AccountRespDto; +import com.zt.plat.module.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; @@ -69,5 +69,5 @@ public interface AccountService { */ void enableAccountList(List saveReqVOS); - List getAccountNoPage(AccountRespDto respVO); + 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 0860557..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,7 +3,7 @@ package com.zt.plat.module.base.service.base; import cn.hutool.core.collection.CollUtil; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.util.object.BeanUtils; -import com.zt.plat.module.api.dto.AccountRespDto; +import com.zt.plat.module.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; @@ -98,8 +98,8 @@ public class AccountServiceImpl implements AccountService { } @Override - public List getAccountNoPage(AccountRespDto respVO) { - List entityList = accountMapper.selectNoPage(respVO); - return BeanUtils.toBean(entityList, AccountRespDto.class); + 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/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-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/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 449525b..0709c93 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 @@ -72,4 +74,6 @@ public class ErpMaterialRespVO { @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/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 c3f35d7..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 @@ -5,6 +5,8 @@ import com.zt.plat.framework.mybatis.core.dataobject.BusinessBaseDO; import lombok.*; import java.time.LocalDateTime; +import java.util.List; + /** * ERP物料数据 DO * 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 c01fb1c..ec5177d 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 @@ -8,7 +8,7 @@ import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.util.object.BeanUtils; import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; import com.zt.plat.module.api.BaseApi; -import com.zt.plat.module.api.dto.AccountRespDto; +import com.zt.plat.module.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; @@ -37,8 +37,6 @@ 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 com.zt.plat.module.erp.enums.ErrorCodeConstants.ERP_ERROR_EXISTS; -import static dm.jdbc.util.DriverUtil.log; /** * ERP公司 Service 实现类 @@ -296,9 +294,9 @@ public class ErpCompanyServiceImpl implements ErpCompanyService { @Override public String test2() { - AccountRespDto respVO = new AccountRespDto(); + AccountDTO respVO = new AccountDTO(); respVO.setCustomerNumber("50000760"); - List dtos = baseApi.getNoPage(respVO); + 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/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 7c6f4ff..3d4e209 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,6 +7,8 @@ import com.xxl.job.core.handler.annotation.XxlJob; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.util.object.BeanUtils; import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.zt.plat.module.api.BaseApi; +import com.zt.plat.module.api.dto.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; @@ -45,6 +47,8 @@ public class ErpMaterialServiceImpl implements ErpMaterialService { @Resource private ErpMaterialMapper erpMaterialMapper; @Resource + private BaseApi baseApi; + @Resource private MyRedisConfig myRedisConfig; @Resource private ErpConfig erpConfig; @@ -151,6 +155,25 @@ 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()) { + 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") From 1bc6330b89ed57cee63b5684d996e44ff66c13bc Mon Sep 17 00:00:00 2001 From: jiangh Date: Fri, 17 Oct 2025 13:09:03 +0800 Subject: [PATCH 089/120] =?UTF-8?q?=E8=AE=A1=E5=88=92=E5=AE=9A=E9=A2=9D?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E8=BF=81=E7=A7=BB=E5=88=B0=E6=94=B9=E5=8C=85?= =?UTF-8?q?=E5=90=8E=E7=BB=9F=E4=B8=80=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dal/dataobject/businessalgorithm/BusinessAlgorithmDO.java | 2 -- 1 file changed, 2 deletions(-) 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 index 4167f6e..866aa06 100644 --- 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 @@ -18,8 +18,6 @@ import com.baomidou.mybatisplus.annotation.*; @AllArgsConstructor public class BusinessAlgorithmDO extends BaseDO { - - /** * 主键ID */ From 36ff79ac9748758114728d70ee5e91fa98c984dd Mon Sep 17 00:00:00 2001 From: guojunyun Date: Fri, 17 Oct 2025 15:44:57 +0800 Subject: [PATCH 090/120] =?UTF-8?q?=E5=90=88=E5=90=8C=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E4=BF=AE=E6=94=B9=20=E5=90=88=E5=90=8C?= =?UTF-8?q?=E6=8F=90=E4=BA=A4=E5=AE=A1=E6=A0=B8=E6=8E=A5=E5=8F=A3=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=20=E8=B0=83=E6=95=B4=E4=BB=B7=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E5=AF=B9=E5=BA=94=E5=AD=97=E6=AE=B5=E4=BF=AE=E6=94=B9=20?= =?UTF-8?q?=E5=90=88=E5=90=8C=E6=8F=90=E4=BA=A4erp=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=20=E4=BD=9C=E5=BA=9F=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=20=E5=AE=8C=E7=BB=93=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/dto/contract/DeductRespDTO.java | 15 + .../admin/contract/ContractController.java | 5 +- .../contract/vo/contract/ApprovalReqVO.java | 8 +- .../contract/vo/contract/DeductRespVO.java | 15 + .../contract/vo/contract/DeductSaveReqVO.java | 15 + .../dataobject/contract/ContractDeductDO.java | 25 ++ .../service/contract/ContractService.java | 2 +- .../service/contract/ContractServiceImpl.java | 390 +++++++++++------- .../service/erp/ErpContractServiceImpl.java | 2 +- 9 files changed, 314 insertions(+), 163 deletions(-) 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 index 27ef2e2..6184e42 100644 --- 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 @@ -16,6 +16,9 @@ public class DeductRespDTO { @Schema(description = "条款主键") private Long formulaId; + @Schema(description = "金属元素缩写") + private String elementAbbreviation; + @Schema(description = "数据项类型(字典:GRD_CFG_TP)") private String configType; @@ -25,6 +28,18 @@ public class DeductRespDTO { @Schema(description = "调整价") private BigDecimal gradeAmount; + @Schema(description = "区间方式(字典:STLM_RNG_WY)") + private String rangeWay; + + @Schema(description = "上限") + private String up; + + @Schema(description = "下限") + private String 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-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 d8420e0..fef3ebe 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 @@ -135,11 +135,10 @@ public class ContractController implements BusinessControllerMarker { return success(contractService.submitApproval(id)); } - // TODO @PostMapping("/approval") - @Operation(summary = "合同审批 TODO") + @Operation(summary = "合同审批") @PreAuthorize("@ss.hasPermission('base:contract:approval')") - public CommonResult approval(@Valid @RequestBody ApprovalReqVO reqVO) { + public CommonResult approval(@Valid @RequestBody ApprovalReqVO reqVO) { return success(contractService.approval(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 index 4d59d2e..92e166d 100644 --- 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 @@ -13,11 +13,11 @@ public class ApprovalReqVO { @NotNull(message = "合同主键ID不能为空") private Long id; - @Schema(description = "审核结果(通过:PASS,驳回:REJECT)", requiredMode = Schema.RequiredMode.REQUIRED) - @NotBlank(message = "审核结果不能为空") - private String auditResult; - @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/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 index 8471ee1..c37f024 100644 --- 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 @@ -15,6 +15,9 @@ public class DeductRespVO { @Schema(description = "条款主键") private Long formulaId; + @Schema(description = "金属元素缩写") + private String elementAbbreviation; + @Schema(description = "数据项类型(字典:GRD_CFG_TP)") private String configType; @@ -24,6 +27,18 @@ public class DeductRespVO { @Schema(description = "调整价") private BigDecimal gradeAmount; + @Schema(description = "区间方式(字典:STLM_RNG_WY)") + private String rangeWay; + + @Schema(description = "上限") + private String up; + + @Schema(description = "下限") + private String 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 index fbecdb6..8246ab7 100644 --- 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 @@ -15,6 +15,9 @@ public class DeductSaveReqVO { @Schema(description = "条款主键") private Long formulaId; + @Schema(description = "金属元素缩写") + private String elementAbbreviation; + @Schema(description = "数据项类型(字典:GRD_CFG_TP)") private String configType; @@ -23,4 +26,16 @@ public class DeductSaveReqVO { @Schema(description = "调整价") private BigDecimal gradeAmount; + + @Schema(description = "区间方式(字典:STLM_RNG_WY)") + private String rangeWay; + + @Schema(description = "上限") + private String up; + + @Schema(description = "下限") + private String 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/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 a6ed755..f89b3d0 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 @@ -34,6 +34,11 @@ public class ContractDeductDO extends BusinessBaseDO { */ @TableField("FMU_ID") private Long formulaId; + /** + * 金属元素缩写(Cu\Au\Ag) + */ + @TableField("ELEM_ABBR") + private String elementAbbreviation; /** * 数据项类型(字典:GRD_CFG_TP) */ @@ -49,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 String up; + /** + * 下限 + */ + @TableField("DOWN") + private String 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/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 9f2db38..d17780a 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 @@ -64,7 +64,7 @@ public interface ContractService { * @param reqVO 审批信息 * @return 审批结果 */ - String approval(@Valid ApprovalReqVO reqVO); + Boolean approval(@Valid ApprovalReqVO reqVO); /** * 查询不计价规则列表 diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/contract/ContractServiceImpl.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/contract/ContractServiceImpl.java index a49f76d..7451ddb 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 @@ -20,8 +20,8 @@ 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.BpmProcessInstanceCreateReqDTO; -import com.zt.plat.module.bpm.api.task.dto.BpmTaskRespDTO; +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.dal.dataobject.contract.*; @@ -923,6 +923,7 @@ public class ContractServiceImpl implements ContractService { 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()); } @@ -1040,9 +1041,35 @@ public class ContractServiceImpl implements ContractService { if (StringUtils.isNotBlank(contractMainDO.getProcessInstanceId())) { - // TODO:待审核状态重新提交审批处理 - // 进入审批流程的合同,查询当前审批的任务节点 + // 获取流程当前审批的任务节点 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 { // 未进入审批流程的合同,创建审批流程 @@ -1069,7 +1096,7 @@ public class ContractServiceImpl implements ContractService { } @Override - public String approval(ApprovalReqVO reqVO) { + public Boolean approval(ApprovalReqVO reqVO) { // 合同主键ID Long id = reqVO.getId(); @@ -1086,18 +1113,60 @@ public class ContractServiceImpl implements ContractService { } // 合同状态校验 - if (DictEnum.BSE_CTRT_STS_DRAFT.getCode().equals(contractMainDO.getStatus()) - || DictEnum.BSE_CTRT_STS_IN_PROGRESS.getCode().equals(contractMainDO.getStatus()) - || DictEnum.BSE_CTRT_STS_REJECTED.getCode().equals(contractMainDO.getStatus()) - || DictEnum.BSE_CTRT_STS_TERMINATED.getCode().equals(contractMainDO.getStatus()) - || DictEnum.BSE_CTRT_STS_ARCHIVED.getCode().equals(contractMainDO.getStatus()) - || DictEnum.BSE_CTRT_STS_DELETED.getCode().equals(contractMainDO.getStatus())) { + 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_APPROVAL, DictEnum.getByCode(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel()); } - return ""; + // 获取当前流程正在审批的任务节点 + 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 @@ -1232,148 +1301,7 @@ public class ContractServiceImpl implements ContractService { if (contractMainDO != null) { // 生成ERP合同映射表 - ErpContractSaveReqVO erpContractVO = new ErpContractSaveReqVO(); - // 合同主信息表主键:BSE_CTRT_MAIN - erpContractVO.setContractMainId(id); - // 操作标识: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(id); - 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()); + ErpContractSaveReqVO erpContractVO = getErpContract(contractMainDO); // 调用ERP模块 String erpResult = null; @@ -1535,6 +1463,9 @@ public class ContractServiceImpl implements ContractService { contractMainMapper.updateById(contractMainDO); }); + // 重新提交erp + submitErp(ids); + return true; } @@ -1563,9 +1494,160 @@ public class ContractServiceImpl implements ContractService { contractMainMapper.updateById(contractMainDO); }); + // 重新提交erp + submitErp(ids); + 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; + } + /** * 校验合同内容 * 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 36c8f91..194fe72 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 @@ -338,7 +338,7 @@ public class ErpContractServiceImpl implements ErpContractService { head.put("DDSKJE", erpContract.getPayeeConditionAmount()); Map req = new HashMap<>(); - req.put("head", head); + req.put("header", head); erpSubmitReqDTO.setReq(req); HashMap response = erpExternalApi.submitDataToErp(erpSubmitReqDTO); From 37c3a10b001141aef3d3e8e901a0b8606f08e357 Mon Sep 17 00:00:00 2001 From: guojunyun Date: Fri, 17 Oct 2025 17:17:11 +0800 Subject: [PATCH 091/120] =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=90=88=E5=90=8C?= =?UTF-8?q?=E6=97=B6=E6=9B=B4=E6=96=B0=E5=90=88=E5=90=8C=E7=8A=B6=E6=80=81?= =?UTF-8?q?=20=E5=90=88=E5=90=8C=E5=AE=A1=E6=A0=B8=E6=97=B6=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E6=A0=A1=E9=AA=8C=20=E6=8F=90=E4=BA=A4erp=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../enums/ErrorCodeConstants.java | 1 + .../enums/contract/DictEnum.java | 5 ++ .../admin/contract/ContractController.java | 2 +- .../service/contract/ContractService.java | 2 +- .../service/contract/ContractServiceImpl.java | 48 ++++++++++++------- 5 files changed, 38 insertions(+), 20 deletions(-) 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 ac8df7a..71ea501 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 @@ -25,4 +25,5 @@ public interface ErrorCodeConstants { 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"); } diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/DictEnum.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/DictEnum.java index d2aa970..7887456 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/DictEnum.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/DictEnum.java @@ -5,6 +5,11 @@ package com.zt.plat.module.contractorder.enums.contract; */ 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), 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 fef3ebe..f862935 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 @@ -145,7 +145,7 @@ public class ContractController implements BusinessControllerMarker { @PostMapping("/submit/erp") @Operation(summary = "提交ERP") @PreAuthorize("@ss.hasPermission('base:contract:erp')") - public CommonResult> submitErp(@RequestBody List ids) { + public CommonResult submitErp(@RequestBody List ids) { return success(contractService.submitErp(ids)); } 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 d17780a..0aaa0b5 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 @@ -104,7 +104,7 @@ public interface ContractService { * @param ids 合同ID集合 * @return */ - List submitErp(List ids); + Boolean submitErp(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 7451ddb..e3660fd 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 @@ -54,9 +54,7 @@ import org.springframework.transaction.annotation.Transactional; import java.io.ByteArrayOutputStream; import java.time.LocalDate; import java.time.format.DateTimeFormatter; -import java.util.ArrayList; -import java.util.LinkedHashSet; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; @@ -1001,6 +999,9 @@ public class ContractServiceImpl implements ContractService { // 删除品位不计价规则 contractNotMapper.delete(TableFieldConstants.BSE_CTRT_NT_CTRT_ID, id.toString()); + // 更新合同状态 + contractMainDO.setStatus(DictEnum.BSE_CTRT_STS_DELETED.getCode()); + contractMainMapper.updateById(contractMainDO); // 删除合同数据 contractMainMapper.deleteById(id); @@ -1113,8 +1114,7 @@ public class ContractServiceImpl implements ContractService { } // 合同状态校验 - if (!(DictEnum.BSE_CTRT_STS_DRAFT.getCode().equals(contractMainDO.getStatus()) - || DictEnum.BSE_CTRT_STS_WAIT_AUDIT.getCode().equals(contractMainDO.getStatus()))) { + if (!DictEnum.BSE_CTRT_STS_UNDER_REVIEW.getCode().equals(contractMainDO.getStatus())) { throw exception(CONTRACT_STATUS_NOT_APPROVAL, DictEnum.getByCode(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel()); @@ -1287,10 +1287,7 @@ public class ContractServiceImpl implements ContractService { } @Override - public List submitErp(List ids) { - - // 返回结果 - List result = new ArrayList<>(); + public Boolean submitErp(List ids) { // 遍历合同ID集合 ids.forEach(id -> { @@ -1300,24 +1297,39 @@ public class ContractServiceImpl implements ContractService { if (contractMainDO != null) { + // 合同状态校验 + 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.getByCode(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel()); + } + // 生成ERP合同映射表 ErpContractSaveReqVO erpContractVO = getErpContract(contractMainDO); // 调用ERP模块 - String erpResult = null; - try { - erpResult = erpContractService.submitErp(erpContractVO); - } catch (Exception e) { - erpResult = e.getMessage(); - } + Map erpResult = sendToErp(erpContractVO); log.info("合同提交ERP结果:{}", erpResult); - result.add(id.toString() + ":" + erpResult); } else { - result.add(id.toString() + ":" + CONTRACT_NOT_EXISTS); + throw exception(CONTRACT_NOT_EXISTS); } }); - return result; + return true; + } + + private Map sendToErp(ErpContractSaveReqVO erpContractVO) { + Map erpResult = new HashMap<>(); + try { + String result = erpContractService.submitErp(erpContractVO); + erpResult.put(true, result); + } catch (Exception e) { + erpResult.put(false, e.getMessage()); + } + + return erpResult; } @Override From 5604fd596a61c093721c5c120d19a85a1b60b393 Mon Sep 17 00:00:00 2001 From: liss <1780094091@qq.com> Date: Fri, 17 Oct 2025 18:00:42 +0800 Subject: [PATCH 092/120] =?UTF-8?q?erp=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E5=8E=BB=E9=99=A4try/catch?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../erp/service/erp/ErpAssetServiceImpl.java | 80 +++++++------- .../erp/service/erp/ErpBomServiceImpl.java | 84 +++++++------- .../service/erp/ErpCompanyServiceImpl.java | 47 ++++---- .../service/erp/ErpContractServiceImpl.java | 76 ++++++------- .../service/erp/ErpCostcenterServiceImpl.java | 87 +++++++-------- .../service/erp/ErpCustomerServiceImpl.java | 97 ++++++++-------- .../service/erp/ErpFactoryServiceImpl.java | 102 ++++++++--------- .../erp/ErpInternalOrderServiceImpl.java | 78 ++++++------- .../service/erp/ErpMaterialServiceImpl.java | 68 ++++++------ .../erp/ErpProcessDetailServiceImpl.java | 16 +-- .../service/erp/ErpProcessServiceImpl.java | 101 ++++++++--------- .../erp/ErpProductiveOrderServiceImpl.java | 76 ++++++------- .../erp/ErpProductiveVersionServiceImpl.java | 104 +++++++++--------- .../ErpPurchaseOrganizationServiceImpl.java | 104 +++++++++--------- .../erp/ErpSalesOrganizationServiceImpl.java | 102 ++++++++--------- .../service/erp/ErpWarehouseServiceImpl.java | 88 +++++++-------- 16 files changed, 619 insertions(+), 691 deletions(-) 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 26bfaaf..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 @@ -110,45 +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 (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); - - } 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); } /** @@ -202,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); @@ -222,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)); - myRedisConfig.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); @@ -242,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; 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 38354f2..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 @@ -117,44 +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 (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); - - } 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); } /** @@ -168,7 +162,7 @@ public class ErpBomServiceImpl implements ErpBomService { 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) { @@ -179,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)); @@ -231,17 +225,17 @@ 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()) { myRedisConfig.addRedisCacheMap(result.key, result.addnumbers); } - + if (!result.deleteNumbers.isEmpty()) { myRedisConfig.deleteRedisCacheMap(result.key, result.deleteNumbers); } @@ -257,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; 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 ec5177d..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 @@ -121,32 +121,25 @@ 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 (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); - - } catch (Exception e) { -// log.error("调用ERP RFC接口失败: {}", e); - throw 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 @@ -284,10 +277,10 @@ public class ErpCompanyServiceImpl implements ErpCompanyService { HttpEntity requestEntity = new HttpEntity<>(requestBody.toJSONString(), headers); // 发送POST请求 RestTemplate restTemplate = new RestTemplate(); - try{ + try { ResponseEntity response = restTemplate.postForEntity(url, requestEntity, String.class); return url + requestEntity + response; - }catch (Exception e){ + } catch (Exception e) { return url + requestEntity; } } 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 194fe72..6583933 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 @@ -183,53 +183,47 @@ public class ErpContractServiceImpl implements ErpContractService { @Transactional @XxlJob("getErpContractTask") 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<>(); - 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); + 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); - } + // 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); - - } catch (Exception e) { - log.error("调用ERP RFC接口失败: {}", e); - throw new RuntimeException("调用ERP RFC接口失败: " + e.getMessage(), e); } + if (CollUtil.isEmpty(dataArrayALL)) { + throw exception(ERP_CONTRACT_NOT_EXISTS); + } + + // 2. 处理公司数据,区分新增和更新 + ProcessingResult result = processData(dataArrayALL, funcnrEnum); + + // 3. 批量保存数据 + saveData(result); } @Override 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 094497c..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 @@ -76,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); @@ -110,46 +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 (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); - - } 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); } /** @@ -178,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); @@ -196,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); } /** @@ -216,7 +210,7 @@ public class ErpCostcenterServiceImpl implements ErpCostcenterService { ); Map numberIdMap = insertedRecords.stream() .collect(Collectors.toMap(ErpCostcenterDO::getNumber, ErpCostcenterDO::getId)); - myRedisConfig.addRedisCacheMap(result.key,numberIdMap); + myRedisConfig.addRedisCacheMap(result.key, numberIdMap); } if (!result.toUpdate.isEmpty()) { erpCostcenterMapper.updateBatch(result.toUpdate); @@ -224,7 +218,7 @@ public class ErpCostcenterServiceImpl implements ErpCostcenterService { if (!result.deleteNumbers.isEmpty()) { // 使用 in 条件批量删除,提高删除效率 erpCostcenterMapper.delete(new LambdaQueryWrapperX().in(ErpCostcenterDO::getNumber, result.deleteNumbers)); - myRedisConfig.deleteRedisCacheMap(result.key,result.deleteNumbers); + myRedisConfig.deleteRedisCacheMap(result.key, result.deleteNumbers); } } @@ -237,13 +231,14 @@ 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() 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 95c22e0..65122d3 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 @@ -110,50 +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 (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()){ - throw exception(ERP_CUSTOMER_NOT_EXISTS); - } - - // 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()) { + throw exception(ERP_CUSTOMER_NOT_EXISTS); + } + + // 2. 处理数据,区分新增和更新 + ProcessingResult result = processData(dataArrayALL, funcnrEnum); + + // 3. 批量保存数据 + saveData(result); } /** @@ -169,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); @@ -218,7 +217,7 @@ public class ErpCustomerServiceImpl implements ErpCustomerService { ); Map numberIdMap = insertedRecords.stream() .collect(Collectors.toMap(ErpCustomerDO::getNumber, ErpCustomerDO::getId)); - myRedisConfig.addRedisCacheMap(result.key,numberIdMap); + myRedisConfig.addRedisCacheMap(result.key, numberIdMap); } if (!result.toUpdate.isEmpty()) { erpCustomerMapper.updateBatch(result.toUpdate); 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 0799177..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 @@ -55,7 +55,7 @@ public class ErpFactoryServiceImpl implements ErpFactoryService { // 插入 ErpFactoryDO erpFactory = BeanUtils.toBean(createReqVO, ErpFactoryDO.class); // 工厂编码自动生成,格式 GC-0001,依次新增 - if (erpFactory.getNumber() == null){ + if (erpFactory.getNumber() == null) { String maxCode = erpFactoryMapper.selectMaxCode(); if (maxCode == null) { erpFactory.setNumber("GC-0001"); @@ -80,7 +80,7 @@ public class ErpFactoryServiceImpl implements ErpFactoryService { validateErpFactoryExists(updateReqVO.getId()); // 更新 ErpFactoryDO updateObj = BeanUtils.toBean(updateReqVO, ErpFactoryDO.class); - if (updateObj.getType().equals("ERP")||updateObj.getIsEnable().equals("1")){ + if (updateObj.getType().equals("ERP") || updateObj.getIsEnable().equals("1")) { throw exception(ERP_FACTORY_NOT_ALLOW_UPDATE); } erpFactoryMapper.updateById(updateObj); @@ -95,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); @@ -164,53 +164,47 @@ public class ErpFactoryServiceImpl implements ErpFactoryService { @Transactional @XxlJob("getErpFactoryTask") public void callErpRfcInterface() { - try { - 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); - - } 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); } /** @@ -232,7 +226,7 @@ public class ErpFactoryServiceImpl implements ErpFactoryService { DO.setNumber(number); DO.setErpCompanyNumber(dataJson.getString("BUKRS")); DO.setType("ERP"); - if (numbers.get(number)!=null) { + if (numbers.get(number) != null) { // 更新 DO.setId(numbers.get(number)); toUpdate.add(DO); @@ -251,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); } /** @@ -271,7 +265,7 @@ public class ErpFactoryServiceImpl implements ErpFactoryService { ); Map numberIdMap = insertedRecords.stream() .collect(Collectors.toMap(ErpFactoryDO::getNumber, ErpFactoryDO::getId)); - myRedisConfig.addRedisCacheMap(result.key,numberIdMap); + myRedisConfig.addRedisCacheMap(result.key, numberIdMap); } if (!result.toUpdate.isEmpty()) { erpFactoryMapper.updateBatch(result.toUpdate); @@ -292,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; 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 b16b474..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 @@ -108,47 +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 (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); - - } 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); } /** @@ -171,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); @@ -210,7 +204,7 @@ public class ErpInternalOrderServiceImpl implements ErpInternalOrderService { ); Map numberIdMap = insertedRecords.stream() .collect(Collectors.toMap(ErpInternalOrderDO::getNumber, ErpInternalOrderDO::getId)); - myRedisConfig.addRedisCacheMap(result.key,numberIdMap); + myRedisConfig.addRedisCacheMap(result.key, numberIdMap); } if (!result.toUpdate.isEmpty()) { erpInternalOrderMapper.updateBatch(result.toUpdate); 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 3d4e209..df32b44 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 @@ -164,7 +164,7 @@ public class ErpMaterialServiceImpl implements ErpMaterialService { MaterialOtherDTO dto = new MaterialOtherDTO(); dto.setMaterialNumber(respVO.getDownCenterNumber()); List dtos = baseApi.getMaterialOtherNoPage(dto); - if (dtos != null){ + if (dtos != null) { respVO.setMaterialOtherDTOS(dtos); } } @@ -178,43 +178,37 @@ public class ErpMaterialServiceImpl implements ErpMaterialService { @Transactional @XxlJob("getErpMaterialTask") public void callErpRfcInterface() { - try { - 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 (CollUtil.isEmpty(dataArray)) { - throw exception(ERP_MATERIAL_NOT_EXISTS); - } - - // 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 (CollUtil.isEmpty(dataArray)) { + throw exception(ERP_MATERIAL_NOT_EXISTS); + } + + // 2. 处理公司数据,区分新增和更新 + ProcessingResult result = processData(dataArray, funcnrEnum); + + // 3. 批量保存数据 + saveData(result); } /** 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 183c2ab..414280a 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 @@ -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); @@ -115,10 +115,10 @@ public class ErpProcessDetailServiceImpl implements ErpProcessDetailService { List dataArrayNumbers = new ArrayList<>(); Map existingNumbers = myRedisConfig.getRedisCacheMap(key); for (ErpProcessDetailDO updateReqVO : updateReqVOS) { - if (updateReqVO.getProcessingName() == null|| updateReqVO.getProcessingName().isEmpty()){ + if (updateReqVO.getProcessingName() == null || updateReqVO.getProcessingName().isEmpty()) { continue; } - String mapKey = updateReqVO.getProcessId() + "-" + updateReqVO.getProcessingNumber(); + String mapKey = updateReqVO.getProcessId() + "-" + updateReqVO.getProcessingNumber()+"-" + updateReqVO.getWorkCenterNumber(); if (existingNumbers.containsKey(mapKey)) { updateReqVO.setId(existingNumbers.get(mapKey)); } @@ -149,10 +149,12 @@ public class ErpProcessDetailServiceImpl implements ErpProcessDetailService { new LambdaQueryWrapperX() .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(), ErpProcessDetailDO::getId)); + .collect(Collectors.toMap( + asset -> asset.getProcessId() + "-" + asset.getProcessingNumber() + "-" + asset.getWorkCenterNumber(), + ErpProcessDetailDO::getId, (existing, replacement) -> replacement)); myRedisConfig.addRedisCacheMap(result.key, numberIdMap); } if (!result.toUpdate.isEmpty()) { @@ -186,7 +188,7 @@ 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(); + String mapKey = asset.getProcessId() + "-" + asset.getProcessingNumber()+ "-" + asset.getWorkCenterNumber(); existingNumbers.put(mapKey, asset.getId()); } myRedisConfig.addRedisCacheMap(key, existingNumbers); 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 542f815..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 @@ -114,45 +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 (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); - - } 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); } /** @@ -171,16 +165,25 @@ 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) { // 更新 @@ -271,7 +274,7 @@ 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()); } myRedisConfig.addRedisCacheMap(key, existingNumbers); 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 af51f56..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 @@ -183,49 +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 = 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); - - } 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); } /** 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 0f94a4b..11771d4 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 @@ -74,12 +74,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); @@ -108,47 +108,41 @@ public class ErpProductiveVersionServiceImpl implements ErpProductiveVersionServ @Transactional @XxlJob("getErpProductiveVersionTask") public void callErpRfcInterface() { - try { - 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); - - } 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); } /** @@ -165,15 +159,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("MATNR") != null ? dataJson.getString("MATNR").trim() : null); + DO.setMaterialNumber(dataJson.getString("WERKS") != null ? dataJson.getString("WERKS").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) { + String alnalValue = dataJson.getString("ALNAL"); + // 修复:增加对空字符串的判断 + 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); @@ -188,11 +184,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); } /** @@ -210,13 +206,13 @@ 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)); - myRedisConfig.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); @@ -233,7 +229,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; 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 e0ee45d..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 @@ -74,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); @@ -108,55 +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 (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); - - } 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); } /** @@ -177,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); @@ -196,7 +190,7 @@ public class ErpPurchaseOrganizationServiceImpl implements ErpPurchaseOrganizati } } - return new ProcessingResult(toUpdate, toInsert,key,deleteNumbers); + return new ProcessingResult(toUpdate, toInsert, key, deleteNumbers); } /** @@ -216,12 +210,12 @@ public class ErpPurchaseOrganizationServiceImpl implements ErpPurchaseOrganizati ); Map numberIdMap = insertedRecords.stream() .collect(Collectors.toMap(ErpPurchaseOrganizationDO::getNumber, ErpPurchaseOrganizationDO::getId)); - myRedisConfig.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)); myRedisConfig.deleteRedisCacheMap(result.key, result.deleteNumbers); @@ -237,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; 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 51cb5bf..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 @@ -74,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); @@ -108,54 +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 (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); - - } 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); } /** @@ -176,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); @@ -184,7 +178,7 @@ public class ErpSalesOrganizationServiceImpl implements ErpSalesOrganizationServ // 新增 toInsert.add(DO); } - dataArrayNumbers.add( number); + dataArrayNumbers.add(number); } } // 过滤出numbers中有,但dataArray中KOSTL没有的记录,即为需要删除的数据 @@ -194,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); } /** @@ -214,7 +208,7 @@ public class ErpSalesOrganizationServiceImpl implements ErpSalesOrganizationServ ); Map numberIdMap = insertedRecords.stream() .collect(Collectors.toMap(ErpSalesOrganizationDO::getNumber, ErpSalesOrganizationDO::getId)); - myRedisConfig.addRedisCacheMap(result.key,numberIdMap); + myRedisConfig.addRedisCacheMap(result.key, numberIdMap); } if (!result.toUpdate.isEmpty()) { erpSalesOrganizationMapper.updateBatch(result.toUpdate); @@ -235,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; 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 dff374d..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 @@ -169,54 +169,48 @@ public class ErpWarehouseServiceImpl implements ErpWarehouseService { @Transactional @XxlJob("getErpWarehouseTask") public void callErpRfcInterface() { - try { - 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); - - } 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); } /** From 627e9871bcd8517e864472ab9f8c4a4377407578 Mon Sep 17 00:00:00 2001 From: guojunyun Date: Mon, 20 Oct 2025 10:08:00 +0800 Subject: [PATCH 093/120] =?UTF-8?q?=E5=90=88=E5=90=8C=E4=B8=BB=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E6=B7=BB=E5=8A=A0=E5=90=88=E5=90=8C=E5=88=86=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/dto/contract/ContractRespDTO.java | 3 +++ .../contract/vo/contract/ContractRespVO.java | 3 +++ .../vo/contract/ContractSaveReqVO.java | 9 +++---- .../dataobject/contract/ContractMainDO.java | 25 +++++++++++-------- 4 files changed, 24 insertions(+), 16 deletions(-) diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/ContractRespDTO.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/ContractRespDTO.java index 0025dc1..4c57e11 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/ContractRespDTO.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/ContractRespDTO.java @@ -218,6 +218,9 @@ public class ContractRespDTO { @Schema(description = "乙方联系地址") private String salesContactAddress; + @Schema(description = "合同分类(字典:SPLY_BSN_TP)") + private String businessType; + // 物料信息 private List detail; 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 086e7c4..91aef5a 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 @@ -222,6 +222,9 @@ public class ContractRespVO { @Schema(description = "乙方联系地址") private String salesContactAddress; + @Schema(description = "合同分类(字典:SPLY_BSN_TP)") + private String businessType; + // 物料信息 private List detail; 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 3cd354e..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 @@ -30,14 +30,12 @@ public class ContractSaveReqVO { @Schema(description = "交货方式(字典:FRCST_ASN)") private String deliveryWay; - // 基础信息 @Schema(description = "附件对象存储") private JSONArray fileObject; @Schema(description = "其它附件对象存储") private JSONArray fileObjectOther; - // 合同基本信息 @Schema(description = "甲方公司编号;如果是采购合同,查询组织机构自动带出,且与ERP(HTQDZTBH)对应,如果是销售合同,手动选择,且与ERP(WLDWBH)对应。", example = "甲方公司编号") private String purchaseCompanyNumber; @@ -100,7 +98,6 @@ public class ContractSaveReqVO { @Schema(description = "合同编号;与ERP(HTBH)对应,校验唯一", example = "合同编号") private String contractPaperNumber; - // @NotBlank(message = "合同类型不能为空") @Schema(description = "合同类型", example = "PRCH") private String contractType; @@ -119,7 +116,6 @@ public class ContractSaveReqVO { @Schema(description = "签署地", example = "签署地") private String signPlace; - // 金额信息 @Schema(description = "币种;与ERP(BZBH)对应", example = "CNY") private String currency; @@ -162,7 +158,6 @@ public class ContractSaveReqVO { @Schema(description = "备注;与ERP(BZXX)对应", example = "备注") private String remark; - // 扩展信息 @Schema(description = "原币金额-变更后;与ERP(BGHHTYBZJE)对应,拓展信息") private BigDecimal changeCooAmount; @@ -209,10 +204,12 @@ public class ContractSaveReqVO { @Schema(description = "是否内部企业(字典:ERP_CTRT_YN)") private String isInternal; - // 模板部分 @Schema(description = "模板实例主键", example = "10196") private Long instanceId; + @Schema(description = "合同分类(字典:SPLY_BSN_TP)") + private String businessType; + // 物料信息 private List detail; 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 b8ce37d..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 @@ -294,16 +294,6 @@ public class ContractMainDO extends BusinessBaseDO { */ @TableField("TSK_NDE_ID") private String taskNodeId; - /** - * 模板附件对象存储 - */ - @TableField("FILE_OBJ") - private String fileObject; - /** - * 其它附件对象存储 - */ - @TableField("FILE_OBJ_OTH") - private String fileObjectOther; /** * 交货地点 */ @@ -389,4 +379,19 @@ public class ContractMainDO extends BusinessBaseDO { */ @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 From 6bed3e71023afaafee7938d15c02d506f2a8613b Mon Sep 17 00:00:00 2001 From: guojunyun Date: Mon, 20 Oct 2025 14:34:53 +0800 Subject: [PATCH 094/120] =?UTF-8?q?=E5=90=88=E5=90=8C=E4=B8=BB=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E6=B7=BB=E5=8A=A0ERP=E7=94=B2=E6=96=B9=E5=85=AC?= =?UTF-8?q?=E5=8F=B8=E7=BC=96=E5=8F=B7=E3=80=81ERP=E7=94=B2=E6=96=B9?= =?UTF-8?q?=E5=85=AC=E5=8F=B8=E5=90=8D=E7=A7=B0=E3=80=81ERP=E4=B9=99?= =?UTF-8?q?=E6=96=B9=E5=85=AC=E5=8F=B8=E7=BC=96=E7=A0=81=E3=80=81ERP?= =?UTF-8?q?=E4=B9=99=E6=96=B9=E5=85=AC=E5=8F=B8=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/dto/contract/ContractRespDTO.java | 12 ++++++++++++ .../admin/contract/vo/contract/ContractRespVO.java | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/ContractRespDTO.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/ContractRespDTO.java index 4c57e11..3e10aa4 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/ContractRespDTO.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/ContractRespDTO.java @@ -218,6 +218,18 @@ public class ContractRespDTO { @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; 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 91aef5a..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 @@ -222,6 +222,18 @@ public class ContractRespVO { @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; From 26e3fba2a62cd7aecc82f2fb26c4bd8fbd33a5b0 Mon Sep 17 00:00:00 2001 From: liss <1780094091@qq.com> Date: Mon, 20 Oct 2025 15:46:10 +0800 Subject: [PATCH 095/120] =?UTF-8?q?erp=E5=AE=A2=E5=95=86=E4=B8=BB=E3=80=81?= =?UTF-8?q?=E7=89=A9=E6=96=99=E6=9F=A5=E8=AF=A2=E6=B2=A1=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E7=9B=B4=E6=8E=A5=E8=BF=94=E5=9B=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plat/module/erp/service/erp/ErpCustomerServiceImpl.java | 2 +- .../plat/module/erp/service/erp/ErpMaterialServiceImpl.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) 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 65122d3..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 @@ -140,7 +140,7 @@ public class ErpCustomerServiceImpl implements ErpCustomerService { dataArrayALL.addAll(dataArray); } if (dataArrayALL.isEmpty()) { - throw exception(ERP_CUSTOMER_NOT_EXISTS); + return; } // 2. 处理数据,区分新增和更新 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 df32b44..a8e193b 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 @@ -200,8 +200,8 @@ public class ErpMaterialServiceImpl implements ErpMaterialService { // 1. 调用ERP接口获取数据 HashMap dataFromERP = erpConfig.fetchDataFromERP(funcnr, req); JSONArray dataArray = (JSONArray) dataFromERP.get("E_RESP"); - if (CollUtil.isEmpty(dataArray)) { - throw exception(ERP_MATERIAL_NOT_EXISTS); + if (dataArray == null || dataArray.isEmpty()) { + return; } // 2. 处理公司数据,区分新增和更新 From 9b00faeddb74e4ffc9717c2bbec256e8f20455de Mon Sep 17 00:00:00 2001 From: liss <1780094091@qq.com> Date: Mon, 20 Oct 2025 15:49:03 +0800 Subject: [PATCH 096/120] =?UTF-8?q?erpjob=E9=87=8D=E5=91=BD=E5=90=8D?= =?UTF-8?q?=E6=8F=90=E4=BA=A4=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/zt/plat/module/erp/job/{erpJob.java => ErpJob.java} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/job/{erpJob.java => ErpJob.java} (85%) 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 similarity index 85% rename from zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/job/erpJob.java rename to zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/job/ErpJob.java index 38fe33f..a28e78f 100644 --- 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 @@ -1,6 +1,6 @@ package com.zt.plat.module.erp.job; -public class erpJob { +public class ErpJob { public void execute() throws Exception { // TODO Auto-generated method stub From 5b5ceca41b5e3bb44e4360b803c0626c776c4345 Mon Sep 17 00:00:00 2001 From: liss <1780094091@qq.com> Date: Mon, 20 Oct 2025 15:52:10 +0800 Subject: [PATCH 097/120] =?UTF-8?q?erpjob=E8=8E=B7=E5=8F=96erp=E5=AE=9A?= =?UTF-8?q?=E6=97=B6=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/zt/plat/module/erp/job/ErpJob.java | 53 ++++++++++++++++++- 1 file changed, 51 insertions(+), 2 deletions(-) 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 index a28e78f..188602f 100644 --- 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 @@ -1,9 +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 { - public void execute() throws Exception { - // TODO Auto-generated method stub + @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(); } } From d365732a0ed7e48c116fe5d0ae0a6a8b1b2f997f Mon Sep 17 00:00:00 2001 From: liss <1780094091@qq.com> Date: Mon, 20 Oct 2025 16:08:50 +0800 Subject: [PATCH 098/120] =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E7=89=A9=E6=96=99erp?= =?UTF-8?q?=E5=85=B3=E8=81=94=E6=8B=93=E5=B1=95=E5=85=B3=E7=B3=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/erp/controller/admin/erp/vo/ErpMaterialRespVO.java | 3 +++ .../zt/plat/module/erp/service/erp/ErpMaterialServiceImpl.java | 1 + 2 files changed, 4 insertions(+) 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 0709c93..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 @@ -22,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; 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 a8e193b..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 @@ -161,6 +161,7 @@ public class ErpMaterialServiceImpl implements ErpMaterialService { 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); From bcdab44cdacaba99c3da6eedd1162d898277ce00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BD=98=E8=8D=A3=E6=99=9F?= <9691125+pan-rongsheng@user.noreply.gitee.com> Date: Mon, 20 Oct 2025 16:19:53 +0800 Subject: [PATCH 099/120] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/dto/PurchaseOrderWithDetailsDTO.java | 6 ++++- .../enums/ErrorCodeConstants.java | 1 + .../PurchaseOrderController.java | 15 +++++++++++ .../purchaseorder/vo/LinkOrderReqVO.java | 15 +++++++++++ .../vo/PrchOrdDtlDetailsRespVO.java | 2 +- .../vo/PurchaseOrderPageReqVO.java | 4 +++ .../purchaseorder/vo/PurchaseOrderRespVO.java | 4 +++ .../vo/PurchaseOrderSaveReqVO.java | 5 +++- .../purchaseorder/PurchaseOrderDO.java | 7 +++++ .../purchaseorder/PurchaseOrderMapper.java | 1 + .../service/contract/ContractService.java | 10 +++++++ .../service/contract/ContractServiceImpl.java | 16 +++++++++++ .../purchaseorder/PurchaseOrderService.java | 27 +++++++++++++++++-- .../PurchaseOrderServiceImpl.java | 8 ++++++ .../purchaseorder/PurchaseOrderMapper.xml | 5 ++++ 15 files changed, 121 insertions(+), 5 deletions(-) create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/LinkOrderReqVO.java 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 index d28df2e..70b69dc 100644 --- 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 @@ -1,5 +1,6 @@ package com.zt.plat.module.contractorder.api.dto; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.math.BigDecimal; @@ -185,6 +186,9 @@ public class PurchaseOrderWithDetailsDTO { * 物料类型 */ 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/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 71ea501..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 @@ -26,4 +26,5 @@ public interface ErrorCodeConstants { 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-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 index c26e67d..5d7f697 100644 --- 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 @@ -124,6 +124,14 @@ public class PurchaseOrderController implements BusinessControllerMarker { return success(true); } + @PostMapping("/submit-order-batch") + @Operation(summary = "批量提交订单审核") + @PreAuthorize("@ss.hasPermission('bse:purchase-order:update')") + public CommonResult submitOrder(@RequestParam("ids") @Validated @NotEmpty(message = "采购订单id不能为空") List ids) { + ids.forEach(id -> purchaseOrderService.submitOrder(id)); + return success(true); + } + //提交ERP订单 @PostMapping("/submit-erp061") @Operation(summary = "推送ERP订单", description = "061')") @@ -163,4 +171,11 @@ public class PurchaseOrderController implements BusinessControllerMarker { return purchaseOrderService.getMaterial(orderNo); } + //关联订单 + @PostMapping("/link-order") + @Operation(summary = "关联订单") + public CommonResult linkOrder(@RequestBody @Validated LinkOrderReqVO req){ + return success(purchaseOrderService.linkOrder(req)); + } + } 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/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 index 36792da..13ac33b 100644 --- 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 @@ -62,7 +62,7 @@ public class PrchOrdDtlDetailsRespVO { * 计量单位;推送ERP(必须) */ - private BigDecimal unt; + private String unt; /** * 含税单价;推送ERP(必须) */ 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 index 34df2ce..264bec3 100644 --- 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 @@ -130,4 +130,8 @@ public class PurchaseOrderPageReqVO extends PageParam { @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 index 069cc2b..de84f04 100644 --- 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 @@ -171,4 +171,8 @@ public class PurchaseOrderRespVO { @Schema(description = "物料类型(字典:MTRL_TP)", example = "2") @ExcelProperty("物料类型(字典:MTRL_TP)") 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/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 index 7592715..76ae5c9 100644 --- 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 @@ -158,7 +158,6 @@ public class PurchaseOrderSaveReqVO { @Schema(description = "流程实例编号") @ExcelProperty("流程实例编号") - @NotEmpty(message = "流程实例编号不能为空") private String processInstanceId; @Schema(description = "流程当前任务节点id") @@ -175,4 +174,8 @@ public class PurchaseOrderSaveReqVO { @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/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 index 334fbbd..fff3139 100644 --- 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 @@ -250,4 +250,11 @@ public class PurchaseOrderDO extends BusinessBaseDO { */ @TableField("MTRL_TP") private String mtrlTp; + + /** + * 订单分类 + * + */ + @TableField("SPLY_BSN_TP") + private String splyBsnTp; } 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 index 9ec0ad2..e61f3a8 100644 --- 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 @@ -56,6 +56,7 @@ public interface PurchaseOrderMapper extends BaseMapperX { .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()) 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 0aaa0b5..8adf1f8 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 @@ -4,6 +4,7 @@ import cn.hutool.json.JSONObject; import com.zt.plat.framework.common.pojo.PageResult; 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; @@ -193,4 +194,13 @@ public interface ContractService { * @return 完结结果 */ Boolean complete(List ids); + + /** + * 关联订单;该接口仅供订单关联使用 + * + * @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/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 e3660fd..786e181 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 @@ -2,6 +2,7 @@ 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; @@ -24,6 +25,7 @@ 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.*; @@ -1512,6 +1514,20 @@ public class ContractServiceImpl implements ContractService { return true; } + @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 ErpContractSaveReqVO getErpContract(ContractMainDO contractMainDO) { ErpContractSaveReqVO erpContractVO = new ErpContractSaveReqVO(); 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 index 69edf05..66f32ca 100644 --- 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 @@ -82,9 +82,32 @@ public interface PurchaseOrderService { * @return 订单信息 */ List getOrderByOrderNo(List orderNo); - + /** + * 通过订单编号查询订单信息 + * + * @param purchaseOrderRespVO 订单信息 + * + */ void setOrderDetails(PurchaseOrderRespVO purchaseOrderRespVO); + /** + * 修改订单状态 + * + * @param reqVO 订单状态 + * + */ void updateOrderStatusByIdOrOrderNo(PurchaseOrderStsReqVO reqVO); - + /** + * 获取物料 + * + * @param orderNo 订单号 + * + */ CommonResult getMaterial(String orderNo); + /** + * 关联订单 + * + * @param reqVO 关联订单 + * + */ + boolean linkOrder(LinkOrderReqVO reqVO); } 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 index 1d82345..af23492 100644 --- 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 @@ -20,6 +20,7 @@ import com.zt.plat.module.contractorder.dal.dataobject.purchaseorder.PurchaseOrd 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.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; @@ -77,6 +78,8 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { @Resource private SequenceApi sequenceApi; + @Resource + private ContractService contractService; @Override public PurchaseOrderRespVO createPurchaseOrder(PurchaseOrderSaveReqVO createReqVO) { @@ -381,6 +384,11 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { } + @Override + public boolean linkOrder(LinkOrderReqVO reqVO) { + return contractService.linkOrder(reqVO); + } + private void setValue(ErpOrderUpdateReqVO erpOrderUpdateReqVO, PurchaseOrderWithDetailsVO purchaseOrderWithDetailsVO) { //head PurchaseOrderDO purchaseOrderDO = purchaseOrderMapper.selectById(purchaseOrderWithDetailsVO.getPurchaseOrder().getId()); 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 index d2934fd..ab904c0 100644 --- 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 @@ -47,6 +47,7 @@ po.CAUS, po.STS, po.MTRL_TP, + po.SPLY_BSN_TP, po.PRCH_GRP_NAME, po.PRCS_INSC_ID, po.RVW_ONN, @@ -159,6 +160,7 @@ po.RVW_ONN, po.TSK_NDE_ID, po.IS_PUSH, + po.SPLY_BSN_TP, po.CREATE_TIME, po.UPDATE_TIME, po.CREATOR, @@ -274,6 +276,9 @@ + + + From b6ad2a71e4e90c0be086a6ee461b8a9c2866cc34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BD=98=E8=8D=A3=E6=99=9F?= <9691125+pan-rongsheng@user.noreply.gitee.com> Date: Mon, 20 Oct 2025 18:00:53 +0800 Subject: [PATCH 100/120] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/purchaseorder/PurchaseOrderController.java | 8 ++++++-- .../admin/purchaseorder/vo/PrchOrdDtlRespVO.java | 2 +- .../purchaseorder/PurchaseOrderServiceImpl.java | 10 ++++++++++ 3 files changed, 17 insertions(+), 3 deletions(-) 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 index 5d7f697..19252b1 100644 --- 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 @@ -88,6 +88,9 @@ public class PurchaseOrderController implements BusinessControllerMarker { public CommonResult getPurchaseOrder(@RequestParam("id") Long id) { PurchaseOrderDO purchaseOrder = purchaseOrderService.getPurchaseOrder(id); PurchaseOrderRespVO purchaseOrderRespVO = BeanUtils.toBean(purchaseOrder, PurchaseOrderRespVO.class); + if (purchaseOrderRespVO == null){ + return success(null); + } purchaseOrderService.setOrderDetails(purchaseOrderRespVO); return success(purchaseOrderRespVO); } @@ -127,8 +130,9 @@ public class PurchaseOrderController implements BusinessControllerMarker { @PostMapping("/submit-order-batch") @Operation(summary = "批量提交订单审核") @PreAuthorize("@ss.hasPermission('bse:purchase-order:update')") - public CommonResult submitOrder(@RequestParam("ids") @Validated @NotEmpty(message = "采购订单id不能为空") List ids) { - ids.forEach(id -> purchaseOrderService.submitOrder(id)); + 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); } 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 index 71b0f98..7dc1aa0 100644 --- 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 @@ -67,7 +67,7 @@ public class PrchOrdDtlRespVO { @Schema(description = "税码(字典: PRCH_TAX);推送ERP", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("税码(字典: PRCH_TAX);推送ERP") - private BigDecimal taxNum; + private String taxNum; @Schema(description = "是否基于GR的发票校验;推送ERP") @ExcelProperty("是否基于GR的发票校验;推送ERP") 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 index af23492..1132380 100644 --- 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 @@ -82,6 +82,7 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { private ContractService contractService; @Override + @Transactional public PurchaseOrderRespVO createPurchaseOrder(PurchaseOrderSaveReqVO createReqVO) { // 插入 PurchaseOrderDO purchaseOrder = BeanUtils.toBean(createReqVO, PurchaseOrderDO.class); @@ -104,12 +105,21 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { } @Override + @Transactional 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 From 2732a45220a719322055d1bf1b8d8d62c061570b Mon Sep 17 00:00:00 2001 From: guojunyun Date: Tue, 21 Oct 2025 09:19:57 +0800 Subject: [PATCH 101/120] =?UTF-8?q?=E5=AD=97=E5=85=B8=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../contractorder/enums/contract/DictEnum.java | 17 ++++------------- .../service/contract/ContractServiceImpl.java | 16 ++++++++-------- 2 files changed, 12 insertions(+), 21 deletions(-) diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/DictEnum.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/DictEnum.java index 7887456..c5ad9e4 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/DictEnum.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/DictEnum.java @@ -1,8 +1,11 @@ package com.zt.plat.module.contractorder.enums.contract; +import lombok.Getter; + /** * 字典枚举 */ +@Getter public enum DictEnum { /** ERP请求状态 */ @@ -60,19 +63,7 @@ public enum DictEnum { */ private final String remark; - public String getLabel() { - return label; - } - - public String getCode() { - return code; - } - - public String getRemark() { - return remark; - } - - public static DictEnum getByCode(String code, String dictType) { + public static DictEnum getByCodeAndType(String code, String dictType) { return DictEnum.valueOf(dictType + "_" +code); } } 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 786e181..abb54c2 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 @@ -706,7 +706,7 @@ public class ContractServiceImpl implements ContractService { || DictEnum.BSE_CTRT_STS_IN_PROGRESS.getCode().equals(oldContractMainDO.getStatus()))) { throw exception(CONTRACT_STATUS_NOT_UPDATE, - DictEnum.getByCode(oldContractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel()); + DictEnum.getByCodeAndType(oldContractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel()); } // 校验合同名称是否重复 @@ -952,7 +952,7 @@ public class ContractServiceImpl implements ContractService { String msg = id.toString() + ":" + CONTRACT_STATUS_NOT_DELETE.getMsg() - .replace("{}", DictEnum.getByCode(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel()); + .replace("{}", DictEnum.getByCodeAndType(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel()); result.add(new JSONObject().putOnce("deleted", false).putOnce("msg", msg)); } @@ -1032,7 +1032,7 @@ public class ContractServiceImpl implements ContractService { || DictEnum.BSE_CTRT_STS_WAIT_AUDIT.getCode().equals(contractMainDO.getStatus()))) { throw exception(CONTRACT_STATUS_NOT_SUBMIT_APPROVAL, - DictEnum.getByCode(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel()); + DictEnum.getByCodeAndType(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel()); } // 合同内容校验 @@ -1119,7 +1119,7 @@ public class ContractServiceImpl implements ContractService { if (!DictEnum.BSE_CTRT_STS_UNDER_REVIEW.getCode().equals(contractMainDO.getStatus())) { throw exception(CONTRACT_STATUS_NOT_APPROVAL, - DictEnum.getByCode(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel()); + DictEnum.getByCodeAndType(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel()); } // 获取当前流程正在审批的任务节点 @@ -1305,7 +1305,7 @@ public class ContractServiceImpl implements ContractService { || DictEnum.BSE_CTRT_STS_TERMINATED.getCode().equals(contractMainDO.getStatus()))) { throw exception(CONTRACT_STATUS_NOT_SUBMIT_ERP, - DictEnum.getByCode(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel()); + DictEnum.getByCodeAndType(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel()); } // 生成ERP合同映射表 @@ -1439,7 +1439,7 @@ public class ContractServiceImpl implements ContractService { // 合同状态校验 if (!DictEnum.BSE_CTRT_STS_TERMINATED.getCode().equals(contractMainDO.getStatus())) { throw exception(CONTRACT_STATUS_NOT_ARCHIVE, - DictEnum.getByCode(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel()); + DictEnum.getByCodeAndType(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel()); } // 设置归档状态 @@ -1467,7 +1467,7 @@ public class ContractServiceImpl implements ContractService { // 合同状态校验 if (!DictEnum.BSE_CTRT_STS_IN_PROGRESS.getCode().equals(contractMainDO.getStatus())) { throw exception(CONTRACT_STATUS_NOT_ARCHIVE, - DictEnum.getByCode(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel()); + DictEnum.getByCodeAndType(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel()); } // 设置作废状态 @@ -1498,7 +1498,7 @@ public class ContractServiceImpl implements ContractService { // 合同状态校验 if (!DictEnum.BSE_CTRT_STS_IN_PROGRESS.getCode().equals(contractMainDO.getStatus())) { throw exception(CONTRACT_STATUS_NOT_ARCHIVE, - DictEnum.getByCode(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel()); + DictEnum.getByCodeAndType(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel()); } // 设置完结状态 From a2e2c479518b9e07f2278ed5ef3818e977e48056 Mon Sep 17 00:00:00 2001 From: liss <1780094091@qq.com> Date: Tue, 21 Oct 2025 09:52:15 +0800 Subject: [PATCH 102/120] =?UTF-8?q?erp=E6=8F=90=E4=BA=A4=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/zt/plat/module/erp/api/dto/ErpSubmitReqDTO.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) 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; } From 06e1a7787326b60268091e0bf189e1e80699008b Mon Sep 17 00:00:00 2001 From: liss <1780094091@qq.com> Date: Tue, 21 Oct 2025 14:43:09 +0800 Subject: [PATCH 103/120] =?UTF-8?q?erp=E7=94=9F=E4=BA=A7=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=B7=A5=E5=8E=82=EF=BC=8C=E7=89=A9=E6=96=99=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E5=8F=8D=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../erp/service/erp/ErpProductiveVersionServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 11771d4..c552f2b 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 @@ -159,8 +159,8 @@ public class ErpProductiveVersionServiceImpl implements ErpProductiveVersionServ JSONObject dataJson = dataArray.getJSONObject(i); if (dataJson != null) { ErpProductiveVersionDO DO = new ErpProductiveVersionDO(); - DO.setFactoryNumber(dataJson.getString("MATNR") != null ? dataJson.getString("MATNR").trim() : null); - DO.setMaterialNumber(dataJson.getString("WERKS") != null ? dataJson.getString("WERKS").trim() : null); + 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")); From 5679aade47714ffa0ad5abd76e22e3005f34a9b1 Mon Sep 17 00:00:00 2001 From: liss <1780094091@qq.com> Date: Tue, 21 Oct 2025 15:10:15 +0800 Subject: [PATCH 104/120] =?UTF-8?q?erp=E6=B5=8B=E8=AF=95=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/zt/plat/module/erp/utils/ErpConfig.java | 3 --- 1 file changed, 3 deletions(-) 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 index e00d9e6..cdcf879 100644 --- 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 @@ -107,9 +107,6 @@ public class ErpConfig { 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()); } From 6fc56823742eb76005a0746d094fbd3b03ef86be Mon Sep 17 00:00:00 2001 From: liss <1780094091@qq.com> Date: Tue, 21 Oct 2025 15:23:47 +0800 Subject: [PATCH 105/120] =?UTF-8?q?erp=E7=94=9F=E4=BA=A7=E7=89=88=E6=9C=AC?= =?UTF-8?q?=EF=BC=8C=E5=B7=A5=E8=89=BA=E8=B7=AF=E7=BA=BF=EF=BC=8C=E7=BB=84?= =?UTF-8?q?=E8=AE=A1=E6=95=B0=E5=99=A8=EF=BC=8C=E5=8F=8D=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../erp/service/erp/ErpProductiveVersionServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 c552f2b..4e6e622 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 @@ -164,8 +164,8 @@ public class ErpProductiveVersionServiceImpl implements ErpProductiveVersionServ 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")); - String alnalValue = dataJson.getString("ALNAL"); + 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(); From a4b997ec49f851a95f497068e4b58792b663ea45 Mon Sep 17 00:00:00 2001 From: guojunyun Date: Tue, 21 Oct 2025 16:23:24 +0800 Subject: [PATCH 106/120] =?UTF-8?q?=E6=8F=90=E4=BA=A4erp=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E3=80=81=E4=BF=AE=E6=94=B9=E5=90=88=E5=90=8C?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/contract/ContractController.java | 2 +- .../service/contract/ContractService.java | 2 +- .../service/contract/ContractServiceImpl.java | 58 ++++++++++++++++--- 3 files changed, 52 insertions(+), 10 deletions(-) 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 f862935..fef3ebe 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 @@ -145,7 +145,7 @@ public class ContractController implements BusinessControllerMarker { @PostMapping("/submit/erp") @Operation(summary = "提交ERP") @PreAuthorize("@ss.hasPermission('base:contract:erp')") - public CommonResult submitErp(@RequestBody List ids) { + public CommonResult> submitErp(@RequestBody List ids) { return success(contractService.submitErp(ids)); } 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 8adf1f8..e758493 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 @@ -105,7 +105,7 @@ public interface ContractService { * @param ids 合同ID集合 * @return */ - Boolean submitErp(List ids); + List submitErp(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 abb54c2..91f33c9 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 @@ -730,6 +730,29 @@ public class ContractServiceImpl implements ContractService { // 请求更新的合同信息 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 @@ -1289,7 +1312,9 @@ public class ContractServiceImpl implements ContractService { } @Override - public Boolean submitErp(List ids) { + public List submitErp(List ids) { + + List results = new ArrayList<>(); // 遍历合同ID集合 ids.forEach(id -> { @@ -1312,23 +1337,40 @@ public class ContractServiceImpl implements ContractService { ErpContractSaveReqVO erpContractVO = getErpContract(contractMainDO); // 调用ERP模块 - Map erpResult = sendToErp(erpContractVO); + JSONObject erpResult = sendToErp(erpContractVO); log.info("合同提交ERP结果:{}", erpResult); + String result = id + +"-"+erpResult.getBool("success") + +(erpResult.getBool("success") ? "" : "-" + erpResult.getStr("errMsg")); + results.add(result); + + // 更新合同状态 + if (erpResult.getBool("success")) { + contractMainDO.setStatus(DictEnum.BSE_CTRT_STS_IN_PROGRESS.getCode()); + contractMainDO.setErpStatus(DictEnum.ERP_REQ_STS_FIND.getCode()); + contractMainMapper.updateById(contractMainDO); + } 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); + } } else { - throw exception(CONTRACT_NOT_EXISTS); + results.add(id+"-"+"false"+"-"+CONTRACT_NOT_EXISTS); } }); - return true; + return results; } - private Map sendToErp(ErpContractSaveReqVO erpContractVO) { - Map erpResult = new HashMap<>(); + private JSONObject sendToErp(ErpContractSaveReqVO erpContractVO) { + JSONObject erpResult = new JSONObject(); try { String result = erpContractService.submitErp(erpContractVO); - erpResult.put(true, result); + erpResult.putOnce("success", true); } catch (Exception e) { - erpResult.put(false, e.getMessage()); + erpResult.putOnce("success", false); + erpResult.putOnce("errMsg", e.getMessage()); } return erpResult; From 688f4f17a0ab64ccb8fcb57bb78a5a51bf2399f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BD=98=E8=8D=A3=E6=99=9F?= <9691125+pan-rongsheng@user.noreply.gitee.com> Date: Tue, 21 Oct 2025 18:04:21 +0800 Subject: [PATCH 107/120] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseOrderController.java | 8 + .../purchaseorder/vo/PurchaseOrderRespVO.java | 21 ++ .../purchaseorder/vo/PurchaseorderReqVO.java | 23 ++ .../purchaseorder/PrchOrdDtlDO.java | 2 +- .../purchaseorder/PurchaseOrderService.java | 7 + .../PurchaseOrderServiceImpl.java | 243 ++++++++++---- .../ProcessDefinitionKeyConstants.java | 2 +- .../admin/erp/vo/ErpOrderSaveReqVO.java | 297 +++++++++++------- .../erp/service/erp/ErpOrderServiceImpl.java | 83 +++-- 9 files changed, 459 insertions(+), 227 deletions(-) create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PurchaseorderReqVO.java 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 index 19252b1..2980070 100644 --- 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 @@ -182,4 +182,12 @@ public class PurchaseOrderController implements BusinessControllerMarker { return success(purchaseOrderService.linkOrder(req)); } + @PostMapping("/order-pass-reject") + @Operation(summary = "订单审核") + public CommonResult orderPassReject(@RequestBody PurchaseorderReqVO reqVO){ + return success(purchaseOrderService.orderPassReject(reqVO)); + } + + + } 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 index de84f04..efe6331 100644 --- 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 @@ -175,4 +175,25 @@ public class PurchaseOrderRespVO { @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/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/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 index 4810f44..fbd1a6f 100644 --- 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 @@ -84,7 +84,7 @@ public class PrchOrdDtlDO extends BusinessBaseDO { * 暂估数量;推送ERP(必须) */ @TableField("QTY") - private String qty; + private BigDecimal qty; /** * 计量单位;推送ERP(必须) */ 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 index 66f32ca..c9075b5 100644 --- 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 @@ -110,4 +110,11 @@ public interface PurchaseOrderService { * */ boolean linkOrder(LinkOrderReqVO reqVO); + /** + * 订单审核通过和不通过 + * + * @param purchaseorderReqVO 采购审核 + * + */ + boolean orderPassReject(PurchaseorderReqVO purchaseorderReqVO); } 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 index 1132380..df3849d 100644 --- 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 @@ -9,16 +9,14 @@ 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.BpmApprovalDetailReqDTO; -import com.zt.plat.module.bpm.api.task.dto.BpmApprovalDetailRespDTO; -import com.zt.plat.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO; -import com.zt.plat.module.bpm.api.task.dto.BpmTaskRespDTO; +import com.zt.plat.module.bpm.api.task.dto.*; import com.zt.plat.module.bpm.enums.task.BpmProcessInstanceStatusEnum; import 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 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; @@ -37,6 +35,7 @@ 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; @@ -95,7 +94,10 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { 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()); @@ -113,13 +115,13 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { PurchaseOrderDO updateObj = BeanUtils.toBean(updateReqVO, PurchaseOrderDO.class); purchaseOrderMapper.updateById(updateObj); //删除订单明细 - prchOrdDtlService.deletePrchOrdDtlListByOrdIds(Collections.singletonList(updateReqVO.getId())); - log.info("删除旧的订单明细成功"); +// prchOrdDtlService.deletePrchOrdDtlListByOrdIds(Collections.singletonList(updateReqVO.getId())); +// log.info("删除旧的订单明细成功"); // 返回 //批量插入订单明细 - updateReqVO.getPrchOrdDtlSaveReqVOS().forEach(prchOrdDtlSaveReqVO -> prchOrdDtlSaveReqVO.setOrdId(updateReqVO.getId())); - prchOrdDtlService.batchCreatePrchOrdDtl(updateReqVO.getPrchOrdDtlSaveReqVOS()); - log.info("更新订单明细成功"); +// updateReqVO.getPrchOrdDtlSaveReqVOS().forEach(prchOrdDtlSaveReqVO -> prchOrdDtlSaveReqVO.setOrdId(updateReqVO.getId())); +// prchOrdDtlService.batchCreatePrchOrdDtl(updateReqVO.getPrchOrdDtlSaveReqVOS()); + log.info("更新订单明细成功"); } @Override @@ -140,7 +142,8 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { prchOrdDtlService.deletePrchOrdDtlListByOrdIds(ids); } - private void validatePurchaseOrderNosExists(List orderNos){ + + 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); @@ -239,51 +242,127 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { @Override @Transactional public String submitErp061(List ids) { - //通过订单号查询订单 + // 通过订单号查询订单 List purchaseOrderWithDetailsVOS = purchaseOrderMapper.selectOrderByIds(ids); if (!purchaseOrderWithDetailsVOS.isEmpty()) { purchaseOrderWithDetailsVOS.forEach(purchaseOrderWithDetailsVO -> { ErpOrderSaveReqVO erpOrderSaveReqVO = new ErpOrderSaveReqVO(); - if (purchaseOrderWithDetailsVO.getPurchaseOrder() != null) { - erpOrderSaveReqVO.setOrderid(purchaseOrderWithDetailsVO.getPurchaseOrder().getSystemOrderNumber()); - erpOrderSaveReqVO.setCompCode(purchaseOrderWithDetailsVO.getPurchaseOrder().getCompanyNumber());//公司代码 - erpOrderSaveReqVO.setVendor(purchaseOrderWithDetailsVO.getPurchaseOrder().getSupplierNumber());// 供应商帐号 - erpOrderSaveReqVO.setDocType(purchaseOrderWithDetailsVO.getPurchaseOrder().getType());//采购凭证类型 - erpOrderSaveReqVO.setDocDate(purchaseOrderWithDetailsVO.getPurchaseOrder().getVoucherDate()); //采购凭证日期 - erpOrderSaveReqVO.setPurchOrg(purchaseOrderWithDetailsVO.getPurchaseOrder().getPurchaseOrganizationCustomsDeclaration());//采购组织 - erpOrderSaveReqVO.setPurGroup(purchaseOrderWithDetailsVO.getPurchaseOrder().getPurchaseGroup());//采购组 - erpOrderSaveReqVO.setCurrency(purchaseOrderWithDetailsVO.getPurchaseOrder().getCurrencyNumber()); // 货币码 - erpOrderSaveReqVO.setExchRate(purchaseOrderWithDetailsVO.getPurchaseOrder().getExchangeRate());//汇率 - erpOrderSaveReqVO.setZzhth(purchaseOrderWithDetailsVO.getPurchaseOrder().getContractNumber());//纸质合同号 - erpOrderSaveReqVO.setZxxyh(purchaseOrderWithDetailsVO.getPurchaseOrder().getPaperContractNumber());//小协议号 + 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); } - if (purchaseOrderWithDetailsVO.getOrderDetails() != null) { - purchaseOrderWithDetailsVO.getOrderDetails().forEach(orderDetail -> { - erpOrderSaveReqVO.setPoItem(orderDetail.getLineNum()); //行号 - erpOrderSaveReqVO.setMaterial(orderDetail.getRcvFactNum());//物料号 - erpOrderSaveReqVO.setQuantity(orderDetail.getQty());// 数量 - erpOrderSaveReqVO.setPoUnit(orderDetail.getUnt());// 计量单位 - erpOrderSaveReqVO.setNetPrice(orderDetail.getInTaxUprc());// 含税单价 - erpOrderSaveReqVO.setActsCtgrDtl(orderDetail.getActsCtgrDtl()); - }); - } + + // 4. 推送ERP并处理返回结果 String s = erpOrderService.submitOrderToErp061(erpOrderSaveReqVO); - log.info("订单推送成功,订单id【{}】", purchaseOrderWithDetailsVO.getPurchaseOrder().getId()); - String erpId = JSONObject.parseObject(s).get("id").toString(); - if (erpId != null) { - //更新订单 - int i = purchaseOrderMapper.updateById(new PurchaseOrderDO().setId(purchaseOrderWithDetailsVO.getPurchaseOrder().getId()).setOrderSAPNumber(erpId)); - if (i > 0) { - log.info("更新订单ERPID成功,订单id【{}】", purchaseOrderWithDetailsVO.getPurchaseOrder().getId()); + 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.info("订单更新失败,订单id【{}】", purchaseOrderWithDetailsVO.getPurchaseOrder().getId()); + log.error("订单更新失败,订单id【{}】", order.getId()); throw new RuntimeException("订单更新失败"); } + } else { + log.error("ERP返回ID为空,订单id【{}】", order.getId()); + throw new RuntimeException("ERP返回ID为空"); } }); - //推送后把erp订单id设置到订单里 - return "ERP推送成功"; } else { return "订单不存在"; @@ -341,27 +420,27 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { @Override public void updateOrderStatusByIdOrOrderNo(PurchaseOrderStsReqVO reqVO) { // 校验存在 - if (reqVO.getIds()!=null){ - validatePurchaseOrderExists(reqVO.getIds()); - } - if (reqVO.getOrderNos()!=null){ - validatePurchaseOrderNosExists(reqVO.getOrderNos()); - } + 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())); + 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); - } + if (purchaseOrderDO == null) { + throw exception(PURCHASE_ORDER_NOT_EXISTS); + } String mtrlTp = purchaseOrderDO.getMtrlTp(); - if ("RAW".equals(mtrlTp)){ + if ("RAW".equals(mtrlTp)) { //原料 MaterialRespVO materialRespVO = new MaterialRespVO(); materialRespVO.setMaterialType(mtrlTp); @@ -374,7 +453,7 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { materialDetails.setMaterialType(purchaseOrderDO.getMtrlTp()); materialRespVO.setMaterialDetails(List.of(materialDetails)); return CommonResult.success(materialRespVO); - }else { + } else { List detailsByOrderIds = prchOrdDtlService.getDetailsByOrderId(purchaseOrderDO.getId()); MaterialRespVO materialRespVO = new MaterialRespVO(); materialRespVO.setMaterialType(mtrlTp); @@ -399,6 +478,7 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { return contractService.linkOrder(reqVO); } + private void setValue(ErpOrderUpdateReqVO erpOrderUpdateReqVO, PurchaseOrderWithDetailsVO purchaseOrderWithDetailsVO) { //head PurchaseOrderDO purchaseOrderDO = purchaseOrderMapper.selectById(purchaseOrderWithDetailsVO.getPurchaseOrder().getId()); @@ -428,7 +508,7 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { item.setMaterial(prchOrdDtlDO.getRcvFactNum());//物料号 item.setPlant(prchOrdDtlDO.getRcvFactNum());//工厂 item.setStge_loc(prchOrdDtlDO.getRcvWrhNum());//库位 - item.setQuantity(prchOrdDtlDO.getQty());// 数量 + item.setQuantity(String.valueOf(prchOrdDtlDO.getQty()));// 数量 item.setPo_unit(prchOrdDtlDO.getUnt());// 计量单位 item.setNet_price(prchOrdDtlDO.getInTaxUprc());// 含税单价 item.setTax_code(prchOrdDtlDO.getTaxNum());//税码 @@ -452,8 +532,57 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { }); 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); + } + AdminUserRespDTO adminUserRespDTO = adminUserApi.getUser(SecurityFrameworkUtils.getLoginUserId()).getData(); + // 获取当前流程正在审批的任务节点 + 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; + } } 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 index 03b5759..2a15e8e 100644 --- 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 @@ -2,5 +2,5 @@ package com.zt.plat.module.contractorder.util.constants; public interface ProcessDefinitionKeyConstants { - String PURCHASE_ORDER_REVIEW_PROCESS = "purchase_order_review_process"; + String PURCHASE_ORDER_REVIEW_PROCESS = "purchase_order_review"; } 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 index 473d7b8..5a6ecc9 100644 --- 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 @@ -1,11 +1,15 @@ 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.LocalDateTime; +import java.time.LocalDate; +import java.util.List; /** * ERP采购订单保存请求VO @@ -14,168 +18,221 @@ import java.time.LocalDateTime; @Schema(description = "ERP采购订单保存请求参数") public class ErpOrderSaveReqVO { - @Schema(description = "公司代码") - @NotEmpty(message = "公司代码不能为空") - private String compCode; // BUKRS CHAR4 - - @Schema(description = "供应商帐号") - @NotEmpty(message = "供应商帐号不能为空") - private String vendor; // LIFNR CHAR10 - - @Schema(description = "采购凭证类型") - @NotEmpty(message = "采购凭证类型不能为空") - private String docType; // BSART CHAR4 - - @Schema(description = "采购凭证日期") - @NotEmpty(message = "采购凭证日期不能为空") - private LocalDateTime docDate; // BEDAT DATS8(格式:YYYYMMDD) - - @Schema(description = "采购组织") - @NotEmpty(message = "采购组织不能为空") - private String purchOrg; // EKORG CHAR4 - - @Schema(description = "采购组") - @NotEmpty(message = "采购组不能为空") - private String purGroup; // EKGRP CHAR3 - - @Schema(description = "货币码") - @NotEmpty(message = "货币码不能为空") - private String currency; // WAERS CUKY5 - - @Schema(description = "汇率") - private BigDecimal exchRate; // WKURS DEC9,5 - @NotEmpty(message = "纸质合同号不能为空(已启用财务共享单位)") - private String zzhth; // CHAR60 - @Schema(description = "小协议号(绿星链通填入合同名称)") - private String zxxyh; // CHAR60 + @NotEmpty(message = "订单号不能为空") + private String orderNo; - @Schema(description = "备注(绿星链通填入系统采购订单头号)") - private String znote; // CHAR60 + @Valid + @NotNull(message = "采购订单抬头信息不能为空") + private Head head; - @Schema(description = "代理方(使用客商编码)") - private String zlifnr; // CHAR60 + @Valid + @NotNull(message = "采购订单抬头扩展信息不能为空") + private Exte exte; + @Valid + @NotEmpty(message = "采购订单行项目列表不能为空") + private List items; - @Schema(description = "行号") - @NotEmpty(message = "行号不能为空") - private Long poItem; // EBELP NUMC5 + private JSONArray accts; // 科目分配信息(科目分配类别为K或P时使用) + @Valid + private List comps; // 委托加工物料信息(委托加工订单时使用) - @Schema(description = "物料号") - private String material; // MATNR CHAR18 + @Schema(description = "采购订单抬头信息") + @Data + public static class Head { + @Schema(description = "公司代码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "公司代码不能为空") + private String comp_code; // BUKRS CHAR4 - @Schema(description = "工厂") - @NotEmpty(message = "工厂不能为空") - private String plant; // WERKS CHAR4 + @Schema(description = "供应商帐号", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "供应商帐号不能为空") + private String vendor; // LIFNR CHAR10 - @Schema(description = "库存地点") - private String stgeLoc; // LGORT CHAR4 + @Schema(description = "采购凭证类型", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "采购凭证类型不能为空") + private String doc_type; // BSART CHAR4 - @Schema(description = "数量") - @NotEmpty(message = "数量不能为空") - private String quantity; // MENGE QUAN13,3 + @Schema(description = "采购凭证日期(YYYY-MM-DD)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "采购凭证日期不能为空") + private LocalDate doc_date; // BEDAT DATS8 - @Schema(description = "计量单位") - @NotNull(message = "计量单位不能为空") - private String poUnit; // MEINS UNIT3 + @Schema(description = "采购组织", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "采购组织不能为空") + private String purch_org; // EKORG CHAR4 - @Schema(description = "含税单价") - @NotNull(message = "含税单价不能为空") - private BigDecimal netPrice; // NETPR CURR11,2 + @Schema(description = "采购组", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "采购组不能为空") + private String pur_group; // EKGRP CHAR3 - @Schema(description = "价格单位(默认值1,表示以上单价对应的采购单位数量)") - private Integer priceUnit; // PEINH DEC5 + @Schema(description = "货币码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "货币码不能为空") + private String currency; // WAERS CUKY5 - @Schema(description = "税码") - private String taxCode; // MWSKZ CHAR2 + @Schema(description = "汇率(保留5位小数)") + private BigDecimal exch_rate; // WKURS DEC9,5 + } - @Schema(description = "基于GR的发票校验") - private String grBasedIv; // WEBRE CHAR1 + @Schema(description = "采购订单抬头扩展信息") + @Data + public static class Exte { + @Schema(description = "纸质合同号(已启用财务共享单位必填)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "纸质合同号不能为空") + private String zzhth; // CHAR60 - @Schema(description = "允许无限制过量交货") - private String unlimitedDlv; // UEBTK CHAR1 + @Schema(description = "小协议号(绿星链通填入合同名称)") + private String zxxyh; // CHAR60 - @Schema(description = "批次") - private String batch; // CHARG CHAR10 + @Schema(description = "备注(绿星链通填入系统采购订单头号)") + private String znote; // CHAR60 - @Schema(description = "项目类别(委托加工订单时填入L)") - private String itemCat; // PSTYP CHAR1(原表CAHR为笔误,按CHAR处理) + @Schema(description = "代理方(使用客商编码)") + private String zlifnr; // CHAR60 + } - @Schema(description = "科目分配类别(固定资产采购:A;服务采购:S-销售服务费、K-成本中心、F-订单)") - private String acctassCat; // KNTTP CHAR1 + @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 matlGroup; // MATKL CHAR9 + @Schema(description = "物料号") + private String material; // MATNR CHAR18 - @Schema(description = "短文本(服务采购订单必填,绿星链通系统必须填入)") - private String shortText; // TXZ01 CHAR40 + @Schema(description = "工厂", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "工厂不能为空") + private String plant; // WERKS CHAR4 - @Schema(description = "退货项目标识(退货行项目填X)") - private String retItem; // RETPO CHAR1 + @Schema(description = "库存地点") + private String stge_loc; // LGORT CHAR4 - @Schema(description = "免费项目标识(免费行项目填X)") - private String freeItem; // UMSON CHAR1 + @Schema(description = "数量(保留3位小数)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "数量不能为空") + private BigDecimal quantity; // MENGE QUAN13,3 - @Schema(description = "外部行项目号(绿星链通必填)") - private String vendrBatch; // LICHN CHAR15 + @Schema(description = "计量单位", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "计量单位不能为空") + private String po_unit; // MEINS UNIT3 - @Schema(description = "备注信息-需求单位") - private String noteXq; // TDLINE CHAR132 + @Schema(description = "含税单价(保留2位小数)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "含税单价不能为空") + private BigDecimal net_price; // NETPR CURR11,2 - @Schema(description = "备注信息-物料详细") - private String noteWl; // TDLINE CHAR132 + @Schema(description = "价格单位(默认值1)") + private Integer price_unit = 1; // PEINH DEC5 - @Schema(description = "交货起止日期(格式:YYYYMMDD-YYYYMMDD)") - private String vendMat; // IDNLF CHAR22(原表说明为交货起止日期,按说明定义) + @Schema(description = "税码") + private String tax_code; // MWSKZ CHAR2 - @Schema(description = "销售物料号(科目分配类别为S时必填)") - private String zmatnr; + @Schema(description = "基于GR的发票校验(Y/N)") + private String gr_basediv; // WEBRE CHAR1(原字段名gr_basediv保持与源数据一致) - @Schema(description = "统计型内部订单") - private String zaufnr; + @Schema(description = "允许无限制过量交货(Y/N)") + private String unlimited_dlv; // UEBTK CHAR1 - @Schema(description = "采购类别(0-生产性物资类;1-项目投资类)") - private String zpurty; + @Schema(description = "批次") + private String batch; // CHARG CHAR10 - @Schema(description = "原料湿重") - private BigDecimal zmenge; + @Schema(description = "项目类别(委托加工填L)") + private String item_cat; // PSTYP CHAR1 + @Schema(description = "科目分配类别(A-固定资产/S-服务/K-成本中心/F-订单)") + private String acctasscat; // KNTTP CHAR1 - @Schema(description = "科目分配的序号(从1开始编号)") - @NotEmpty(message = "科目分配的序号不能为空") - private String serialNo; // DZEKKN NUMC2 + @Schema(description = "物料组(服务采购必填)") + private String matl_group; // MATKL CHAR9 - @Schema(description = "总账科目编号") - private String glAccount; // SAKNR CHAR10 + @Schema(description = "短文本(服务采购必填)") + private String short_text; // TXZ01 CHAR40 - @Schema(description = "成本中心(科目分配类别为F时必填)") - private String costcenter; // KOSTL CHAR10 + @Schema(description = "退货项目标识(X-是)") + private String ret_item; // RETPO CHAR1 - @Schema(description = "订单号(科目分配类别为F时必填)") - private String orderid; // AUFNR CHAR12 + @Schema(description = "免费项目标识(X-是)") + private String free_item; // UMSON CHAR1 - @Schema(description = "主资产号(科目分配类别为A时必填)") - private String assetNo; // ANLN1 CHAR12 + @Schema(description = "外部行项目号(绿星链通必填)") + private String vendrbatch; // LICHN CHAR15 - @Schema(description = "资产子编号(科目分配类别为A时必填,固定值‘0’)") - private String subNumber; // ANLN2 CHAR4 + @Schema(description = "备注信息-需求单位") + private String note_xq; // TDLINE CHAR132 + @Schema(description = "备注信息-物料详细") + private String note_wl; // TDLINE CHAR132 - @Schema(description = "计划行号(从1开始编号)") - private String schedLine; // ETENR NUMC4 + @Schema(description = "交货起止日期(格式:YYYYMMDD-YYYYMMDD)") + private String vend_mat; // IDNLF CHAR22 - @Schema(description = "项目编号(从1开始编号)") - private String itemNo; // RSPOS NUMC4 + @Valid + private Itex itex; // 行项目扩展信息 - @Schema(description = "委托加工需求数量") - @NotNull(message = "委托加工需求数量不能为空") - private BigDecimal entryQuantity; // MENGE QUAN13,3 + } - @Schema(description = "组件计量单位(为空时使用基本计量单位)") - private String entryUom; // MEINS UNIT3 + @Schema(description = "行项目扩展信息") + @Data + public static class Itex { + @Schema(description = "销售物料号(科目分配类别为S时必填)") + private String zmatnr; - @Schema(description = " 科目分配详情") - private String actsCtgrDtl; + @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/service/erp/ErpOrderServiceImpl.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpOrderServiceImpl.java index 0310f90..25ab5a0 100644 --- 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 @@ -26,25 +26,12 @@ public class ErpOrderServiceImpl implements ErpOrderService { ErpSubmitReqDTO reqDTO = buildBaseReqDTO(createVo, "061"); Map req = new HashMap<>(); - Map head = new HashMap<>(); - // head - head.put("comp_code", createVo.getCompCode()); - head.put("vendor", createVo.getVendor()); - head.put("doc_type", createVo.getDocType()); - head.put("doc_date", createVo.getDocDate()); - head.put("purch_org", createVo.getPurchOrg()); - head.put("pur_group", createVo.getPurGroup()); - head.put("currency", createVo.getCurrency()); - head.put("exch_rate", createVo.getExchRate()); - req.put("head", head); - //exte - Map exte = new HashMap<>(); - exte.put("zzhth", createVo.getZzhth()); - exte.put("zxxyh", createVo.getZxxyh()); - exte.put("znote", createVo.getZnote()); - exte.put("zlifnr", createVo.getZlifnr()); - req.put("exte", exte); getMaps(createVo, req); + 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); @@ -53,7 +40,7 @@ public class ErpOrderServiceImpl implements ErpOrderService { private ErpSubmitReqDTO buildBaseReqDTO(ErpOrderSaveReqVO vo, String funcnr) { ErpSubmitReqDTO reqDTO = new ErpSubmitReqDTO(); reqDTO.setFuncnr(funcnr); - reqDTO.setBskey(vo.getOrderid()); + reqDTO.setBskey(vo.getOrderNo()); reqDTO.setUsrid(String.valueOf(SecurityFrameworkUtils.getLoginUserId())); reqDTO.setUsrnm((SecurityFrameworkUtils.getLoginUserNickname())); return reqDTO; @@ -66,35 +53,35 @@ public class ErpOrderServiceImpl implements ErpOrderService { } private void getMaps(ErpOrderSaveReqVO vo, Map req) { - List> items = new ArrayList<>(); - Map item = new HashMap<>(); - item.put("po_item", vo.getPoItem()); - item.put("material", vo.getMaterial()); - item.put("plant", vo.getPlant()); - item.put("stge_loc", vo.getStgeLoc()); - item.put("quantity", vo.getQuantity()); - item.put("po_unit", vo.getPoUnit()); - item.put("net_price", vo.getNetPrice()); - item.put("price_unit", vo.getPriceUnit()); - item.put("tax_code", vo.getTaxCode()); - item.put("gr_based_iv", vo.getGrBasedIv()); - item.put("unlimited_dlv", vo.getUnlimitedDlv()); - item.put("batch", vo.getBatch()); - item.put("item_cat", vo.getItemCat()); - item.put("acctass_cat", vo.getAcctassCat()); - item.put("matl_group", vo.getMatlGroup()); - item.put("short_text", vo.getShortText()); - item.put("ret_item", vo.getRetItem()); - item.put("free_item", vo.getFreeItem()); - item.put("vendr_batch", vo.getVendrBatch()); - item.put("note_xq", vo.getNoteXq()); - item.put("note_wl", vo.getNoteWl()); - item.put("vend_mat", vo.getVendMat()); - items.add(item); - if ("K".equals(vo.getAcctassCat()) || "P".equals(vo.getAcctassCat())) { - req.put("acct", vo.getActsCtgrDtl()); - } - req.put("item", items); +// List> items = new ArrayList<>(); +// Map item = new HashMap<>(); +// item.put("po_item", vo.getPoItem()); +// item.put("material", vo.getMaterial()); +// item.put("plant", vo.getPlant()); +// item.put("stge_loc", vo.getStgeLoc()); +// item.put("quantity", vo.getQuantity()); +// item.put("po_unit", vo.getPoUnit()); +// item.put("net_price", vo.getNetPrice()); +// item.put("price_unit", vo.getPriceUnit()); +// item.put("tax_code", vo.getTaxCode()); +// item.put("gr_based_iv", vo.getGrBasedIv()); +// item.put("unlimited_dlv", vo.getUnlimitedDlv()); +// item.put("batch", vo.getBatch()); +// item.put("item_cat", vo.getItemCat()); +// item.put("acctass_cat", vo.getAcctassCat()); +// item.put("matl_group", vo.getMatlGroup()); +// item.put("short_text", vo.getShortText()); +// item.put("ret_item", vo.getRetItem()); +// item.put("free_item", vo.getFreeItem()); +// item.put("vendr_batch", vo.getVendrBatch()); +// item.put("note_xq", vo.getNoteXq()); +// item.put("note_wl", vo.getNoteWl()); +// item.put("vend_mat", vo.getVendMat()); +// items.add(item); +// if ("K".equals(vo.getAcctassCat()) || "P".equals(vo.getAcctassCat())) { +// req.put("acct", vo.getActsCtgrDtl()); +// } +// req.put("item", items); } @Override From a0a27c4d0131de41698de59f8bfa40c27394bd0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BD=98=E8=8D=A3=E6=99=9F?= <9691125+pan-rongsheng@user.noreply.gitee.com> Date: Tue, 21 Oct 2025 18:04:57 +0800 Subject: [PATCH 108/120] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../erp/service/erp/ErpOrderServiceImpl.java | 32 ------------------- 1 file changed, 32 deletions(-) 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 index 25ab5a0..6eed869 100644 --- 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 @@ -26,7 +26,6 @@ public class ErpOrderServiceImpl implements ErpOrderService { ErpSubmitReqDTO reqDTO = buildBaseReqDTO(createVo, "061"); Map req = new HashMap<>(); - getMaps(createVo, req); req.put("head", createVo.getHead()); req.put("item", createVo.getItems()); req.put("comp", createVo.getComps()); @@ -52,37 +51,6 @@ public class ErpOrderServiceImpl implements ErpOrderService { return response.get("resStr"); } - private void getMaps(ErpOrderSaveReqVO vo, Map req) { -// List> items = new ArrayList<>(); -// Map item = new HashMap<>(); -// item.put("po_item", vo.getPoItem()); -// item.put("material", vo.getMaterial()); -// item.put("plant", vo.getPlant()); -// item.put("stge_loc", vo.getStgeLoc()); -// item.put("quantity", vo.getQuantity()); -// item.put("po_unit", vo.getPoUnit()); -// item.put("net_price", vo.getNetPrice()); -// item.put("price_unit", vo.getPriceUnit()); -// item.put("tax_code", vo.getTaxCode()); -// item.put("gr_based_iv", vo.getGrBasedIv()); -// item.put("unlimited_dlv", vo.getUnlimitedDlv()); -// item.put("batch", vo.getBatch()); -// item.put("item_cat", vo.getItemCat()); -// item.put("acctass_cat", vo.getAcctassCat()); -// item.put("matl_group", vo.getMatlGroup()); -// item.put("short_text", vo.getShortText()); -// item.put("ret_item", vo.getRetItem()); -// item.put("free_item", vo.getFreeItem()); -// item.put("vendr_batch", vo.getVendrBatch()); -// item.put("note_xq", vo.getNoteXq()); -// item.put("note_wl", vo.getNoteWl()); -// item.put("vend_mat", vo.getVendMat()); -// items.add(item); -// if ("K".equals(vo.getAcctassCat()) || "P".equals(vo.getAcctassCat())) { -// req.put("acct", vo.getActsCtgrDtl()); -// } -// req.put("item", items); - } @Override public String submitOrderToErp062(ErpOrderUpdateReqVO updateVo) { From 289cb1a38298dd3fcdade8a6514c354782859fc4 Mon Sep 17 00:00:00 2001 From: guojunyun Date: Wed, 22 Oct 2025 09:32:16 +0800 Subject: [PATCH 109/120] =?UTF-8?q?=E5=90=88=E5=90=8C=E6=A3=80=E7=B4=A2?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=90=88=E5=90=8C=E5=88=86=E7=B1=BB=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/contract/vo/contract/ContractPageReqVO.java | 3 +++ .../contractorder/dal/mysql/contract/ContractMainMapper.java | 1 + 2 files changed, 4 insertions(+) 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 294acac..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 @@ -38,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/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 bc36ddf..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 @@ -23,6 +23,7 @@ public interface ContractMainMapper extends BaseMapperX { .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 From 0b159891df20f0ef58cef05293b02d42f221a0b2 Mon Sep 17 00:00:00 2001 From: guojunyun Date: Wed, 22 Oct 2025 10:01:50 +0800 Subject: [PATCH 110/120] =?UTF-8?q?=E6=A0=B9=E6=8D=AE=E5=90=88=E5=90=8CID?= =?UTF-8?q?=E8=8E=B7=E5=BE=97=E5=85=B3=E8=81=94=E5=90=88=E5=90=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../contract/vo/contract/RelationRespVO.java | 15 +++++++++++ .../service/contract/ContractService.java | 8 ++++++ .../service/contract/ContractServiceImpl.java | 26 +++++++++++++++++++ 3 files changed, 49 insertions(+) create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/RelationRespVO.java 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/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 e758493..7a3b35c 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 @@ -163,6 +163,14 @@ public interface ContractService { */ Boolean relation(RelationReqVo reqVo); + /** + * 根据合同ID获得关联合同 + * + * @param id 上合同ID + * @return 上下游合同ID + */ + RelationRespVO getRelation(Long id); + /** * 下载文件 * 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 91f33c9..765a864 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 @@ -1386,6 +1386,32 @@ public class ContractServiceImpl implements ContractService { 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 { From c96f9cfd2140c4a55cd5d5bdd65723776b40fdf5 Mon Sep 17 00:00:00 2001 From: guojunyun Date: Wed, 22 Oct 2025 10:03:20 +0800 Subject: [PATCH 111/120] =?UTF-8?q?=E6=A0=B9=E6=8D=AE=E5=90=88=E5=90=8CID?= =?UTF-8?q?=E8=8E=B7=E5=BE=97=E5=85=B3=E8=81=94=E5=90=88=E5=90=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/contractorder/service/contract/ContractService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 7a3b35c..6e44a5c 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 @@ -166,7 +166,7 @@ public interface ContractService { /** * 根据合同ID获得关联合同 * - * @param id 上合同ID + * @param id 合同ID * @return 上下游合同ID */ RelationRespVO getRelation(Long id); From 8e85e47a1d2ee0fd5118d6534ead388f841b4d64 Mon Sep 17 00:00:00 2001 From: qianshijiang <1965297290@qq.com> Date: Wed, 22 Oct 2025 10:25:43 +0800 Subject: [PATCH 112/120] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 6 ++ .../src/main/resources/logback-spring.xml | 76 +++++++++++++++++++ 2 files changed, 82 insertions(+) create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/resources/logback-spring.xml diff --git a/pom.xml b/pom.xml index 705a25b..c92f4b7 100644 --- a/pom.xml +++ b/pom.xml @@ -211,6 +211,12 @@ liss + + qsj + + qsj + + 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} + + + + + + + + + + + + + + + + + + + + + + From 3ced883117554579151e7fe47a3ee29cabb35638 Mon Sep 17 00:00:00 2001 From: liss <1780094091@qq.com> Date: Wed, 22 Oct 2025 10:30:46 +0800 Subject: [PATCH 113/120] =?UTF-8?q?erp=E6=A0=B9=E6=8D=AE=E5=B7=A5=E5=8E=82?= =?UTF-8?q?=E3=80=81=E7=89=A9=E6=96=99=E6=9F=A5=E8=AF=A2=E7=94=9F=E4=BA=A7?= =?UTF-8?q?=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plat/module/erp/api/ErpExternalApi.java | 6 ++++++ .../api/dto/ErpProductiveVersionReqDTO.java | 20 +++++++++++++++++++ .../module/erp/api/ErpExternalApiImpl.java | 15 ++++++++++++++ .../erp/ErpProductiveVersionController.java | 7 +++++++ .../erp/vo/ErpProductiveVersionPageReqVO.java | 2 ++ .../erp/vo/ErpProductiveVersionRespVO.java | 3 +++ .../erp/vo/ErpProductiveVersionSaveReqVO.java | 4 ++++ .../erp/ErpProductiveVersionDO.java | 3 +++ .../mysql/erp/ErpProductiveVersionMapper.java | 11 ++++++++++ .../erp/ErpProcessDetailServiceImpl.java | 5 +++-- .../erp/ErpProductiveVersionService.java | 5 +++++ .../erp/ErpProductiveVersionServiceImpl.java | 17 ++++++++++++++++ .../mapper/ErpProductiveVersionMapper.xml | 6 ++++++ 13 files changed, 102 insertions(+), 2 deletions(-) create mode 100644 zt-module-erp/zt-module-erp-api/src/main/java/com/zt/plat/module/erp/api/dto/ErpProductiveVersionReqDTO.java 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 e37718b..f789408 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,5 +1,7 @@ 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; @@ -10,6 +12,7 @@ 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.HashMap; import java.util.Map; @@ -28,4 +31,7 @@ public interface ErpExternalApi { @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-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 bbf5b2e..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,15 +1,22 @@ 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.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 实现类 * @@ -22,6 +29,8 @@ public class ErpExternalApiImpl implements ErpExternalApi { @Resource private ErpConfig erpConfig; + @Resource + private ErpProductiveVersionService erpProductiveVersionService; @Override public HashMap submitDataToErp(ErpSubmitReqDTO reqDTO) { @@ -34,4 +43,10 @@ public class ErpExternalApiImpl implements ErpExternalApi { 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/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/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/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/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/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 414280a..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 @@ -149,11 +149,12 @@ public class ErpProcessDetailServiceImpl implements ErpProcessDetailService { new LambdaQueryWrapperX() .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.getWorkCenterNumber(), + asset -> asset.getProcessId() + "-" + asset.getProcessingNumber() + "-" + asset.getProcessingName() + "-" + asset.getWorkCenterNumber(), ErpProcessDetailDO::getId, (existing, replacement) -> replacement)); myRedisConfig.addRedisCacheMap(result.key, numberIdMap); } @@ -188,7 +189,7 @@ 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.getWorkCenterNumber(); + String mapKey = asset.getProcessId() + "-" + asset.getProcessingNumber()+ "-" + asset.getProcessingName()+ "-" + asset.getWorkCenterNumber(); existingNumbers.put(mapKey, asset.getId()); } myRedisConfig.addRedisCacheMap(key, existingNumbers); 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 4e6e622..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,6 +7,7 @@ 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.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; @@ -104,6 +105,22 @@ 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") 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 c64aa8e..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,4 +9,10 @@ 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/ --> + + UPDATE sply_erp_pdtv_ver + SET IS_ENB = 1 + WHERE FACT_NUM = #{factoryNumber} + AND MTRL_NUM = #{materialNumber} + \ No newline at end of file From ecff39b2e578e53ec4584862db1f2daad5df07ad Mon Sep 17 00:00:00 2001 From: liss <1780094091@qq.com> Date: Wed, 22 Oct 2025 10:47:00 +0800 Subject: [PATCH 114/120] =?UTF-8?q?erp=E6=A0=B9=E6=8D=AE=E5=B7=A5=E5=8E=82?= =?UTF-8?q?=E3=80=81=E7=89=A9=E6=96=99=E6=9F=A5=E8=AF=A2=E7=94=9F=E4=BA=A7?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E5=A4=96=E9=83=A8=E8=B0=83=E7=94=A8=E6=B5=8B?= =?UTF-8?q?=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- zt-module-base/zt-module-base-server/pom.xml | 6 ++++++ .../base/MaterialInfomationController.java | 8 ++++++++ .../service/base/MaterialInfomationService.java | 1 + .../base/MaterialInfomationServiceImpl.java | 17 +++++++++++++++++ .../zt/plat/module/erp/api/ErpExternalApi.java | 1 - 5 files changed, 32 insertions(+), 1 deletion(-) 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/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/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-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 f789408..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 @@ -12,7 +12,6 @@ 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.HashMap; import java.util.Map; From 7b7658bab1cbf0db2e9523c47970cf3a6fff2d99 Mon Sep 17 00:00:00 2001 From: guojunyun Date: Wed, 22 Oct 2025 11:39:46 +0800 Subject: [PATCH 115/120] =?UTF-8?q?=E8=B0=83=E6=95=B4=E4=BB=B7=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E4=B8=8A=E9=99=90=E3=80=81=E4=B8=8B=E7=BA=BF=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=E7=B1=BB=E5=9E=8B=E4=BF=AE=E6=94=B9BigDecimal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/contractorder/api/dto/contract/DeductRespDTO.java | 4 ++-- .../controller/admin/contract/vo/contract/DeductRespVO.java | 4 ++-- .../admin/contract/vo/contract/DeductSaveReqVO.java | 4 ++-- .../dal/dataobject/contract/ContractDeductDO.java | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) 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 index 6184e42..ae49cc4 100644 --- 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 @@ -32,10 +32,10 @@ public class DeductRespDTO { private String rangeWay; @Schema(description = "上限") - private String up; + private BigDecimal up; @Schema(description = "下限") - private String down; + private BigDecimal down; @Schema(description = "类型(字典:STLM_COEF)") 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/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 index c37f024..e544e2b 100644 --- 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 @@ -31,10 +31,10 @@ public class DeductRespVO { private String rangeWay; @Schema(description = "上限") - private String up; + private BigDecimal up; @Schema(description = "下限") - private String down; + private BigDecimal down; @Schema(description = "类型(字典:STLM_COEF)") 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/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 index 8246ab7..fa796e3 100644 --- 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 @@ -31,10 +31,10 @@ public class DeductSaveReqVO { private String rangeWay; @Schema(description = "上限") - private String up; + private BigDecimal up; @Schema(description = "下限") - private String down; + private BigDecimal down; @Schema(description = "类型(字典:STLM_COEF)") private String type; 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 f89b3d0..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 @@ -63,12 +63,12 @@ public class ContractDeductDO extends BusinessBaseDO { * 上限 */ @TableField("UP") - private String up; + private BigDecimal up; /** * 下限 */ @TableField("DOWN") - private String down; + private BigDecimal down; /** * 类型(字典:STLM_COEF) */ From 3d396dbb5292fa1f47c458f92680544d29cbda59 Mon Sep 17 00:00:00 2001 From: guojunyun Date: Wed, 22 Oct 2025 16:02:36 +0800 Subject: [PATCH 116/120] =?UTF-8?q?=E5=90=88=E5=90=8C=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E4=BF=AE=E6=94=B9=EF=BC=9A=E5=8E=9F=E5=B8=81?= =?UTF-8?q?=E9=87=91=E9=A2=9D-=E5=8F=98=E6=9B=B4=E5=90=8E=E3=80=81?= =?UTF-8?q?=E6=9C=AC=E5=B8=81=E9=87=91=E9=A2=9D-=E5=8F=98=E6=9B=B4?= =?UTF-8?q?=E5=90=8E=E9=BB=98=E8=AE=A40=20=E6=8F=90=E4=BA=A4erp=E5=88=A4?= =?UTF-8?q?=E6=96=AD=E9=80=BB=E8=BE=91=E4=BF=AE=E6=94=B9=EF=BC=9A=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E9=94=99=E8=AF=AF=E8=BF=94=E5=9B=9E=E5=80=BC=E8=A7=A3?= =?UTF-8?q?=E6=9E=90=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/contract/ContractServiceImpl.java | 19 +++++++++++++++---- .../erp/service/erp/ErpContractService.java | 3 ++- .../service/erp/ErpContractServiceImpl.java | 5 ++--- .../zt/plat/module/erp/utils/ErpConfig.java | 2 ++ 4 files changed, 21 insertions(+), 8 deletions(-) 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 765a864..b6a5b21 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 @@ -54,6 +54,7 @@ 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.*; @@ -171,7 +172,11 @@ public class ContractServiceImpl implements ContractService { // 合同状态保存为草稿 contractMainDO.setStatus(DictEnum.BSE_CTRT_STS_DRAFT.getCode()); // 生成系统合同编号 - contractMainDO.setSystemContractNumber(generateSystemContractNumber(reqVO.getCategory())); + 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); @@ -1352,7 +1357,7 @@ public class ContractServiceImpl implements ContractService { } else { contractMainDO.setStatus(DictEnum.BSE_CTRT_STS_PUSH_ERROR.getCode()); contractMainDO.setErpStatus(DictEnum.ERP_REQ_STS_RLBK.getCode()); - // contractMainDO.setCause(erpResult.getStr("errMsg")); + contractMainDO.setCause(erpResult.getStr("errMsg")); contractMainMapper.updateById(contractMainDO); } } else { @@ -1366,8 +1371,14 @@ public class ContractServiceImpl implements ContractService { private JSONObject sendToErp(ErpContractSaveReqVO erpContractVO) { JSONObject erpResult = new JSONObject(); try { - String result = erpContractService.submitErp(erpContractVO); - erpResult.putOnce("success", true); + 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()); 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 ca681b4..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; /** @@ -77,5 +78,5 @@ public interface ErpContractService { * @param erpContractVO ERP合同映射数据 * @return ERP合同映射 */ - String submitErp(ErpContractSaveReqVO erpContractVO); + 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 6583933..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 @@ -30,7 +30,6 @@ 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 实现类 @@ -227,7 +226,7 @@ public class ErpContractServiceImpl implements ErpContractService { } @Override - public String submitErp(ErpContractSaveReqVO erpContractVO) { + public HashMap submitErp(ErpContractSaveReqVO erpContractVO) { // 转换为DO ErpContractDO erpContract = BeanUtils.toBean(erpContractVO, ErpContractDO.class); @@ -337,7 +336,7 @@ public class ErpContractServiceImpl implements ErpContractService { HashMap response = erpExternalApi.submitDataToErp(erpSubmitReqDTO); - return response.get("resStr"); + return response; } /** 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 index cdcf879..82d5b65 100644 --- 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 @@ -151,6 +151,8 @@ public class ErpConfig { 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); } From a2794fecfb2c3ae5b9116ee635444b26a4ef299a Mon Sep 17 00:00:00 2001 From: chenbowen Date: Wed, 22 Oct 2025 16:06:26 +0800 Subject: [PATCH 117/120] =?UTF-8?q?=E6=A8=A1=E5=9D=97=E7=8B=AC=E7=AB=8B?= =?UTF-8?q?=E5=91=BD=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- base-server/src/main/resources/application.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 From 7c283993a578821d45e1b883d0ab029848d33a37 Mon Sep 17 00:00:00 2001 From: guojunyun Date: Wed, 22 Oct 2025 16:47:31 +0800 Subject: [PATCH 118/120] =?UTF-8?q?=E6=8F=90=E4=BA=A4erp=E5=88=A4=E6=96=AD?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E4=BF=AE=E6=94=B9=EF=BC=9A=E8=AF=B7=E6=B1=82?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E5=92=8C=E8=BF=94=E5=9B=9E=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/contract/ContractController.java | 4 +- .../service/contract/ContractService.java | 6 +- .../service/contract/ContractServiceImpl.java | 87 +++++++++---------- 3 files changed, 47 insertions(+), 50 deletions(-) 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 fef3ebe..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 @@ -145,8 +145,8 @@ public class ContractController implements BusinessControllerMarker { @PostMapping("/submit/erp") @Operation(summary = "提交ERP") @PreAuthorize("@ss.hasPermission('base:contract:erp')") - public CommonResult> submitErp(@RequestBody List ids) { - return success(contractService.submitErp(ids)); + public CommonResult submitErp(@RequestParam("id") Long id) { + return success(contractService.submitErp(id)); } @GetMapping("/list/up-not-relation") 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 6e44a5c..e5886a1 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 @@ -102,10 +102,10 @@ public interface ContractService { /** * 提交ERP * - * @param ids 合同ID集合 - * @return + * @param id 合同ID + * @return 提交结果 */ - List submitErp(List ids); + JSONObject submitErp(Long id); /** * 删除合同 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 b6a5b21..3457ebb 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 @@ -1317,55 +1317,52 @@ public class ContractServiceImpl implements ContractService { } @Override - public List submitErp(List ids) { + public JSONObject submitErp(Long id) { - List results = new ArrayList<>(); + JSONObject result = new JSONObject(); - // 遍历合同ID集合 - ids.forEach(id -> { + // 查询合同信息 + ContractMainDO contractMainDO = contractMainMapper.selectById(id); - // 查询合同信息 - ContractMainDO contractMainDO = contractMainMapper.selectById(id); + // 合同数据不存在 + if (contractMainDO == null) { + throw exception(CONTRACT_NOT_EXISTS); + } - if (contractMainDO != null) { + // 合同状态校验 + 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()))) { - // 合同状态校验 - 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()); + } - throw exception(CONTRACT_STATUS_NOT_SUBMIT_ERP, - DictEnum.getByCodeAndType(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel()); - } + // 生成ERP合同映射表 + ErpContractSaveReqVO erpContractVO = getErpContract(contractMainDO); - // 生成ERP合同映射表 - ErpContractSaveReqVO erpContractVO = getErpContract(contractMainDO); + // 调用ERP模块 + JSONObject erpResult = sendToErp(erpContractVO); + log.info("合同提交ERP结果:{}", erpResult); + result.putOnce("success", erpResult.getBool("success")); - // 调用ERP模块 - JSONObject erpResult = sendToErp(erpContractVO); - log.info("合同提交ERP结果:{}", erpResult); - String result = id - +"-"+erpResult.getBool("success") - +(erpResult.getBool("success") ? "" : "-" + erpResult.getStr("errMsg")); - results.add(result); + // 更新合同状态 + if (erpResult.getBool("success")) { + contractMainDO.setStatus(DictEnum.BSE_CTRT_STS_IN_PROGRESS.getCode()); + contractMainDO.setErpStatus(DictEnum.ERP_REQ_STS_FIND.getCode()); + contractMainMapper.updateById(contractMainDO); - // 更新合同状态 - if (erpResult.getBool("success")) { - contractMainDO.setStatus(DictEnum.BSE_CTRT_STS_IN_PROGRESS.getCode()); - contractMainDO.setErpStatus(DictEnum.ERP_REQ_STS_FIND.getCode()); - contractMainMapper.updateById(contractMainDO); - } 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); - } - } else { - results.add(id+"-"+"false"+"-"+CONTRACT_NOT_EXISTS); - } - }); + 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); - return results; + result.putOnce("data", erpResult.getStr("errMsg")); + } + + return result; } private JSONObject sendToErp(ErpContractSaveReqVO erpContractVO) { @@ -1554,10 +1551,10 @@ public class ContractServiceImpl implements ContractService { // 更新合同 contractMainMapper.updateById(contractMainDO); - }); - // 重新提交erp - submitErp(ids); + // 重新提交erp + submitErp(id); + }); return true; } @@ -1585,10 +1582,10 @@ public class ContractServiceImpl implements ContractService { // 更新合同 contractMainMapper.updateById(contractMainDO); - }); - // 重新提交erp - submitErp(ids); + // 重新提交erp + submitErp(id); + }); return true; } From 4d85ea4ebd53ae7967bd0f26966c285aa61ec835 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BD=98=E8=8D=A3=E6=99=9F?= <9691125+pan-rongsheng@user.noreply.gitee.com> Date: Wed, 22 Oct 2025 17:29:29 +0800 Subject: [PATCH 119/120] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../OnlyOfficeCallbackController.java | 15 + .../service/OnlyOfficeCallbackService.java | 7 + .../OnlyOfficeCallbackServiceImpl.java | 155 ++++++++++ .../service/tmpltp/TmplInscBsnRelService.java | 7 + .../tmpltp/TmplInscBsnRelServiceImpl.java | 18 +- .../enums/salesorder/ErrorCodeConstants.java | 17 ++ .../PurchaseOrderController.java | 54 ++-- .../purchaseorder/vo/DownOrUpOrderReqVO.java | 19 ++ .../purchaseorder/vo/DownOrUpOrderRespVO.java | 41 +++ .../purchaseorder/vo/PrchOrdDtlPageReqVO.java | 2 + .../purchaseorder/vo/PrchOrdDtlSaveReqVO.java | 2 + .../salesorder/SalesOrderController.java | 124 ++++++++ .../SalesOrderDetailController.java | 118 ++++++++ .../salesorder/vo/SaleOrderDetailsRespVO.java | 194 +++++++++++++ .../vo/SalesOrderDetailPageReqVO.java | 90 ++++++ .../salesorder/vo/SalesOrderDetailRespVO.java | 119 ++++++++ .../vo/SalesOrderDetailSaveReqVO.java | 102 +++++++ .../salesorder/vo/SalesOrderPageReqVO.java | 137 +++++++++ .../admin/salesorder/vo/SalesOrderReqVO.java | 23 ++ .../admin/salesorder/vo/SalesOrderRespVO.java | 201 +++++++++++++ .../salesorder/vo/SalesOrderSaveReqVO.java | 182 ++++++++++++ .../salesorder/vo/SalesOrderStsReqVO.java | 22 ++ .../purchaseorder/PrchOrdDtlDO.java | 5 + .../purchaseorder/PurchaseOrderDO.java | 21 ++ .../dataobject/salesorder/SalesOrderDO.java | 268 ++++++++++++++++++ .../salesorder/SalesOrderDetailDO.java | 158 +++++++++++ .../purchaseorder/PurchaseOrderMapper.java | 2 +- .../salesorder/SalesOrderDetailMapper.java | 51 ++++ .../mysql/salesorder/SalesOrderMapper.java | 62 ++++ .../service/contract/ContractService.java | 8 +- .../service/contract/ContractServiceImpl.java | 14 - .../purchaseorder/PurchaseOrderService.java | 23 +- .../PurchaseOrderServiceImpl.java | 98 ++++++- .../salesorder/SalesOrderDetailService.java | 85 ++++++ .../SalesOrderDetailServiceImpl.java | 111 ++++++++ .../service/salesorder/SalesOrderService.java | 65 +++++ .../salesorder/SalesOrderServiceImpl.java | 99 +++++++ .../purchaseorder/PurchaseOrderMapper.xml | 9 +- 38 files changed, 2667 insertions(+), 61 deletions(-) create mode 100644 zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/salesorder/ErrorCodeConstants.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/DownOrUpOrderReqVO.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/DownOrUpOrderRespVO.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/salesorder/SalesOrderController.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/salesorder/SalesOrderDetailController.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/salesorder/vo/SaleOrderDetailsRespVO.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/salesorder/vo/SalesOrderDetailPageReqVO.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/salesorder/vo/SalesOrderDetailRespVO.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/salesorder/vo/SalesOrderDetailSaveReqVO.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/salesorder/vo/SalesOrderPageReqVO.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/salesorder/vo/SalesOrderReqVO.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/salesorder/vo/SalesOrderRespVO.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/salesorder/vo/SalesOrderSaveReqVO.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/salesorder/vo/SalesOrderStsReqVO.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/salesorder/SalesOrderDO.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/salesorder/SalesOrderDetailDO.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/salesorder/SalesOrderDetailMapper.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/salesorder/SalesOrderMapper.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/salesorder/SalesOrderDetailService.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/salesorder/SalesOrderDetailServiceImpl.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/salesorder/SalesOrderService.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/salesorder/SalesOrderServiceImpl.java 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 3735ad1..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 @@ -39,4 +39,19 @@ public class OnlyOfficeCallbackController { 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); + return new ResponseEntity<>(response, HttpStatus.OK); + } } 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 7ba5e38..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 @@ -9,4 +9,11 @@ public interface OnlyOfficeCallbackService { * @param callback 回调数据 */ 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 90db08b..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 @@ -209,4 +209,159 @@ public class OnlyOfficeCallbackServiceImpl implements OnlyOfficeCallbackService } + + + + @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/service/tmpltp/TmplInscBsnRelService.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplInscBsnRelService.java index ec25783..8e57b3c 100644 --- 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 @@ -68,4 +68,11 @@ public interface TmplInscBsnRelService { * @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 index a7a5745..3521570 100644 --- 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 @@ -145,6 +145,20 @@ public class TmplInscBsnRelServiceImpl implements TmplInscBsnRelService { } } + @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() @@ -152,7 +166,7 @@ public class TmplInscBsnRelServiceImpl implements TmplInscBsnRelService { ), TmplInscItmBsnRespVO.class); tmplInscItmBsnRespVOS.forEach(tmplInscItmBsnRespVO -> { tmplInscBsnRelRespVO.getInstanceItemRespVOS().forEach(instanceItemRespVO -> { - if (tmplInscItmBsnRespVO.getInscItmId().equals(instanceItemRespVO.getId())){ + if (tmplInscItmBsnRespVO.getInscItmId().equals(instanceItemRespVO.getId())) { tmplInscItmBsnRespVO.setItmName(instanceItemRespVO.getItmName()); } }); @@ -273,4 +287,6 @@ public class TmplInscBsnRelServiceImpl implements TmplInscBsnRelService { log.info("删除业务实例条款值【{}】", ids); } } + + } 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/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 index 2980070..339592c 100644 --- 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 @@ -3,6 +3,7 @@ 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; @@ -19,6 +20,7 @@ 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; @@ -27,11 +29,13 @@ 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.*; @@ -75,7 +79,7 @@ public class PurchaseOrderController implements BusinessControllerMarker { @DeleteMapping("/delete-list") @Parameter(name = "ids", description = "编号", required = true) @Operation(summary = "批量删除采购订单") - @PreAuthorize("@ss.hasPermission('bse:purchase-order:delete')") + @PreAuthorize("@ss.hasPermission('bse:purchase-order:delete')") public CommonResult deletePurchaseOrderList(@RequestBody BatchDeleteReqVO req) { purchaseOrderService.deletePurchaseOrderListByIds(req.getIds()); return success(true); @@ -83,12 +87,12 @@ public class PurchaseOrderController implements BusinessControllerMarker { @GetMapping("/get") @Operation(summary = "获得采购订单") - @Parameter(name = "id", description = "编号", required = true, example = "1024") + @Parameter(name = "id", description = "id是订单主键,splyBsnTp是订单类型采购或者是消费", required = true, example = "1024") @PreAuthorize("@ss.hasPermission('bse:purchase-order:query')") - public CommonResult getPurchaseOrder(@RequestParam("id") Long id) { - PurchaseOrderDO purchaseOrder = purchaseOrderService.getPurchaseOrder(id); + 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){ + if (purchaseOrderRespVO == null) { return success(null); } purchaseOrderService.setOrderDetails(purchaseOrderRespVO); @@ -100,7 +104,7 @@ public class PurchaseOrderController implements BusinessControllerMarker { @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); + PageResult purchaseOrderRespVOPageResult = BeanUtils.toBean(pageResult, PurchaseOrderRespVO.class); purchaseOrderRespVOPageResult.getList().forEach(purchaseOrderRespVO -> purchaseOrderService.setOrderDetails(purchaseOrderRespVO)); return success(purchaseOrderRespVOPageResult); } @@ -110,12 +114,12 @@ public class PurchaseOrderController implements BusinessControllerMarker { @PreAuthorize("@ss.hasPermission('bse:purchase-order:export')") @ApiAccessLog(operateType = EXPORT) public void exportPurchaseOrderExcel(@Valid PurchaseOrderPageReqVO pageReqVO, - HttpServletResponse response) throws IOException { + 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)); + BeanUtils.toBean(list, PurchaseOrderRespVO.class)); } //提交订单审核 @@ -131,7 +135,7 @@ public class PurchaseOrderController implements BusinessControllerMarker { @Operation(summary = "批量提交订单审核") @PreAuthorize("@ss.hasPermission('bse:purchase-order:update')") public CommonResult submitOrder(@RequestBody @Validated @NotEmpty(message = "采购订单id不能为空") List ids) { - System.out.println("ids:"+ids); + System.out.println("ids:" + ids); ids.forEach(id -> purchaseOrderService.submitOrder(Long.valueOf(id))); return success(true); } @@ -141,25 +145,27 @@ public class PurchaseOrderController implements BusinessControllerMarker { @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)); + 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)); + return success(purchaseOrderService.submitErp062(id)); } //通过订单号查询订单信息 @PostMapping("/get-order-by-order-no") @Operation(summary = "通过订单号查询订单信息", description = "通过订单号查询订单信息") - public CommonResult> getOrderByOrderNo(@RequestBody @Validated @NotEmpty(message = "采购订单不能为空") List orderNos){ + 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){ + public CommonResult updateOrderStatus(@RequestBody @Validated PurchaseOrderStsReqVO req) { purchaseOrderService.updateOrderStatusByIdOrOrderNo(req); return success(true); } @@ -168,26 +174,34 @@ public class PurchaseOrderController implements BusinessControllerMarker { @GetMapping("/material") @Operation(summary = "查询物料接口") public CommonResult getMaterialList(@RequestParam - @Schema(description = "采购订单号") - @Validated - @NotEmpty(message = "采购订单号不能为空") - String orderNo){ + @Schema(description = "采购订单号") + @Validated + @NotEmpty(message = "采购订单号不能为空") + String orderNo) { return purchaseOrderService.getMaterial(orderNo); } //关联订单 @PostMapping("/link-order") @Operation(summary = "关联订单") - public CommonResult linkOrder(@RequestBody @Validated LinkOrderReqVO req){ + public CommonResult linkOrder(@RequestBody @Validated LinkOrderReqVO req) { return success(purchaseOrderService.linkOrder(req)); } @PostMapping("/order-pass-reject") @Operation(summary = "订单审核") - public CommonResult orderPassReject(@RequestBody PurchaseorderReqVO reqVO){ + 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/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 index 6bd2787..eef7567 100644 --- 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 @@ -156,4 +156,6 @@ public class PrchOrdDtlPageReqVO extends PageParam { @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/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 index a9c5e28..dc61f2d 100644 --- 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 @@ -163,5 +163,7 @@ public class PrchOrdDtlSaveReqVO { @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/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/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 index fbd1a6f..fab9a2b 100644 --- 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 @@ -270,5 +270,10 @@ public class PrchOrdDtlDO extends BusinessBaseDO { */ @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 index fff3139..723a1e5 100644 --- 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 @@ -257,4 +257,25 @@ public class PurchaseOrderDO extends BusinessBaseDO { */ @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/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 index e61f3a8..44865af 100644 --- 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 @@ -24,7 +24,7 @@ public interface PurchaseOrderMapper extends BaseMapperX { default PageResult selectPage(PurchaseOrderPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() .eqIfPresent(PurchaseOrderDO::getOrderSAPNumber, reqVO.getOrderSAPNumber()) - .eqIfPresent(PurchaseOrderDO::getSystemOrderNumber, reqVO.getSystemOrderNumber()) + .likeIfPresent(PurchaseOrderDO::getSystemOrderNumber, reqVO.getSystemOrderNumber()) .eqIfPresent(PurchaseOrderDO::getCompanyNumber, reqVO.getCompanyNumber()) .eqIfPresent(PurchaseOrderDO::getSupplierNumber, reqVO.getSupplierNumber()) .likeIfPresent(PurchaseOrderDO::getSupplierName, reqVO.getSupplierName()) 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/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 e758493..d81bf25 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 @@ -195,12 +195,6 @@ public interface ContractService { */ Boolean complete(List ids); - /** - * 关联订单;该接口仅供订单关联使用 - * - * @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/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 91f33c9..ccc090e 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 @@ -1556,20 +1556,6 @@ public class ContractServiceImpl implements ContractService { return true; } - @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 ErpContractSaveReqVO getErpContract(ContractMainDO contractMainDO) { ErpContractSaveReqVO erpContractVO = new ErpContractSaveReqVO(); 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 index c9075b5..34cb420 100644 --- 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 @@ -4,6 +4,7 @@ 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.*; @@ -52,7 +53,7 @@ public interface PurchaseOrderService { * @param id 编号 * @return 采购订单 */ - PurchaseOrderDO getPurchaseOrder(Long id); + PurchaseOrderDO getPurchaseOrder(Long id,String splyBsnTp); /** * 获得采购订单分页 @@ -103,13 +104,7 @@ public interface PurchaseOrderService { * */ CommonResult getMaterial(String orderNo); - /** - * 关联订单 - * - * @param reqVO 关联订单 - * - */ - boolean linkOrder(LinkOrderReqVO reqVO); + /** * 订单审核通过和不通过 * @@ -117,4 +112,16 @@ public interface PurchaseOrderService { * */ 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 index df3849d..aa78b12 100644 --- 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 @@ -11,9 +11,13 @@ 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; @@ -44,6 +48,7 @@ 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.*; @@ -80,8 +85,12 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { @Resource private ContractService contractService; + @Resource + private SystemRelativityMapper systemRelativityMapper; + + @Override - @Transactional + @Transactional(rollbackFor = Exception.class) public PurchaseOrderRespVO createPurchaseOrder(PurchaseOrderSaveReqVO createReqVO) { // 插入 PurchaseOrderDO purchaseOrder = BeanUtils.toBean(createReqVO, PurchaseOrderDO.class); @@ -95,7 +104,7 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { purchaseOrder.setSystemOrderNumber(orderNumber); purchaseOrderMapper.insert(purchaseOrder); - if (createReqVO.getPrchOrdDtlSaveReqVOS().isEmpty()){ + if (createReqVO.getPrchOrdDtlSaveReqVOS().isEmpty()) { return BeanUtils.toBean(purchaseOrder, PurchaseOrderRespVO.class); } //批量插入订单明细 @@ -107,7 +116,7 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { } @Override - @Transactional + @Transactional(rollbackFor = Exception.class) public void updatePurchaseOrder(PurchaseOrderSaveReqVO updateReqVO) { // 校验存在 validatePurchaseOrderExists(updateReqVO.getId()); @@ -164,8 +173,8 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { } @Override - public PurchaseOrderDO getPurchaseOrder(Long id) { - return purchaseOrderMapper.selectById(id); + 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 @@ -474,10 +483,18 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { } @Override - public boolean linkOrder(LinkOrderReqVO reqVO) { - return contractService.linkOrder(reqVO); - } + 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 @@ -543,7 +560,6 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { if (ObjectUtils.isEmpty(purchaseOrderDO)) { throw exception(PURCHASE_ORDER_NOT_EXISTS); } - AdminUserRespDTO adminUserRespDTO = adminUserApi.getUser(SecurityFrameworkUtils.getLoginUserId()).getData(); // 获取当前流程正在审批的任务节点 List taskList = bpmTaskApi.getTaskListByProcessInstanceId(purchaseOrderDO.getProcessInstanceId()).getData(); BpmTaskRespDTO undoTask = taskList.get(taskList.size() - 1); @@ -585,4 +601,68 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { } 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/resources/mapper/purchaseorder/PurchaseOrderMapper.xml b/zt-module-contract-order/zt-module-contract-order-server/src/main/resources/mapper/purchaseorder/PurchaseOrderMapper.xml index ab904c0..585f3e2 100644 --- 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 @@ -166,6 +166,10 @@ po.CREATOR, po.UPDATER, po.DELETED, + po.pdtGrpCdg, + po.pdtGrpName, + po.saleAcsCdg, + po.saleAcsName, pod.ID as pod_id, pod.ORD_ID, pod.LINE_NUM, @@ -279,6 +283,10 @@ + + + + @@ -328,6 +336,5 @@ - From 8725bb44f7e9c47e224e1bd79480068ae24ae2c9 Mon Sep 17 00:00:00 2001 From: liss <1780094091@qq.com> Date: Wed, 22 Oct 2025 18:14:06 +0800 Subject: [PATCH 120/120] =?UTF-8?q?=E7=A8=8E=E7=A0=81=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/base/enums/ErrorCodeConstants.java | 1 + .../controller/admin/base/TaxController.java | 105 ++++++++++++++++++ .../admin/base/vo/TaxPageReqVO.java | 45 ++++++++ .../controller/admin/base/vo/TaxRespVO.java | 56 ++++++++++ .../admin/base/vo/TaxSaveReqVO.java | 43 +++++++ .../base/dal/dataobject/base/TaxDO.java | 69 ++++++++++++ .../module/base/dal/mysql/base/TaxMapper.java | 32 ++++++ .../module/base/service/base/TaxService.java | 64 +++++++++++ .../base/service/base/TaxServiceImpl.java | 89 +++++++++++++++ .../main/resources/mapper/base/TaxMapper.xml | 12 ++ 10 files changed, 516 insertions(+) create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/TaxController.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/TaxPageReqVO.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/TaxRespVO.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/TaxSaveReqVO.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/base/TaxDO.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/TaxMapper.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/base/TaxService.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/base/TaxServiceImpl.java create mode 100644 zt-module-base/zt-module-base-server/src/main/resources/mapper/base/TaxMapper.xml 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 a53335b..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 @@ -19,6 +19,7 @@ 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, "规则模型不存在"); 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/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/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/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/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/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