删除目录「abacus.springboot.example」
This commit is contained in:
@@ -1,35 +0,0 @@
|
|||||||
# --- OS ---
|
|
||||||
.DS_Store
|
|
||||||
.DS_Store?
|
|
||||||
._*
|
|
||||||
.Spotlight-V100
|
|
||||||
.Trashes
|
|
||||||
ehthumbs.db
|
|
||||||
Thumbs.db
|
|
||||||
desktop.ini
|
|
||||||
|
|
||||||
# --- Editors / IDEs ---
|
|
||||||
.idea/
|
|
||||||
.vscode/
|
|
||||||
*.swp
|
|
||||||
*.swo
|
|
||||||
*~
|
|
||||||
*.sublime-workspace
|
|
||||||
|
|
||||||
# --- Secrets / local env ---
|
|
||||||
.env
|
|
||||||
.env.*
|
|
||||||
!.env.example
|
|
||||||
*.pem
|
|
||||||
*.key
|
|
||||||
secrets.*
|
|
||||||
|
|
||||||
# --- Logs / temp ---
|
|
||||||
*.log
|
|
||||||
*.tmp
|
|
||||||
tmp/
|
|
||||||
.cache/
|
|
||||||
|
|
||||||
# --- Build output (ADS: append stack-specific rules below) ---
|
|
||||||
# e.g. node: node_modules/ dist/ ; python: __pycache__/ .venv/ *.pyc ;
|
|
||||||
# rust: target/ ; java: build/ *.class ; swift/xcode: DerivedData/ *.xcuserstate
|
|
||||||
@@ -1,56 +0,0 @@
|
|||||||
# Repository Guidelines
|
|
||||||
|
|
||||||
AGENTS.md is the cross-vendor contributor guide (Claude, Codex, and others read it). Keep it in English by convention. It overlaps CLAUDE.md on purpose — this is the canonical version for non-Claude agents.
|
|
||||||
|
|
||||||
## Authority & Required Reading
|
|
||||||
Rules in `.project.agents/CLAUDE.md` apply to every agent working here. Direct user instructions still take precedence.
|
|
||||||
|
|
||||||
The canonical contributor guide is `.project.agents/AGENTS.md`. Do not create or maintain a root-level `AGENTS.md` unless the user explicitly asks for one.
|
|
||||||
|
|
||||||
Before any code-changing task, read `.project.agents/SELF_CONSTRAINTS.md` and `.project.agents/VIBECODING_GUIDE.md`, then run `git status --short`. For product work, also read the relevant sections of `PRD.md`, `ARCHITECTURE.md`, `ROADMAP.md`, and `CONVENTIONS.md` under `.project.agents/docs/context/`. Shared front-backend constraints live in the workspace-level `docs/` (see `../../../docs/coding-standards.md`) — read the referenced sections instead of duplicating them here.
|
|
||||||
|
|
||||||
## Project Structure & Module Organization
|
|
||||||
`abacus.springboot.example` is a Spring Boot Maven microservice template (multi-database + abacus framework), parent `abacus.framework:abacus.springcloud.pom:1.5.0`. Business code lives in `src/main/java/abacus/springboot.<app>.{api,controller,dao,esb,pi,impl,repository,wsi,config,util,vo}/` (reference template: the `example` JcBill vertical slice, copy-and-rewrite); config in `src/main/resources/config/{dev,test,prod}/`; SQL in `src/main/resources/sql/`. No automated tests.
|
|
||||||
|
|
||||||
Target architecture is documented in `ARCHITECTURE.md`: layered packages (api/controller → esb/wsi → pi/impl/repository → dao) with unified response-body wrapping and BusinessException-based errors.
|
|
||||||
|
|
||||||
## Source-of-Truth Rules
|
|
||||||
`PRD.md` defines behavior and scope.
|
|
||||||
`ARCHITECTURE.md` is the authority for modules, dependencies, contracts, and directory layout. Derived documents follow upstream changes, not the other way around.
|
|
||||||
|
|
||||||
Feature changes must update `PRD.md`. Module, dependency, entity, or invariant changes must update `ARCHITECTURE.md` in the same commit. Do not let code and architecture drift for more than 24 hours.
|
|
||||||
|
|
||||||
## Build, Test, and Development Commands
|
|
||||||
|
|
||||||
```sh
|
|
||||||
# Build (produces target/*-bin.zip: jar + doc + sql + html)
|
|
||||||
mvn package -Pdev -DskipTests
|
|
||||||
|
|
||||||
# Run
|
|
||||||
mvn spring-boot:run
|
|
||||||
|
|
||||||
# Test
|
|
||||||
No automated tests (manual smoke only)
|
|
||||||
```
|
|
||||||
|
|
||||||
Environment: Nacos must be reachable (bootstrap.yml: server-addr/namespace; extension-configs pull abacus-database/discovery/acas/redis/actuator/xxljob); build depends on the company Maven private repo (abacus framework jars); set `<artifactId>` to `abacus.springboot.<app>`.
|
|
||||||
|
|
||||||
## Architecture & Coding Style
|
|
||||||
Use Java, 4-space indentation, max line width 120. **Every method must carry a one-line responsibility comment** (Javadoc style preferred; manual-review friendly). Controllers: `@RestController` + `@RequestMapping` + springdoc `@Tag`/`@Operation`; `throws Exception`; `@RequestParam(required=false)`; blank-param guard throws `BusinessException`; **return business objects directly** (the wrapper builds the unified response). Services orchestrate in `esb/`; raw SQL lives in `impl/` and MUST use `?` placeholders (no string concatenation). Entities: `@Entity @Table @JsonIgnoreProperties(ignoreUnknown=true) @Schema`, `@Id String`, `@Version Integer`, `STATUS_*` constants, hand-written getters/setters. Business IDs come from `DaoIdGenerator` beans — never hand-craft UUIDs.
|
|
||||||
|
|
||||||
Do not add modules that are not registered in `ARCHITECTURE.md`. Preserve the dependency DAG; no reverse dependencies, no cross-feature imports, and no direct access to another module's private implementation. Avoid empty names such as `Manager`, `Helper`, `Util`, or `Common` for new code (legacy `util/`/`vo/` files are reference-only — cite but do not add).
|
|
||||||
|
|
||||||
UI/presentation code should consume state and send intents only — put business logic in services/use cases, and keep data-model types thin. Controllers must not write SQL or touch repositories directly; orchestration goes through `esb` services.
|
|
||||||
|
|
||||||
## Testing Guidelines
|
|
||||||
No automated test framework. Required validation from `ARCHITECTURE.md`: manual smoke per API (list / query / create / edit / export) plus real-environment checks. Multi-datasource routing, Kafka consumption, XXL-JOB scheduling, Nacos config pull, and real database migrations require real-environment validation; mock/simulator-only evidence is not enough for those claims.
|
|
||||||
|
|
||||||
## Git, Logs, and PRs
|
|
||||||
Do not pile new work onto unrelated dirty changes without calling it out. Prefer Conventional Commits such as `feat: ...`, `fix: ...`, `docs: ...`. This repository is part of a single git repo rooted at the workspace (`D:\workBuddySpace\member`); commit scope should stay within this subproject unless the change is cross-project (docs/).
|
|
||||||
|
|
||||||
Each independently verifiable feature, milestone, non-trivial fix, or refactor needs an execution log in `.project.agents/log/YYYY-MM-DD-<slug>.md` unless it is only a minor documentation edit. Logs must include what changed, relevant commits (or "uncommitted" with reason), verification performed, and next steps. Feature updates also append to `src/main/resources/doc/升级日志.md` per the shared spec §5.11.
|
|
||||||
|
|
||||||
Pull requests should include scope, linked issues, screenshots for UI changes, environment/device coverage, and any documentation updates.
|
|
||||||
|
|
||||||
## Security & Configuration
|
|
||||||
Do not commit secrets, credentials, build output, or personal IDE files. Nacos credentials and datasource settings live in `src/main/resources/config/<env>/` (git-tracked per team convention) — do not add new secrets outside those files. Agent configuration and generated agent notes belong under `.project.agents/`, not the repository root, `.claude/`, or a global home directory.
|
|
||||||
@@ -1,63 +0,0 @@
|
|||||||
# CLAUDE.md
|
|
||||||
|
|
||||||
This file guides Claude Code (and other agents) when working in this repository.
|
|
||||||
**保持本文件最新**:它是项目级入口——项目是什么、怎么构建、门控一切变更的规则。
|
|
||||||
|
|
||||||
## Project
|
|
||||||
|
|
||||||
`abacus.springboot.example` 是 **Spring Boot Maven 微服务模板**(多数据库 + abacus 框架),父工程 `abacus.framework:abacus.springcloud.pom:1.5.0`。业务代码位于 `src/main/java/abacus/springboot.<应用名>.{api,controller,dao,esb,pi,impl,repository,wsi,config,util,vo}/`(参考模板:`example` 下的 JcBill 稽查示例,供复制改写);配置位于 `src/main/resources/config/{dev,test,prod}/`,SQL 位于 `src/main/resources/sql/`。
|
|
||||||
|
|
||||||
- Entry point: `src/main/java/abacus/springboot/example/Application.java`
|
|
||||||
- **分层即契约**:`api(+api/view)` / `controller` / `dao`(Entity) / `esb`(Service 编排) / `pi`(数据访问 IF) / `impl`(原生 SQL 实现) / `repository`(Spring Data JPA) / `wsi`(ServiceIF) / `config` / `util` / `vo`;扫描配置 `springdoc.packages-to-scan=.api`、`abacus.entitypackages=.dao`、`abacus.controllerPackages=.controller`。
|
|
||||||
- **统一响应体**由 `abacus.commons` 的 `ResultResponseBodyWrapper` 包装(`Application.java` 注册 `@Bean`),Controller 直接 return 业务对象;业务异常统一抛 `BusinessException`。
|
|
||||||
- Known environment constraints: Nacos(bootstrap.yml 配置 server-addr/namespace,extension-configs 引入 abacus-database/discovery/acas/redis/actuator/xxljob 公共配置);Maven profile `dev`(默认)/`test`/`prod` 决定加载 `config/<env>/`;多数据库驱动已内置(MySQL/jtds+mssql/Oracle/达梦)。
|
|
||||||
|
|
||||||
## Common commands
|
|
||||||
|
|
||||||
```sh
|
|
||||||
# Build(产出 target/*-bin.zip:jar + doc + sql + html)
|
|
||||||
mvn package -Pdev -DskipTests
|
|
||||||
|
|
||||||
# Run
|
|
||||||
mvn spring-boot:run
|
|
||||||
|
|
||||||
# Test
|
|
||||||
无自动化测试(人工冒烟验证)
|
|
||||||
```
|
|
||||||
|
|
||||||
环境注意:Nacos 需可达(配置中心/注册中心);构建依赖公司 Maven 私服(abacus 二方框架 jar);`pom.xml` `<artifactId>` 建议为 `abacus.springboot.<应用名>`。
|
|
||||||
|
|
||||||
## Architecture
|
|
||||||
|
|
||||||
实现遵循 `.project.agents/docs/context/ARCHITECTURE.md` 的模块边界;模块清单(职责一句话):
|
|
||||||
|
|
||||||
- **api / controller**:接口层(对外接口与前端/内部接口),Controller 只做参数校验与编排调用,直接 return 业务对象。
|
|
||||||
- **esb / wsi**:Service 编排层(@Service)与对外服务接口(*ServiceIF),只编排不做 SQL。
|
|
||||||
- **dao**:JPA 实体(表映射,含状态常量与 @Version 乐观锁)。
|
|
||||||
- **pi / impl**:数据访问接口与实现(原生 SQL 全量参数化)。
|
|
||||||
- **repository**:Spring Data JPA 仓储(派生查询 findByXxx)。
|
|
||||||
- **config**:@Configuration(DaoIdGenerator、AbacusConfigNote 等基础设施 Bean)与配置常量。
|
|
||||||
- 前后端共享约束见工作区 `docs/`(`../../../docs/coding-standards.md` §5 后端规范、§6 接口契约)。
|
|
||||||
|
|
||||||
## Project-level rules
|
|
||||||
|
|
||||||
- **动手前必读两文件**——它们编码了本项目所有门控决策的经验:
|
|
||||||
- `.project.agents/VIBECODING_GUIDE.md` — 实践指南(为什么 & 怎么做)
|
|
||||||
- `.project.agents/SELF_CONSTRAINTS.md` — 硬约束(什么禁止、什么必须、何时停下)
|
|
||||||
|
|
||||||
任何非平凡任务,编辑前先跑 `SELF_CONSTRAINTS.md §A`(开工前自检)。
|
|
||||||
|
|
||||||
- **共享约束单一来源**:前后端共享的编码规范/接口契约/命名纪律,**只存在于工作区 `docs/`(`../../../docs/coding-standards.md`、`../../../docs/architecture.md`、`../../../docs/agent-guide.md`)**;本仓库 `.project.agents/docs/context/` 只写本仓库特有内容与指针,**禁止复制 docs/ 正文**。改共享内容先改 docs/ 再同步指针。
|
|
||||||
|
|
||||||
- **Agent 配置**一律写在 `.project.agents/` 下(或子目录),禁止写到仓库根、`.claude/` 或全局目录。
|
|
||||||
|
|
||||||
- **项目文档**位于 `.project.agents/docs/context/`(单层目录):`PRD.md`(行为权威)、`ARCHITECTURE.md`(模块/依赖/契约)、`ROADMAP.md`(里程碑)、`CONVENTIONS.md`(命名/风格/提交)。
|
|
||||||
|
|
||||||
- **源真相层级**(冲突时上游优先):
|
|
||||||
```
|
|
||||||
PRD.md > ARCHITECTURE.md > CONVENTIONS.md > 派生文档
|
|
||||||
仓库级 CONVENTIONS 再下接共享 docs/coding-standards.md(仅作全仓公共约定引用)
|
|
||||||
```
|
|
||||||
上游变更须在同 commit 内回写受影响的派生文档;代码与架构漂移不得超过 24 小时。
|
|
||||||
|
|
||||||
- **路线图执行规则**:按 `.project.agents/docs/context/ROADMAP.md` 顺序推进,勾选与完成同 commit;milestone 级/多文件任务先写 plan/spec 再动手;每个 milestone 后按 `.project.agents/log/` 模板写执行日志。
|
|
||||||
@@ -1,136 +0,0 @@
|
|||||||
# Agent 自我约束清单(本项目硬规则)
|
|
||||||
|
|
||||||
> 这是 Agent 在本项目工作时必须遵守的硬约束。每次开工前自查本清单,违反任何一条都应**先停下**,与用户对齐后再继续。
|
|
||||||
> 完整背景与原理请见 [`VIBECODING_GUIDE.md`](./VIBECODING_GUIDE.md)。本清单只列"不许做什么 / 必须做什么"。
|
|
||||||
>
|
|
||||||
> 文档约定(本项目):上游文档位于 `.project.agents/docs/context`,依次为
|
|
||||||
> `PRD.md`(行为与范围)、`ARCHITECTURE.md`(模块/依赖/契约/目录)、`CONVENTIONS.md`(命名/风格/提交)。
|
|
||||||
> 派生文档不得反向修改上游。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## A. 开工前的强制自检(每个新会话开始时执行)
|
|
||||||
|
|
||||||
在进行任何编辑动作之前,必须确认以下事项;任一项不满足则先暂停业务任务,处理掉再继续。
|
|
||||||
|
|
||||||
- [ ] **A1. 仓库是否在版本控制下?** 若否:立即停下,先初始化仓库 + 配置 ignore + 初始 commit。
|
|
||||||
- [ ] **A2. 工作区是否干净?** 有未提交的旧改动?先与用户确认是否要先提交/暂存,**不允许在脏工作区上叠加新改动**。
|
|
||||||
- [ ] **A3. 是否已有 `ARCHITECTURE.md`?**
|
|
||||||
- 若否,且本次任务**涉及写业务代码**:先停下,按 `VIBECODING_GUIDE` 的流程产出架构文档,再写代码。
|
|
||||||
- 若否,且本次任务**只是文档/讨论**:可继续,但应主动提醒用户补架构文档。
|
|
||||||
- [ ] **A4. 任务的归属模块清楚吗?** 我能否在 `ARCHITECTURE.md` 的模块清单里指出"这个改动属于哪个模块"?指不出来则停下补架构。
|
|
||||||
- [ ] **A5. 上游文档是否已读?** `PRD.md` / `ARCHITECTURE.md` / `CONVENTIONS.md` 中与本任务相关的章节是否读过?没读过先读,不要凭印象动手。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## B. 写代码时的硬约束
|
|
||||||
|
|
||||||
### B1. 模块边界
|
|
||||||
- ❌ 不允许新增**未在 `ARCHITECTURE.md` 中登记**的模块;要新增必须先更新架构文档。
|
|
||||||
- ❌ 不允许引入**反向依赖**(低层模块依赖高层模块)。需要时改为接口/回调倒置。
|
|
||||||
- ❌ 不允许跨模块**直接访问私有实现**;只能走该模块对外暴露的接口。
|
|
||||||
- ❌ 不允许出现 `Manager` / `Helper` / `Util` / `Common` / `Misc` / `Tools` 这类语义为空的新模块名;用动词+名词描述真实职责。
|
|
||||||
|
|
||||||
### B2. 单一职责
|
|
||||||
- ❌ 不允许在 UI/展示层写业务判断或副作用(仅消费状态、发送意图)。
|
|
||||||
- ❌ 不允许在数据模型类里堆业务方法;模型保持瘦,逻辑放 Service / UseCase。
|
|
||||||
- ❌ 不允许"顺手"修改不在任务范围内的模块;越界的改动走单独提交并明确告知用户。
|
|
||||||
|
|
||||||
### B3. 文档同步(与代码改动**同一个 commit** 内)
|
|
||||||
- 加/删/改功能 → 同步更新 `PRD.md`
|
|
||||||
- 加/删/改模块或依赖 → 同步更新 `ARCHITECTURE.md`(模块清单 + 依赖图)
|
|
||||||
- 派生文档发现与上游不一致 → 回去改上游,不能让派生文档自走
|
|
||||||
|
|
||||||
### B4. 注释与命名
|
|
||||||
- 每个方法/函数必须写注释(一行职责说明,便于人工复核)。
|
|
||||||
- 只在 WHY 不明显处补充 WHY 注释;不写会随时间失效的注释。
|
|
||||||
- 不写"为某 issue/任务而加"这类会随时间失效的注释。
|
|
||||||
- 严格遵守 `CONVENTIONS.md` 中的命名规范(不存在则先补)。
|
|
||||||
|
|
||||||
### B5. 错误处理
|
|
||||||
- 只在系统边界(用户输入、外部 API、文件 IO)做防御;内部模块互相信任。
|
|
||||||
- 不为不可能发生的情况加 fallback。
|
|
||||||
- 不引入向后兼容 shim,除非用户明确要求。
|
|
||||||
|
|
||||||
### B7. 多租户隔离(SaaS 硬约束)
|
|
||||||
- 任何数据访问(JPA / 原生 SQL / 编排)必须带 `tenant_id` 过滤;缓存 key 必须前缀 `tenant:{tenantId}:`。
|
|
||||||
- 租户标识以 token 为准,禁止在业务参数 / URL 中传递 tenantId;跨租户操作须 `@CrossTenant` + 审批。
|
|
||||||
- 前端:品牌/主题/菜单须按 `tenantConfig` 动态加载,禁止硬编码;`X-Tenant-Id` 头由 `request.ts` 自动附加,业务代码不得手写。
|
|
||||||
- 详细设计与落地映射见 `docs/architecture.md §7`、`coding-standards.md §9`;本仓库 `ARCHITECTURE.md §10`。
|
|
||||||
|
|
||||||
### B6. 实施日志(execution log)
|
|
||||||
- **每完成一个可独立验收的部分(milestone 或子任务),必须在 `.project.agents/log` 写日志**。格式与时机见 `VIBECODING_GUIDE`。
|
|
||||||
- 日志内必须包含本段的版本控制提交列表;若本段未提交,明确写出"未提交"及原因。
|
|
||||||
- 完成路线图任一 milestone → **必须**写日志,且与该 milestone 的提交同一会话完成。
|
|
||||||
- 单次会话即将结束(用户表示收工 / 上下文将被压缩)→ **必须**写一份兜底日志记录当前状态与下一步。
|
|
||||||
- ❌ 不允许只提交不写日志(除非属于豁免情况:纯文档微调 / 被回滚的实验性探索)。
|
|
||||||
- ❌ 不允许写日志但跳过更新 `ARCHITECTURE.md` —— 若本段触发架构变更,先改架构、再提交、再写日志。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## C. 改动范围控制
|
|
||||||
|
|
||||||
- ❌ 一次任务一个目的。不要"既加功能又重构又改样式"。
|
|
||||||
- ❌ 不允许在 bug 修复任务中做无关清理。
|
|
||||||
- ❌ 不允许引入"为未来准备"的抽象(YAGNI);三处相似优于一处过度抽象。
|
|
||||||
- ❌ 不允许半完成的实现(要么这次完成,要么不要开始)。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## D. 出问题时的排查纪律
|
|
||||||
|
|
||||||
bug 处理必须按下列顺序,**严禁跳步**:
|
|
||||||
|
|
||||||
1. 复现现象(明确触发路径)
|
|
||||||
2. 在 `ARCHITECTURE.md` 上**圈出嫌疑模块**
|
|
||||||
3. 检查跨模块**接口契约**
|
|
||||||
4. 缩小到单模块后再读代码
|
|
||||||
5. 修完后:若是架构问题,必须更新 `ARCHITECTURE.md` 或 `CONVENTIONS.md`
|
|
||||||
|
|
||||||
**禁止行为**:bug 一来就全仓 grep、试改一行看效果、连续 try-fail 循环。出现这种倾向立刻停下,回到第 2 步。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## E. 与用户的协作约束
|
|
||||||
|
|
||||||
- ❌ 不替用户做架构决策。涉及模块拆分、依赖方向、命名规范这类**长期影响**的决定,必须明确询问。
|
|
||||||
- ❌ 不在用户没要求的时候主动创建文档(除非本清单或 `CLAUDE.md` 已要求)。
|
|
||||||
- ❌ 不在没看代码的情况下凭推测回答 "X 是怎么实现的"。
|
|
||||||
- ✅ 每次涉及架构/文档/规范变更,先告知影响面,再动手。
|
|
||||||
- ✅ 用户的明确指示永远高于本清单和任何 skill。冲突时遵循用户。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## F. 触发"全员停车"的红线
|
|
||||||
|
|
||||||
出现以下任一情况,**立即停止当前任务,与用户对齐后再决定下一步**:
|
|
||||||
|
|
||||||
1. 发现自己在脏工作区上累积了大量未提交改动
|
|
||||||
2. 发现自己正在新增一个"无处归属"的模块/文件
|
|
||||||
3. 发现代码与 `ARCHITECTURE.md` 已经矛盾,且无法用小补丁同步
|
|
||||||
4. 同一个 bug 连续 3 次尝试修复未果
|
|
||||||
5. 用户的请求与本清单 / `CLAUDE.md` / 上游文档存在冲突 —— 必须先澄清,不能默默选边
|
|
||||||
6. 即将做出"难以回滚"的动作(删除文件 / 重命名模块 / 调整目录结构 / 强制 push)
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## G. 文件路径合规
|
|
||||||
|
|
||||||
- Agent 的配置文件**只**写入 `.project.agents` 子树,禁止写入仓库根目录或其他非约定位置。
|
|
||||||
- 项目文档**只**写入 `.project.agents/docs/context`(不允许再分子目录,除非用户明确要求)。
|
|
||||||
- 本清单(`SELF_CONSTRAINTS.md`)与指南(`VIBECODING_GUIDE.md`)位于 `.project.agents` 根,与 `CLAUDE.md` 同级。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## H. 自查触发器(什么时候重读本清单)
|
|
||||||
|
|
||||||
至少在以下时机重读本清单:
|
|
||||||
|
|
||||||
- 新会话开始,且任务涉及代码改动
|
|
||||||
- 用户要求"加新功能"/"修 bug"/"重构"
|
|
||||||
- 自己感到"差不多可以直接动手了" —— 这种感觉本身就是触发器
|
|
||||||
- 即将创建超过 1 个新文件
|
|
||||||
- 即将修改 3 个以上文件
|
|
||||||
- 即将修改任何 `.project.agents/docs/context` 下的文档
|
|
||||||
- **完成一个路线图 milestone 或子任务前**(确认是否需要按 §B6 写日志)
|
|
||||||
- **会话即将结束前**(确认兜底日志已写)
|
|
||||||
@@ -1,250 +0,0 @@
|
|||||||
# 项目开发实践指南(VIBECODING GUIDE)
|
|
||||||
|
|
||||||
> 本文档是基于"踩过的坑"沉淀下来的项目工作方式约定,适用于本仓库及后续所有同性质的项目。
|
|
||||||
> 它的姊妹文件是 [`SELF_CONSTRAINTS.md`](./SELF_CONSTRAINTS.md) —— 那是 Agent 每次开工前必须自查的硬约束清单。
|
|
||||||
> 本文回答 "为什么这么做";`SELF_CONSTRAINTS.md` 回答 "具体不许做什么"。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 0. 三条核心教训(本指南的来由,优先级严格递减)
|
|
||||||
|
|
||||||
1. **版本控制必须从第 0 天开始。**
|
|
||||||
不是 "等做出点东西再说",是写第一行代码之前先初始化仓库、写好 ignore 规则、提交一个空骨架。
|
|
||||||
理由:高频改动 + 频繁推翻是 AI 协作的常态,没有版本控制兜底就等于在悬崖边裸奔。
|
|
||||||
|
|
||||||
2. **文档必须在写代码之前定下来。**
|
|
||||||
需求、架构、路线图、开发规范、目录结构、命名规范、模块边界 —— 这些不是"做完之后补的",是"做之前定的"。
|
|
||||||
理由:一旦上下文被代码细节占满,后续每个新会话都只能 freestyle,项目会朝不可逆的方向漂移。
|
|
||||||
|
|
||||||
3. **架构 > UI > 用户体验。**
|
|
||||||
最致命的不是界面丑、不是体验差,而是模块互相纠缠到无法定位问题。
|
|
||||||
一个出问题就能立刻指认 "是 X 模块的责任" 的项目,比一个好看但耦合一团的项目,存活率高一个数量级。
|
|
||||||
理由:耦合一旦发生,AI 协作模式会迅速放大它 —— 因为每次新会话都看不全全貌,只会在原有耦合上继续添乱。
|
|
||||||
|
|
||||||
> 这三条的优先级是严格递减的:先有版本控制,再有文档,再谈架构;架构稳了之后才轮到 UI 和体验。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 1. 项目启动 Checklist(Day 0)
|
|
||||||
|
|
||||||
下列每一项都必须在写第一行业务代码之前完成。顺序即优先级。
|
|
||||||
|
|
||||||
### 1.1 仓库与版本控制
|
|
||||||
- [ ] 初始化版本控制并立即建立 ignore 规则(语言 / IDE / 系统三类至少齐全)
|
|
||||||
- [ ] 提交一个 **空骨架 commit**(README + ignore 规则 + 空目录结构),作为"零点参照系"
|
|
||||||
- [ ] 约定分支模型(最简:主干 + 短命的功能分支;不要等到分叉时才想)
|
|
||||||
- [ ] 约定 commit message 风格(推荐 Conventional Commits,至少要求动词开头 + 一句话原因)
|
|
||||||
|
|
||||||
### 1.2 文档骨架(必须先于代码存在)
|
|
||||||
在 `.project.agents/docs/context` 下建立以下文件,**哪怕只有大纲也比没有强**:
|
|
||||||
|
|
||||||
| 文件 | 角色 | 上下游关系 |
|
|
||||||
|---|---|---|
|
|
||||||
| `PRD.md` | 产品需求(要做什么) | 上游 |
|
|
||||||
| `ARCHITECTURE.md` | 架构(怎么拆) | 上游 |
|
|
||||||
| `ROADMAP.md` | 路线图(什么时候做哪一块) | 由需求 + 架构推导 |
|
|
||||||
| `CONVENTIONS.md` | 开发规范(命名、目录、提交、风格) | 上游 |
|
|
||||||
| 派生文档(实现 spec / 资产清单等) | 屏幕级实现 / 资产清单 | **派生**,由上游产生 |
|
|
||||||
|
|
||||||
**判断标准**:如果一个新会话的 Agent 只读需求 + 架构 + 开发规范就能正确开始一个任务 —— 文档就算合格。
|
|
||||||
|
|
||||||
### 1.3 Agent 协作配置
|
|
||||||
- [ ] 在 `CLAUDE.md` 写明项目级规则(已有,保持更新)
|
|
||||||
- [ ] 在本文件 + `SELF_CONSTRAINTS.md` 中固化经验
|
|
||||||
- [ ] 在 `.project.agents/settings.json` 中配置必要的 hook / 权限(不要散落到根目录或全局)
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 2. 架构原则
|
|
||||||
|
|
||||||
### 2.1 三条硬规则
|
|
||||||
|
|
||||||
1. **单一职责到模块级**
|
|
||||||
每个模块只回答一个问题。
|
|
||||||
反例:"一个模块既管数据持久化,又管网络请求,又管 UI 状态" —— 这种模块必须拆。
|
|
||||||
|
|
||||||
2. **依赖方向单向**
|
|
||||||
高层依赖低层,UI 依赖业务,业务依赖数据;**反向依赖一律禁止**,遇到就用接口/事件/回调倒置。
|
|
||||||
依赖关系必须能画成一张**有向无环图(DAG)**,且这张图要在 `ARCHITECTURE.md` 里画出来。
|
|
||||||
|
|
||||||
3. **跨模块只走"接口契约"**
|
|
||||||
模块 A 想用模块 B 的能力,只能通过 B 暴露的接口/协议,不能 reach into B 的内部实现。
|
|
||||||
接口契约必须在 `ARCHITECTURE.md` 中显式声明(哪怕只是函数签名清单)。
|
|
||||||
|
|
||||||
### 2.2 判断架构是否健康的三个问句
|
|
||||||
|
|
||||||
随时可以用这三个问句自检:
|
|
||||||
|
|
||||||
1. **指认问题**:现在出 bug 了,我能否在 30 秒内指出"这是哪个模块的责任"?
|
|
||||||
2. **替换实现**:如果要把模块 X 整体换掉(换数据库、换框架),改动是否能控制在 X 内部 + 一个接口适配层?
|
|
||||||
3. **新增功能归属**:用户要加一个新功能,我能否立刻说出它"属于哪个模块、或需要新增哪个模块"?
|
|
||||||
|
|
||||||
任何一个回答不出来,架构就有问题,**先停下修架构,再写代码**。
|
|
||||||
|
|
||||||
### 2.3 反耦合纪律
|
|
||||||
|
|
||||||
- **不在新功能开发时顺手重构无关模块**(重构走单独 commit + 单独会话)
|
|
||||||
- **不在 UI 层做业务判断**(UI 只接收状态、发送意图)
|
|
||||||
- **不让数据模型自己跑业务逻辑**(模型类保持瘦,业务放 Service / UseCase)
|
|
||||||
- **不要"为了少写一个文件"把两个模块塞进同一个文件**
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 3. 项目架构文档生成流程
|
|
||||||
|
|
||||||
这是从零到 `ARCHITECTURE.md` 的标准流程。每一步都有产出物,下一步必须基于上一步的产出物。
|
|
||||||
|
|
||||||
### Step 1 — 需求收敛(产出 `PRD.md`)
|
|
||||||
- 列功能清单,按 **核心 / 增强 / 可选** 三档分类
|
|
||||||
- 每个核心功能写一句 "用户故事"("作为 X,我想 Y,以便 Z")
|
|
||||||
- **冻结 MVP 范围**:圈出 MVP 包含哪些核心功能,其余明确标 "Out of MVP"
|
|
||||||
|
|
||||||
### Step 2 — 领域建模(产出 `ARCHITECTURE.md` §1 领域模型)
|
|
||||||
- 列出所有**名词实体**(用户、订单、会话…)
|
|
||||||
- 标注每个实体的字段、关系、生命周期
|
|
||||||
- 标记哪些是**持久化实体**,哪些是**瞬态状态**
|
|
||||||
|
|
||||||
### Step 3 — 模块划分(产出 `ARCHITECTURE.md` §2 模块清单)
|
|
||||||
对照领域模型与需求功能清单,拆分模块。每个模块写一张卡片:
|
|
||||||
|
|
||||||
```
|
|
||||||
## 模块名:<Name>
|
|
||||||
- 职责:一句话
|
|
||||||
- 不负责:明确写出"不做什么"(防止职责蔓延)
|
|
||||||
- 输入:从哪些模块/外部来
|
|
||||||
- 输出:暴露给谁
|
|
||||||
- 关键类型/接口:列签名(不写实现)
|
|
||||||
- 持有状态:有没有自己的状态?
|
|
||||||
```
|
|
||||||
|
|
||||||
**经验**:如果一个模块的"不负责"写不出来,说明它的职责还没想清楚,回到 Step 2。
|
|
||||||
|
|
||||||
### Step 4 — 依赖图(产出 `ARCHITECTURE.md` §3 依赖图)
|
|
||||||
- 画出模块间依赖箭头(推荐 Mermaid,纯文本可 diff)
|
|
||||||
- **手动验证 DAG**:从任一节点 DFS 不应回到自己
|
|
||||||
- 标出"接口边界":哪些依赖是接口注入,哪些是直接调用
|
|
||||||
|
|
||||||
### Step 5 — 路线图(产出 `ROADMAP.md`)
|
|
||||||
按依赖图的拓扑顺序排开发节奏:
|
|
||||||
- 先做被依赖最多的底层模块
|
|
||||||
- 每个 milestone 必须能独立通过编译/构建并跑出某种"可见行为"
|
|
||||||
- 写明每个 milestone 完成的"验收标准"(不是"做完了",是"做完了之后能演示什么")
|
|
||||||
|
|
||||||
### Step 6 — 开发规范(产出 `CONVENTIONS.md`)
|
|
||||||
- 命名(类型 / 文件 / 目录 / 资产)
|
|
||||||
- 代码风格(缩进 / 注释策略 / 错误处理边界)
|
|
||||||
- 提交规范
|
|
||||||
- 测试策略(哪些必须有测试,哪些不要求)
|
|
||||||
|
|
||||||
### Step 7 — 派生文档(产出实现 spec / 资产清单等)
|
|
||||||
**只有上面 6 步都齐了,才能开始写派生文档**。
|
|
||||||
派生文档必须显式引用上游章节("对应 `ARCHITECTURE.md` §2.3 的 XxxService 模块"),方便后续 diff 校验。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 4. 文档变更协议
|
|
||||||
|
|
||||||
文档不是写完就锁死的,但变更必须**沿着上下游传播**:
|
|
||||||
|
|
||||||
| 变更点 | 必须同步更新 |
|
|
||||||
|---|---|
|
|
||||||
| 需求加/删/改功能 | 架构模块清单、路线图、派生文档 |
|
|
||||||
| 架构调整模块边界 | 依赖图、开发规范(如有命名调整)、派生文档 |
|
|
||||||
| 加新模块 | 架构 §2 + §3、路线图、开发规范(如新目录) |
|
|
||||||
|
|
||||||
**权威链**:`PRD.md > ARCHITECTURE.md > CONVENTIONS.md > 派生文档`。
|
|
||||||
派生文档永远不能**反向**修改上游。如果在派生文档中发现矛盾,回去改上游,再让派生文档重新对齐。
|
|
||||||
**代码与架构漂移 > 24 小时即违规。**
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 5. 实施日志(execution log)
|
|
||||||
|
|
||||||
写代码 / 执行路线图期间,**每完成一个可独立验收的"部分",必须在 `.project.agents/log` 写一份日志**。日志是给"下一个会话的我"看的 —— 让接手的会话能在不读所有代码的情况下知道:刚才完成了什么、哪些提交、下一步是什么。
|
|
||||||
|
|
||||||
### 5.1 何时写日志
|
|
||||||
- 完成一个路线图 milestone
|
|
||||||
- 完成一个 milestone 内独立可验收的子任务
|
|
||||||
- 完成一次非平凡的重构 / bug 修复
|
|
||||||
- 当前会话即将结束时(兜底,把上下文沉淀下来)
|
|
||||||
|
|
||||||
**判断标准**:如果这段工作下一个会话需要知道,就写。
|
|
||||||
|
|
||||||
### 5.2 日志文件命名
|
|
||||||
`.project.agents/log/YYYY-MM-DD-<slug>.md`
|
|
||||||
- `<slug>` = 简短动词 + 范围,kebab-case
|
|
||||||
- 同日多份日志按写作顺序累积(不覆盖、不合并),文件名加序号后缀:`-1`、`-2`…
|
|
||||||
|
|
||||||
### 5.3 日志内容模板
|
|
||||||
```markdown
|
|
||||||
# <一句话标题:完成了什么>
|
|
||||||
|
|
||||||
- **日期**:YYYY-MM-DD
|
|
||||||
- **关联**:路线图 M<N> / 子任务名 / 关联文档
|
|
||||||
- **会话上下文**:(可选)本会话从哪开始接手的
|
|
||||||
|
|
||||||
## 做了什么
|
|
||||||
- bullet 1
|
|
||||||
- bullet 2
|
|
||||||
|
|
||||||
## 提交
|
|
||||||
- `<short hash>` <commit subject>
|
|
||||||
|
|
||||||
(若本段未提交:明确写"未提交,工作树状态:…"并说明原因)
|
|
||||||
|
|
||||||
## 状态变更
|
|
||||||
- 架构文档:是否动过?动了哪一节?
|
|
||||||
- 需求/UI 文档:是否触发回归?
|
|
||||||
- 测试:跑了什么,结果
|
|
||||||
|
|
||||||
## 下一步
|
|
||||||
- 接下来要做的第一件事(具体到任务名)
|
|
||||||
- 已知阻塞 / 待澄清项
|
|
||||||
```
|
|
||||||
|
|
||||||
### 5.4 与提交的关系
|
|
||||||
日志**不替代** commit message,commit message 仍按 `CONVENTIONS.md` 写;日志是提交的**索引与解释**。
|
|
||||||
|
|
||||||
### 5.5 不写日志的情况
|
|
||||||
- 还没完成一个"可独立验收"的部分 —— 不要"写日志凑数"
|
|
||||||
- 纯文档调整 —— commit 自身已足够说明
|
|
||||||
- 实验性探索(最终被回滚的内容)—— 用 commit message 记录即可
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 6. 出问题时的排查流程
|
|
||||||
|
|
||||||
bug 来了不要直接钻进代码。按下列顺序:
|
|
||||||
|
|
||||||
1. **复现并定位现象**:能在哪个入口 / 哪个调用稳定复现?
|
|
||||||
2. **回到架构图**:这个现象涉及哪些模块?沿着依赖图圈出可能责任方。
|
|
||||||
3. **审查接口契约**:跨模块调用是否符合 `ARCHITECTURE.md` 中声明的接口?输入输出是否符合契约?
|
|
||||||
4. **缩小到单模块**:把嫌疑缩小到一个模块后,再读该模块代码。
|
|
||||||
5. **修复并回写经验**:如果发现是架构层面的漏洞,修完代码后**必须更新 `ARCHITECTURE.md` 或 `CONVENTIONS.md`**。
|
|
||||||
|
|
||||||
**反模式**:bug 一来就 grep 关键字、改一行试一下、再改一行试一下 —— 这是死亡螺旋,必须用流程压下去。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 7. 反模式清单("看到这些立刻警觉")
|
|
||||||
|
|
||||||
- 出现语义为空的模块名(`Manager` / `Helper` / `Util` / `Common` / `Misc` / `Tools`)且行数 > 100 行
|
|
||||||
- 一个文件 import 超过 10 个本地模块
|
|
||||||
- 改一个 UI 改动需要动 3 个以上其他模块
|
|
||||||
- 同一份业务逻辑在两个地方各写了一遍
|
|
||||||
- PR 描述写"顺便修了 X"
|
|
||||||
- 新增功能时发现"无处归属",于是塞进入口文件或主组件
|
|
||||||
- 文档与代码不一致超过 24 小时
|
|
||||||
- 出现没有在 `ARCHITECTURE.md` 中登记的新模块/新依赖方向
|
|
||||||
|
|
||||||
任何一条出现,**先停下来回到本指南或架构文档,不要继续往前推**。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 8. 本项目当前阶段
|
|
||||||
|
|
||||||
> 本节随项目演进,不是规则的一部分。由 Agent 在每个 milestone 后更新。
|
|
||||||
|
|
||||||
<!-- 由 /ads:init(2026-08-19,Retrofit)填入:本项目为后端微服务模板,治理已入位。 -->
|
|
||||||
- 当前状态:后端模板(`abacus.springboot.example`)已完成治理落地(Retrofit),分层以示例模块实际结构为准(api/controller/dao/esb/pi/impl/repository/wsi/config/util/vo);前后端共享约束单源化于工作区 `docs/`(`../../../docs/coding-standards.md`)。
|
|
||||||
- 下一步合规动作:新业务模块按 `docs/coding-standards.md §5`(后端规范)与 §7(AI 生成工作流)开发;任何新增包、依赖方向或 SQL 变更先回写本仓库 `ARCHITECTURE.md` 与 `sql/` 约定,再写代码。
|
|
||||||
@@ -1,188 +0,0 @@
|
|||||||
# abacus.springboot.example — 架构文档(ARCHITECTURE)
|
|
||||||
|
|
||||||
> 模块、依赖、契约、目录布局的**唯一权威**(本仓库视角)。新增/重命名/移动模块或调整依赖方向,必须先改本文,再改代码(同一个 commit)。
|
|
||||||
> 上游:`PRD.md`(行为)。前后端共享约束见工作区 `docs/`(`../../../../docs/coding-standards.md` §5 后端规范、§6 接口契约),本文不复制其正文。
|
|
||||||
|
|
||||||
## 0. 阅读指引
|
|
||||||
|
|
||||||
本文描述后端模板的模块划分与依赖方向;§2 模块清单与 §6 目录一一对应,§3.2 是跨模块接口契约。新会话先读 §2 + §6 定位任务归属,再动手。
|
|
||||||
|
|
||||||
## 1. 领域模型(Domain Model)
|
|
||||||
|
|
||||||
### 1.1 实体
|
|
||||||
|
|
||||||
模板自带示例纵切面(稽查 JcBill),供复制改写:
|
|
||||||
|
|
||||||
| 实体 | 字段 | 关系 | 持久化? |
|
|
||||||
|---|---|---|---|
|
|
||||||
| jc_bill(稽查主单) | id(@Id)/version(@Version)/status/… | 1:N 明细 | 是 |
|
|
||||||
| jc_bill_item / jc_bill_photo / jc_bill_hg / jc_bill_hg_pay / jc_source_item / jc_bill_in_item / jc_bill_source_item | id/主单关联字段 | N:1 主单 | 是 |
|
|
||||||
|
|
||||||
字段细节见 `dao/*.java` 与 `sql/upgrade.xml`(建表 DDL)。
|
|
||||||
|
|
||||||
### 1.2 派生概念(非持久化)
|
|
||||||
|
|
||||||
- `api/view/*`:请求/响应 DTO(ApiReq*/ApiResp*),编排层与 Controller 之间传递。
|
|
||||||
- `@Transient` 字段:实体上的非持久化附加信息(如 `recsource`)。
|
|
||||||
|
|
||||||
### 1.3 不变量(任何模块都必须维护)
|
|
||||||
|
|
||||||
- I1. 业务主键一律由 `DaoIdGenerator` 生成(prefix+yyyyMMdd+serialLength),禁止手拼/UUID。
|
|
||||||
- I2. 原生 SQL 全量 `?` 参数化,禁止字符串拼接。
|
|
||||||
- I3. 分层依赖单向:api/controller → esb/wsi → {pi/impl, repository} → dao;禁止反向依赖。
|
|
||||||
- I4. Controller 直接 return 业务对象,禁止手拼统一响应体。
|
|
||||||
- I5. 多租户隔离:所有数据访问必须带 `tenant_id` 过滤(JPA @Filter / Repository 基类 / 原生 SQL `?`),缓存 key 前缀 `tenant:{tenantId}:`;跨租户操作须 `@CrossTenant` + 审批。详见 `../../../../docs/architecture.md §7` 与 `coding-standards.md §9`。
|
|
||||||
|
|
||||||
## 2. 模块清单
|
|
||||||
|
|
||||||
按依赖层级从低到高排列。
|
|
||||||
|
|
||||||
### Layer 0 — dao(实体层)
|
|
||||||
```
|
|
||||||
## 模块名:dao
|
|
||||||
- 职责:JPA 实体(表映射、状态常量、@Version 乐观锁)
|
|
||||||
- 不负责:查询逻辑、业务规则
|
|
||||||
- 输入:无(被 repository/impl 引用)
|
|
||||||
- 输出:实体类型
|
|
||||||
- 关键类型/接口:@Entity 类(如 JcBill)
|
|
||||||
- 持有状态:无(纯数据)
|
|
||||||
```
|
|
||||||
|
|
||||||
### Layer 0 — config(基础设施配置)
|
|
||||||
```
|
|
||||||
## 模块名:config
|
|
||||||
- 职责:@Configuration(DaoIdGenerator、AbacusConfigNote 默认值)+ 配置 key 常量
|
|
||||||
- 不负责:业务规则
|
|
||||||
- 输入:application.yml / Nacos 配置
|
|
||||||
- 输出:基础设施 Bean
|
|
||||||
- 持有状态:无
|
|
||||||
```
|
|
||||||
|
|
||||||
### Layer 1 — repository / pi+impl(数据访问)
|
|
||||||
```
|
|
||||||
## 模块名:repository(Spring Data JPA)
|
|
||||||
- 职责:标准 CRUD 与派生查询(findByXxx)
|
|
||||||
- 不负责:复杂查询(走 pi/impl)
|
|
||||||
- 输出:实体查询结果
|
|
||||||
|
|
||||||
## 模块名:pi + impl(原生 SQL 访问)
|
|
||||||
- 职责:复杂查询/批量写(pi 定义接口,impl 实现,SQL 参数化)
|
|
||||||
- 不负责:业务编排
|
|
||||||
- 输出:DTO/实体结果
|
|
||||||
```
|
|
||||||
|
|
||||||
### Layer 2 — esb / wsi(服务编排与接口)
|
|
||||||
```
|
|
||||||
## 模块名:esb + wsi
|
|
||||||
- 职责:业务用例编排(esb/*BizService,@Service)、对外服务接口(wsi/*ServiceIF)
|
|
||||||
- 不负责:直接 SQL、Controller 层参数解析
|
|
||||||
- 输入:Controller 传入的 DTO/参数
|
|
||||||
- 输出:编排结果(DTO/实体)
|
|
||||||
- 持有状态:事务边界(@Transactional 按需)
|
|
||||||
```
|
|
||||||
|
|
||||||
### Layer 3 — api / controller(接口层)
|
|
||||||
```
|
|
||||||
## 模块名:api + controller
|
|
||||||
- 职责:对外接口(api/,springdoc 扫描)与前端/内部接口(controller/,abacus.controllerPackages 扫描)
|
|
||||||
- 不负责:业务编排与 SQL
|
|
||||||
- 输入:HTTP 请求(@RequestParam/@RequestBody)
|
|
||||||
- 输出:业务对象(由 ResultResponseBodyWrapper 包装)
|
|
||||||
- 持有状态:无
|
|
||||||
```
|
|
||||||
|
|
||||||
## 3. 依赖图(DAG)
|
|
||||||
|
|
||||||
```mermaid
|
|
||||||
graph TD
|
|
||||||
api_controller[api / controller] --> esb_wsi[esb / wsi]
|
|
||||||
esb_wsi --> pi_impl[pi / impl]
|
|
||||||
esb_wsi --> repository[repository]
|
|
||||||
pi_impl --> dao[dao]
|
|
||||||
repository --> dao
|
|
||||||
esb_wsi --> dao
|
|
||||||
config -.注入.-> esb_wsi
|
|
||||||
config -.注入.-> pi_impl
|
|
||||||
```
|
|
||||||
|
|
||||||
### 3.1 依赖方向规则
|
|
||||||
|
|
||||||
- 高层依赖低层,单向;**禁止** dao 依赖 repository、esb 依赖 controller 等反向依赖。
|
|
||||||
- 跨层调用走接口(wsi ServiceIF / pi AccessIF),不 reach into 实现。
|
|
||||||
|
|
||||||
### 3.2 跨模块接口契约(写代码时必须遵守的签名)
|
|
||||||
|
|
||||||
```
|
|
||||||
// module: controller
|
|
||||||
// @RequestMapping(value, method) -> 业务对象(throws Exception) // 直接 return,I4
|
|
||||||
|
|
||||||
// module: esb/wsi
|
|
||||||
// XxxServiceIF.method(dto...) throws Exception // 编排用例,事务边界
|
|
||||||
|
|
||||||
// module: pi/impl
|
|
||||||
// XxxAccessIF.method(params...) -> List<DTO> // 原生 SQL,I2 参数化
|
|
||||||
|
|
||||||
// module: repository
|
|
||||||
// XxxRepository extends JpaRepository<Entity, String>, JpaSpecificationExecutor<Entity>
|
|
||||||
|
|
||||||
// module: config
|
|
||||||
// @Bean DaoIdGenerator(prefix/useDateFormat/yyyyMMdd/serialLength) // I1
|
|
||||||
```
|
|
||||||
|
|
||||||
## 4. 持久化与边界
|
|
||||||
|
|
||||||
- 数据源:Druid 连接池 + JPA;多数据源由 Nacos `abacus-database.yml` 提供(enableMultiSource / multidb0~9 / defaultDB / readDB / dynamicRelation)。
|
|
||||||
- 外部边界:Nacos(注册+配置)、Kafka(消息)、XXL-JOB(调度)、Feign(服务间调用)、springdoc(接口文档)、Actuator(监控)。
|
|
||||||
|
|
||||||
## 5. 测试边界
|
|
||||||
|
|
||||||
- 无自动化单测(PRD 决策);接口人工冒烟。
|
|
||||||
- **必须真机验证**:多数据源路由、Kafka 消费、XXL-JOB 调度、Nacos 配置拉取、真实数据库迁移——mock/模拟器不算数。
|
|
||||||
|
|
||||||
## 6. 目录结构(与 §2 模块清单一一对应)
|
|
||||||
|
|
||||||
```
|
|
||||||
src/main/java/abacus/springboot/<应用名>/
|
|
||||||
├── Application.java # 入口(注册 ResultResponseBodyWrapper)
|
|
||||||
├── api/ # 对外 Controller(springdoc 扫描);api/view/ 放 DTO
|
|
||||||
├── controller/ # 前端/内部 Controller(abacus.controllerPackages 扫描)
|
|
||||||
├── dao/ # JPA 实体(abacus.entitypackages 扫描)
|
|
||||||
├── esb/ # Service 编排层(@Service)
|
|
||||||
├── wsi/ # 服务接口 *ServiceIF
|
|
||||||
├── pi/ # 数据访问接口 *AccessIF
|
|
||||||
├── impl/ # 数据访问实现(原生 SQL)
|
|
||||||
├── repository/ # Spring Data JPA Repository
|
|
||||||
├── config/ # @Configuration + 配置常量
|
|
||||||
├── util/ vo/ # 既有兼容(可引不可增)
|
|
||||||
src/main/resources/
|
|
||||||
├── config/{dev,test,prod}/ # 三套同构配置
|
|
||||||
├── sql/{table,data}/ + upgrade.xml # 建表双份/初始化/版本化升级
|
|
||||||
├── html/vue/<应用名>/ # 前端构建产物(打包入 *-bin.zip)
|
|
||||||
└── doc/升级日志.md # 功能更新记录
|
|
||||||
```
|
|
||||||
|
|
||||||
## 7. 自检(架构健康度三问)
|
|
||||||
|
|
||||||
1. 出 bug 了,能否 30 秒内指出是哪个包(controller/esb/impl/repository)的责任?
|
|
||||||
2. 换数据库/换 JPA 实现,改动能否控制在 impl/repository + 配置内?
|
|
||||||
3. 加新业务接口,能否立刻说出它落在 api 还是 controller、esb 是否要新增 BizService?
|
|
||||||
|
|
||||||
## 8. 待办与已知技术负债
|
|
||||||
|
|
||||||
- `springdoc-openapi-maven-plugin` 的 `apiDocsUrl` 硬编码 `http://localhost:8080/v3/api-docs`,与应用实际端口(9060)不一致,生成 openapi.json 时需手工修正。
|
|
||||||
- `prod/application.yml` 引用 `abacus.springboot.example.springdoc` 扫描路径但该包不存在(模板未创建 springdoc 包)——新系统以实际包为准。
|
|
||||||
|
|
||||||
## 9. 文档变更协议
|
|
||||||
|
|
||||||
- 加/删模块或改依赖方向 → 改本文 §2 + §3,同一 commit。
|
|
||||||
- 改对外签名 → 先改 §3.2,再改代码。
|
|
||||||
- 与 `PRD.md` 冲突 → 以 `PRD.md` 为准,回改本文;与共享 `docs/coding-standards.md` 冲突 → 以 docs/ 为准并回改本文。
|
|
||||||
|
|
||||||
## 10. SaaS 多租户架构(指针)
|
|
||||||
|
|
||||||
> 完整设计(隔离策略、租户识别、缓存/异步隔离、前后端协作、扩展性、落地映射)见工作区 `../../../../docs/architecture.md §7`;编码强制约束见 `../../../../docs/coding-standards.md §9`。本文仅记录后端特有约束:
|
|
||||||
|
|
||||||
- 租户识别以 JWT `tenantId` 为唯一真相源;`X-Tenant-Id` 头仅透传/审计。
|
|
||||||
- `TenantContextHolder`(ThreadLocal)由 `TenantInterceptor` 写入、`afterCompletion` 清除。
|
|
||||||
- 数据访问(JPA / `pi` 原生 SQL / `esb` 编排)一律带 `tenant_id`;缓存 key 前缀 `tenant:{tenantId}:`;`@Async` 经 `TenantTaskDecorator` 传播、Kafka/XXL-JOB 携带 `tenantId`。
|
|
||||||
- 后端新增 `tenant/` 相关类(`config/TenantConfig`、`dao/Tenant*`、`api/TenantController`、`esb/TenantBizService`/`TenantProvisioningService`、`pi/TenantAccess`),包归属见 §2 / §6,纳入统一扫描。
|
|
||||||
@@ -1,95 +0,0 @@
|
|||||||
# abacus.springboot.example — 开发规范(CONVENTIONS)
|
|
||||||
|
|
||||||
> 命名、目录、提交、风格、测试的权威(本仓库视角)。前后端共享约束见工作区 `docs/coding-standards.md`(`../../../../docs/coding-standards.md`),本文只写后端特有内容 + 指针,**禁止复制 docs/ 正文**。
|
|
||||||
|
|
||||||
## 0. 阅读指引
|
|
||||||
|
|
||||||
- 适用范围:`src/main/java/abacus/springboot.<应用名>/**` 业务开发(模板基础结构 pom/assembly/config 原则上不动)。
|
|
||||||
- 分工:ARCHITECTURE 管"拆成什么模块";本文管"怎么命名/写";共享编码规范、接口契约、SQL 约定、AI 生成工作流在 `docs/coding-standards.md` §5~§7。
|
|
||||||
|
|
||||||
## 1. 命名
|
|
||||||
|
|
||||||
### 1.1 标识符
|
|
||||||
|
|
||||||
- 类:PascalCase;接口带后缀 `IF`(pi 层 `XxxAccessIF`、wsi 层 `XxxServiceIF`);编排服务 `XxxBizService`;实现 `XxxAccess`。
|
|
||||||
- Controller:`XxxController`(api 对外 / controller 内部);基类 `BaseServlet`。
|
|
||||||
- 实体:表名小写下划线(`jc_bill`),类名驼峰(`JcBill`);DTO:请求 `ApiReqXxx`、响应 `ApiRespXxx` 或 `ApiXxx`(api/view)。
|
|
||||||
- 配置:`XxxConfiguration`、`XxxConfigKey`(常量类)。
|
|
||||||
|
|
||||||
### 1.2 模块命名(语义禁区)
|
|
||||||
|
|
||||||
- 禁止 `Manager` / `Helper` / `Util` / `Common` / `Misc` / `Tools` 这类语义为空的名字;用"动词+名词"。
|
|
||||||
- **util/ vo/ 兼容**:既有 `util/DateUtil`、`vo/BaiduToken` 等**可引不可增**——新代码禁止在 `util/`、`vo/` 包新增文件(共享规范 §8.4)。
|
|
||||||
|
|
||||||
### 1.3 文件 / 1.4 目录 / 1.5 资产命名
|
|
||||||
|
|
||||||
- 文件按类名命名(一文件一公共类);目录即包名(分层见 ARCHITECTURE §6)。
|
|
||||||
- SQL:`sql/table/{mysql,sqlserver}.sql`、`sql/upgrade.xml`、`sql/data/`;版本号 `yyyy-MM-dd[.count]`。
|
|
||||||
|
|
||||||
### 1.6 字符串与本地化
|
|
||||||
|
|
||||||
- 异常消息中文、可行动("参数[x]为空!");不硬编码无意义字符串;状态常量用 `public final static int STATUS_*`。
|
|
||||||
|
|
||||||
## 2. 代码风格
|
|
||||||
|
|
||||||
### 2.1 排版
|
|
||||||
|
|
||||||
- Java 4 空格缩进、行宽 ≤ 120;分号/括号按 Java 惯例。
|
|
||||||
- 不使用 Lombok(手写 getter/setter,与示例一致)。
|
|
||||||
|
|
||||||
### 2.2 分层纪律
|
|
||||||
|
|
||||||
- Controller 只做参数校验 + 调编排,不写 SQL、不碰 Repository;esb 只编排不做 SQL。
|
|
||||||
- 原生 SQL 在 `impl/`,**全量 `?` 参数化**;标准 CRUD/派生查询用 `repository`。
|
|
||||||
- 业务主键一律 `DaoIdGenerator`,禁止手拼。
|
|
||||||
|
|
||||||
### 2.3 并发 / 2.4 错误处理
|
|
||||||
|
|
||||||
- 事务边界在 esb 编排方法(按需 `@Transactional`);JPA 乐观锁用 `@Version`。
|
|
||||||
- 业务错误抛 `BusinessException`(中文消息);Controller 方法级 try/catch(Throwable) 记日志后 rethrow;**禁止吞异常**。
|
|
||||||
|
|
||||||
### 2.5 注释
|
|
||||||
|
|
||||||
- 每个方法必须写注释(一行职责说明,复杂方法补充入参/出参/边界,便于人工复核);只在 WHY 不明显处补充 WHY 注释;不写会随时间失效的注释。
|
|
||||||
|
|
||||||
## 3. 提交规范
|
|
||||||
|
|
||||||
### 3.1 Commit message 风格
|
|
||||||
|
|
||||||
Conventional Commits:`type(scope): subject`。允许 type:`feat` / `fix` / `docs` / `refactor` / `test` / `chore`。例:`feat(jcbill): 新增稽查收货保存接口`。
|
|
||||||
|
|
||||||
### 3.2 提交粒度 / 3.3 工作区纪律 / 3.4 分支模型
|
|
||||||
|
|
||||||
- 一次提交一个目的;不在脏工作区叠加不相关改动。
|
|
||||||
- 分支模型:主干 + 短命功能分支(按需,单人开发可直推主干)。
|
|
||||||
- 本仓库属于工作区单一 git 仓库(`D:\workBuddySpace\member`);纯后端改动 commit 限定本目录,跨项目改动(docs/)单独 commit。
|
|
||||||
|
|
||||||
### 3.5 实施日志
|
|
||||||
|
|
||||||
- 规则见 `VIBECODING_GUIDE §5`:每个可独立验收的部分写 `.project.agents/log/YYYY-MM-DD-<slug>.md`。
|
|
||||||
- 功能更新同步追加 `src/main/resources/doc/升级日志.md`(共享规范 §5.11 格式)。
|
|
||||||
|
|
||||||
## 4. 测试策略
|
|
||||||
|
|
||||||
### 4.1 框架 / 4.2 必须有测试的模块
|
|
||||||
|
|
||||||
- 无自动化测试框架(PRD 决策);接口人工冒烟。
|
|
||||||
|
|
||||||
### 4.3 必须真机/真环境验证
|
|
||||||
|
|
||||||
- **必须真机验证**(mock/模拟器不算数):多数据源路由、Kafka 消费、XXL-JOB 调度、Nacos 配置拉取、真实数据库迁移。
|
|
||||||
|
|
||||||
## 5. 与上游文档的同步矩阵
|
|
||||||
|
|
||||||
| 变更点 | 必须同步更新 |
|
|
||||||
|---|---|
|
|
||||||
| 新增/改动业务功能 | `PRD.md`(功能定义);共享规范如有涉及先改 `docs/coding-standards.md` |
|
|
||||||
| 新增包/模块/依赖方向 | 本仓库 `ARCHITECTURE.md` §2+§3 |
|
|
||||||
| 新增 SQL/表结构 | `sql/table/` 双份 + `sql/upgrade.xml`;`ARCHITECTURE.md §1` 实体清单 |
|
|
||||||
| 配置项变更 | `config/{dev,test,prod}/` 三套同步 |
|
|
||||||
| 依赖版本变更 | `pom.xml` + `doc/升级日志.md` |
|
|
||||||
|
|
||||||
## 6. 不在本文范围(明确划清)
|
|
||||||
|
|
||||||
- 模块拆分归 `ARCHITECTURE.md`;行为/范围归 `PRD.md`;前后端共享约束(响应体/异常码/分页/APP_NAME/打包)归 `docs/coding-standards.md`。
|
|
||||||
- 多租户 SaaS 隔离与前后端协作归 `docs/architecture.md §7`;编码强制约束归 `docs/coding-standards.md §9`(后端落地见本仓库 `ARCHITECTURE.md §10`)。
|
|
||||||
@@ -1,91 +0,0 @@
|
|||||||
# abacus.springboot.example — 产品需求文档(PRD)
|
|
||||||
|
|
||||||
> 行为与范围的**唯一权威**。功能的加/删/改必须先改本文,再动代码与下游文档。
|
|
||||||
> 本文回答"做什么 / 给谁 / 为什么",不回答"怎么实现"(那是 `ARCHITECTURE.md`)。
|
|
||||||
|
|
||||||
## 1. 产品愿景
|
|
||||||
|
|
||||||
为 abacus 微服务体系提供**可复用的 Spring Boot 微服务模板**:业务团队(人 + AI)在本模板上按分层规范添加业务模块(Controller / Service / 数据访问 / Entity / SQL / 配置),即可获得统一响应体、异常体系、多数据库支持、Nacos 注册配置、定时任务与动静分离打包能力,实现跨系统一致的后端工程结构与低成本复制开发。
|
|
||||||
|
|
||||||
## 2. 目标用户与典型场景
|
|
||||||
|
|
||||||
- 用户画像:公司内部业务系统后端开发团队(后端开发、全栈、AI 辅助开发人员)。
|
|
||||||
- 场景 1:作为业务开发,我想复制本模板新建一个微服务,以便快速获得 Nacos / 多库 / 打包 / 日志等基础设施。
|
|
||||||
- 场景 2:作为 AI 助手,我想依据 `docs/coding-standards.md §5/§7` 把界面需求直接生成 Controller→Service→数据访问→SQL 全链路代码。
|
|
||||||
- 场景 3:作为发布负责人,我想让所有服务打出结构一致的 `*-bin.zip`(jar+doc+sql+html),以便统一发布流程。
|
|
||||||
|
|
||||||
## 3. 范围(Scope)
|
|
||||||
|
|
||||||
### 3.1 MVP 必含(In Scope)
|
|
||||||
- 分层骨架(api/controller/dao/esb/pi/impl/repository/wsi/config)与扫描配置(springdoc/entitypackages/controllerPackages)。
|
|
||||||
- 统一响应体包装(`ResultResponseBodyWrapper`)与业务异常(`BusinessException`)。
|
|
||||||
- 多数据库(MySQL / SQL Server / Oracle / 达梦)+ Druid + JPA;Nacos 注册/配置中心。
|
|
||||||
- SQL 三件套(table 双份 / upgrade.xml 版本化 / data 初始化)与动静分离打包(assembly.xml → *-bin.zip)。
|
|
||||||
- 示例业务纵切面(JcBill 稽查示例:Controller + BizService + Access + Repository + Entity + 升级 SQL)。
|
|
||||||
|
|
||||||
### 3.2 明确不做(Out of Scope)
|
|
||||||
- 不包含具体生产业务(业务模块由团队基于模板复制开发)。
|
|
||||||
- 不提供自动化测试框架与 CI(人工冒烟验证)。
|
|
||||||
- 不维护前端页面(前端属 `abacus-static-framework` 仓库)。
|
|
||||||
|
|
||||||
## 4. 核心功能定义
|
|
||||||
|
|
||||||
### 4.1 统一响应体与异常(【核心】)
|
|
||||||
- **用户故事**:作为前端/调用方,我想所有接口返回一致的 `{status, message, data, errorCode}`,以便统一处理。
|
|
||||||
- **行为**:`Application.java` 注册 `ResultResponseBodyWrapper`;Controller 直接 return 业务对象;参数空校验抛 `BusinessException("参数[x]为空!")`。
|
|
||||||
- **边界 / 异常**:`abacus.responseExcludePath` 配置的 URI 不被包装;业务异常码首位 9、系统异常码首位 5(共享规范 §6.2)。
|
|
||||||
|
|
||||||
### 4.2 分层开发模型(【核心】)
|
|
||||||
- **用户故事**:作为团队开发,我想按固定分层写代码,以便职责清晰、可评审、可复制。
|
|
||||||
- **行为**:Controller(api/controller)→ esb 编排 → wsi/pi/repository 数据访问 → dao 实体;依赖单向。
|
|
||||||
- **边界 / 异常**:Controller 不写 SQL、不碰 Repository;esb 只编排不做 SQL;原生 SQL 全量参数化。
|
|
||||||
|
|
||||||
### 4.3 数据库多库支持(【核心】)
|
|
||||||
- **用户故事**:作为实施,我想同一套代码跑 MySQL 与 SQL Server,以便一套系统多客户部署。
|
|
||||||
- **行为**:建表脚本 `sql/table/{mysql,sqlserver}.sql` 双份同步;历史变更 `sql/upgrade.xml`(`translator="true"` 以 SQL Server 语法书写由框架翻译)。
|
|
||||||
- **边界 / 异常**:多数据源路由、真实迁移必须真机验证。
|
|
||||||
|
|
||||||
### 4.4 动静分离打包(【核心】)
|
|
||||||
- **用户故事**:作为发布,我想一个发布包包含前后端全部产物,以便统一发版。
|
|
||||||
- **行为**:前端产物输出到 `resources/html/vue/<应用名>/`,`mvn package` 经 `assembly.xml` 打出 `*-bin.zip`(jar+doc+sql+html)。
|
|
||||||
- **边界 / 异常**:jar 内不含 html;`pom.xml` artifactId 建议 `abacus.springboot.<应用名>`。
|
|
||||||
|
|
||||||
## 5. 信息架构与导航
|
|
||||||
|
|
||||||
微服务间通过 Nacos 注册发现 + Feign 调用;接口文档由 springdoc 提供(扫描 `api` 包);监控经 Actuator(base-path `/services/actuator`)暴露 Prometheus 指标;定时任务由 XXL-JOB(`application-xxljob.yml`)承载。
|
|
||||||
|
|
||||||
## 6. 数据模型(概念级)
|
|
||||||
|
|
||||||
业务数据实体集中在 `dao/` 包(JPA 映射);概念级实体清单由各业务模块在 `ARCHITECTURE.md §1` 维护。模板自带示例实体:`jc_bill`(稽查主单)及其明细/关联表(见 `sql/upgrade.xml`)。
|
|
||||||
|
|
||||||
## 7. 非功能性需求
|
|
||||||
|
|
||||||
- 多环境配置 `config/{dev,test,prod}/` 三套同构;dev 端口 9060 / test、prod 9000(以实际为准)。
|
|
||||||
- 上传限制 50MB;Druid 连接池(初始 10 / 最大 60);Feign 超时 10s 连接 / 30s 读取。
|
|
||||||
- JPA 与 Bean 延迟启动(`lazy-initialization`)以加速启动。
|
|
||||||
|
|
||||||
## 8. 国际化与文案语气
|
|
||||||
|
|
||||||
异常消息使用中文,直接面向用户可理解(如"参数[x]为空!");接口文档(@Operation summary)用中文。
|
|
||||||
|
|
||||||
## 9. 隐私与合规
|
|
||||||
|
|
||||||
- 数据库连接与 Nacos 凭据放在 `config/<env>/` 配置文件(git 跟踪按团队约定);**不得**新增明文密钥到非约定位置。
|
|
||||||
- 审计信息(菜单/模块/业务域)由前端 commonParam 提供,见共享规范 §6.7。
|
|
||||||
|
|
||||||
## 10. 风险与缓解
|
|
||||||
|
|
||||||
- **APP_NAME 四处漏配静默失败**:按共享规范 §3 四联检(bootstrap.yml / 扫描包 / URL 首段 / outDir)。
|
|
||||||
- **多库语法差异**:新 SQL 以 SQL Server 语法编写并加 `translator="true"`,建表双份同步。
|
|
||||||
- **框架 jar 版本升级**:`pom.xml` 依赖版本变更需在升级日志记录并回归验证。
|
|
||||||
|
|
||||||
## 11. 发布里程碑(建议,待路线图细化)
|
|
||||||
|
|
||||||
- M0:治理与规范落地(本次已完成)。
|
|
||||||
- M1+:按 `ROADMAP.md` 以新业务模块验证模板可复制性(界面→代码全链路)。
|
|
||||||
|
|
||||||
## 12. 假设与待澄清项(复核时请逐条回应)
|
|
||||||
|
|
||||||
- Q1. 新业务是否一律采用 `abacus.springboot.<应用名>.<层>` 包前缀?(默认:是)
|
|
||||||
- Q2. 是否引入后端单元测试(如 JUnit/Testcontainers)?(默认:否,人工冒烟 + 真机验证)
|
|
||||||
- Q3. `util/`、`vo/` 包是否冻结不再新增?(默认:是,既有兼容、新增禁止)
|
|
||||||
@@ -1,55 +0,0 @@
|
|||||||
# abacus.springboot.example — 实施路线图(ROADMAP)
|
|
||||||
|
|
||||||
> 由 `PRD.md` + `ARCHITECTURE.md` 推导。按依赖图拓扑顺序排开发节奏。每完成一个复选框,在**同一个 commit**里打勾;每完成一个 milestone,按 `.project.agents/log/` 模板写日志。
|
|
||||||
|
|
||||||
## 0. 排序原则
|
|
||||||
|
|
||||||
- 先基础设施(config/dao/repository 等底层)后接口(esb/api)。
|
|
||||||
- 本仓库为**后端模板**:里程碑以"验证模板可复制性 + 治理可持续性"为主线,而非业务功能交付。
|
|
||||||
|
|
||||||
## 1. 里程碑总览
|
|
||||||
|
|
||||||
| Milestone | 目标 | 验收(能演示什么) |
|
|
||||||
|---|---|---|
|
|
||||||
| M0 | 治理落地(本次):git 单一仓库、docs/ 文档中心、.project.agents 全套、共享规范 | 克隆仓库 → `mvn package -Pdev -DskipTests` 可出包;治理文档无残留 token |
|
|
||||||
| M1 | 模板可复制性验证:按 `docs/coding-standards.md §7` 用第一个业务模块(界面→代码)跑通全链路 | 新业务接口可调用(springdoc 可见)、SQL 可在 MySQL/SQL Server 执行 |
|
|
||||||
| M2 | 沉淀与回写:业务中发现的共性需求回写模板/规范 | 模板与规范有增量,升级日志有记录 |
|
|
||||||
|
|
||||||
## 2. 里程碑详细
|
|
||||||
|
|
||||||
### M0 — 治理与规范落地(已完成)
|
|
||||||
- [x] 版本控制 + ignore + 骨架提交(工作区单一仓库 `D:\workBuddySpace\member`)
|
|
||||||
- [x] docs/ 文档中心(README / architecture / coding-standards / agent-guide)
|
|
||||||
- [x] 本仓库 .project.agents 治理文件(CLAUDE / AGENTS / SELF_CONSTRAINTS / VIBECODING_GUIDE / settings / context 四文档)
|
|
||||||
- [x] 完成门禁(治理文档无残留模板 token / FILL 标记)
|
|
||||||
- **验收**:克隆仓库 → `mvn package -Pdev -DskipTests` 可出包;治理文档无残留 token。
|
|
||||||
|
|
||||||
### M1 — 模板可复制性验证(首个业务模块)
|
|
||||||
- **依赖**:M0
|
|
||||||
- [ ] 按 `docs/coding-standards.md §7` 从界面需求生成:Controller(api 或 controller)→ esb/wsi → pi/impl 或 repository → dao/DTO → SQL(table 双份 + upgrade.xml)
|
|
||||||
- [ ] 扫描配置核对(`springdoc.packages-to-scan` / `abacus.entitypackages` / `abacus.controllerPackages` 覆盖新包)
|
|
||||||
- [ ] APP_NAME 四联检 + 前后端 URL 逐字对齐
|
|
||||||
- [ ] 多库验证:DDL 在 MySQL 与 SQL Server 均可执行;接口冒烟通
|
|
||||||
- **验收**:新业务接口 springdoc 可见、可调用,SQL 双库可执行。
|
|
||||||
|
|
||||||
### M2 — 沉淀与回写
|
|
||||||
- **依赖**:M1
|
|
||||||
- [ ] 收集业务开发中的共性需求(分层盲点/框架 jar 能力/规范补缺)
|
|
||||||
- [ ] 规范盲点回写 `docs/coding-standards.md`(先改 docs/ 再同步各仓库指针)
|
|
||||||
- [ ] `doc/升级日志.md` 记录模板演进
|
|
||||||
- **验收**:模板与规范有可见增量,新业务直接复用。
|
|
||||||
|
|
||||||
## 3. 并行轨道(与代码 milestone 解耦)
|
|
||||||
|
|
||||||
- 无(CI 等暂不纳入;如团队需要可补充构建门禁脚本到 `.project.agents/scripts/`)。
|
|
||||||
|
|
||||||
## 4. 完成定义(DoD)
|
|
||||||
|
|
||||||
- 构建通过(`mvn package -Pdev -DskipTests` 无错);涉及多库场景需真机验证。
|
|
||||||
- 触及的架构变更已回写 `ARCHITECTURE.md`;共享约束变更先改 `docs/coding-standards.md`。
|
|
||||||
- 已写执行日志(`.project.agents/log/YYYY-MM-DD-<slug>.md`)并追加 `doc/升级日志.md`。
|
|
||||||
|
|
||||||
## 5. 跨 milestone 不变量
|
|
||||||
|
|
||||||
- I1~I4(ARCHITECTURE §1.3):主键走 DaoIdGenerator、SQL 参数化、依赖单向、Controller 不拼响应体。
|
|
||||||
- 任何新增包/依赖方向先登记 `ARCHITECTURE.md` 再写代码。
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
# 治理体系落地(ADS Retrofit)
|
|
||||||
|
|
||||||
- **日期**:2026-08-19
|
|
||||||
- **关联**:ROADMAP M0
|
|
||||||
- **会话上下文**:工作区两个参考模板(后端 abacus.springboot.example、前端 abacus-static-framework)此前无 git、无 docs/ 文档中心、无 .project.agents 治理。
|
|
||||||
|
|
||||||
## 做了什么
|
|
||||||
|
|
||||||
- 工作区根 `D:\workBuddySpace\member` 建单一 git 仓库 + `.gitignore`。
|
|
||||||
- 创建 `docs/` 文档中心(单源化):`README.md`、`architecture.md`、`coding-standards.md`(★前后端开发约束规范)、`agent-guide.md`。
|
|
||||||
- 本仓库落地 `.project.agents/`:CLAUDE.md / AGENTS.md / SELF_CONSTRAINTS.md / VIBECODING_GUIDE.md / settings.json / log/README.md + `docs/context/{PRD,ARCHITECTURE,ROADMAP,CONVENTIONS}.md`(无 UIUX,include_uiux=false),全部填充无残留 token。
|
|
||||||
- 分层以示例模块实际结构为准(api/controller/dao/esb/pi/impl/repository/wsi/config/util/vo);`util`、`vo` 冻结(可引不可增)。
|
|
||||||
- 共享内容以指针引用 `../../../../docs/`,未复制正文;`doc/升级日志.md` 追加 1.0.2(2026-08-19) 治理记录。
|
|
||||||
- 分析过程使用 CodeGraph MCP 索引本仓库(82 文件);符号级上下文工具受限,降级为关键文件定向读取。
|
|
||||||
|
|
||||||
## 提交
|
|
||||||
|
|
||||||
- 见工作区根 git 提交(docs/ 文档中心、前端治理、后端治理三个原子提交)。
|
|
||||||
|
|
||||||
## 状态变更
|
|
||||||
|
|
||||||
- ARCHITECTURE:本仓库 ARCHITECTURE.md 已按实际分层编写;不变量 I1~I4(主键 DaoIdGenerator / SQL 参数化 / 依赖单向 / Controller 不拼响应体)。
|
|
||||||
- PRD:已填充(统一响应体/分层模型/多库/动静分离四核心)。
|
|
||||||
- 测试:无代码改动,未触发。
|
|
||||||
|
|
||||||
## 下一步
|
|
||||||
|
|
||||||
- 按 ROADMAP M1 用第一个业务模块(界面→代码)验证模板可复制性。
|
|
||||||
- 待澄清项见 PRD §12(包前缀 / 是否引入后端单测 / util、vo 冻结)。
|
|
||||||
- 已知负债:`springdoc-openapi-maven-plugin` apiDocsUrl 硬编码 8080(ARCHITECTURE §8)。
|
|
||||||
@@ -1,54 +0,0 @@
|
|||||||
# 实施日志(execution log)
|
|
||||||
|
|
||||||
本目录沉淀"做了什么 + 哪些提交 + 下一步",供下一个会话接手用。
|
|
||||||
规则与时机见 `../VIBECODING_GUIDE.md §5`;硬约束见 `../SELF_CONSTRAINTS.md §B6`。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 文件命名
|
|
||||||
|
|
||||||
`YYYY-MM-DD-<slug>.md`
|
|
||||||
|
|
||||||
- `<slug>` = 简短动词 + 范围,kebab-case
|
|
||||||
- 同日多份按写作顺序加 `-1`、`-2` 后缀
|
|
||||||
|
|
||||||
## 模板
|
|
||||||
|
|
||||||
```markdown
|
|
||||||
# <一句话标题:完成了什么>
|
|
||||||
|
|
||||||
- **日期**:YYYY-MM-DD
|
|
||||||
- **关联**:ROADMAP M<N> / 子任务名 / 关联文档
|
|
||||||
- **会话上下文**:(可选)本会话从哪开始接手的
|
|
||||||
|
|
||||||
## 做了什么
|
|
||||||
- bullet 1
|
|
||||||
- bullet 2
|
|
||||||
|
|
||||||
## 提交
|
|
||||||
- `<short hash>` <commit subject>
|
|
||||||
|
|
||||||
(若本段未提交:明确写"未提交,工作树状态:…"并说明原因)
|
|
||||||
|
|
||||||
## 状态变更
|
|
||||||
- ARCHITECTURE:是否动过?动了哪一节?
|
|
||||||
- PRD:是否触发回归?
|
|
||||||
- 测试:跑了什么,结果
|
|
||||||
|
|
||||||
## 下一步
|
|
||||||
- 接下来要做的第一件事(具体到任务名)
|
|
||||||
- 已知阻塞 / 待澄清项
|
|
||||||
```
|
|
||||||
|
|
||||||
## 何时写
|
|
||||||
|
|
||||||
- 完成一个 ROADMAP milestone
|
|
||||||
- 完成一个独立可验收的子任务
|
|
||||||
- 完成非平凡的重构 / bug 修复
|
|
||||||
- 会话即将结束(兜底)
|
|
||||||
|
|
||||||
## 何时不写
|
|
||||||
|
|
||||||
- 还没完成一个"可独立验收"的部分(别凑数)
|
|
||||||
- 纯文档微调(commit 自身已够说明)
|
|
||||||
- 实验性探索且最终 revert(commit 即可)
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
{
|
|
||||||
"permissions": {
|
|
||||||
"allow": [],
|
|
||||||
"deny": []
|
|
||||||
},
|
|
||||||
"hooks": {}
|
|
||||||
}
|
|
||||||
@@ -1,100 +0,0 @@
|
|||||||
# abacus.base.demo
|
|
||||||
|
|
||||||
是前后端分离的基于 Spring Boot 的基础项目,作为使用 agent 应用开发前后端项目的**基础模板**。本项目自身不包含业务 Java 代码,业务能力由 abacus 框架(`abacus.config`、`abacus.commons`、`abacus.fundation`、`abacus.business.service` 等)提供,开发者/agent 在本模板上添加业务模块即可。
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## 技术栈
|
|
||||||
|
|
||||||
| 项 | 说明 |
|
|
||||||
| --- | --- |
|
|
||||||
| 构建 | Maven,父工程 `abacus.framework:abacus.springcloud.pom:1.5.0` |
|
|
||||||
| 框架 | Spring Boot + abacus 系列框架(配置、通用、基础、业务服务) |
|
|
||||||
| 注册/配置中心 | Nacos(见 `bootstrap.yml`) |
|
|
||||||
| 数据库 | MySQL / SQL Server / Oracle / 达梦,Druid 连接池 + JPA |
|
|
||||||
| 定时任务 | XXL-JOB(`application-xxljob.yml`) |
|
|
||||||
| 消息队列 | Kafka |
|
|
||||||
| 接口文档 | springdoc(OpenAPI) |
|
|
||||||
| 监控 | Spring Actuator + Prometheus |
|
|
||||||
|
|
||||||
## 目录结构
|
|
||||||
|
|
||||||
```
|
|
||||||
abacus.base.demo/
|
|
||||||
├── pom.xml # Maven 构建配置:依赖、多环境 profile(dev/test/prod)、打包插件
|
|
||||||
├── assembly.xml # Maven 发布包(zip)打包规则:jar + doc + sql + html
|
|
||||||
├── .project / .classpath # Eclipse IDE 工程配置(Java + Maven 项目)
|
|
||||||
├── .settings/ # Eclipse 偏好配置(编码、JDK、m2e)
|
|
||||||
├── src/
|
|
||||||
│ └── main/
|
|
||||||
│ ├── java/ # 【业务代码目录】Java 源码(当前为空,新增业务代码放这里)
|
|
||||||
│ ├── resources/
|
|
||||||
│ │ ├── config/
|
|
||||||
│ │ │ ├── dev/ # dev 环境配置(Maven profile 默认激活)
|
|
||||||
│ │ │ │ ├── application.yml # 主配置:端口、数据源、JPA、Druid、Kafka、springdoc、abacus 扫描路径等
|
|
||||||
│ │ │ │ ├── bootstrap.yml # 启动引导配置:应用名、Nacos 注册中心/配置中心
|
|
||||||
│ │ │ │ ├── application-xxljob.yml # XXL-JOB 调度中心与执行器配置
|
|
||||||
│ │ │ │ ├── logback-spring.xml # 应用日志配置
|
|
||||||
│ │ │ │ └── logback-access.xml # 访问日志配置
|
|
||||||
│ │ │ ├── test/ # test 环境配置(与 dev 文件同名同结构)
|
|
||||||
│ │ │ └── prod/ # prod 环境配置(与 dev 文件同名同结构)
|
|
||||||
│ │ ├── doc/
|
|
||||||
│ │ │ └── 升级日志.md # 版本升级日志,按版本记录更新说明
|
|
||||||
│ │ ├── sql/
|
|
||||||
│ │ │ ├── table/
|
|
||||||
│ │ │ │ ├── mysql.sql # MySQL 建表 DDL(示例表 example_category)
|
|
||||||
│ │ │ │ └── sqlserver.sql # SQL Server 建表 DDL(与 mysql.sql 对应)
|
|
||||||
│ │ │ ├── data/
|
|
||||||
│ │ │ │ └── sqlserver.sql # 初始化数据(acas 子系统/菜单/模块注册)
|
|
||||||
│ │ │ └── upgrade.xml # 数据库版本升级 SQL 配置(按版本号执行,支持多库语法翻译)
|
|
||||||
│ │ ├── vue/ # 【Vue 项目源码目录】存放 vue 项目,映射过来的,前后端分离(当前为空)
|
|
||||||
│ │ └── html/ # 【前端构建产物目录】存放 vue 项目编译后的 html 等静态资源(当前为空,由 assembly.xml 打入发布包)
|
|
||||||
│ └── (META-INF) # 若存在,会按 pom.xml 配置打入发布包
|
|
||||||
└── target/ # Maven 构建输出目录(编译产物、打包 zip,可忽略/删除)
|
|
||||||
```
|
|
||||||
|
|
||||||
## 关键配置说明(agent 开发时必须了解)
|
|
||||||
|
|
||||||
### 1. pom.xml
|
|
||||||
- 多环境 profile:`dev`(默认)/ `test` / `prod`,通过 `-P` 指定,决定加载 `src/main/resources/config/<env>/` 下的配置。
|
|
||||||
- 打包资源:仅打包 `META-INF`、当前环境 config 目录、`sql/**` 到 jar 内;`doc`、`sql`、`html` 通过 `assembly.xml` 额外打入 zip 发布包。
|
|
||||||
- 发布包:`mvn package` 生成 `${artifactId}-${version}-bin.zip`(含 jar + doc + sql + html)。
|
|
||||||
|
|
||||||
### 2. application.yml(以 dev 为例,三个环境结构一致)
|
|
||||||
- `server.port`:服务端口(示例 9003)。
|
|
||||||
- `spring.datasource`:Druid 数据源;`enableMultiSource` 可开启多数据源(`multidb0~multidb9` 预设 10 个),含 `defaultDB` 默认库、`readDB` 读库、`dynamicRelation` 业务路由配置。
|
|
||||||
- `spring.jpa`:JPA/Hibernate 配置,命名策略使用框架的 `LowercaseNamingStrategyStandardImpl`。
|
|
||||||
- `spring.kafka`:Kafka 生产/消费配置。
|
|
||||||
- `springdoc.packages-to-scan`:在线接口文档扫描的包路径。
|
|
||||||
- `abacus.controllerPackages` / `abacus.entitypackages`:**框架扫描 Controller 与实体的包路径,新增业务代码必须将包名加入此配置**(示例包前缀 `abacus.springboot.example`)。
|
|
||||||
- `abacus.responseExcludePath`:不被统一响应体包装器拦截的 URI。
|
|
||||||
- `management.endpoints.web.base-path`:Actuator 端点基础路径(`/services/actuator`)。
|
|
||||||
|
|
||||||
### 3. bootstrap.yml
|
|
||||||
- `spring.application.name`:应用名(示例 `example`),Nacos 中需唯一。
|
|
||||||
- `spring.cloud.nacos`:Nacos 服务地址、账号、命名空间;通过 `extension-configs` 引入公共配置(`abacus-discovery.yml`、`abacus-acas.yml`、`abacus-redis.yml` 等)。
|
|
||||||
|
|
||||||
### 4. sql/ 目录
|
|
||||||
- `table/`:建表 DDL,按数据库分文件(mysql.sql / sqlserver.sql),新建业务表需同步维护两个文件。
|
|
||||||
- `data/`:初始化数据(子系统、菜单、模块注册,依赖 acas 框架)。
|
|
||||||
- `upgrade.xml`:版本化升级 SQL,`<upgrade version="yyyy-MM-dd[.count]">` 按版本升序执行;`translator="true"` 时以 SQL Server 语法编写,由框架翻译到各数据库。
|
|
||||||
|
|
||||||
## 给 agent 的开发约定
|
|
||||||
|
|
||||||
1. **新增 Java 代码**:放入 `src/main/java`,包名建议以 `abacus.springboot.应用名.*` 为前缀(保持框架扫描配置一致,或同步修改 `application.yml` 中 `abacus.controllerPackages` / `springdoc.packages-to-scan` / `abacus.entitypackages`)。
|
|
||||||
2. **新增前端 Vue 项目**:Vue 源码放在 `src/main/resources/vue/`,构建(编译)产物输出到 `src/main/resources/html/`,由 `assembly.xml` 自动打入发布包。
|
|
||||||
3. **新增配置项**:优先写入 `src/main/resources/config/<env>/application.yml` 对应环境,环境间保持字段一致。
|
|
||||||
4. **数据库变更**:建表写 `sql/table/`,历史变更写 `sql/upgrade.xml`,初始化数据写 `sql/data/`。
|
|
||||||
5. **文档与日志**:功能更新记录到 `src/main/resources/doc/升级日志.md`。
|
|
||||||
6. **打包产物**:`target/` 目录为构建输出,无需维护;发布包为 `target/*-bin.zip`。
|
|
||||||
7. **多环境配置**:修改配置时需同步 `dev` / `test` / `prod` 三个目录(或按需仅改某环境)。
|
|
||||||
8. **pom.xml**:`<artifactId></artifactId>`建议以`abacus.springboot.应用名`设置
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0"
|
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd">
|
|
||||||
|
|
||||||
<id>bin</id>
|
|
||||||
<!-- 打包格式 "zip" - Creates a ZIP file format "tar" - Creates a TAR format
|
|
||||||
"tar.gz" or "tgz" - Creates a gzip'd TAR format "tar.bz2" or "tbz2" - Creates
|
|
||||||
a bzip'd TAR format "tar.snappy" - Creates a snappy'd TAR format "tar.xz"
|
|
||||||
or "txz" - Creates a xz'd TAR format "jar" - Creates a JAR format "dir" -
|
|
||||||
Creates an exploded directory format "war" - Creates a WAR format -->
|
|
||||||
<formats>
|
|
||||||
<format>zip</format>
|
|
||||||
</formats>
|
|
||||||
<includeBaseDirectory>false</includeBaseDirectory>
|
|
||||||
<!-- 打包文件 -->
|
|
||||||
<fileSets>
|
|
||||||
<fileSet>
|
|
||||||
<directory>${project.build.directory}</directory>
|
|
||||||
<outputDirectory>/</outputDirectory>
|
|
||||||
<includes>
|
|
||||||
<include>*.jar</include>
|
|
||||||
</includes>
|
|
||||||
<excludes>
|
|
||||||
<exclude>*-sources.jar</exclude>
|
|
||||||
</excludes>
|
|
||||||
</fileSet>
|
|
||||||
<fileSet>
|
|
||||||
<directory>src/main/resources/doc</directory>
|
|
||||||
<outputDirectory>doc</outputDirectory>
|
|
||||||
</fileSet>
|
|
||||||
<fileSet>
|
|
||||||
<directory>src/main/resources/sql</directory>
|
|
||||||
<outputDirectory>sql</outputDirectory>
|
|
||||||
</fileSet>
|
|
||||||
<fileSet>
|
|
||||||
<directory>src/main/resources/html</directory>
|
|
||||||
<outputDirectory>html</outputDirectory>
|
|
||||||
</fileSet>
|
|
||||||
|
|
||||||
</fileSets>
|
|
||||||
</assembly>
|
|
||||||
@@ -1,235 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
|
||||||
|
|
||||||
<parent>
|
|
||||||
<groupId>abacus.framework</groupId>
|
|
||||||
<artifactId>abacus.springcloud.pom</artifactId>
|
|
||||||
<version>1.5.0</version>
|
|
||||||
</parent>
|
|
||||||
|
|
||||||
<artifactId>abacus.springboot.example</artifactId>
|
|
||||||
<version>1.0.0</version>
|
|
||||||
|
|
||||||
<name>abacus.springboot.example</name>
|
|
||||||
<dependencies>
|
|
||||||
<!-- config-配置相关文件 -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>abacus</groupId>
|
|
||||||
<artifactId>abacus.config</artifactId>
|
|
||||||
<version>2.1.0</version>
|
|
||||||
<exclusions>
|
|
||||||
<exclusion>
|
|
||||||
<groupId>org.bouncycastle</groupId>
|
|
||||||
<artifactId>bcprov-ext-jdk15</artifactId>
|
|
||||||
</exclusion>
|
|
||||||
</exclusions>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- 通用服务 -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>abacus.framework</groupId>
|
|
||||||
<artifactId>abacus.commons</artifactId>
|
|
||||||
<version>1.6.5</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- alibaba-fastjson -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.alibaba</groupId>
|
|
||||||
<artifactId>fastjson</artifactId>
|
|
||||||
<version>1.2.83</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- 各数据库相关驱动 -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>mysql</groupId>
|
|
||||||
<artifactId>mysql-connector-java</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>net.sourceforge.jtds</groupId>
|
|
||||||
<artifactId>jtds</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.microsoft.sqlserver</groupId>
|
|
||||||
<artifactId>mssql-jdbc</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>oracle</groupId>
|
|
||||||
<artifactId>oracle-jdbc</artifactId>
|
|
||||||
<version>11.2.0.3.0</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.xuxueli</groupId>
|
|
||||||
<artifactId>xxl-job-core</artifactId>
|
|
||||||
<version>2.3.0</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- http -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.apache.httpcomponents</groupId>
|
|
||||||
<artifactId>httpclient</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>commons-httpclient</groupId>
|
|
||||||
<artifactId>commons-httpclient</artifactId>
|
|
||||||
<version>3.1</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.apache.httpcomponents</groupId>
|
|
||||||
<artifactId>httpmime</artifactId>
|
|
||||||
<version>4.5</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<dependency>
|
|
||||||
<groupId>abacus.framework</groupId>
|
|
||||||
<artifactId>abacus.asyncTool</artifactId>
|
|
||||||
<version>1.0.0</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- abacus-fundation-基础包 -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>abacus</groupId>
|
|
||||||
<artifactId>abacus.fundation</artifactId>
|
|
||||||
<version>3.4.4</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- pms-商品基础资料服务 -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>abacus.org.pms</groupId>
|
|
||||||
<artifactId>abacus.org.pms.service</artifactId>
|
|
||||||
<version>4.3.1</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.dameng</groupId>
|
|
||||||
<artifactId>DmJdbcDriver18</artifactId>
|
|
||||||
<version>8.1.3.140</version>
|
|
||||||
</dependency>
|
|
||||||
</dependencies>
|
|
||||||
<profiles>
|
|
||||||
<profile>
|
|
||||||
<id>dev</id>
|
|
||||||
<properties>
|
|
||||||
<profiles.active>dev</profiles.active>
|
|
||||||
</properties>
|
|
||||||
<activation>
|
|
||||||
<activeByDefault>true</activeByDefault>
|
|
||||||
</activation>
|
|
||||||
</profile>
|
|
||||||
<profile>
|
|
||||||
<id>test</id>
|
|
||||||
<properties>
|
|
||||||
<profiles.active>test</profiles.active>
|
|
||||||
</properties>
|
|
||||||
</profile>
|
|
||||||
<profile>
|
|
||||||
<id>prod</id>
|
|
||||||
<properties>
|
|
||||||
<profiles.active>prod</profiles.active>
|
|
||||||
</properties>
|
|
||||||
</profile>
|
|
||||||
</profiles>
|
|
||||||
<build>
|
|
||||||
<resources>
|
|
||||||
<resource>
|
|
||||||
<directory>META-INF</directory>
|
|
||||||
<targetPath>META-INF</targetPath>
|
|
||||||
</resource>
|
|
||||||
<!-- 指定需要打入resources中的配置文件 -->
|
|
||||||
<resource>
|
|
||||||
<directory>src/main/resources/config/${profiles.active}</directory>
|
|
||||||
</resource>
|
|
||||||
<resource>
|
|
||||||
<directory>src/main/resources</directory>
|
|
||||||
<includes>
|
|
||||||
<include>sql/**</include>
|
|
||||||
</includes>
|
|
||||||
</resource>
|
|
||||||
</resources>
|
|
||||||
<plugins>
|
|
||||||
<plugin>
|
|
||||||
<groupId>org.springframework.boot</groupId>
|
|
||||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
|
||||||
<configuration>
|
|
||||||
<includeSystemScope>true</includeSystemScope>
|
|
||||||
</configuration>
|
|
||||||
<executions>
|
|
||||||
<execution>
|
|
||||||
<goals>
|
|
||||||
<goal>build-info</goal>
|
|
||||||
</goals>
|
|
||||||
</execution>
|
|
||||||
</executions>
|
|
||||||
</plugin>
|
|
||||||
<!-- 发布包 -->
|
|
||||||
<plugin>
|
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
|
||||||
<artifactId>maven-assembly-plugin</artifactId>
|
|
||||||
<version>2.5.4</version>
|
|
||||||
<executions>
|
|
||||||
<execution><!-- 配置执行器 -->
|
|
||||||
<id>make-assembly</id>
|
|
||||||
<phase>package</phase><!-- 绑定到package生命周期阶段上 -->
|
|
||||||
<goals>
|
|
||||||
<goal>single</goal><!-- 只运行一次 -->
|
|
||||||
</goals>
|
|
||||||
<configuration>
|
|
||||||
<finalName>${project.artifactId}-${project.version}</finalName>
|
|
||||||
<descriptor>assembly.xml</descriptor><!--配置描述文件路径 -->
|
|
||||||
</configuration>
|
|
||||||
</execution>
|
|
||||||
</executions>
|
|
||||||
</plugin>
|
|
||||||
|
|
||||||
|
|
||||||
<!-- Spring Boot Maven Plugin:负责启动/停止应用 -->
|
|
||||||
<plugin>
|
|
||||||
<groupId>org.springframework.boot</groupId>
|
|
||||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
|
||||||
<version>2.5.6</version> <!-- 与您的项目版本一致 -->
|
|
||||||
<configuration>
|
|
||||||
<!-- 必须启用 admin 功能,否则 start/stop 可能不生效 -->
|
|
||||||
<jvmArguments>-Dspring.application.admin.enabled=true</jvmArguments>
|
|
||||||
</configuration>
|
|
||||||
<executions>
|
|
||||||
<execution>
|
|
||||||
<id>pre-integration-test</id>
|
|
||||||
<goals>
|
|
||||||
<goal>start</goal> <!-- 在集成测试前启动 -->
|
|
||||||
</goals>
|
|
||||||
</execution>
|
|
||||||
<execution>
|
|
||||||
<id>post-integration-test</id>
|
|
||||||
<goals>
|
|
||||||
<goal>stop</goal> <!-- 在集成测试后停止 -->
|
|
||||||
</goals>
|
|
||||||
</execution>
|
|
||||||
</executions>
|
|
||||||
</plugin>
|
|
||||||
|
|
||||||
<!-- springdoc-openapi-maven-plugin:生成 openapi.json -->
|
|
||||||
<plugin>
|
|
||||||
<groupId>org.springdoc</groupId>
|
|
||||||
<artifactId>springdoc-openapi-maven-plugin</artifactId>
|
|
||||||
<version>1.5</version>
|
|
||||||
<executions>
|
|
||||||
<execution>
|
|
||||||
<id>integration-test</id>
|
|
||||||
<goals>
|
|
||||||
<goal>generate</goal>
|
|
||||||
</goals>
|
|
||||||
</execution>
|
|
||||||
</executions>
|
|
||||||
<!-- 如果应用端口不是 8080,请在这里修改 -->
|
|
||||||
<configuration>
|
|
||||||
<apiDocsUrl>http://localhost:8080/v3/api-docs</apiDocsUrl>
|
|
||||||
<outputFileName>openapi.json</outputFileName>
|
|
||||||
<outputDir>${project.build.directory}</outputDir>
|
|
||||||
</configuration>
|
|
||||||
</plugin>
|
|
||||||
</plugins>
|
|
||||||
</build>
|
|
||||||
|
|
||||||
</project>
|
|
||||||
@@ -1,58 +0,0 @@
|
|||||||
package abacus.springboot.example;
|
|
||||||
|
|
||||||
import org.apache.http.client.HttpClient;
|
|
||||||
import org.apache.http.client.config.RequestConfig;
|
|
||||||
import org.apache.http.impl.client.HttpClientBuilder;
|
|
||||||
import org.springframework.boot.SpringApplication;
|
|
||||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
|
||||||
import org.springframework.boot.autoconfigure.domain.EntityScan;
|
|
||||||
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
|
|
||||||
import org.springframework.cloud.openfeign.EnableFeignClients;
|
|
||||||
import org.springframework.context.annotation.Bean;
|
|
||||||
import org.springframework.context.annotation.ComponentScan;
|
|
||||||
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
|
|
||||||
import org.springframework.http.client.ClientHttpRequestFactory;
|
|
||||||
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
|
|
||||||
import org.springframework.web.client.RestTemplate;
|
|
||||||
|
|
||||||
import abacus.commons.responsebody.wrapper.ResultResponseBodyWrapper;
|
|
||||||
|
|
||||||
@SpringBootApplication
|
|
||||||
@EnableDiscoveryClient
|
|
||||||
// @EnableHystrix
|
|
||||||
// 配置扫描
|
|
||||||
@ComponentScan(basePackages = { "abacus.springboot.example", "abacus.springboot.example.*" })
|
|
||||||
// 指定加载的repository 否则不能加载外部的repository
|
|
||||||
@EnableJpaRepositories(basePackages = { "abacus.springboot.example.*", })
|
|
||||||
// 指定加载的外部entity 否则不能加载外部的entity
|
|
||||||
@EntityScan(basePackages = { "abacus.springboot.example.*", "com.abacus.pms.*", "com.abacus.xpos.foundation.dao" })
|
|
||||||
//指定加载外部Feign
|
|
||||||
@EnableFeignClients("abacus.springboot.example.feign")
|
|
||||||
public class Application {
|
|
||||||
|
|
||||||
public static void main(String[] args) {
|
|
||||||
SpringApplication.run(Application.class, args);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
public ResultResponseBodyWrapper getResultResponseBodyWrapper() {
|
|
||||||
return new ResultResponseBodyWrapper();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
public RestTemplate getRestTemplate() {
|
|
||||||
|
|
||||||
RequestConfig config = RequestConfig.custom().setConnectTimeout(5000).setSocketTimeout(5000).build();
|
|
||||||
|
|
||||||
HttpClient httpClient = HttpClientBuilder.create().setDefaultRequestConfig(config).build();
|
|
||||||
|
|
||||||
ClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(httpClient);
|
|
||||||
|
|
||||||
// SimpleClientHttpRequestFactory re = new
|
|
||||||
// SimpleClientHttpRequestFactory();
|
|
||||||
// re.setConnectTimeout(5000);
|
|
||||||
// re.setReadTimeout(5000);
|
|
||||||
return new RestTemplate(requestFactory);
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-1621
File diff suppressed because it is too large
Load Diff
-1722
File diff suppressed because it is too large
Load Diff
-390
@@ -1,390 +0,0 @@
|
|||||||
package abacus.springboot.example.api.view;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import abacus.springboot.example.dao.JcBillPhoto;
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
|
|
||||||
@Schema(description = "回购主单" , name = "ApiBillHg")
|
|
||||||
public class ApiBillHg {
|
|
||||||
|
|
||||||
@Schema(description="回购单单号", required = false, example="HG202411180001")
|
|
||||||
private String id;
|
|
||||||
|
|
||||||
@Schema(description = "稽查单号", required = false, example = "JC202411180001")
|
|
||||||
private String billid;
|
|
||||||
|
|
||||||
@Schema(description="状态", required = false, pattern = "待提交:1,待付款:2,待分仓(已付款):3,已分仓(待出库):4,已出库:5", example = "1")
|
|
||||||
private int status;
|
|
||||||
|
|
||||||
@Schema(description = "订单来源", required = false, example = "掌上华致")
|
|
||||||
private String source;
|
|
||||||
|
|
||||||
@Schema(description = "客户编码", required = false, example = "20200089")
|
|
||||||
private String account;
|
|
||||||
|
|
||||||
@Schema(description = "客户名称", required = false, example = "广东众之品酒有限公司")
|
|
||||||
private String accountname;
|
|
||||||
|
|
||||||
@Schema(description = "总数量", required = false, example = "6")
|
|
||||||
private double quantity;
|
|
||||||
|
|
||||||
@Schema(description = "总金额", required = false, example = "4800")
|
|
||||||
private double subtotal;
|
|
||||||
|
|
||||||
@Schema(description = "运费", required = false, example = "50")
|
|
||||||
private double freight;
|
|
||||||
|
|
||||||
@Schema(description = "运营经理编码", required = false, example = "zhangsan")
|
|
||||||
private String manager;
|
|
||||||
|
|
||||||
@Schema(description = "运营经理名称", required = false, example = "张三")
|
|
||||||
private String managername;
|
|
||||||
|
|
||||||
@Schema(description = "收货人姓名", required = false, example = "李四")
|
|
||||||
private String consignee;
|
|
||||||
|
|
||||||
@Schema(description = "收货人电话", required = false, example = "1888888888")
|
|
||||||
private String consigneephone;
|
|
||||||
|
|
||||||
@Schema(description = "省", required = false, example = "10001")
|
|
||||||
private String province;
|
|
||||||
|
|
||||||
@Schema(description = "省", required = false, example = "广东")
|
|
||||||
private String provincename;
|
|
||||||
|
|
||||||
@Schema(description = "市", required = false, example = "1000101")
|
|
||||||
private String city;
|
|
||||||
|
|
||||||
@Schema(description = "市", required = false, example = "广州")
|
|
||||||
private String cityname;
|
|
||||||
|
|
||||||
@Schema(description = "区", required = false, example = "100010101")
|
|
||||||
private String area;
|
|
||||||
|
|
||||||
@Schema(description = "区", required = false, example = "越秀区")
|
|
||||||
private String areaname;
|
|
||||||
|
|
||||||
@Schema(description = "详细地址", required = false, example = "东风24路")
|
|
||||||
private String address;
|
|
||||||
|
|
||||||
@Schema(description = "收货方式", required = false, example = "送货上门")
|
|
||||||
private String receiveway;
|
|
||||||
|
|
||||||
@Schema(description = "订单备注", required = false, example = "订单备注~~~")
|
|
||||||
private String remark;
|
|
||||||
|
|
||||||
@Schema(description = "运营备注", required = false, example = "运营备注~~~")
|
|
||||||
private String remark1;
|
|
||||||
|
|
||||||
@Schema(description = "物流公司名称", required = false, example = "京东快递")
|
|
||||||
private String logisticsname;
|
|
||||||
|
|
||||||
@Schema(description = "物流公司代码", required = false, example = "JD")
|
|
||||||
private String logisticscode;
|
|
||||||
|
|
||||||
@Schema(description = "物流方式", required = false, example = "")
|
|
||||||
private String logisticstype;
|
|
||||||
|
|
||||||
@Schema(description = "物流单号", required = false, example = "JD00001")
|
|
||||||
private String logisticsno;
|
|
||||||
|
|
||||||
@Schema(description="回购明细", required = false, example="")
|
|
||||||
private List<ApiBillHgItem> items;
|
|
||||||
|
|
||||||
@Schema(description="回购支付明细", required = false, example="")
|
|
||||||
private List<ApiBillHgPayment> payments;
|
|
||||||
|
|
||||||
@Schema(description="回购通知函", required = false, example="")
|
|
||||||
private List<JcBillPhoto> tzhUrl;
|
|
||||||
|
|
||||||
@Schema(description="违规回购通知函", required = false, example="")
|
|
||||||
private List<JcBillPhoto> wgtzhUrl;
|
|
||||||
|
|
||||||
@Schema(description="支付凭证", required = false, example="")
|
|
||||||
private List<JcBillPhoto> zfpzUrl;
|
|
||||||
|
|
||||||
@Schema(description="回购通知函", required = false, example="")
|
|
||||||
private String tzhUrls;
|
|
||||||
//
|
|
||||||
// @Schema(description="违规回购通知函", required = false, example="")
|
|
||||||
// private String wgtzhUrl;
|
|
||||||
//
|
|
||||||
// @Schema(description="支付凭证", required = false, example="")
|
|
||||||
// private List<String> zfpzUrl;
|
|
||||||
|
|
||||||
public String getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getTzhUrls() {
|
|
||||||
return tzhUrls;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTzhUrls(String tzhUrls) {
|
|
||||||
this.tzhUrls = tzhUrls;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<JcBillPhoto> getTzhUrl() {
|
|
||||||
return tzhUrl;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTzhUrl(List<JcBillPhoto> tzhUrl) {
|
|
||||||
this.tzhUrl = tzhUrl;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<JcBillPhoto> getWgtzhUrl() {
|
|
||||||
return wgtzhUrl;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setWgtzhUrl(List<JcBillPhoto> wgtzhUrl) {
|
|
||||||
this.wgtzhUrl = wgtzhUrl;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<JcBillPhoto> getZfpzUrl() {
|
|
||||||
return zfpzUrl;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setZfpzUrl(List<JcBillPhoto> zfpzUrl) {
|
|
||||||
this.zfpzUrl = zfpzUrl;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setId(String id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getBillid() {
|
|
||||||
return billid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setBillid(String billid) {
|
|
||||||
this.billid = billid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getStatus() {
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setStatus(int status) {
|
|
||||||
this.status = status;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getSource() {
|
|
||||||
return source;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSource(String source) {
|
|
||||||
this.source = source;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getAccount() {
|
|
||||||
return account;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAccount(String account) {
|
|
||||||
this.account = account;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getAccountname() {
|
|
||||||
return accountname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAccountname(String accountname) {
|
|
||||||
this.accountname = accountname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getQuantity() {
|
|
||||||
return quantity;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setQuantity(double quantity) {
|
|
||||||
this.quantity = quantity;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getSubtotal() {
|
|
||||||
return subtotal;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSubtotal(double subtotal) {
|
|
||||||
this.subtotal = subtotal;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getFreight() {
|
|
||||||
return freight;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setFreight(double freight) {
|
|
||||||
this.freight = freight;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getManager() {
|
|
||||||
return manager;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setManager(String manager) {
|
|
||||||
this.manager = manager;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getManagername() {
|
|
||||||
return managername;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setManagername(String managername) {
|
|
||||||
this.managername = managername;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getConsignee() {
|
|
||||||
return consignee;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setConsignee(String consignee) {
|
|
||||||
this.consignee = consignee;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getConsigneephone() {
|
|
||||||
return consigneephone;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setConsigneephone(String consigneephone) {
|
|
||||||
this.consigneephone = consigneephone;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getProvince() {
|
|
||||||
return province;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setProvince(String province) {
|
|
||||||
this.province = province;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getProvincename() {
|
|
||||||
return provincename;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setProvincename(String provincename) {
|
|
||||||
this.provincename = provincename;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getCity() {
|
|
||||||
return city;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCity(String city) {
|
|
||||||
this.city = city;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getCityname() {
|
|
||||||
return cityname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCityname(String cityname) {
|
|
||||||
this.cityname = cityname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getArea() {
|
|
||||||
return area;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setArea(String area) {
|
|
||||||
this.area = area;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getAreaname() {
|
|
||||||
return areaname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAreaname(String areaname) {
|
|
||||||
this.areaname = areaname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getAddress() {
|
|
||||||
return address;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAddress(String address) {
|
|
||||||
this.address = address;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getReceiveway() {
|
|
||||||
return receiveway;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setReceiveway(String receiveway) {
|
|
||||||
this.receiveway = receiveway;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getRemark() {
|
|
||||||
return remark;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRemark(String remark) {
|
|
||||||
this.remark = remark;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getRemark1() {
|
|
||||||
return remark1;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRemark1(String remark1) {
|
|
||||||
this.remark1 = remark1;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getLogisticsname() {
|
|
||||||
return logisticsname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setLogisticsname(String logisticsname) {
|
|
||||||
this.logisticsname = logisticsname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getLogisticscode() {
|
|
||||||
return logisticscode;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setLogisticscode(String logisticscode) {
|
|
||||||
this.logisticscode = logisticscode;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getLogisticstype() {
|
|
||||||
return logisticstype;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setLogisticstype(String logisticstype) {
|
|
||||||
this.logisticstype = logisticstype;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getLogisticsno() {
|
|
||||||
return logisticsno;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setLogisticsno(String logisticsno) {
|
|
||||||
this.logisticsno = logisticsno;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<ApiBillHgItem> getItems() {
|
|
||||||
return items;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setItems(List<ApiBillHgItem> items) {
|
|
||||||
this.items = items;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<ApiBillHgPayment> getPayments() {
|
|
||||||
return payments;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPayments(List<ApiBillHgPayment> payments) {
|
|
||||||
this.payments = payments;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-26
@@ -1,26 +0,0 @@
|
|||||||
package abacus.springboot.example.api.view;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
|
|
||||||
@Schema(description = "回购Id列表" , name = "ApiBillHgId")
|
|
||||||
public class ApiBillHgId {
|
|
||||||
|
|
||||||
@Schema(description="回购单单号", required = false, example="HG202411180001")
|
|
||||||
private String id;
|
|
||||||
|
|
||||||
public ApiBillHgId() {
|
|
||||||
super();
|
|
||||||
}
|
|
||||||
|
|
||||||
public ApiBillHgId(String id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setId(String id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-130
@@ -1,130 +0,0 @@
|
|||||||
package abacus.springboot.example.api.view;
|
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
|
|
||||||
@Schema(description = "回购明细" , name = "ApiBillHgItem")
|
|
||||||
public class ApiBillHgItem {
|
|
||||||
|
|
||||||
@Schema(description = "明细序号", required = false, hidden = true, example = "2")
|
|
||||||
private Long id;
|
|
||||||
|
|
||||||
@Schema(description = "状态", required = false, pattern = "终止:-1,待通知回购:1,已通知回购:2", example = "2")
|
|
||||||
private int status;
|
|
||||||
|
|
||||||
@Schema(description = "商品编码", required = false, example = "00001")
|
|
||||||
private String product;
|
|
||||||
|
|
||||||
@Schema(description = "商品名称", required = false, example = "钓鱼台")
|
|
||||||
private String productname;
|
|
||||||
|
|
||||||
@Schema(description = "商品规格", required = false, example = "500ml*6")
|
|
||||||
private String spec;
|
|
||||||
|
|
||||||
@Schema(description = "商品图片地址", required = false, example = "")
|
|
||||||
private JSONObject productphoto;
|
|
||||||
|
|
||||||
@Schema(description = "收货单价", required = false, example = "10")
|
|
||||||
private double price;
|
|
||||||
|
|
||||||
@Schema(description = "入库数量", required = false, example = "1")
|
|
||||||
private double quantity;
|
|
||||||
|
|
||||||
@Schema(description = "入库件数", required = false, example = "1")
|
|
||||||
private double numbers;
|
|
||||||
|
|
||||||
@Schema(description = "回购单价", required = false, example = "100")
|
|
||||||
private double hgprice;
|
|
||||||
|
|
||||||
@Schema(description = "回购金额", required = false, example = "100")
|
|
||||||
private double hgamount;
|
|
||||||
|
|
||||||
public Long getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setId(Long id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public JSONObject getProductphoto() {
|
|
||||||
return productphoto;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setProductphoto(JSONObject productphoto) {
|
|
||||||
this.productphoto = productphoto;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getSpec() {
|
|
||||||
return spec;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSpec(String spec) {
|
|
||||||
this.spec = spec;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getStatus() {
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setStatus(int status) {
|
|
||||||
this.status = status;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getProduct() {
|
|
||||||
return product;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setProduct(String product) {
|
|
||||||
this.product = product;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getProductname() {
|
|
||||||
return productname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setProductname(String productname) {
|
|
||||||
this.productname = productname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getPrice() {
|
|
||||||
return price;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPrice(double price) {
|
|
||||||
this.price = price;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getQuantity() {
|
|
||||||
return quantity;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setQuantity(double quantity) {
|
|
||||||
this.quantity = quantity;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getNumbers() {
|
|
||||||
return numbers;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setNumbers(double numbers) {
|
|
||||||
this.numbers = numbers;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getHgprice() {
|
|
||||||
return hgprice;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHgprice(double hgprice) {
|
|
||||||
this.hgprice = hgprice;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getHgamount() {
|
|
||||||
return hgamount;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHgamount(double hgamount) {
|
|
||||||
this.hgamount = hgamount;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-74
@@ -1,74 +0,0 @@
|
|||||||
package abacus.springboot.example.api.view;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
|
|
||||||
@Schema(description = "回购支付明细" , name = "ApiBillHgPayment")
|
|
||||||
public class ApiBillHgPayment {
|
|
||||||
|
|
||||||
@Schema(description = "回购单号", required = false, example = "线下支付")
|
|
||||||
private String billhg;
|
|
||||||
|
|
||||||
@Schema(description = "支付方式", required = false, example = "线下支付")
|
|
||||||
private String payment;
|
|
||||||
|
|
||||||
@Schema(description = "支付金额", required = false, example = "1000")
|
|
||||||
private Double amount;
|
|
||||||
|
|
||||||
@Schema(description = "账号名称", required = false, example = "张三")
|
|
||||||
private String zhmc;
|
|
||||||
|
|
||||||
@Schema(description = "开发银行", required = false, example = "工商银行")
|
|
||||||
private String khyh;
|
|
||||||
|
|
||||||
@Schema(description = "银行账号", required = false, example = "10102010201201021020101")
|
|
||||||
private String yhzh;
|
|
||||||
|
|
||||||
|
|
||||||
public String getBillhg() {
|
|
||||||
return billhg;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setBillhg(String billhg) {
|
|
||||||
this.billhg = billhg;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getPayment() {
|
|
||||||
return payment;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPayment(String payment) {
|
|
||||||
this.payment = payment;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Double getAmount() {
|
|
||||||
return amount;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAmount(Double amount) {
|
|
||||||
this.amount = amount;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getZhmc() {
|
|
||||||
return zhmc;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setZhmc(String zhmc) {
|
|
||||||
this.zhmc = zhmc;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getKhyh() {
|
|
||||||
return khyh;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setKhyh(String khyh) {
|
|
||||||
this.khyh = khyh;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getYhzh() {
|
|
||||||
return yhzh;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setYhzh(String yhzh) {
|
|
||||||
this.yhzh = yhzh;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-142
@@ -1,142 +0,0 @@
|
|||||||
package abacus.springboot.example.api.view;
|
|
||||||
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
|
|
||||||
@Schema(description = "稽查收货主单" , name = "ApiJcBill")
|
|
||||||
public class ApiJcBill {
|
|
||||||
|
|
||||||
@Schema(description="稽查单号", required = false, example="JC202411180001")
|
|
||||||
private String id;
|
|
||||||
|
|
||||||
@Schema(description="状态", required = false, pattern = "溯源驳回:-2,待提交:0,系统溯源验证通过:1,待溯源:2,待入库:3,入库待审核:4,已入库:5 ,部分回购:6,回购完成:7", example = "1")
|
|
||||||
private int status;
|
|
||||||
|
|
||||||
@Schema(description = "收货产品", required = false, example = "钓鱼台")
|
|
||||||
private String goods;
|
|
||||||
|
|
||||||
@Schema(description = "收货仓库编码", required = false, example = "9090025")
|
|
||||||
private String warehouse;
|
|
||||||
|
|
||||||
@Schema(description = "收货仓库名称", required = false, example = "精品广州库")
|
|
||||||
private String warehousename;
|
|
||||||
|
|
||||||
@Schema(description = "收货日期", required = false, example = "2024-11-11")
|
|
||||||
private String receivedt;
|
|
||||||
|
|
||||||
@Schema(description = "收货数量", required = false, example = "10")
|
|
||||||
private double quantity;
|
|
||||||
|
|
||||||
@Schema(description = "收货总金额", required = false, example = "9609")
|
|
||||||
private double subtotal;
|
|
||||||
|
|
||||||
@Schema(description = "申请人编码", required = false, example = "zhangsan")
|
|
||||||
private String applicant;
|
|
||||||
|
|
||||||
@Schema(description = "申请人名称", required = false, example = "张三")
|
|
||||||
private String applicantname;
|
|
||||||
|
|
||||||
@Schema(description = "申请人时间", required = false, example = "2024-11-11 00:00:00")
|
|
||||||
private Date applicantdt;
|
|
||||||
|
|
||||||
@Schema(description="稽查收货明细", required = false, example="")
|
|
||||||
private List<ApiJcBillItem> items;
|
|
||||||
|
|
||||||
public String getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setId(String id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getStatus() {
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setStatus(int status) {
|
|
||||||
this.status = status;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getGoods() {
|
|
||||||
return goods;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setGoods(String goods) {
|
|
||||||
this.goods = goods;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getWarehouse() {
|
|
||||||
return warehouse;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setWarehouse(String warehouse) {
|
|
||||||
this.warehouse = warehouse;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getWarehousename() {
|
|
||||||
return warehousename;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setWarehousename(String warehousename) {
|
|
||||||
this.warehousename = warehousename;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getReceivedt() {
|
|
||||||
return receivedt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setReceivedt(String receivedt) {
|
|
||||||
this.receivedt = receivedt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getQuantity() {
|
|
||||||
return quantity;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setQuantity(double quantity) {
|
|
||||||
this.quantity = quantity;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getSubtotal() {
|
|
||||||
return subtotal;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSubtotal(double subtotal) {
|
|
||||||
this.subtotal = subtotal;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getApplicant() {
|
|
||||||
return applicant;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setApplicant(String applicant) {
|
|
||||||
this.applicant = applicant;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getApplicantname() {
|
|
||||||
return applicantname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setApplicantname(String applicantname) {
|
|
||||||
this.applicantname = applicantname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Date getApplicantdt() {
|
|
||||||
return applicantdt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setApplicantdt(Date applicantdt) {
|
|
||||||
this.applicantdt = applicantdt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<ApiJcBillItem> getItems() {
|
|
||||||
return items;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setItems(List<ApiJcBillItem> items) {
|
|
||||||
this.items = items;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-42
@@ -1,42 +0,0 @@
|
|||||||
package abacus.springboot.example.api.view;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
|
|
||||||
@Schema(description = "分页对象" , name = "ApiJcBillCollect")
|
|
||||||
public class ApiJcBillCollect {
|
|
||||||
|
|
||||||
@Schema(description="总数", required = false, example="100")
|
|
||||||
private long total;
|
|
||||||
|
|
||||||
@Schema(description="总页数", required = false, example="10")
|
|
||||||
private int totalPages;
|
|
||||||
|
|
||||||
@Schema(description="稽查收货列表", required = false, example="")
|
|
||||||
private List<ApiJcBillSearch> bills;
|
|
||||||
|
|
||||||
public long getTotal() {
|
|
||||||
return total;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTotal(long total) {
|
|
||||||
this.total = total;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getTotalPages() {
|
|
||||||
return totalPages;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTotalPages(int totalPages) {
|
|
||||||
this.totalPages = totalPages;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<ApiJcBillSearch> getBills() {
|
|
||||||
return bills;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setBills(List<ApiJcBillSearch> bills) {
|
|
||||||
this.bills = bills;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-75
@@ -1,75 +0,0 @@
|
|||||||
package abacus.springboot.example.api.view;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
|
|
||||||
@Schema(description = "货品图片" , name = "ApiJcBillGoodsPhoto")
|
|
||||||
public class ApiJcBillGoodsPhoto {
|
|
||||||
|
|
||||||
@Schema(description = "明细序号", required = false, hidden = true, example = "2")
|
|
||||||
private Long id;
|
|
||||||
|
|
||||||
@Schema(description = "状态", required = false, pattern = "人工朔源驳回:-2,系统朔源验证未通过(无结果):-1,系统溯源未验证:0,系统朔源验证通过:1,人工朔源待确认:2,人工朔源已确认:3", example = "2")
|
|
||||||
private int status;
|
|
||||||
|
|
||||||
@Schema(description = "货品编号", required = false, example = "B20181118-001")
|
|
||||||
private String goodsid;
|
|
||||||
|
|
||||||
@Schema(description = "物流码", required = false, example = "HTTPS://M.DIAOYUTAIJI")
|
|
||||||
private String logisticsid;
|
|
||||||
|
|
||||||
@Schema(description = "驳回原因", required = true, example = "")
|
|
||||||
private String reason;
|
|
||||||
|
|
||||||
@Schema(description = "货品图片", required = false, pattern = "这是个JSON数组,不是JSONArray对象", example = "[\"44444\",\"aaaaa\"]")
|
|
||||||
private List<String> goodsPhotos;
|
|
||||||
|
|
||||||
public Long getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setId(Long id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getReason() {
|
|
||||||
return reason;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setReason(String reason) {
|
|
||||||
this.reason = reason;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getStatus() {
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setStatus(int status) {
|
|
||||||
this.status = status;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getLogisticsid() {
|
|
||||||
return logisticsid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setLogisticsid(String logisticsid) {
|
|
||||||
this.logisticsid = logisticsid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getGoodsid() {
|
|
||||||
return goodsid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setGoodsid(String goodsid) {
|
|
||||||
this.goodsid = goodsid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<String> getGoodsPhotos() {
|
|
||||||
return goodsPhotos;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setGoodsPhotos(List<String> goodsPhotos) {
|
|
||||||
this.goodsPhotos = goodsPhotos;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-42
@@ -1,42 +0,0 @@
|
|||||||
package abacus.springboot.example.api.view;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
|
|
||||||
@Schema(description = "分页对象" , name = "ApiJcBillHgSearch")
|
|
||||||
public class ApiJcBillHgSearch {
|
|
||||||
|
|
||||||
@Schema(description="总数", required = false, example="100")
|
|
||||||
private long total;
|
|
||||||
|
|
||||||
@Schema(description="总页数", required = false, example="10")
|
|
||||||
private int totalPages;
|
|
||||||
|
|
||||||
@Schema(description="回购订单列表", required = false, example="")
|
|
||||||
private List<ApiJcBillHgSearchItem> items;
|
|
||||||
|
|
||||||
public long getTotal() {
|
|
||||||
return total;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTotal(long total) {
|
|
||||||
this.total = total;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getTotalPages() {
|
|
||||||
return totalPages;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTotalPages(int totalPages) {
|
|
||||||
this.totalPages = totalPages;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<ApiJcBillHgSearchItem> getItems() {
|
|
||||||
return items;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setItems(List<ApiJcBillHgSearchItem> items) {
|
|
||||||
this.items = items;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-176
@@ -1,176 +0,0 @@
|
|||||||
package abacus.springboot.example.api.view;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import abacus.springboot.example.dao.JcBillPhoto;
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
|
|
||||||
@Schema(description = "回购订单列表" , name = "ApiJcBillHgSearchItem")
|
|
||||||
public class ApiJcBillHgSearchItem {
|
|
||||||
|
|
||||||
@Schema(description="回购订单号", required = false, example="HG202412080001")
|
|
||||||
private String billHg;
|
|
||||||
|
|
||||||
@Schema(description="状态", required = false, pattern = "待提交:1,待付款:2,待分仓(已付款):3,已分仓(待出库):4,已出库:5", example = "1")
|
|
||||||
private int status;
|
|
||||||
|
|
||||||
@Schema(description="客户编码", required = false, example="2020089")
|
|
||||||
private String account;
|
|
||||||
|
|
||||||
@Schema(description="回购订单号", required = false, example="广东众之品酒有限公司")
|
|
||||||
private String accountname;
|
|
||||||
|
|
||||||
@Schema(description="运营经理编码", required = false, example="zhangsan")
|
|
||||||
private String manager;
|
|
||||||
|
|
||||||
@Schema(description="运营经理名称", required = false, example="张三")
|
|
||||||
private String managername;
|
|
||||||
|
|
||||||
@Schema(description="品种个数", required = false, example="1")
|
|
||||||
private int breednum;
|
|
||||||
|
|
||||||
@Schema(description="件数", required = false, example="2")
|
|
||||||
private int numbers;
|
|
||||||
|
|
||||||
@Schema(description = "物流公司名称", required = false, example = "京东")
|
|
||||||
private String logisticsname;
|
|
||||||
|
|
||||||
@Schema(description = "物流单号", required = false, example = "JD20240000001")
|
|
||||||
private String logisticsno;
|
|
||||||
|
|
||||||
@Schema(description = "金额", required = false, example = "1000")
|
|
||||||
private double subtotal;
|
|
||||||
|
|
||||||
@Schema(description="回购通知函", required = false, example="")
|
|
||||||
private String tzhUrl;
|
|
||||||
|
|
||||||
@Schema(description="违规回购通知函", required = false, example="")
|
|
||||||
private List<JcBillPhoto> wgtzhUrl;
|
|
||||||
|
|
||||||
@Schema(description="支付凭证", required = false, example="")
|
|
||||||
private List<JcBillPhoto> zfpzUrl;
|
|
||||||
|
|
||||||
@Schema(description="支付方式", required = false, example="")
|
|
||||||
private List<ApiBillHgPayment> payments;
|
|
||||||
|
|
||||||
public double getSubtotal() {
|
|
||||||
return subtotal;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSubtotal(double subtotal) {
|
|
||||||
this.subtotal = subtotal;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<ApiBillHgPayment> getPayments() {
|
|
||||||
return payments;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPayments(List<ApiBillHgPayment> payments) {
|
|
||||||
this.payments = payments;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getTzhUrl() {
|
|
||||||
return tzhUrl;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTzhUrl(String tzhUrl) {
|
|
||||||
this.tzhUrl = tzhUrl;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<JcBillPhoto> getWgtzhUrl() {
|
|
||||||
return wgtzhUrl;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setWgtzhUrl(List<JcBillPhoto> wgtzhUrl) {
|
|
||||||
this.wgtzhUrl = wgtzhUrl;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<JcBillPhoto> getZfpzUrl() {
|
|
||||||
return zfpzUrl;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setZfpzUrl(List<JcBillPhoto> zfpzUrl) {
|
|
||||||
this.zfpzUrl = zfpzUrl;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getBillHg() {
|
|
||||||
return billHg;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setBillHg(String billHg) {
|
|
||||||
this.billHg = billHg;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getStatus() {
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setStatus(int status) {
|
|
||||||
this.status = status;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getAccount() {
|
|
||||||
return account;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAccount(String account) {
|
|
||||||
this.account = account;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getAccountname() {
|
|
||||||
return accountname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAccountname(String accountname) {
|
|
||||||
this.accountname = accountname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getManager() {
|
|
||||||
return manager;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setManager(String manager) {
|
|
||||||
this.manager = manager;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getManagername() {
|
|
||||||
return managername;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setManagername(String managername) {
|
|
||||||
this.managername = managername;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getBreednum() {
|
|
||||||
return breednum;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setBreednum(int breednum) {
|
|
||||||
this.breednum = breednum;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getNumbers() {
|
|
||||||
return numbers;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setNumbers(int numbers) {
|
|
||||||
this.numbers = numbers;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getLogisticsname() {
|
|
||||||
return logisticsname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setLogisticsname(String logisticsname) {
|
|
||||||
this.logisticsname = logisticsname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getLogisticsno() {
|
|
||||||
return logisticsno;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setLogisticsno(String logisticsno) {
|
|
||||||
this.logisticsno = logisticsno;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
-130
@@ -1,130 +0,0 @@
|
|||||||
package abacus.springboot.example.api.view;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
|
|
||||||
@Schema(description = "稽查收货明细" , name = "ApiJcBillItem")
|
|
||||||
public class ApiJcBillItem {
|
|
||||||
|
|
||||||
@Schema(description = "明细序号", required = false, hidden = true, example = "2")
|
|
||||||
private Long id;
|
|
||||||
|
|
||||||
@Schema(description = "行号", required = false, pattern = "修改时必填", example = "2")
|
|
||||||
private int indexno;
|
|
||||||
|
|
||||||
@Schema(description = "收货来源", required = false, example = "掌上华致")
|
|
||||||
private String recsource;
|
|
||||||
|
|
||||||
@Schema(description = "收货渠道", required = false, example = "线下")
|
|
||||||
private String channel;
|
|
||||||
|
|
||||||
@Schema(description = "收货平台", required = true, example = "")
|
|
||||||
private String recplatform;
|
|
||||||
|
|
||||||
@Schema(description = "收货单价", required = false, example = "100")
|
|
||||||
private double price;
|
|
||||||
|
|
||||||
@Schema(description = "收货数量", required = false, example = "10")
|
|
||||||
private double quantity;
|
|
||||||
|
|
||||||
@Schema(description = "收货件数", required = false, example = "1")
|
|
||||||
private double numbers;
|
|
||||||
|
|
||||||
@Schema(description = "收货金额", required = false, example = "1000")
|
|
||||||
private double subtotal;
|
|
||||||
|
|
||||||
@Schema(description = "付款图片", required = false, pattern = "这是个JSON数组,不是JSONArray对象", example = "[\"44444\",\"aaaaa\"]")
|
|
||||||
private List<String> paymentPhoto;
|
|
||||||
|
|
||||||
@Schema(description = "货品图片", required = false, pattern = "", example = "")
|
|
||||||
private List<ApiJcBillGoodsPhoto> goodsPhotos;
|
|
||||||
|
|
||||||
public String getRecplatform() {
|
|
||||||
return recplatform;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRecplatform(String recplatform) {
|
|
||||||
this.recplatform = recplatform;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Long getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setId(Long id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getRecsource() {
|
|
||||||
return recsource;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRecsource(String recsource) {
|
|
||||||
this.recsource = recsource;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getChannel() {
|
|
||||||
return channel;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setChannel(String channel) {
|
|
||||||
this.channel = channel;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getPrice() {
|
|
||||||
return price;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPrice(double price) {
|
|
||||||
this.price = price;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getQuantity() {
|
|
||||||
return quantity;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setQuantity(double quantity) {
|
|
||||||
this.quantity = quantity;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getNumbers() {
|
|
||||||
return numbers;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setNumbers(double numbers) {
|
|
||||||
this.numbers = numbers;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getSubtotal() {
|
|
||||||
return subtotal;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSubtotal(double subtotal) {
|
|
||||||
this.subtotal = subtotal;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<String> getPaymentPhoto() {
|
|
||||||
return paymentPhoto;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPaymentPhoto(List<String> paymentPhoto) {
|
|
||||||
this.paymentPhoto = paymentPhoto;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getIndexno() {
|
|
||||||
return indexno;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setIndexno(int indexno) {
|
|
||||||
this.indexno = indexno;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<ApiJcBillGoodsPhoto> getGoodsPhotos() {
|
|
||||||
return goodsPhotos;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setGoodsPhotos(List<ApiJcBillGoodsPhoto> goodsPhotos) {
|
|
||||||
this.goodsPhotos = goodsPhotos;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-73
@@ -1,73 +0,0 @@
|
|||||||
package abacus.springboot.example.api.view;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
|
|
||||||
@Schema(description = "稽查收货列表" , name = "ApiJcBillSearch")
|
|
||||||
public class ApiJcBillSearch {
|
|
||||||
|
|
||||||
@Schema(description="稽查单号", required = false, example="JC202411180001")
|
|
||||||
private String billid;
|
|
||||||
|
|
||||||
@Schema(description = "收货日期", required = false, example = "2024-11-11")
|
|
||||||
private String receivedt;
|
|
||||||
|
|
||||||
@Schema(description = "收货产品", required = false, example = "荷花")
|
|
||||||
private String goods;
|
|
||||||
|
|
||||||
@Schema(description = "收货数量", required = false, example = "6")
|
|
||||||
private double quantity;
|
|
||||||
|
|
||||||
@Schema(description="状态", required = false, pattern = "溯源驳回:-2,待提交:0,系统溯源验证通过:1,待溯源:2,待入库:3,入库待审核:4,已入库:5 ,部分回购:6,回购完成:7", example = "1")
|
|
||||||
private int status;
|
|
||||||
|
|
||||||
@Schema(hidden = true)
|
|
||||||
private int hgstatus;
|
|
||||||
|
|
||||||
public int getHgstatus() {
|
|
||||||
return hgstatus;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHgstatus(int hgstatus) {
|
|
||||||
this.hgstatus = hgstatus;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getBillid() {
|
|
||||||
return billid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setBillid(String billid) {
|
|
||||||
this.billid = billid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getReceivedt() {
|
|
||||||
return receivedt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setReceivedt(String receivedt) {
|
|
||||||
this.receivedt = receivedt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getGoods() {
|
|
||||||
return goods;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setGoods(String goods) {
|
|
||||||
this.goods = goods;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getQuantity() {
|
|
||||||
return quantity;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setQuantity(double quantity) {
|
|
||||||
this.quantity = quantity;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getStatus() {
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setStatus(int status) {
|
|
||||||
this.status = status;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-97
@@ -1,97 +0,0 @@
|
|||||||
package abacus.springboot.example.api.view;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
|
|
||||||
@Schema(description = "稽查收货主单" , name = "ApiReqJcBill")
|
|
||||||
public class ApiReqJcBill {
|
|
||||||
|
|
||||||
@Schema(description="稽查单号", required = false, pattern = "修改时必填", example="JC202411180001")
|
|
||||||
private String id;
|
|
||||||
|
|
||||||
@Schema(description = "收货产品", required = false, example = "钓鱼台")
|
|
||||||
private String goods;
|
|
||||||
|
|
||||||
@Schema(description = "收货日期", required = false, example = "2024-11-11")
|
|
||||||
private String receivedt;
|
|
||||||
|
|
||||||
@Schema(description = "收货仓库编码", required = false, example = "9090025")
|
|
||||||
private String warehouse;
|
|
||||||
|
|
||||||
@Schema(description = "收货仓库名称", required = false, example = "精品广州库")
|
|
||||||
private String warehousename;
|
|
||||||
|
|
||||||
@Schema(description = "申请人编码", required = true, example = "zhangsan")
|
|
||||||
private String applicant;
|
|
||||||
|
|
||||||
@Schema(description = "申请人名称", required = true, example = "张三")
|
|
||||||
private String applicantname;
|
|
||||||
|
|
||||||
@Schema(description="稽查收货明细", required = false, example="")
|
|
||||||
private List<ApiReqJcBillItem> items;
|
|
||||||
|
|
||||||
public String getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setId(String id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getGoods() {
|
|
||||||
return goods;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setGoods(String goods) {
|
|
||||||
this.goods = goods;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getReceivedt() {
|
|
||||||
return receivedt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setReceivedt(String receivedt) {
|
|
||||||
this.receivedt = receivedt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getWarehouse() {
|
|
||||||
return warehouse;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setWarehouse(String warehouse) {
|
|
||||||
this.warehouse = warehouse;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getWarehousename() {
|
|
||||||
return warehousename;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setWarehousename(String warehousename) {
|
|
||||||
this.warehousename = warehousename;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getApplicant() {
|
|
||||||
return applicant;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setApplicant(String applicant) {
|
|
||||||
this.applicant = applicant;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getApplicantname() {
|
|
||||||
return applicantname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setApplicantname(String applicantname) {
|
|
||||||
this.applicantname = applicantname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<ApiReqJcBillItem> getItems() {
|
|
||||||
return items;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setItems(List<ApiReqJcBillItem> items) {
|
|
||||||
this.items = items;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-42
@@ -1,42 +0,0 @@
|
|||||||
package abacus.springboot.example.api.view;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
|
|
||||||
@Schema(description = "货品图片" , name = "ApiReqJcBillGoodsPhoto")
|
|
||||||
public class ApiReqJcBillGoodsPhoto {
|
|
||||||
|
|
||||||
@Schema(description = "货品编号", required = false, example = "B20181118-001")
|
|
||||||
private String goodsid;
|
|
||||||
|
|
||||||
@Schema(description = "物流码", required = false, example = "HTTPS://M.DIAOYUTAIJI")
|
|
||||||
private String logisticsid;
|
|
||||||
|
|
||||||
@Schema(description = "货品图片", required = false, pattern = "这是个JSON数组,不是JSONArray对象", example = "[\"44444\",\"aaaaa\"]")
|
|
||||||
private List<String> goodsPhotos;
|
|
||||||
|
|
||||||
public String getLogisticsid() {
|
|
||||||
return logisticsid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setLogisticsid(String logisticsid) {
|
|
||||||
this.logisticsid = logisticsid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getGoodsid() {
|
|
||||||
return goodsid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setGoodsid(String goodsid) {
|
|
||||||
this.goodsid = goodsid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<String> getGoodsPhotos() {
|
|
||||||
return goodsPhotos;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setGoodsPhotos(List<String> goodsPhotos) {
|
|
||||||
this.goodsPhotos = goodsPhotos;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-196
@@ -1,196 +0,0 @@
|
|||||||
package abacus.springboot.example.api.view;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
|
|
||||||
@Schema(description = "回购单主单" , name = "ApiReqJcBillHg")
|
|
||||||
public class ApiReqJcBillHg {
|
|
||||||
|
|
||||||
@Schema(description="回购单单号", required = true, example="HG202411180001")
|
|
||||||
private String id;
|
|
||||||
|
|
||||||
@Schema(description = "商品总金额", required = false, example = "4800")
|
|
||||||
private Double subtotal;
|
|
||||||
|
|
||||||
@Schema(description = "运费", required = true, example = "50")
|
|
||||||
private Double freight;
|
|
||||||
|
|
||||||
@Schema(description = "收货人姓名", required = true, example = "李四")
|
|
||||||
private String consignee;
|
|
||||||
|
|
||||||
@Schema(description = "收货人电话", required = true, example = "1888888888")
|
|
||||||
private String consigneephone;
|
|
||||||
|
|
||||||
@Schema(description = "省", required = false, example = "10001")
|
|
||||||
private String province;
|
|
||||||
|
|
||||||
@Schema(description = "省", required = true, example = "广东")
|
|
||||||
private String provincename;
|
|
||||||
|
|
||||||
@Schema(description = "市", required = false, example = "1000101")
|
|
||||||
private String city;
|
|
||||||
|
|
||||||
@Schema(description = "市", required = true, example = "广州")
|
|
||||||
private String cityname;
|
|
||||||
|
|
||||||
@Schema(description = "区", required = false, example = "100010101")
|
|
||||||
private String area;
|
|
||||||
|
|
||||||
@Schema(description = "区", required = true, example = "越秀区")
|
|
||||||
private String areaname;
|
|
||||||
|
|
||||||
@Schema(description = "详细地址", required = true, example = "东风24路")
|
|
||||||
private String address;
|
|
||||||
|
|
||||||
@Schema(description = "订单备注", required = false, example = "订单备注~~~")
|
|
||||||
private String remark;
|
|
||||||
|
|
||||||
@Schema(description = "运营备注", required = false, example = "运营备注~~~")
|
|
||||||
private String remark1;
|
|
||||||
|
|
||||||
@Schema(description = "提交人编码", required = true, example = "zhangsan")
|
|
||||||
private String submit;
|
|
||||||
|
|
||||||
@Schema(description = "提交人名称", required = true, example = "张三")
|
|
||||||
private String submitname;
|
|
||||||
|
|
||||||
@Schema(description = "回购支付明细", required = true, example = "")
|
|
||||||
private List<ApiReqJcBillPayment> payments;
|
|
||||||
|
|
||||||
public List<ApiReqJcBillPayment> getPayments() {
|
|
||||||
return payments;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPayments(List<ApiReqJcBillPayment> payments) {
|
|
||||||
this.payments = payments;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getSubmit() {
|
|
||||||
return submit;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSubmit(String submit) {
|
|
||||||
this.submit = submit;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getSubmitname() {
|
|
||||||
return submitname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSubmitname(String submitname) {
|
|
||||||
this.submitname = submitname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setId(String id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Double getSubtotal() {
|
|
||||||
return subtotal;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSubtotal(Double subtotal) {
|
|
||||||
this.subtotal = subtotal;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Double getFreight() {
|
|
||||||
return freight;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setFreight(Double freight) {
|
|
||||||
this.freight = freight;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getConsignee() {
|
|
||||||
return consignee;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setConsignee(String consignee) {
|
|
||||||
this.consignee = consignee;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getConsigneephone() {
|
|
||||||
return consigneephone;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setConsigneephone(String consigneephone) {
|
|
||||||
this.consigneephone = consigneephone;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getProvince() {
|
|
||||||
return province;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setProvince(String province) {
|
|
||||||
this.province = province;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getProvincename() {
|
|
||||||
return provincename;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setProvincename(String provincename) {
|
|
||||||
this.provincename = provincename;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getCity() {
|
|
||||||
return city;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCity(String city) {
|
|
||||||
this.city = city;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getCityname() {
|
|
||||||
return cityname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCityname(String cityname) {
|
|
||||||
this.cityname = cityname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getArea() {
|
|
||||||
return area;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setArea(String area) {
|
|
||||||
this.area = area;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getAreaname() {
|
|
||||||
return areaname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAreaname(String areaname) {
|
|
||||||
this.areaname = areaname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getAddress() {
|
|
||||||
return address;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAddress(String address) {
|
|
||||||
this.address = address;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getRemark() {
|
|
||||||
return remark;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRemark(String remark) {
|
|
||||||
this.remark = remark;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getRemark1() {
|
|
||||||
return remark1;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRemark1(String remark1) {
|
|
||||||
this.remark1 = remark1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-130
@@ -1,130 +0,0 @@
|
|||||||
package abacus.springboot.example.api.view;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
|
|
||||||
@Schema(description = "稽查收货明细" , name = "ApiReqJcBillItem")
|
|
||||||
public class ApiReqJcBillItem {
|
|
||||||
|
|
||||||
@Schema(description = "明细序号", required = false, pattern = "修改时必填", example = "2")
|
|
||||||
private Long id;
|
|
||||||
|
|
||||||
@Schema(description = "行号", required = false, pattern = "修改时必填", example = "2")
|
|
||||||
private int indexno;
|
|
||||||
|
|
||||||
@Schema(description = "收货来源", required = false, example = "线下")
|
|
||||||
private String recsource;
|
|
||||||
|
|
||||||
@Schema(description = "收货平台", required = false, example = "")
|
|
||||||
private String recplatform;
|
|
||||||
|
|
||||||
@Schema(description = "收货渠道", required = false, example = "XXX烟酒店")
|
|
||||||
private String channel;
|
|
||||||
|
|
||||||
@Schema(description = "收货单价", required = false, example = "100")
|
|
||||||
private Double price;
|
|
||||||
|
|
||||||
@Schema(description = "收货数量", required = false, example = "10")
|
|
||||||
private Double quantity;
|
|
||||||
|
|
||||||
@Schema(description = "收货件数", required = false, example = "1")
|
|
||||||
private Double numbers;
|
|
||||||
|
|
||||||
@Schema(description = "收货金额", required = false, example = "1000")
|
|
||||||
private Double subtotal;
|
|
||||||
|
|
||||||
@Schema(description = "付款图片", required = false, pattern = "这是个JSON数组,不是JSONArray对象", example = "[\"44444\",\"aaaaa\"]")
|
|
||||||
private List<String> paymentPhoto;
|
|
||||||
|
|
||||||
@Schema(description = "货品图片", required = false, pattern = "", example = "")
|
|
||||||
private List<ApiReqJcBillGoodsPhoto> goodsPhotos;
|
|
||||||
|
|
||||||
public List<ApiReqJcBillGoodsPhoto> getGoodsPhotos() {
|
|
||||||
return goodsPhotos;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setGoodsPhotos(List<ApiReqJcBillGoodsPhoto> goodsPhotos) {
|
|
||||||
this.goodsPhotos = goodsPhotos;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getIndexno() {
|
|
||||||
return indexno;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setIndexno(int indexno) {
|
|
||||||
this.indexno = indexno;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getRecplatform() {
|
|
||||||
return recplatform;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRecplatform(String recplatform) {
|
|
||||||
this.recplatform = recplatform;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Long getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setId(Long id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getRecsource() {
|
|
||||||
return recsource;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRecsource(String recsource) {
|
|
||||||
this.recsource = recsource;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getChannel() {
|
|
||||||
return channel;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setChannel(String channel) {
|
|
||||||
this.channel = channel;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Double getPrice() {
|
|
||||||
return price;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPrice(Double price) {
|
|
||||||
this.price = price;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Double getQuantity() {
|
|
||||||
return quantity;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setQuantity(Double quantity) {
|
|
||||||
this.quantity = quantity;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Double getNumbers() {
|
|
||||||
return numbers;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setNumbers(Double numbers) {
|
|
||||||
this.numbers = numbers;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Double getSubtotal() {
|
|
||||||
return subtotal;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSubtotal(Double subtotal) {
|
|
||||||
this.subtotal = subtotal;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<String> getPaymentPhoto() {
|
|
||||||
return paymentPhoto;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPaymentPhoto(List<String> paymentPhoto) {
|
|
||||||
this.paymentPhoto = paymentPhoto;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-62
@@ -1,62 +0,0 @@
|
|||||||
package abacus.springboot.example.api.view;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
|
|
||||||
@Schema(description = "回购支付明细" , name = "ApiReqJcBillPayment")
|
|
||||||
public class ApiReqJcBillPayment {
|
|
||||||
|
|
||||||
@Schema(description = "支付方式", required = true, example = "线下付款")
|
|
||||||
private String payment;
|
|
||||||
|
|
||||||
@Schema(description = "支付金额", required = true, example = "4820")
|
|
||||||
private Double amount;
|
|
||||||
|
|
||||||
@Schema(description = "账号名称", required = true, example = "张三")
|
|
||||||
private String zhmc;
|
|
||||||
|
|
||||||
@Schema(description = "开发银行", required = true, example = "工商银行")
|
|
||||||
private String khyh;
|
|
||||||
|
|
||||||
@Schema(description = "银行账号", required = true, example = "0101020102102010210201")
|
|
||||||
private String yhzh;
|
|
||||||
|
|
||||||
public String getPayment() {
|
|
||||||
return payment;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPayment(String payment) {
|
|
||||||
this.payment = payment;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Double getAmount() {
|
|
||||||
return amount;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAmount(Double amount) {
|
|
||||||
this.amount = amount;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getZhmc() {
|
|
||||||
return zhmc;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setZhmc(String zhmc) {
|
|
||||||
this.zhmc = zhmc;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getKhyh() {
|
|
||||||
return khyh;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setKhyh(String khyh) {
|
|
||||||
this.khyh = khyh;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getYhzh() {
|
|
||||||
return yhzh;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setYhzh(String yhzh) {
|
|
||||||
this.yhzh = yhzh;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-29
@@ -1,29 +0,0 @@
|
|||||||
package abacus.springboot.example.api.view;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
|
|
||||||
@Schema(description = "图片对象" , name = "ApiReqJcBillPhoto")
|
|
||||||
public class ApiReqJcBillPhoto {
|
|
||||||
|
|
||||||
@Schema(description = "回购单号、溯源入库单号", pattern="type=1时,为溯源入库单号,type=2时,为回购单号",required = true, example = "HG202411180001")
|
|
||||||
private String id;
|
|
||||||
|
|
||||||
@Schema(description = "图片明细", required = true, example = "")
|
|
||||||
private List<ApiReqJcBillPhotoItem> items;
|
|
||||||
|
|
||||||
public String getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
public void setId(String id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
public List<ApiReqJcBillPhotoItem> getItems() {
|
|
||||||
return items;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setItems(List<ApiReqJcBillPhotoItem> items) {
|
|
||||||
this.items = items;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-32
@@ -1,32 +0,0 @@
|
|||||||
package abacus.springboot.example.api.view;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
|
|
||||||
@Schema(description = "图片明细" , name = "ApiReqJcBillPhotoItem")
|
|
||||||
public class ApiReqJcBillPhotoItem {
|
|
||||||
|
|
||||||
@Schema(description = "货品编号", pattern="type=1时,必填",required = false, example = "HG202411180001")
|
|
||||||
private String id;
|
|
||||||
|
|
||||||
@Schema(description = "图片类型", required = true, pattern = "回购违规通知函、回购支付凭证、稽查付款截图、稽查货品图", example = "回购违规通知函")
|
|
||||||
private String typePhoto;
|
|
||||||
|
|
||||||
@Schema(description = "图片地址", required = true, example = "http:ip/1.jpg")
|
|
||||||
private String urlPhoto;
|
|
||||||
|
|
||||||
public String getTypePhoto() {
|
|
||||||
return typePhoto;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTypePhoto(String typePhoto) {
|
|
||||||
this.typePhoto = typePhoto;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getUrlPhoto() {
|
|
||||||
return urlPhoto;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setUrlPhoto(String urlPhoto) {
|
|
||||||
this.urlPhoto = urlPhoto;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-51
@@ -1,51 +0,0 @@
|
|||||||
package abacus.springboot.example.api.view;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
|
|
||||||
@Schema(description = "回购支付方式" , name = "ApiRespBillHgPay")
|
|
||||||
public class ApiRespBillHgPay {
|
|
||||||
|
|
||||||
@Schema(description = "支付方式", required = false, example = "线下支付")
|
|
||||||
private String payment;
|
|
||||||
|
|
||||||
@Schema(description = "账号名称", required = false, example = "张三")
|
|
||||||
private String zhmc;
|
|
||||||
|
|
||||||
@Schema(description = "开发银行", required = false, example = "工商银行")
|
|
||||||
private String khyh;
|
|
||||||
|
|
||||||
@Schema(description = "银行账号", required = false, example = "10021020120102102012010")
|
|
||||||
private String yhzh;
|
|
||||||
|
|
||||||
public String getPayment() {
|
|
||||||
return payment;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPayment(String payment) {
|
|
||||||
this.payment = payment;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getZhmc() {
|
|
||||||
return zhmc;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setZhmc(String zhmc) {
|
|
||||||
this.zhmc = zhmc;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getKhyh() {
|
|
||||||
return khyh;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setKhyh(String khyh) {
|
|
||||||
this.khyh = khyh;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getYhzh() {
|
|
||||||
return yhzh;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setYhzh(String yhzh) {
|
|
||||||
this.yhzh = yhzh;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-64
@@ -1,64 +0,0 @@
|
|||||||
package abacus.springboot.example.api.view;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
|
|
||||||
@Schema(description = "稽查货品" , name = "ApiRespJcPorduct")
|
|
||||||
public class ApiRespJcPorduct {
|
|
||||||
|
|
||||||
@Schema(description="稽查单号", required = false, example="JC202501090002")
|
|
||||||
private String billId;
|
|
||||||
|
|
||||||
@Schema(description="入库单号", required = false, example="WDT2292992992")
|
|
||||||
private String stockInId;
|
|
||||||
|
|
||||||
@Schema(description="回购单号", required = false, example="HG202501090002")
|
|
||||||
private String hgId;
|
|
||||||
|
|
||||||
@Schema(description="出库单号", required = false, example="WDTCK202501090001")
|
|
||||||
private String stockOutId;
|
|
||||||
|
|
||||||
@Schema(description="客户信息", required = false, example="")
|
|
||||||
private List<ApiRespJcPorductAcount> accounts;
|
|
||||||
|
|
||||||
public String getBillId() {
|
|
||||||
return billId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setBillId(String billId) {
|
|
||||||
this.billId = billId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getStockInId() {
|
|
||||||
return stockInId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setStockInId(String stockInId) {
|
|
||||||
this.stockInId = stockInId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getHgId() {
|
|
||||||
return hgId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHgId(String hgId) {
|
|
||||||
this.hgId = hgId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getStockOutId() {
|
|
||||||
return stockOutId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setStockOutId(String stockOutId) {
|
|
||||||
this.stockOutId = stockOutId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<ApiRespJcPorductAcount> getAccounts() {
|
|
||||||
return accounts;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAccounts(List<ApiRespJcPorductAcount> accounts) {
|
|
||||||
this.accounts = accounts;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-42
@@ -1,42 +0,0 @@
|
|||||||
package abacus.springboot.example.api.view;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
|
|
||||||
@Schema(description = "稽查货品-客户信息" , name = "ApiRespJcPorductAcount")
|
|
||||||
public class ApiRespJcPorductAcount {
|
|
||||||
|
|
||||||
@Schema(description="客户编码", required = false, example="1050000322")
|
|
||||||
private String account;
|
|
||||||
|
|
||||||
@Schema(description="客户名称", required = false, example="四川有限公司")
|
|
||||||
private String accountName;
|
|
||||||
|
|
||||||
@Schema(description="商品信息", required = false, example="")
|
|
||||||
private List<ApiRespJcPorductProduct> products;
|
|
||||||
|
|
||||||
public String getAccount() {
|
|
||||||
return account;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAccount(String account) {
|
|
||||||
this.account = account;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getAccountName() {
|
|
||||||
return accountName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAccountName(String accountName) {
|
|
||||||
this.accountName = accountName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<ApiRespJcPorductProduct> getProducts() {
|
|
||||||
return products;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setProducts(List<ApiRespJcPorductProduct> products) {
|
|
||||||
this.products = products;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-31
@@ -1,31 +0,0 @@
|
|||||||
package abacus.springboot.example.api.view;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
|
|
||||||
@Schema(description = "稽查货品-货品信息" , name = "ApiRespJcPorductItem")
|
|
||||||
public class ApiRespJcPorductItem {
|
|
||||||
|
|
||||||
@Schema(description = "货品图片", required = true, example = "")
|
|
||||||
private List<String> photos;
|
|
||||||
|
|
||||||
@Schema(description = "货品编号", required = true, example = "")
|
|
||||||
private String goodsId;
|
|
||||||
|
|
||||||
public List<String> getPhotos() {
|
|
||||||
return photos;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPhotos(List<String> photos) {
|
|
||||||
this.photos = photos;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getGoodsId() {
|
|
||||||
return goodsId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setGoodsId(String goodsId) {
|
|
||||||
this.goodsId = goodsId;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-53
@@ -1,53 +0,0 @@
|
|||||||
package abacus.springboot.example.api.view;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
|
|
||||||
@Schema(description = "稽查货品-商品信息" , name = "ApiRespJcPorductProduct")
|
|
||||||
public class ApiRespJcPorductProduct {
|
|
||||||
|
|
||||||
@Schema(description="商品编码", required = false, example="1010400021")
|
|
||||||
private String product;
|
|
||||||
|
|
||||||
@Schema(description="商品名称", required = false, example="52度500ml五粮液")
|
|
||||||
private String productName;
|
|
||||||
|
|
||||||
@Schema(description="数量", required = false, example="12瓶/2件")
|
|
||||||
private String quantity;
|
|
||||||
|
|
||||||
@Schema(description="货品信息", required = false, example="")
|
|
||||||
private List<ApiRespJcPorductItem> items;
|
|
||||||
|
|
||||||
public String getProduct() {
|
|
||||||
return product;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setProduct(String product) {
|
|
||||||
this.product = product;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getProductName() {
|
|
||||||
return productName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setProductName(String productName) {
|
|
||||||
this.productName = productName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getQuantity() {
|
|
||||||
return quantity;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setQuantity(String quantity) {
|
|
||||||
this.quantity = quantity;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<ApiRespJcPorductItem> getItems() {
|
|
||||||
return items;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setItems(List<ApiRespJcPorductItem> items) {
|
|
||||||
this.items = items;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-40
@@ -1,40 +0,0 @@
|
|||||||
package abacus.springboot.example.api.view;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
|
|
||||||
@Schema(description = "收货信息" , name = "ApiRespReceiveGoods")
|
|
||||||
public class ApiRespReceiveGoods {
|
|
||||||
|
|
||||||
@Schema(description = "稽查单号", required = false, example = "JC202411180001")
|
|
||||||
private String billid;
|
|
||||||
|
|
||||||
@Schema(description = "物流码", required = true, example = "")
|
|
||||||
private String logisticsid;
|
|
||||||
|
|
||||||
@Schema(description = "出库单号", required = true, example = "")
|
|
||||||
private String billout;
|
|
||||||
|
|
||||||
public String getBillid() {
|
|
||||||
return billid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setBillid(String billid) {
|
|
||||||
this.billid = billid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getLogisticsid() {
|
|
||||||
return logisticsid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setLogisticsid(String logisticsid) {
|
|
||||||
this.logisticsid = logisticsid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getBillout() {
|
|
||||||
return billout;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setBillout(String billout) {
|
|
||||||
this.billout = billout;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-26
@@ -1,26 +0,0 @@
|
|||||||
package abacus.springboot.example.api.view;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
|
|
||||||
@Schema(description = "收货仓库" , name = "ApiRespWarehouse")
|
|
||||||
public class ApiRespWarehouse {
|
|
||||||
|
|
||||||
@Schema(description = "收货仓库编码", required = false, example = "0001")
|
|
||||||
private String code;
|
|
||||||
|
|
||||||
@Schema(description = "收货仓库名称", required = false, example = "四川仓")
|
|
||||||
private String name;
|
|
||||||
|
|
||||||
public String getCode() {
|
|
||||||
return code;
|
|
||||||
}
|
|
||||||
public void setCode(String code) {
|
|
||||||
this.code = code;
|
|
||||||
}
|
|
||||||
public String getName() {
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
public void setName(String name) {
|
|
||||||
this.name = name;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-123
@@ -1,123 +0,0 @@
|
|||||||
package abacus.springboot.example.api.view;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>Title:EdgBcsCode</p>
|
|
||||||
<p>Description:睿治物流码溯源查询接口-返回参数</p>
|
|
||||||
@author chuanZeng
|
|
||||||
@date 2024年12月11日
|
|
||||||
*/
|
|
||||||
public class EdgBcsCode {
|
|
||||||
private String code;// 物流码字符串
|
|
||||||
private String ck_id;// 出库单号字符串
|
|
||||||
private String dccw_id;// 出库仓编码字符串
|
|
||||||
private String dccw_name;// 出库仓名称字符串
|
|
||||||
private String cdt;// 出库⽇期字符串
|
|
||||||
private String productid;// 商品编码字符串
|
|
||||||
private String productname;// 商品名称字符串
|
|
||||||
private String customerid;// 客户编码字符串
|
|
||||||
private String customername;// 客户名称字符串
|
|
||||||
private String employeeid;// 业务员编码字符串
|
|
||||||
private String employeename;// 业务员名称字符串
|
|
||||||
private String group_id;// 业务组编码字符串
|
|
||||||
private String group_name;// 业务组名称字符串
|
|
||||||
private String departmentid;// 分销区域编码字符串
|
|
||||||
private String departmentname;// 分销区域名称字符串
|
|
||||||
private String data_source;// 数据源来源字符串
|
|
||||||
|
|
||||||
public String getCode() {
|
|
||||||
return code;
|
|
||||||
}
|
|
||||||
public void setCode(String code) {
|
|
||||||
this.code = code;
|
|
||||||
}
|
|
||||||
public String getCk_id() {
|
|
||||||
return ck_id;
|
|
||||||
}
|
|
||||||
public void setCk_id(String ck_id) {
|
|
||||||
this.ck_id = ck_id;
|
|
||||||
}
|
|
||||||
public String getDccw_id() {
|
|
||||||
return dccw_id;
|
|
||||||
}
|
|
||||||
public void setDccw_id(String dccw_id) {
|
|
||||||
this.dccw_id = dccw_id;
|
|
||||||
}
|
|
||||||
public String getDccw_name() {
|
|
||||||
return dccw_name;
|
|
||||||
}
|
|
||||||
public void setDccw_name(String dccw_name) {
|
|
||||||
this.dccw_name = dccw_name;
|
|
||||||
}
|
|
||||||
public String getCdt() {
|
|
||||||
return cdt;
|
|
||||||
}
|
|
||||||
public void setCdt(String cdt) {
|
|
||||||
this.cdt = cdt;
|
|
||||||
}
|
|
||||||
public String getProductid() {
|
|
||||||
return productid;
|
|
||||||
}
|
|
||||||
public void setProductid(String productid) {
|
|
||||||
this.productid = productid;
|
|
||||||
}
|
|
||||||
public String getProductname() {
|
|
||||||
return productname;
|
|
||||||
}
|
|
||||||
public void setProductname(String productname) {
|
|
||||||
this.productname = productname;
|
|
||||||
}
|
|
||||||
public String getCustomerid() {
|
|
||||||
return customerid;
|
|
||||||
}
|
|
||||||
public void setCustomerid(String customerid) {
|
|
||||||
this.customerid = customerid;
|
|
||||||
}
|
|
||||||
public String getCustomername() {
|
|
||||||
return customername;
|
|
||||||
}
|
|
||||||
public void setCustomername(String customername) {
|
|
||||||
this.customername = customername;
|
|
||||||
}
|
|
||||||
public String getEmployeeid() {
|
|
||||||
return employeeid;
|
|
||||||
}
|
|
||||||
public void setEmployeeid(String employeeid) {
|
|
||||||
this.employeeid = employeeid;
|
|
||||||
}
|
|
||||||
public String getEmployeename() {
|
|
||||||
return employeename;
|
|
||||||
}
|
|
||||||
public void setEmployeename(String employeename) {
|
|
||||||
this.employeename = employeename;
|
|
||||||
}
|
|
||||||
public String getGroup_id() {
|
|
||||||
return group_id;
|
|
||||||
}
|
|
||||||
public void setGroup_id(String group_id) {
|
|
||||||
this.group_id = group_id;
|
|
||||||
}
|
|
||||||
public String getGroup_name() {
|
|
||||||
return group_name;
|
|
||||||
}
|
|
||||||
public void setGroup_name(String group_name) {
|
|
||||||
this.group_name = group_name;
|
|
||||||
}
|
|
||||||
public String getDepartmentid() {
|
|
||||||
return departmentid;
|
|
||||||
}
|
|
||||||
public void setDepartmentid(String departmentid) {
|
|
||||||
this.departmentid = departmentid;
|
|
||||||
}
|
|
||||||
public String getDepartmentname() {
|
|
||||||
return departmentname;
|
|
||||||
}
|
|
||||||
public void setDepartmentname(String departmentname) {
|
|
||||||
this.departmentname = departmentname;
|
|
||||||
}
|
|
||||||
public String getData_source() {
|
|
||||||
return data_source;
|
|
||||||
}
|
|
||||||
public void setData_source(String data_source) {
|
|
||||||
this.data_source = data_source;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-25
@@ -1,25 +0,0 @@
|
|||||||
package abacus.springboot.example.api.view;
|
|
||||||
|
|
||||||
public class JcBillCount {
|
|
||||||
private String id;// 回购单号
|
|
||||||
private int breednum;// 品种个数
|
|
||||||
private int numbers;// 件数
|
|
||||||
public String getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
public void setId(String id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
public int getBreednum() {
|
|
||||||
return breednum;
|
|
||||||
}
|
|
||||||
public void setBreednum(int breednum) {
|
|
||||||
this.breednum = breednum;
|
|
||||||
}
|
|
||||||
public int getNumbers() {
|
|
||||||
return numbers;
|
|
||||||
}
|
|
||||||
public void setNumbers(int numbers) {
|
|
||||||
this.numbers = numbers;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-123
@@ -1,123 +0,0 @@
|
|||||||
package abacus.springboot.example.api.view;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>Title:JcCodeFlow</p>
|
|
||||||
<p>Description: 根据物流码查询出的</p>
|
|
||||||
@author chuanZeng
|
|
||||||
@date 2024年12月11日
|
|
||||||
*/
|
|
||||||
public class JcCodeFlow {
|
|
||||||
|
|
||||||
private String id;// 出库单号
|
|
||||||
private String deposit;// 出库仓编码
|
|
||||||
private String depositname;// 出库仓名称
|
|
||||||
private String tdate;// 出库⽇期
|
|
||||||
private String orderid;// 销售订单号
|
|
||||||
private String customerid;// 客户编码
|
|
||||||
private String customername;// 客户名称
|
|
||||||
private String aprssalemanid;// 业务员编码
|
|
||||||
private String aprssalemanname;// 业务员名称
|
|
||||||
private String bizgroupid;// 业务组编码
|
|
||||||
private String bizgroupname;// 业务组名称
|
|
||||||
private String wsareaid;// 分销区域编码
|
|
||||||
private String wsareaname;// 分销区域名称
|
|
||||||
private String code;// 物流码
|
|
||||||
private String productid;// 商品
|
|
||||||
private String productname;// 商品名称
|
|
||||||
public String getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
public void setId(String id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
public String getDeposit() {
|
|
||||||
return deposit;
|
|
||||||
}
|
|
||||||
public void setDeposit(String deposit) {
|
|
||||||
this.deposit = deposit;
|
|
||||||
}
|
|
||||||
public String getDepositname() {
|
|
||||||
return depositname;
|
|
||||||
}
|
|
||||||
public void setDepositname(String depositname) {
|
|
||||||
this.depositname = depositname;
|
|
||||||
}
|
|
||||||
public String getTdate() {
|
|
||||||
return tdate;
|
|
||||||
}
|
|
||||||
public void setTdate(String tdate) {
|
|
||||||
this.tdate = tdate;
|
|
||||||
}
|
|
||||||
public String getOrderid() {
|
|
||||||
return orderid;
|
|
||||||
}
|
|
||||||
public void setOrderid(String orderid) {
|
|
||||||
this.orderid = orderid;
|
|
||||||
}
|
|
||||||
public String getCustomerid() {
|
|
||||||
return customerid;
|
|
||||||
}
|
|
||||||
public void setCustomerid(String customerid) {
|
|
||||||
this.customerid = customerid;
|
|
||||||
}
|
|
||||||
public String getCustomername() {
|
|
||||||
return customername;
|
|
||||||
}
|
|
||||||
public void setCustomername(String customername) {
|
|
||||||
this.customername = customername;
|
|
||||||
}
|
|
||||||
public String getAprssalemanid() {
|
|
||||||
return aprssalemanid;
|
|
||||||
}
|
|
||||||
public void setAprssalemanid(String aprssalemanid) {
|
|
||||||
this.aprssalemanid = aprssalemanid;
|
|
||||||
}
|
|
||||||
public String getAprssalemanname() {
|
|
||||||
return aprssalemanname;
|
|
||||||
}
|
|
||||||
public void setAprssalemanname(String aprssalemanname) {
|
|
||||||
this.aprssalemanname = aprssalemanname;
|
|
||||||
}
|
|
||||||
public String getBizgroupid() {
|
|
||||||
return bizgroupid;
|
|
||||||
}
|
|
||||||
public void setBizgroupid(String bizgroupid) {
|
|
||||||
this.bizgroupid = bizgroupid;
|
|
||||||
}
|
|
||||||
public String getBizgroupname() {
|
|
||||||
return bizgroupname;
|
|
||||||
}
|
|
||||||
public void setBizgroupname(String bizgroupname) {
|
|
||||||
this.bizgroupname = bizgroupname;
|
|
||||||
}
|
|
||||||
public String getWsareaid() {
|
|
||||||
return wsareaid;
|
|
||||||
}
|
|
||||||
public void setWsareaid(String wsareaid) {
|
|
||||||
this.wsareaid = wsareaid;
|
|
||||||
}
|
|
||||||
public String getWsareaname() {
|
|
||||||
return wsareaname;
|
|
||||||
}
|
|
||||||
public void setWsareaname(String wsareaname) {
|
|
||||||
this.wsareaname = wsareaname;
|
|
||||||
}
|
|
||||||
public String getCode() {
|
|
||||||
return code;
|
|
||||||
}
|
|
||||||
public void setCode(String code) {
|
|
||||||
this.code = code;
|
|
||||||
}
|
|
||||||
public String getProductid() {
|
|
||||||
return productid;
|
|
||||||
}
|
|
||||||
public void setProductid(String productid) {
|
|
||||||
this.productid = productid;
|
|
||||||
}
|
|
||||||
public String getProductname() {
|
|
||||||
return productname;
|
|
||||||
}
|
|
||||||
public void setProductname(String productname) {
|
|
||||||
this.productname = productname;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-84
@@ -1,84 +0,0 @@
|
|||||||
package abacus.springboot.example.api.view;
|
|
||||||
|
|
||||||
// 货品查询
|
|
||||||
public class JcProduct {
|
|
||||||
|
|
||||||
private String billid;
|
|
||||||
private String billin;
|
|
||||||
private String billhg;
|
|
||||||
private String account;
|
|
||||||
private String accountname;
|
|
||||||
private String product;
|
|
||||||
private String productname;
|
|
||||||
private String wdtbillout;
|
|
||||||
private int quantity;
|
|
||||||
private int numbers;
|
|
||||||
private String goodsid;
|
|
||||||
|
|
||||||
public String getGoodsid() {
|
|
||||||
return goodsid;
|
|
||||||
}
|
|
||||||
public void setGoodsid(String goodsid) {
|
|
||||||
this.goodsid = goodsid;
|
|
||||||
}
|
|
||||||
public int getQuantity() {
|
|
||||||
return quantity;
|
|
||||||
}
|
|
||||||
public void setQuantity(int quantity) {
|
|
||||||
this.quantity = quantity;
|
|
||||||
}
|
|
||||||
public int getNumbers() {
|
|
||||||
return numbers;
|
|
||||||
}
|
|
||||||
public void setNumbers(int numbers) {
|
|
||||||
this.numbers = numbers;
|
|
||||||
}
|
|
||||||
public String getBillid() {
|
|
||||||
return billid;
|
|
||||||
}
|
|
||||||
public void setBillid(String billid) {
|
|
||||||
this.billid = billid;
|
|
||||||
}
|
|
||||||
public String getBillin() {
|
|
||||||
return billin;
|
|
||||||
}
|
|
||||||
public void setBillin(String billin) {
|
|
||||||
this.billin = billin;
|
|
||||||
}
|
|
||||||
public String getBillhg() {
|
|
||||||
return billhg;
|
|
||||||
}
|
|
||||||
public void setBillhg(String billhg) {
|
|
||||||
this.billhg = billhg;
|
|
||||||
}
|
|
||||||
public String getAccount() {
|
|
||||||
return account;
|
|
||||||
}
|
|
||||||
public void setAccount(String account) {
|
|
||||||
this.account = account;
|
|
||||||
}
|
|
||||||
public String getAccountname() {
|
|
||||||
return accountname;
|
|
||||||
}
|
|
||||||
public void setAccountname(String accountname) {
|
|
||||||
this.accountname = accountname;
|
|
||||||
}
|
|
||||||
public String getProduct() {
|
|
||||||
return product;
|
|
||||||
}
|
|
||||||
public void setProduct(String product) {
|
|
||||||
this.product = product;
|
|
||||||
}
|
|
||||||
public String getProductname() {
|
|
||||||
return productname;
|
|
||||||
}
|
|
||||||
public void setProductname(String productname) {
|
|
||||||
this.productname = productname;
|
|
||||||
}
|
|
||||||
public String getWdtbillout() {
|
|
||||||
return wdtbillout;
|
|
||||||
}
|
|
||||||
public void setWdtbillout(String wdtbillout) {
|
|
||||||
this.wdtbillout = wdtbillout;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-41
@@ -1,41 +0,0 @@
|
|||||||
package abacus.springboot.example.api.view;
|
|
||||||
|
|
||||||
public class JcProductBillSouce {
|
|
||||||
|
|
||||||
private String indexno;
|
|
||||||
private String billid;
|
|
||||||
private String account;
|
|
||||||
private String product;
|
|
||||||
private String goodsid;
|
|
||||||
|
|
||||||
public String getIndexno() {
|
|
||||||
return indexno;
|
|
||||||
}
|
|
||||||
public void setIndexno(String indexno) {
|
|
||||||
this.indexno = indexno;
|
|
||||||
}
|
|
||||||
public String getBillid() {
|
|
||||||
return billid;
|
|
||||||
}
|
|
||||||
public void setBillid(String billid) {
|
|
||||||
this.billid = billid;
|
|
||||||
}
|
|
||||||
public String getAccount() {
|
|
||||||
return account;
|
|
||||||
}
|
|
||||||
public void setAccount(String account) {
|
|
||||||
this.account = account;
|
|
||||||
}
|
|
||||||
public String getProduct() {
|
|
||||||
return product;
|
|
||||||
}
|
|
||||||
public void setProduct(String product) {
|
|
||||||
this.product = product;
|
|
||||||
}
|
|
||||||
public String getGoodsid() {
|
|
||||||
return goodsid;
|
|
||||||
}
|
|
||||||
public void setGoodsid(String goodsid) {
|
|
||||||
this.goodsid = goodsid;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-37
@@ -1,37 +0,0 @@
|
|||||||
package abacus.springboot.example.config;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>Title:JcConfigKey</p>
|
|
||||||
<p>Description: 配置key的值</p>
|
|
||||||
@author chuanZeng
|
|
||||||
@date 2026年8月18日
|
|
||||||
*/
|
|
||||||
public class JcConfigKey {
|
|
||||||
|
|
||||||
/** keyGroup:系统号*/
|
|
||||||
public static final String KEY_GROUP = "jc";
|
|
||||||
|
|
||||||
/** 二维码域名*/
|
|
||||||
public static final String KEY_JC_SCAN_SOURCE = "jc.scan.source";
|
|
||||||
|
|
||||||
/** 固定店铺编码*/
|
|
||||||
public static final String KEY_JC_WDT_DEPT = "jc.wdt.dept";
|
|
||||||
|
|
||||||
/** 是否自动分仓*/
|
|
||||||
public static final String KEY_JC_WDT_FCFLAGE = "jc.wdt.fcFlage";
|
|
||||||
|
|
||||||
/** ERP-url*/
|
|
||||||
public static final String KEY_JC_ERP_URL = "jc.erp.url";
|
|
||||||
|
|
||||||
/** set:线下支付*/
|
|
||||||
public static final String KEY_JC_PAYMENT_OFFLINE = "jc.payment.offline";
|
|
||||||
/** jc.payment.offline:账号名称*/
|
|
||||||
public static final String KEY_JC_ZHMC = "zhmc";
|
|
||||||
/** jc.payment.offline:开户银行*/
|
|
||||||
public static final String KEY_JC_KHYH = "khyh";
|
|
||||||
/** jc.payment.offline:银行账号*/
|
|
||||||
public static final String KEY_JC_YHZH = "yhzh";
|
|
||||||
|
|
||||||
/** set:稽查收货仓库*/
|
|
||||||
public static final String KEY_JC_WAREHOUSE = "jc.warehouse";
|
|
||||||
}
|
|
||||||
-175
@@ -1,175 +0,0 @@
|
|||||||
package abacus.springboot.example.config;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.springframework.context.annotation.Bean;
|
|
||||||
import org.springframework.context.annotation.Configuration;
|
|
||||||
|
|
||||||
import abacus.config.dao.AbacusConfig;
|
|
||||||
import abacus.config.dao.AbacusConfigItem;
|
|
||||||
import abacus.config.wso.AbacusConfigNote;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>Title:JcConfiguration</p>
|
|
||||||
<p>Description: 系统配置定义</p>
|
|
||||||
@author chuanZeng
|
|
||||||
@date 2024年12月9日
|
|
||||||
*/
|
|
||||||
@Configuration
|
|
||||||
public class JcConfiguration {
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
public AbacusConfigNote key_jc_scan_source() {
|
|
||||||
AbacusConfigNote abacusConfigNote = new AbacusConfigNote();
|
|
||||||
|
|
||||||
AbacusConfig abacusConfig = new AbacusConfig();
|
|
||||||
abacusConfig.setKeyGroup(JcConfigKey.KEY_GROUP);
|
|
||||||
abacusConfig.setKey(JcConfigKey.KEY_JC_SCAN_SOURCE);
|
|
||||||
abacusConfig.setValueType(AbacusConfig._Value);
|
|
||||||
abacusConfig.setValuees("http://c.ztyxkj.com/,https://scan.vatsliquor.com/logistic/,https://scan.vats.com.cn/scan/");
|
|
||||||
abacusConfig.setProcedures("API");
|
|
||||||
abacusConfig.setInsulate(null);
|
|
||||||
abacusConfig.setDescribe("溯源:二维码域名IP");
|
|
||||||
|
|
||||||
abacusConfigNote.setAbacusConfig(abacusConfig);
|
|
||||||
return abacusConfigNote;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
public AbacusConfigNote key_jc_payment_offline() {
|
|
||||||
AbacusConfigNote abacusConfigNote = new AbacusConfigNote();
|
|
||||||
|
|
||||||
AbacusConfig abacusConfig = new AbacusConfig();
|
|
||||||
abacusConfig.setKeyGroup(JcConfigKey.KEY_GROUP);
|
|
||||||
abacusConfig.setKey(JcConfigKey.KEY_JC_PAYMENT_OFFLINE);
|
|
||||||
abacusConfig.setValueType(AbacusConfig._Set);
|
|
||||||
abacusConfig.setValuees(null);
|
|
||||||
abacusConfig.setProcedures("API");
|
|
||||||
abacusConfig.setInsulate(null);
|
|
||||||
abacusConfig.setDescribe("支付方式:线下支付");
|
|
||||||
|
|
||||||
List<AbacusConfigItem> abacusConfigItems = new ArrayList<AbacusConfigItem>();
|
|
||||||
|
|
||||||
AbacusConfigItem aci = new AbacusConfigItem();
|
|
||||||
aci.setKeyGroup(JcConfigKey.KEY_GROUP);
|
|
||||||
aci.setKey(JcConfigKey.KEY_JC_PAYMENT_OFFLINE);
|
|
||||||
aci.setCode(JcConfigKey.KEY_JC_ZHMC);
|
|
||||||
aci.setName("张三");
|
|
||||||
aci.setInsulate(null);
|
|
||||||
aci.setDescribe("账户名称");
|
|
||||||
abacusConfigItems.add(aci);
|
|
||||||
|
|
||||||
AbacusConfigItem aci1 = new AbacusConfigItem();
|
|
||||||
aci1.setKeyGroup(JcConfigKey.KEY_GROUP);
|
|
||||||
aci1.setKey(JcConfigKey.KEY_JC_PAYMENT_OFFLINE);
|
|
||||||
aci1.setCode(JcConfigKey.KEY_JC_KHYH);
|
|
||||||
aci1.setName("工商银行");
|
|
||||||
aci1.setInsulate(null);
|
|
||||||
aci1.setDescribe("开户银行");
|
|
||||||
abacusConfigItems.add(aci1);
|
|
||||||
|
|
||||||
AbacusConfigItem aci2 = new AbacusConfigItem();
|
|
||||||
aci2.setKeyGroup(JcConfigKey.KEY_GROUP);
|
|
||||||
aci2.setKey(JcConfigKey.KEY_JC_PAYMENT_OFFLINE);
|
|
||||||
aci2.setCode(JcConfigKey.KEY_JC_YHZH);
|
|
||||||
aci2.setName("0101010020023090");
|
|
||||||
aci2.setInsulate(null);
|
|
||||||
aci2.setDescribe("银行账户");
|
|
||||||
abacusConfigItems.add(aci2);
|
|
||||||
|
|
||||||
abacusConfigNote.setAbacusConfig(abacusConfig);
|
|
||||||
abacusConfigNote.setAbacusConfigItems(abacusConfigItems);
|
|
||||||
return abacusConfigNote;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
public AbacusConfigNote key_jc_wdt_dept() {
|
|
||||||
AbacusConfigNote abacusConfigNote = new AbacusConfigNote();
|
|
||||||
|
|
||||||
AbacusConfig abacusConfig = new AbacusConfig();
|
|
||||||
abacusConfig.setKeyGroup(JcConfigKey.KEY_GROUP);
|
|
||||||
abacusConfig.setKey(JcConfigKey.KEY_JC_WDT_DEPT);
|
|
||||||
abacusConfig.setValueType(AbacusConfig._Value);
|
|
||||||
abacusConfig.setValuees("0001");
|
|
||||||
abacusConfig.setProcedures("旺店通固定店铺编码");
|
|
||||||
abacusConfig.setInsulate(null);
|
|
||||||
abacusConfig.setDescribe("旺店通固定店铺编码");
|
|
||||||
|
|
||||||
abacusConfigNote.setAbacusConfig(abacusConfig);
|
|
||||||
return abacusConfigNote;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
public AbacusConfigNote key_jc_wdt_fcflage() {
|
|
||||||
AbacusConfigNote abacusConfigNote = new AbacusConfigNote();
|
|
||||||
|
|
||||||
AbacusConfig abacusConfig = new AbacusConfig();
|
|
||||||
abacusConfig.setKeyGroup(JcConfigKey.KEY_GROUP);
|
|
||||||
abacusConfig.setKey(JcConfigKey.KEY_JC_WDT_FCFLAGE);
|
|
||||||
abacusConfig.setValueType(AbacusConfig._Value);
|
|
||||||
abacusConfig.setValuees("true");
|
|
||||||
abacusConfig.setProcedures("是否自动分仓");
|
|
||||||
abacusConfig.setInsulate(null);
|
|
||||||
abacusConfig.setDescribe("是否自动分仓");
|
|
||||||
|
|
||||||
abacusConfigNote.setAbacusConfig(abacusConfig);
|
|
||||||
return abacusConfigNote;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
public AbacusConfigNote key_jc_erp_url() {
|
|
||||||
AbacusConfigNote abacusConfigNote = new AbacusConfigNote();
|
|
||||||
|
|
||||||
AbacusConfig abacusConfig = new AbacusConfig();
|
|
||||||
abacusConfig.setKeyGroup(JcConfigKey.KEY_GROUP);
|
|
||||||
abacusConfig.setKey(JcConfigKey.KEY_JC_ERP_URL);
|
|
||||||
abacusConfig.setValueType(AbacusConfig._Value);
|
|
||||||
abacusConfig.setValuees("http://");
|
|
||||||
abacusConfig.setProcedures("erp的IP");
|
|
||||||
abacusConfig.setInsulate(null);
|
|
||||||
abacusConfig.setDescribe("erp的IP");
|
|
||||||
|
|
||||||
abacusConfigNote.setAbacusConfig(abacusConfig);
|
|
||||||
return abacusConfigNote;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
public AbacusConfigNote key_jc_warehouse() {
|
|
||||||
AbacusConfigNote abacusConfigNote = new AbacusConfigNote();
|
|
||||||
|
|
||||||
AbacusConfig abacusConfig = new AbacusConfig();
|
|
||||||
abacusConfig.setKeyGroup(JcConfigKey.KEY_GROUP);
|
|
||||||
abacusConfig.setKey(JcConfigKey.KEY_JC_WAREHOUSE);
|
|
||||||
abacusConfig.setValueType(AbacusConfig._Set);
|
|
||||||
abacusConfig.setValuees(null);
|
|
||||||
abacusConfig.setProcedures("API");
|
|
||||||
abacusConfig.setInsulate(null);
|
|
||||||
abacusConfig.setDescribe("稽查收货仓库");
|
|
||||||
|
|
||||||
// List<AbacusConfigItem> abacusConfigItems = new ArrayList<AbacusConfigItem>();
|
|
||||||
//
|
|
||||||
// AbacusConfigItem aci = new AbacusConfigItem();
|
|
||||||
// aci.setKeyGroup(JcConfigKey.KEY_GROUP);
|
|
||||||
// aci.setKey(JcConfigKey.KEY_JC_WAREHOUSE);
|
|
||||||
// aci.setCode("237881");
|
|
||||||
// aci.setName("江苏致众盐城仓库");
|
|
||||||
// aci.setInsulate(null);
|
|
||||||
// aci.setDescribe("稽查收货仓库");
|
|
||||||
// abacusConfigItems.add(aci);
|
|
||||||
//
|
|
||||||
// AbacusConfigItem aci1 = new AbacusConfigItem();
|
|
||||||
// aci1.setKeyGroup(JcConfigKey.KEY_GROUP);
|
|
||||||
// aci1.setKey(JcConfigKey.KEY_JC_WAREHOUSE);
|
|
||||||
// aci1.setCode("288381");
|
|
||||||
// aci1.setName("上海一区");
|
|
||||||
// aci1.setInsulate(null);
|
|
||||||
// aci1.setDescribe("稽查收货仓库");
|
|
||||||
// abacusConfigItems.add(aci1);
|
|
||||||
|
|
||||||
abacusConfigNote.setAbacusConfig(abacusConfig);
|
|
||||||
// abacusConfigNote.setAbacusConfigItems(abacusConfigItems);
|
|
||||||
return abacusConfigNote;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-50
@@ -1,50 +0,0 @@
|
|||||||
package abacus.springboot.example.config;
|
|
||||||
|
|
||||||
import javax.persistence.EntityManager;
|
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.context.annotation.Bean;
|
|
||||||
import org.springframework.context.annotation.Configuration;
|
|
||||||
|
|
||||||
import com.abacus.xpos.foundation.pubs.DaoIdGenerator;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>Title:JcIdGeneratorConfig</p>
|
|
||||||
<p>Description: ID生成器</p>
|
|
||||||
@author chuanZeng
|
|
||||||
@date 2024年12月5日
|
|
||||||
*/
|
|
||||||
@Configuration
|
|
||||||
public class JcIdGeneratorConfig {
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private EntityManager entityManager;
|
|
||||||
|
|
||||||
@Bean(name="jcBillIdGenerator")
|
|
||||||
public DaoIdGenerator jcBillIdGenerator() {
|
|
||||||
DaoIdGenerator daoIdGenerator = new DaoIdGenerator();
|
|
||||||
daoIdGenerator.setTargetTableName("jc_bill");
|
|
||||||
daoIdGenerator.setPrefix("JC");
|
|
||||||
daoIdGenerator.setTargetIdColumnName("id");
|
|
||||||
daoIdGenerator.setSerialLength(4);
|
|
||||||
daoIdGenerator.setUseDAOId(false);
|
|
||||||
daoIdGenerator.setUseDateFormat(true);
|
|
||||||
//年月日
|
|
||||||
daoIdGenerator.setDateFormat("yyyyMMdd");
|
|
||||||
return daoIdGenerator;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Bean(name="jcBillHgIdGenerator")
|
|
||||||
public DaoIdGenerator jcBillHgIdGenerator() {
|
|
||||||
DaoIdGenerator daoIdGenerator = new DaoIdGenerator();
|
|
||||||
daoIdGenerator.setTargetTableName("jc_billhg");
|
|
||||||
daoIdGenerator.setPrefix("HG");
|
|
||||||
daoIdGenerator.setTargetIdColumnName("id");
|
|
||||||
daoIdGenerator.setSerialLength(4);
|
|
||||||
daoIdGenerator.setUseDAOId(false);
|
|
||||||
daoIdGenerator.setUseDateFormat(true);
|
|
||||||
//年月日
|
|
||||||
daoIdGenerator.setDateFormat("yyyyMMdd");
|
|
||||||
return daoIdGenerator;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-168
@@ -1,168 +0,0 @@
|
|||||||
package abacus.springboot.example.controller;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMethod;
|
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
|
|
||||||
import com.abacus.xpos.foundation.dao.Dept;
|
|
||||||
import com.abacus.xpos.foundation.dao.Employee;
|
|
||||||
|
|
||||||
import abacus.config.dao.AbacusConfigItem;
|
|
||||||
import abacus.springboot.example.config.JcConfigKey;
|
|
||||||
import abacus.springboot.example.dao.JcBill;
|
|
||||||
import abacus.springboot.example.pi.AutoCompleteAccessIF;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>
|
|
||||||
* Title:AutoCompleteController
|
|
||||||
* </p>
|
|
||||||
* <p>
|
|
||||||
* Description: 前端检索查询-api
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @author chuanZeng
|
|
||||||
* @date 2022年4月26日
|
|
||||||
*/
|
|
||||||
@RestController()
|
|
||||||
@RequestMapping(value = "/autoComplete")
|
|
||||||
public class AutoCompleteController extends BaseServlet {
|
|
||||||
|
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(AutoCompleteController.class);
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private AutoCompleteAccessIF autoCompleteAccess;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 检索:收货仓库
|
|
||||||
*
|
|
||||||
* @param request
|
|
||||||
* @param response
|
|
||||||
* @return
|
|
||||||
* @throws Throwable
|
|
||||||
*/
|
|
||||||
@RequestMapping(value = "abacusConfigItemGroupAutoComplete", method = RequestMethod.POST)
|
|
||||||
public List<AbacusConfigItem> abacusConfigItemGroupAutoComplete(@RequestParam(required = false) String keyCode) throws Throwable {
|
|
||||||
try {
|
|
||||||
List<AbacusConfigItem> objs = this.autoCompleteAccess.abacusConfigItemGroupAutoComplete(keyCode, JcConfigKey.KEY_GROUP, JcConfigKey.KEY_JC_WAREHOUSE);
|
|
||||||
return objs;
|
|
||||||
} catch (Throwable e) {
|
|
||||||
LOG.error(e.getMessage(), e);
|
|
||||||
e.printStackTrace();
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 检索:稽查
|
|
||||||
*
|
|
||||||
* @param request
|
|
||||||
* @param response
|
|
||||||
* @return
|
|
||||||
* @throws Throwable
|
|
||||||
*/
|
|
||||||
@RequestMapping(value = "jcBillAutoComplete", method = RequestMethod.POST)
|
|
||||||
public List<JcBill> jcBillAutoComplete(@RequestParam(required = false) String keyCode) throws Throwable {
|
|
||||||
try {
|
|
||||||
List<JcBill> objs = this.autoCompleteAccess.jcBillAutoComplete(keyCode);
|
|
||||||
return objs;
|
|
||||||
} catch (Throwable e) {
|
|
||||||
LOG.error(e.getMessage(), e);
|
|
||||||
e.printStackTrace();
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 检索:门店
|
|
||||||
*
|
|
||||||
* @param request
|
|
||||||
* @param response
|
|
||||||
* @return
|
|
||||||
* @throws Throwable
|
|
||||||
*/
|
|
||||||
@RequestMapping(value = "deptAutoComplete", method = RequestMethod.POST)
|
|
||||||
public List<Dept> deptAutoComplete(@RequestParam(required = false) String keyCode,
|
|
||||||
@RequestParam(required = false) String type) throws Throwable {
|
|
||||||
try {
|
|
||||||
List<Dept> objs = this.autoCompleteAccess.deptAutoComplete(keyCode, type);
|
|
||||||
return objs;
|
|
||||||
} catch (Throwable e) {
|
|
||||||
LOG.error(e.getMessage(), e);
|
|
||||||
e.printStackTrace();
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 检索:分销门店
|
|
||||||
*
|
|
||||||
* @param request
|
|
||||||
* @param response
|
|
||||||
* @return
|
|
||||||
* @throws Throwable
|
|
||||||
*/
|
|
||||||
@RequestMapping(value = "deptFxAutoComplete", method = RequestMethod.POST)
|
|
||||||
public List<Dept> deptFxAutoComplete(@RequestParam(required = false) String keyCode) throws Throwable {
|
|
||||||
try {
|
|
||||||
List<Dept> objs = this.autoCompleteAccess.deptAutoComplete(keyCode, "17");
|
|
||||||
return objs;
|
|
||||||
} catch (Throwable e) {
|
|
||||||
LOG.error(e.getMessage(), e);
|
|
||||||
e.printStackTrace();
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 检索:员工
|
|
||||||
*
|
|
||||||
* @param request
|
|
||||||
* @param response
|
|
||||||
* @return
|
|
||||||
* @throws Throwable
|
|
||||||
*/
|
|
||||||
@RequestMapping(value = "employeeAutoComplete", method = RequestMethod.POST)
|
|
||||||
public List<Employee> employeeAutoComplete(@RequestParam(required = false) String keyCode) throws Throwable {
|
|
||||||
try {
|
|
||||||
List<Employee> objs = this.autoCompleteAccess.employeeAutoComplete(keyCode);
|
|
||||||
return objs;
|
|
||||||
} catch (Throwable e) {
|
|
||||||
LOG.error(e.getMessage(), e);
|
|
||||||
e.printStackTrace();
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-222
@@ -1,222 +0,0 @@
|
|||||||
package abacus.springboot.example.controller;
|
|
||||||
|
|
||||||
import java.util.LinkedHashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.regex.Matcher;
|
|
||||||
import java.util.regex.Pattern;
|
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
|
||||||
|
|
||||||
import org.apache.commons.lang.StringUtils;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
|
|
||||||
import com.abacus.xpos.foundation.pubs.UserContext;
|
|
||||||
|
|
||||||
import abacus.commons.exception.BusinessException;
|
|
||||||
import abacus.config.ext.AbacusExtConfig;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>Title:BaseServlet</p>
|
|
||||||
<p>Description: 基础控制器</p>
|
|
||||||
@author chuanZeng
|
|
||||||
@date 2026年8月18日
|
|
||||||
*/
|
|
||||||
public class BaseServlet{
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private AbacusExtConfig abacusExtConfig;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* value-获取配置参数
|
|
||||||
* @param configKey
|
|
||||||
* @return
|
|
||||||
* @throws WebserviceException
|
|
||||||
*/
|
|
||||||
protected String getConfigValue(String configKey) throws BusinessException {
|
|
||||||
String configValueStr = abacusExtConfig.getAbacusConfigValue(configKey);
|
|
||||||
if (StringUtils.isBlank(configValueStr)) {
|
|
||||||
throw new BusinessException("配置参数[" + configKey + "]值不存在!");
|
|
||||||
}
|
|
||||||
return configValueStr;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* set-获取配置参数
|
|
||||||
* @param configKey
|
|
||||||
* @return
|
|
||||||
* @throws WebserviceException
|
|
||||||
*/
|
|
||||||
protected Map<String, String> getConfigSet(String keyGroup, String configKey) throws BusinessException {
|
|
||||||
Map<String, String> configValueStr = abacusExtConfig.getAbacusConfigSetByKeyGroupByKey(keyGroup, configKey);
|
|
||||||
if (configValueStr.isEmpty()) {
|
|
||||||
throw new BusinessException("系统[" + keyGroup + "]配置参数[" + configKey + "]值不存在!");
|
|
||||||
}
|
|
||||||
return configValueStr;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取登陆用户id
|
|
||||||
* @return
|
|
||||||
* @throws Exception
|
|
||||||
*/
|
|
||||||
protected String getUserId() throws BusinessException {
|
|
||||||
String operatorId = UserContext.getUserId();
|
|
||||||
if (StringUtils.isBlank(operatorId)){
|
|
||||||
throw new BusinessException("操作员不存在,请重新登录!");
|
|
||||||
}
|
|
||||||
|
|
||||||
return operatorId;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取登陆用户姓名
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
protected String getUserName() throws BusinessException{
|
|
||||||
String operatorName = UserContext.getUserName();
|
|
||||||
if (StringUtils.isBlank(operatorName)){
|
|
||||||
throw new BusinessException("操作员不存在,请重新登录!");
|
|
||||||
}
|
|
||||||
|
|
||||||
return operatorName;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取登陆用户所属部门id
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
protected String getDeptId() throws BusinessException{
|
|
||||||
String deptId = UserContext.getDeptId();
|
|
||||||
if (StringUtils.isBlank(deptId)){
|
|
||||||
throw new BusinessException("操作员所属部门不存在,请重新登录!");
|
|
||||||
}
|
|
||||||
|
|
||||||
return deptId;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取登陆用户所属部门名称
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
protected String getDeptName() throws BusinessException{
|
|
||||||
String deptName = UserContext.getDeptName();
|
|
||||||
if (StringUtils.isBlank(deptName)){
|
|
||||||
throw new BusinessException("操作员所属部门不存在,请重新登录!");
|
|
||||||
}
|
|
||||||
|
|
||||||
return deptName;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* 获取double型的参数
|
|
||||||
*
|
|
||||||
* @param request
|
|
||||||
* @param paramName
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
protected Double getDoubleParameter(HttpServletRequest request, String paramName) {
|
|
||||||
//
|
|
||||||
String paramValue = request.getParameter(paramName);
|
|
||||||
if (StringUtils.isBlank(paramValue)) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
return Double.valueOf(paramValue);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* 获取long型的参数
|
|
||||||
*
|
|
||||||
* @param request
|
|
||||||
* @param paramName
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
protected Long getLongParameter(HttpServletRequest request, String paramName) {
|
|
||||||
//
|
|
||||||
String paramValue = request.getParameter(paramName);
|
|
||||||
if (StringUtils.isBlank(paramValue)) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
return Long.valueOf(paramValue);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* 获取int型的参数
|
|
||||||
*
|
|
||||||
* @param request
|
|
||||||
* @param paramName
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
protected Integer getIntegerParameter(HttpServletRequest request, String paramName) {
|
|
||||||
//
|
|
||||||
String paramValue = request.getParameter(paramName);
|
|
||||||
if (StringUtils.isBlank(paramValue)) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
return Integer.valueOf(paramValue);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* 获取Boolean型的参数
|
|
||||||
*
|
|
||||||
* @param request
|
|
||||||
* @param paramName
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
protected Boolean getBooleanParameter(HttpServletRequest request, String paramName) {
|
|
||||||
//
|
|
||||||
String paramValue = request.getParameter(paramName);
|
|
||||||
|
|
||||||
if ("true".equalsIgnoreCase(paramValue)) {
|
|
||||||
return true;
|
|
||||||
}else if ("false".equalsIgnoreCase(paramValue)) {
|
|
||||||
return false;
|
|
||||||
}else {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 正则表达式校验手机号码
|
|
||||||
*
|
|
||||||
* @return false 则手机号码不合法,true 则手机号码校验通过
|
|
||||||
*/
|
|
||||||
protected Boolean validatePhoneNumber(String phoneNumber) {
|
|
||||||
if (phoneNumber.length() != 11) {
|
|
||||||
System.out.print("手机号应为11位数 ");
|
|
||||||
return false;
|
|
||||||
} else {
|
|
||||||
String regPattern = "^(1)\\d{10}$";
|
|
||||||
Pattern pattern = Pattern.compile(regPattern);
|
|
||||||
Matcher matcher = pattern.matcher(phoneNumber);
|
|
||||||
boolean isMatch = matcher.matches();
|
|
||||||
if (!isMatch) {
|
|
||||||
System.out.print("请填入正确的手机号 ");
|
|
||||||
}
|
|
||||||
return isMatch;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 良友-crm回调函数
|
|
||||||
*/
|
|
||||||
protected Map<String, Object> crmReturn(int code, String message, String content) {
|
|
||||||
Map<String, Object> map = new LinkedHashMap<String, Object>();
|
|
||||||
|
|
||||||
map.put("code", code);
|
|
||||||
map.put("message", message);
|
|
||||||
map.put("content", content);
|
|
||||||
|
|
||||||
return map;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
-751
@@ -1,751 +0,0 @@
|
|||||||
package abacus.springboot.example.controller;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
import org.apache.commons.lang.StringUtils;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.data.domain.Page;
|
|
||||||
import org.springframework.data.domain.PageRequest;
|
|
||||||
import org.springframework.data.domain.Pageable;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMethod;
|
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
|
|
||||||
import com.abacus.pms.dao.Account;
|
|
||||||
import com.abacus.pms.wsi.AccountServiceIF;
|
|
||||||
import com.abacus.pms.wsi.ProductServiceIF;
|
|
||||||
import com.abacus.xpos.foundation.pubs.DaoIdGenerator;
|
|
||||||
import com.abacus.xpos.foundation.wsi.EmployeeServiceIF;
|
|
||||||
import com.alibaba.fastjson.JSON;
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
|
||||||
|
|
||||||
import abacus.commons.exception.BusinessException;
|
|
||||||
import abacus.springboot.example.config.JcConfigKey;
|
|
||||||
import abacus.springboot.example.dao.JcBill;
|
|
||||||
import abacus.springboot.example.dao.JcBillHg;
|
|
||||||
import abacus.springboot.example.dao.JcBillInItem;
|
|
||||||
import abacus.springboot.example.dao.JcBillPhoto;
|
|
||||||
import abacus.springboot.example.dao.JcBillSourceItem;
|
|
||||||
import abacus.springboot.example.util.DateToUpperChinese;
|
|
||||||
import abacus.springboot.example.util.DateUtil;
|
|
||||||
import abacus.springboot.example.vo.SiDepositlocation;
|
|
||||||
import abacus.springboot.example.wsi.JcBillServiceIF;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>Title:JcBillHgController</p>
|
|
||||||
<p>Description: 前端相关-api</p>
|
|
||||||
@author chuanZeng
|
|
||||||
@date 2026年8月18日
|
|
||||||
*/
|
|
||||||
@RestController
|
|
||||||
@RequestMapping(value = "/jc/billHg")
|
|
||||||
public class JcBillHgController extends BaseServlet{
|
|
||||||
|
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(JcBillHgController.class);
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private JcBillServiceIF jcBillService;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private AccountServiceIF accountService;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private ProductServiceIF productService;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private DaoIdGenerator jcBillHgIdGenerator;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private EmployeeServiceIF employeeService;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* TODO 稽查入库(回购通知)明细
|
|
||||||
* @param billId
|
|
||||||
* @return
|
|
||||||
* @throws Throwable
|
|
||||||
*/
|
|
||||||
@RequestMapping(value = "queryJcBillInItems", method = RequestMethod.POST)
|
|
||||||
public JSONObject queryJcBillInItems(
|
|
||||||
@RequestParam(required = true) String billId
|
|
||||||
)
|
|
||||||
throws Throwable {
|
|
||||||
try {
|
|
||||||
|
|
||||||
List<JcBillInItem> items = jcBillService.queryJcBillInItemByBillId(billId);
|
|
||||||
|
|
||||||
if(items == null) throw new BusinessException("回购明细不存在!");
|
|
||||||
|
|
||||||
List<JcBillInItem> oneList = new ArrayList<JcBillInItem>();
|
|
||||||
List<JcBillInItem> twoList = new ArrayList<JcBillInItem>();
|
|
||||||
|
|
||||||
|
|
||||||
for(JcBillInItem item : items) {
|
|
||||||
if(JcBillInItem.STATUS_TWO != item.getStatus()) {
|
|
||||||
Account account = accountService.getAccount(item.getAccount());
|
|
||||||
if(account != null) {
|
|
||||||
item.setOperator(account.getOperator().getId());
|
|
||||||
item.setOperatorname(account.getOperator().getName());
|
|
||||||
item.setSalearea(account.getSalearea());
|
|
||||||
} else {
|
|
||||||
item.setSalearea("");
|
|
||||||
item.setSaleareaname("");
|
|
||||||
item.setGroupid("");
|
|
||||||
item.setGroupname("");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
jcBillService.saveJcBillInItem(items);
|
|
||||||
|
|
||||||
// 分出,已通知或未通知
|
|
||||||
for(JcBillInItem item : items) {
|
|
||||||
if(JcBillInItem.STATUS_MINUS_ONE == item.getStatus() || JcBillInItem.STATUS_ONE == item.getStatus()) {
|
|
||||||
// item.setPrice(new BigDecimal(String.valueOf(item.getPrice())).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
|
|
||||||
oneList.add(item);
|
|
||||||
} else {
|
|
||||||
// item.setPrice(new BigDecimal(String.valueOf(item.getPrice())).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
|
|
||||||
twoList.add(item);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
JSONObject obj = new JSONObject();
|
|
||||||
|
|
||||||
obj.put("oneList", oneList);
|
|
||||||
obj.put("twoList", twoList);
|
|
||||||
obj.put("threeList", items);
|
|
||||||
|
|
||||||
return obj;
|
|
||||||
} catch(Throwable e){
|
|
||||||
LOG.error(e.getMessage(), e);
|
|
||||||
e.printStackTrace();
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* TODO 查询回购明细对应的溯源信息
|
|
||||||
* @param id
|
|
||||||
* @return
|
|
||||||
* @throws Throwable
|
|
||||||
*/
|
|
||||||
@RequestMapping(value = "queryHgSourceItems", method = RequestMethod.POST)
|
|
||||||
public List<JcBillSourceItem> queryHgSourceItems(
|
|
||||||
@RequestParam(required = true) String id
|
|
||||||
)
|
|
||||||
throws Throwable {
|
|
||||||
try {
|
|
||||||
JcBillInItem inItem = jcBillService.queryJcBillInItemById(Long.parseLong(id));
|
|
||||||
|
|
||||||
if(inItem == null) throw new BusinessException("回购明细不存在!");
|
|
||||||
|
|
||||||
List<JcBillSourceItem> billItems = jcBillService.queryJcBillSourceItemByBillId(inItem.getBillid());
|
|
||||||
|
|
||||||
if(billItems == null) throw new BusinessException("溯源信息不存在!");
|
|
||||||
|
|
||||||
// 按客户编码+商品编码+收货单价分组
|
|
||||||
Map<String, List<JcBillSourceItem>> mapItems = billItems.stream()
|
|
||||||
.collect(Collectors.groupingBy(e -> {
|
|
||||||
return e.getAccount() + "#" + e.getProduct() + "#" + String.valueOf(e.getPrice());
|
|
||||||
},
|
|
||||||
Collectors.collectingAndThen(Collectors.toList(), value -> value)
|
|
||||||
));
|
|
||||||
|
|
||||||
Map<String, List<JcBillPhoto>> mapPhoto = jcBillService.queryJcBillPhoto(inItem.getBillid());
|
|
||||||
|
|
||||||
// 找出对应的来源明细
|
|
||||||
List<JcBillSourceItem> tempItems = mapItems.get(inItem.getAccount() + "#" + inItem.getProduct() + "#" + String.valueOf(inItem.getPrice()));
|
|
||||||
|
|
||||||
for(JcBillSourceItem item : tempItems) {
|
|
||||||
|
|
||||||
// 稽查付款截图
|
|
||||||
List<JcBillPhoto> fkts = mapPhoto.get(JcBillPhoto.JC_FK + "#" + String.valueOf(item.getIndexno()));
|
|
||||||
if(fkts != null && fkts.size() >= 1) {
|
|
||||||
List<String> fkList = new ArrayList<String>();
|
|
||||||
|
|
||||||
for(JcBillPhoto fkt : fkts) {
|
|
||||||
fkList.add(fkt.getUrlphoto());
|
|
||||||
}
|
|
||||||
|
|
||||||
item.setPaymentPhoto(fkList);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 货品图
|
|
||||||
List<JcBillPhoto> hpts = mapPhoto.get(JcBillPhoto.JC_HP + "#" + String.valueOf(item.getIndexno()) + "#" + item.getGoodsid());
|
|
||||||
if(hpts != null && hpts.size() >= 1) {
|
|
||||||
List<String> hpList = new ArrayList<String>();
|
|
||||||
|
|
||||||
for(JcBillPhoto hpt : hpts) {
|
|
||||||
hpList.add(hpt.getUrlphoto());
|
|
||||||
}
|
|
||||||
|
|
||||||
item.setGoodsPhotos(hpList);
|
|
||||||
item.setHpts(hpts);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
return tempItems;
|
|
||||||
} catch(Throwable e){
|
|
||||||
LOG.error(e.getMessage(), e);
|
|
||||||
e.printStackTrace();
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* TODO 终止回购
|
|
||||||
* @param id
|
|
||||||
* @return
|
|
||||||
* @throws Throwable
|
|
||||||
*/
|
|
||||||
@RequestMapping(value = "terminateHgInItem", method = RequestMethod.POST)
|
|
||||||
public void terminateHgInItem(
|
|
||||||
@RequestParam(required = true) String id
|
|
||||||
)
|
|
||||||
throws Throwable {
|
|
||||||
try {
|
|
||||||
|
|
||||||
JcBillInItem inItem = jcBillService.queryJcBillInItemById(Long.parseLong(id));
|
|
||||||
|
|
||||||
if(inItem == null) throw new BusinessException("回购明细不存在!");
|
|
||||||
|
|
||||||
inItem.setStatus(JcBillInItem.STATUS_MINUS_ONE);
|
|
||||||
|
|
||||||
jcBillService.saveTerminateHgInItem(inItem);
|
|
||||||
|
|
||||||
} catch(Throwable e){
|
|
||||||
LOG.error(e.getMessage(), e);
|
|
||||||
e.printStackTrace();
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* TODO 修改回购价格
|
|
||||||
* @param id
|
|
||||||
* @return
|
|
||||||
* @throws Throwable
|
|
||||||
*/
|
|
||||||
@RequestMapping(value = "updateHgprice", method = RequestMethod.POST)
|
|
||||||
public JcBillInItem updateHgprice(
|
|
||||||
@RequestParam(required = true) String id,
|
|
||||||
@RequestParam(required = true) String hgprice
|
|
||||||
)
|
|
||||||
throws Throwable {
|
|
||||||
try {
|
|
||||||
|
|
||||||
JcBillInItem inItem = jcBillService.queryJcBillInItemById(Long.parseLong(id));
|
|
||||||
if(inItem == null) throw new BusinessException("回购明细不存在!");
|
|
||||||
|
|
||||||
inItem.setOldhgprice(inItem.getHgprice());
|
|
||||||
|
|
||||||
BigDecimal bigHgprice = new BigDecimal(hgprice);
|
|
||||||
|
|
||||||
BigDecimal bigAmount = bigHgprice.multiply(new BigDecimal(String.valueOf(inItem.getQuantity())));
|
|
||||||
|
|
||||||
inItem.setHgprice(bigHgprice.doubleValue());
|
|
||||||
inItem.setHgamount(bigAmount.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
|
|
||||||
|
|
||||||
jcBillService.updateHgprice(inItem);
|
|
||||||
|
|
||||||
return inItem;
|
|
||||||
} catch(Throwable e){
|
|
||||||
LOG.error(e.getMessage(), e);
|
|
||||||
e.printStackTrace();
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* TODO 回购查询
|
|
||||||
* @param id
|
|
||||||
* @return
|
|
||||||
* @throws Throwable
|
|
||||||
*/
|
|
||||||
@RequestMapping(value = "queryHg", method = RequestMethod.POST)
|
|
||||||
public JSONObject queryHg(
|
|
||||||
@RequestParam(required = false) String from,
|
|
||||||
@RequestParam(required = false) String thru,
|
|
||||||
|
|
||||||
@RequestParam(required = false) String account,
|
|
||||||
@RequestParam(required = false) String salearea,
|
|
||||||
@RequestParam(required = false) String id,
|
|
||||||
@RequestParam(required = false) String billId,
|
|
||||||
@RequestParam(required = false) String status,
|
|
||||||
@RequestParam(required = false) String product,
|
|
||||||
@RequestParam(required = false) String manager,
|
|
||||||
@RequestParam(required = true) int typ,
|
|
||||||
|
|
||||||
@RequestParam(required = true) int page,
|
|
||||||
@RequestParam(required = true) int size
|
|
||||||
)
|
|
||||||
throws Throwable {
|
|
||||||
try {
|
|
||||||
|
|
||||||
// 创建起始时间
|
|
||||||
String fromDate = null;
|
|
||||||
if (StringUtils.isNotBlank(from)) {
|
|
||||||
fromDate = DateUtil.formatDateTime(DateUtil.getFromDate(DateUtil.toDate(from)));
|
|
||||||
}
|
|
||||||
// 创建截止时间
|
|
||||||
String thruDate = null;
|
|
||||||
if (StringUtils.isNotBlank(thru)) {
|
|
||||||
thruDate = DateUtil.formatDateTime(DateUtil.getThruDate(DateUtil.toDate(thru)));
|
|
||||||
}
|
|
||||||
|
|
||||||
// 当前页
|
|
||||||
// int pageNumber = page/size + 1;
|
|
||||||
Pageable pageable = PageRequest.of(page - 1, size);
|
|
||||||
|
|
||||||
Page<JcBillHg> pages = jcBillService.queryJcBillHg(fromDate, thruDate, account, salearea, id, billId,
|
|
||||||
status, product, manager, typ, pageable);
|
|
||||||
|
|
||||||
for(JcBillHg hg : pages.getContent()) {
|
|
||||||
hg.setAmount(hg.getSubtotal() + hg.getFreight());
|
|
||||||
}
|
|
||||||
|
|
||||||
JSONObject obj = new JSONObject();
|
|
||||||
|
|
||||||
obj.put("list", pages.getContent());
|
|
||||||
obj.put("total", pages.getTotalElements());
|
|
||||||
|
|
||||||
return obj;
|
|
||||||
} catch(Throwable e){
|
|
||||||
LOG.error(e.getMessage(), e);
|
|
||||||
e.printStackTrace();
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* TODO 回购-驳回
|
|
||||||
* 待提交-->回购通知节点
|
|
||||||
* 待付款-->待提交,
|
|
||||||
* 已付款-->待付款
|
|
||||||
* 待分仓-->已付款
|
|
||||||
* @param billId
|
|
||||||
* @param typ 1-回购认款,2-回购分仓
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
@RequestMapping(value = "rejectBillHg", method = RequestMethod.POST)
|
|
||||||
public JcBillHg rejectBillHg(
|
|
||||||
@RequestParam(required = false) String billHgId,
|
|
||||||
@RequestParam(required = false) int status,
|
|
||||||
@RequestParam(required = true) int typ
|
|
||||||
)
|
|
||||||
throws Throwable {
|
|
||||||
try {
|
|
||||||
|
|
||||||
JcBillHg billHg = jcBillService.queryJcBillHg(billHgId);
|
|
||||||
|
|
||||||
if(billHg == null) throw new BusinessException("回购订单不存在!");
|
|
||||||
|
|
||||||
List<JcBillInItem> inItems = null;
|
|
||||||
JcBill jcBill = null;
|
|
||||||
if(JcBillHg.STATUS_ONE == status) {
|
|
||||||
|
|
||||||
inItems = jcBillService.queryJcBillInItemByBillId(billHg.getBillid());
|
|
||||||
|
|
||||||
if(inItems == null) throw new BusinessException("回购明细不存在!");
|
|
||||||
|
|
||||||
// 设置明细状态和回购单号为空
|
|
||||||
|
|
||||||
// 是否部分回购
|
|
||||||
boolean informFlag = false;
|
|
||||||
for(JcBillInItem item : inItems) {
|
|
||||||
if(billHgId.equals(item.getBillhg())) {
|
|
||||||
item.setStatus(JcBillInItem.STATUS_ONE);
|
|
||||||
item.setBillhg(null);
|
|
||||||
}
|
|
||||||
if(item.getStatus() == JcBillInItem.STATUS_TWO) {
|
|
||||||
informFlag = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
jcBill = jcBillService.queryJcBillById(billHg.getBillid());
|
|
||||||
|
|
||||||
if(jcBill == null) throw new BusinessException("收货记录不存在!");
|
|
||||||
|
|
||||||
// 稽查收货记录修改状态
|
|
||||||
// if(informFlag) jcBill.setStatus(JcBill.STATUS_SIX);
|
|
||||||
// else jcBill.setStatus(JcBill.STATUS_FIVE);
|
|
||||||
if(informFlag) jcBill.setHgstatus(JcBill.HGSTATUS_ONE);
|
|
||||||
else jcBill.setStatus(JcBill.STATUS_FIVE);
|
|
||||||
|
|
||||||
billHg.setStatus(JcBillHg.STATUS_MINUS_ONE);
|
|
||||||
|
|
||||||
} else if(JcBillHg.STATUS_TWO == status) {
|
|
||||||
|
|
||||||
billHg.setStatus(JcBillHg.STATUS_ONE);
|
|
||||||
|
|
||||||
} else if(JcBillHg.STATUS_THREE == status || JcBillHg.STATUS_FOUR == status) {
|
|
||||||
|
|
||||||
billHg.setStatus(JcBillHg.STATUS_TWO);
|
|
||||||
|
|
||||||
} else if(JcBillHg.STATUS_FIVE == status) {
|
|
||||||
|
|
||||||
SiDepositlocation sd = jcBillService.querySiDepositlocationHGfc(billHg.getId());
|
|
||||||
|
|
||||||
if(sd == null) {// WDT
|
|
||||||
throw new BusinessException("该单据需要通知仓库在旺店通删除入库单,并联系信息部撤回。");
|
|
||||||
} else {
|
|
||||||
if(sd.getPush() == 1) {// WMS
|
|
||||||
|
|
||||||
JSONObject obj = jcBillService.gwisSubCancelOrder(billHg.getId(), "B2BCK");
|
|
||||||
|
|
||||||
if(obj.getBooleanValue("success")) {
|
|
||||||
|
|
||||||
billHg.setStatus(JcBillHg.STATUS_FOUR);
|
|
||||||
} else {
|
|
||||||
throw new BusinessException(obj.getString("body"));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
throw new BusinessException("该单据需要通知仓库在旺店通删除入库单,并联系信息部撤回。");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
} else {
|
|
||||||
throw new BusinessException("未知状态不能驳回!");
|
|
||||||
}
|
|
||||||
|
|
||||||
jcBillService.saveRejectBillHg(status, typ, jcBill, billHg, inItems);
|
|
||||||
|
|
||||||
billHg.setAmount(billHg.getSubtotal() + billHg.getFreight());
|
|
||||||
|
|
||||||
return billHg;
|
|
||||||
} catch(Throwable e){
|
|
||||||
LOG.error(e.getMessage(), e);
|
|
||||||
e.printStackTrace();
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* TODO 确认收款
|
|
||||||
* @param billId
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
@RequestMapping(value = "querenSk", method = RequestMethod.POST)
|
|
||||||
public JcBillHg querenSk(
|
|
||||||
@RequestParam(required = false) String billHgId
|
|
||||||
)
|
|
||||||
throws Throwable {
|
|
||||||
try {
|
|
||||||
|
|
||||||
JcBillHg billHg = jcBillService.queryJcBillHg(billHgId);
|
|
||||||
|
|
||||||
if(billHg == null) throw new BusinessException("回购订单不存在!");
|
|
||||||
|
|
||||||
String key_jc_wdt_fcflage = getConfigValue(JcConfigKey.KEY_JC_WDT_FCFLAGE);
|
|
||||||
boolean fcFlag = Boolean.parseBoolean(key_jc_wdt_fcflage);
|
|
||||||
|
|
||||||
if(fcFlag) billHg.setStatus(JcBillHg.STATUS_FIVE);
|
|
||||||
else billHg.setStatus(JcBillHg.STATUS_FOUR);
|
|
||||||
|
|
||||||
|
|
||||||
jcBillService.saveQuerenSk(billHg, fcFlag);
|
|
||||||
|
|
||||||
|
|
||||||
billHg.setAmount(billHg.getSubtotal() + billHg.getFreight());
|
|
||||||
|
|
||||||
return billHg;
|
|
||||||
} catch(Throwable e){
|
|
||||||
LOG.error(e.getMessage(), e);
|
|
||||||
e.printStackTrace();
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* TODO 分仓
|
|
||||||
* @param billId
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
@RequestMapping(value = "createFc", method = RequestMethod.POST)
|
|
||||||
public JcBillHg createFc(
|
|
||||||
@RequestParam(required = false) String billHgId
|
|
||||||
)
|
|
||||||
throws Throwable {
|
|
||||||
try {
|
|
||||||
|
|
||||||
JcBillHg billHg = jcBillService.queryJcBillHg(billHgId);
|
|
||||||
|
|
||||||
if(billHg == null) throw new BusinessException("回购订单不存在!");
|
|
||||||
|
|
||||||
billHg.setStatus(JcBillHg.STATUS_FIVE);
|
|
||||||
|
|
||||||
jcBillService.savecreateFc(billHg);
|
|
||||||
|
|
||||||
billHg.setAmount(billHg.getSubtotal() + billHg.getFreight());
|
|
||||||
|
|
||||||
return billHg;
|
|
||||||
} catch(Throwable e){
|
|
||||||
LOG.error(e.getMessage(), e);
|
|
||||||
e.printStackTrace();
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* TODO 修改分仓仓库
|
|
||||||
* @param billId
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
@RequestMapping(value = "updateFcWarehouse", method = RequestMethod.POST)
|
|
||||||
public JcBillHg updateFcWarehouse(
|
|
||||||
@RequestParam(required = true) String billHgId,
|
|
||||||
@RequestParam(required = true) String warehouse,
|
|
||||||
@RequestParam(required = true) String warehouseName
|
|
||||||
)
|
|
||||||
throws Throwable {
|
|
||||||
try {
|
|
||||||
JcBillHg billHg = jcBillService.queryJcBillHg(billHgId);
|
|
||||||
|
|
||||||
if(billHg == null) throw new BusinessException("回购订单不存在!");
|
|
||||||
|
|
||||||
// 老对象保存为JSONString
|
|
||||||
String oldJsonStr = JSON.toJSONString(billHg);
|
|
||||||
|
|
||||||
billHg.setFhwarehouse(warehouse);
|
|
||||||
billHg.setFhwarehousename(warehouseName);
|
|
||||||
|
|
||||||
jcBillService.updateFcWarehouse(oldJsonStr, billHg);
|
|
||||||
|
|
||||||
billHg.setAmount(billHg.getSubtotal() + billHg.getFreight());
|
|
||||||
|
|
||||||
return billHg;
|
|
||||||
} catch(Throwable e){
|
|
||||||
LOG.error(e.getMessage(), e);
|
|
||||||
e.printStackTrace();
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* TODO 修改运营备注
|
|
||||||
* @param billId
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
@RequestMapping(value = "updateRemark1", method = RequestMethod.POST)
|
|
||||||
public JcBillHg updateRemark1(
|
|
||||||
@RequestParam(required = true) String billHgId,
|
|
||||||
@RequestParam(required = true) String remark
|
|
||||||
)
|
|
||||||
throws Throwable {
|
|
||||||
try {
|
|
||||||
JcBillHg billHg = jcBillService.queryJcBillHg(billHgId);
|
|
||||||
|
|
||||||
if(billHg == null) throw new BusinessException("回购订单不存在!");
|
|
||||||
|
|
||||||
// 老对象保存为JSONString
|
|
||||||
String oldJsonStr = JSON.toJSONString(billHg);
|
|
||||||
|
|
||||||
billHg.setRemark1(remark);
|
|
||||||
|
|
||||||
jcBillService.updateFcWarehouse(oldJsonStr, billHg);
|
|
||||||
|
|
||||||
billHg.setAmount(billHg.getSubtotal() + billHg.getFreight());
|
|
||||||
|
|
||||||
return billHg;
|
|
||||||
} catch(Throwable e){
|
|
||||||
LOG.error(e.getMessage(), e);
|
|
||||||
e.printStackTrace();
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* TODO 修改收货地址
|
|
||||||
* @param billId
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
@RequestMapping(value = "updatePac", method = RequestMethod.POST)
|
|
||||||
public JcBillHg updatePac(
|
|
||||||
@RequestParam(required = true) String billHgId,
|
|
||||||
@RequestParam(required = true) String provincename,
|
|
||||||
@RequestParam(required = true) String cityname,
|
|
||||||
@RequestParam(required = true) String areaname,
|
|
||||||
@RequestParam(required = true) String address,
|
|
||||||
@RequestParam(required = true) String consignee,
|
|
||||||
@RequestParam(required = true) String consigneephone
|
|
||||||
)
|
|
||||||
throws Throwable {
|
|
||||||
try {
|
|
||||||
JcBillHg billHg = jcBillService.queryJcBillHg(billHgId);
|
|
||||||
|
|
||||||
if(billHg == null) throw new BusinessException("回购订单不存在!");
|
|
||||||
|
|
||||||
// 老对象保存为JSONString
|
|
||||||
String oldJsonStr = JSON.toJSONString(billHg);
|
|
||||||
|
|
||||||
billHg.setProvincename(provincename);
|
|
||||||
billHg.setCityname(cityname);
|
|
||||||
billHg.setAreaname(areaname);
|
|
||||||
billHg.setAddress(address);
|
|
||||||
billHg.setConsignee(consignee);
|
|
||||||
billHg.setConsigneephone(consigneephone);
|
|
||||||
|
|
||||||
jcBillService.updatePac(oldJsonStr, billHg);
|
|
||||||
|
|
||||||
billHg.setAmount(billHg.getSubtotal() + billHg.getFreight());
|
|
||||||
|
|
||||||
return billHg;
|
|
||||||
} catch(Throwable e){
|
|
||||||
LOG.error(e.getMessage(), e);
|
|
||||||
e.printStackTrace();
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// TODO 创建通知函文章
|
|
||||||
@RequestMapping(value="createTzh", method = RequestMethod.POST)
|
|
||||||
public JSONObject createTzh(
|
|
||||||
@RequestParam(required = true) String inItems,
|
|
||||||
@RequestParam(required = false) String bzj
|
|
||||||
) throws Exception {
|
|
||||||
try {
|
|
||||||
|
|
||||||
if(StringUtils.isBlank(inItems)) throw new BusinessException("未勾选!");
|
|
||||||
|
|
||||||
List<JcBillInItem> items = JSON.parseArray(inItems, JcBillInItem.class);
|
|
||||||
|
|
||||||
List<JcBillSourceItem> billItems = jcBillService.queryJcBillSourceItemByBillId(items.get(0).getBillid());
|
|
||||||
if(billItems == null) throw new BusinessException("稽查明细不存在!");
|
|
||||||
|
|
||||||
if(StringUtils.isBlank(bzj)) bzj = "2、在接到本通知函后一周内,缴纳1万元市场管理保证金,汇入我司对公账户。";
|
|
||||||
|
|
||||||
|
|
||||||
return creatTzhObj(items, billItems.get(0), bzj);
|
|
||||||
} catch (Exception e) {
|
|
||||||
LOG.error(e.getMessage(), e);
|
|
||||||
e.printStackTrace();
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 生成通知函个节点
|
|
||||||
* @param item
|
|
||||||
* @return
|
|
||||||
* @throws Exception
|
|
||||||
*/
|
|
||||||
private JSONObject creatTzhObj(List<JcBillInItem> items, JcBillSourceItem billItem, String bzj) throws Exception{
|
|
||||||
try {
|
|
||||||
JcBillInItem inItem = items.get(0);
|
|
||||||
|
|
||||||
JSONObject obj = new JSONObject();
|
|
||||||
|
|
||||||
// 客户
|
|
||||||
obj.put("account", inItem.getAccount() + inItem.getAccountname());
|
|
||||||
|
|
||||||
// 回购单价
|
|
||||||
obj.put("hgprice", String.valueOf(inItem.getHgprice()).replace("\\.0*$", ""));
|
|
||||||
|
|
||||||
// 年月日
|
|
||||||
obj.put("dataz", DateToUpperChinese.getUpperDate(new Date()));
|
|
||||||
|
|
||||||
// 收货门店
|
|
||||||
Map<String, String> mapChannel = items.stream()
|
|
||||||
.collect(Collectors.groupingBy(e -> {
|
|
||||||
return e.getChannel();
|
|
||||||
},
|
|
||||||
Collectors.collectingAndThen(Collectors.toList(), value -> value.get(0).getChannel())
|
|
||||||
));
|
|
||||||
String channelStr = "";
|
|
||||||
for(String key : mapChannel.keySet()) {
|
|
||||||
if("线上".equals(billItem.getRecsource())) {
|
|
||||||
channelStr += billItem.getRecplatform() + key + "、";
|
|
||||||
} else {
|
|
||||||
channelStr += key + "、";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
obj.put("channel", channelStr.toString().substring(0, channelStr.length() - 1));
|
|
||||||
|
|
||||||
// 商品
|
|
||||||
Map<String, JcBillInItem> mapPorduct = items.stream()
|
|
||||||
.collect(Collectors.groupingBy(e -> {
|
|
||||||
return e.getProduct() + String.valueOf(e.getPrice());
|
|
||||||
},
|
|
||||||
Collectors.collectingAndThen(Collectors.toList(), value -> value.get(0))
|
|
||||||
));
|
|
||||||
|
|
||||||
double numbers = 0;
|
|
||||||
StringBuffer productStr = new StringBuffer();
|
|
||||||
for(String key : mapPorduct.keySet()) {
|
|
||||||
JcBillInItem productItem = mapPorduct.get(key);
|
|
||||||
BigDecimal price = new BigDecimal(String.valueOf(productItem.getPrice()));
|
|
||||||
// BigDecimal amount = price.multiply(new BigDecimal(String.valueOf(productItem.getQuantity()))).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
||||||
//
|
|
||||||
// BigDecimal numPrice = amount.divide(new BigDecimal(String.valueOf(productItem.getNumbers())), 4, BigDecimal.ROUND_HALF_UP).setScale(4, BigDecimal.ROUND_HALF_UP);
|
|
||||||
//
|
|
||||||
// LOG.info(removeZeros(String.valueOf(numPrice.doubleValue())));
|
|
||||||
|
|
||||||
// productStr.append("收货价格" + removeZeros(String.valueOf(price.doubleValue())) + "元/瓶、");
|
|
||||||
|
|
||||||
// numbers += productItem.getNumbers();
|
|
||||||
|
|
||||||
numbers += productItem.getQuantity();
|
|
||||||
}
|
|
||||||
obj.put("product", inItem.getProductname());
|
|
||||||
// obj.put("product", inItem.getProductname() + "," + productStr.toString().substring(0, productStr.length() - 1));
|
|
||||||
|
|
||||||
// 件数
|
|
||||||
obj.put("numbers", numbers);
|
|
||||||
|
|
||||||
// 支付方式-打款信息
|
|
||||||
Map<String, String> offlineMaps = getConfigSet(JcConfigKey.KEY_GROUP, JcConfigKey.KEY_JC_PAYMENT_OFFLINE);
|
|
||||||
|
|
||||||
obj.put("dkxx", offlineMaps.get("zhmc") + "、" + offlineMaps.get("khyh") + "、" + offlineMaps.get("yhzh"));
|
|
||||||
|
|
||||||
// 保证金
|
|
||||||
obj.put("bzj", bzj);
|
|
||||||
|
|
||||||
return obj;
|
|
||||||
} catch(Throwable e){
|
|
||||||
LOG.error(e.getMessage(), e);
|
|
||||||
e.printStackTrace();
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 去掉小数位0的数字
|
|
||||||
* @param str
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
private String removeZeros(String str) {
|
|
||||||
if(str.indexOf(".") > 0) {
|
|
||||||
str = str.replace("0+?$", "");// 删除掉尾数为0的字符
|
|
||||||
str = str.replace("[.]$", "");// 结尾如果是小数点,则去掉
|
|
||||||
}
|
|
||||||
return str;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-595
@@ -1,595 +0,0 @@
|
|||||||
package abacus.springboot.example.controller;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
import org.apache.commons.lang.StringUtils;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.data.domain.Page;
|
|
||||||
import org.springframework.data.domain.PageRequest;
|
|
||||||
import org.springframework.data.domain.Pageable;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMethod;
|
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
|
|
||||||
import com.abacus.pms.wsi.AccountServiceIF;
|
|
||||||
import com.abacus.pms.wsi.ProductServiceIF;
|
|
||||||
import com.abacus.xpos.foundation.wsi.EmployeeServiceIF;
|
|
||||||
import com.alibaba.fastjson.JSON;
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
|
||||||
|
|
||||||
import abacus.commons.exception.BusinessException;
|
|
||||||
import abacus.springboot.example.dao.JcBill;
|
|
||||||
import abacus.springboot.example.dao.JcBillInItem;
|
|
||||||
import abacus.springboot.example.dao.JcBillPhoto;
|
|
||||||
import abacus.springboot.example.dao.JcBillSourceItem;
|
|
||||||
import abacus.springboot.example.dao.JcSourceItem;
|
|
||||||
import abacus.springboot.example.util.DateUtil;
|
|
||||||
import abacus.springboot.example.vo.SiDepositlocation;
|
|
||||||
import abacus.springboot.example.wsi.JcBillServiceIF;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>Title:JcBillInController</p>
|
|
||||||
<p>Description: 前端相关-api</p>
|
|
||||||
@author chuanZeng
|
|
||||||
@date 2026年8月18日
|
|
||||||
*/
|
|
||||||
@RestController
|
|
||||||
@RequestMapping(value = "/jc")
|
|
||||||
public class JcBillInController extends BaseServlet{
|
|
||||||
|
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(JcBillInController.class);
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private JcBillServiceIF jcBillService;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private EmployeeServiceIF employeeService;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private ProductServiceIF productService;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private AccountServiceIF accountService;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* TODO (溯源入库-回购通知)--页面查询
|
|
||||||
* @param typ 1-溯源入库 2-回购通知
|
|
||||||
* @return
|
|
||||||
* @throws Throwable
|
|
||||||
*/
|
|
||||||
@RequestMapping(value = "queryJcBillPage", method = RequestMethod.POST)
|
|
||||||
public JSONObject queryJcBillPage(
|
|
||||||
@RequestParam(required = false) String from,
|
|
||||||
@RequestParam(required = false) String thru,
|
|
||||||
|
|
||||||
@RequestParam(required = false) String applicant,
|
|
||||||
@RequestParam(required = false) String goods,
|
|
||||||
@RequestParam(required = false) String id,
|
|
||||||
@RequestParam(required = false) String billin,
|
|
||||||
@RequestParam(required = false) String goodsid,
|
|
||||||
@RequestParam(required = false) String product,
|
|
||||||
@RequestParam(required = false) String status,
|
|
||||||
@RequestParam(required = true) int typ,
|
|
||||||
|
|
||||||
@RequestParam(required = true) int page,
|
|
||||||
@RequestParam(required = true) int size
|
|
||||||
)
|
|
||||||
throws Throwable {
|
|
||||||
try {
|
|
||||||
|
|
||||||
// 申请起始时间
|
|
||||||
String fromDate = null;
|
|
||||||
if (StringUtils.isNotBlank(from)) {
|
|
||||||
fromDate = DateUtil.formatDateTime(DateUtil.getFromDate(DateUtil.toDate(from)));
|
|
||||||
}
|
|
||||||
// 申请截止时间
|
|
||||||
String thruDate = null;
|
|
||||||
if (StringUtils.isNotBlank(thru)) {
|
|
||||||
thruDate = DateUtil.formatDateTime(DateUtil.getThruDate(DateUtil.toDate(thru)));
|
|
||||||
}
|
|
||||||
|
|
||||||
// 当前页
|
|
||||||
// int pageNumber = page/size + 1;
|
|
||||||
Pageable pageable = PageRequest.of(page - 1, size);
|
|
||||||
|
|
||||||
Page<JcBill> pages = jcBillService.queryJcBill(fromDate, thruDate, id, applicant,
|
|
||||||
goods, billin, goodsid, product, status, typ, pageable);
|
|
||||||
|
|
||||||
// 获取稽查单号集合
|
|
||||||
List<String> billIds = pages.getContent().stream()
|
|
||||||
.map(JcBill::getId)
|
|
||||||
.collect(Collectors.toList());
|
|
||||||
|
|
||||||
List<JcBillSourceItem> items = jcBillService.queryJcBillSourceItemInBillId(billIds);
|
|
||||||
|
|
||||||
Map<String, JcBillSourceItem> mapItem = items.stream()
|
|
||||||
.collect(Collectors.groupingBy(e -> {
|
|
||||||
return e.getBillid();
|
|
||||||
},
|
|
||||||
Collectors.collectingAndThen(Collectors.toList(), value -> value.get(0))
|
|
||||||
));
|
|
||||||
|
|
||||||
for(JcBill jcBill : pages.getContent()) {
|
|
||||||
JcBillSourceItem item = mapItem.get(jcBill.getId());
|
|
||||||
if(item != null) {
|
|
||||||
jcBill.setRecsource(item.getRecsource());
|
|
||||||
jcBill.setRecplatform(item.getRecplatform());
|
|
||||||
jcBill.setChannel(item.getChannel());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
JSONObject obj = new JSONObject();
|
|
||||||
|
|
||||||
obj.put("list", pages.getContent());
|
|
||||||
obj.put("total", pages.getTotalElements());
|
|
||||||
|
|
||||||
return obj;
|
|
||||||
}catch(Throwable e){
|
|
||||||
LOG.error(e.getMessage(), e);
|
|
||||||
e.printStackTrace();
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* TODO 查询溯源详情
|
|
||||||
* @param billId
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
@RequestMapping(value = "queryJcBillSourceItems", method = RequestMethod.POST)
|
|
||||||
public List<JcBillSourceItem> queryJcBillSourceItems(
|
|
||||||
@RequestParam(required = false) String billId
|
|
||||||
)
|
|
||||||
throws Throwable {
|
|
||||||
try {
|
|
||||||
|
|
||||||
List<JcBillSourceItem> items = jcBillService.queryJcBillSourceItemByBillId(billId);
|
|
||||||
|
|
||||||
if(items == null) throw new BusinessException("溯源信息不存在!");
|
|
||||||
|
|
||||||
Map<String, List<JcBillPhoto>> mapPhoto = jcBillService.queryJcBillPhoto(billId);
|
|
||||||
|
|
||||||
for(JcBillSourceItem item : items) {
|
|
||||||
|
|
||||||
// 稽查付款截图
|
|
||||||
List<JcBillPhoto> fkts = mapPhoto.get(JcBillPhoto.JC_FK + "#" + String.valueOf(item.getIndexno()));
|
|
||||||
if(fkts != null && fkts.size() >= 1) {
|
|
||||||
List<String> fkList = new ArrayList<String>();
|
|
||||||
|
|
||||||
for(JcBillPhoto fkt : fkts) {
|
|
||||||
fkList.add(fkt.getUrlphoto());
|
|
||||||
}
|
|
||||||
|
|
||||||
item.setPaymentPhoto(fkList);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 货品图
|
|
||||||
List<JcBillPhoto> hpts = mapPhoto.get(JcBillPhoto.JC_HP + "#" + String.valueOf(item.getIndexno()) + "#" + item.getGoodsid());
|
|
||||||
if(hpts != null && hpts.size() >= 1) {
|
|
||||||
List<String> hpList = new ArrayList<String>();
|
|
||||||
|
|
||||||
for(JcBillPhoto hpt : hpts) {
|
|
||||||
hpList.add(hpt.getUrlphoto());
|
|
||||||
}
|
|
||||||
|
|
||||||
item.setGoodsPhotos(hpList);
|
|
||||||
item.setHpts(hpts);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return items;
|
|
||||||
} catch(Throwable e){
|
|
||||||
LOG.error(e.getMessage(), e);
|
|
||||||
e.printStackTrace();
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* TODO 查询溯源明细
|
|
||||||
* @param billId
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
@RequestMapping(value = "queryJcSourceItems", method = RequestMethod.POST)
|
|
||||||
public List<JcSourceItem> queryJcSourceItems(
|
|
||||||
@RequestParam(required = true) String billId,
|
|
||||||
@RequestParam(required = true) String srcItemId
|
|
||||||
)
|
|
||||||
throws Throwable {
|
|
||||||
try {
|
|
||||||
List<JcSourceItem> items = jcBillService.queryJcSourceItemByBillId(billId, srcItemId);
|
|
||||||
|
|
||||||
return items;
|
|
||||||
} catch(Throwable e){
|
|
||||||
LOG.error(e.getMessage(), e);
|
|
||||||
e.printStackTrace();
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* TODO 确认溯源
|
|
||||||
* @param billId
|
|
||||||
* @param srcItemId
|
|
||||||
* @return
|
|
||||||
* @throws Throwable
|
|
||||||
*/
|
|
||||||
@RequestMapping(value = "querenSourceItems", method = RequestMethod.POST)
|
|
||||||
public void querenSourceItems(
|
|
||||||
@RequestParam(required = true) String billId,
|
|
||||||
@RequestParam(required = true) String srcItemId,
|
|
||||||
@RequestParam(required = true) String sourceItemId
|
|
||||||
)
|
|
||||||
throws Throwable {
|
|
||||||
try {
|
|
||||||
// JcBill jcBill = jcBillService.queryJcBillById(billId);
|
|
||||||
|
|
||||||
// if(jcBill == null) throw new BusinessException("收货记录不存在!");
|
|
||||||
|
|
||||||
JcBillSourceItem billItem = jcBillService.queryJcBillSourceItemById(Long.parseLong(srcItemId));
|
|
||||||
|
|
||||||
if(billItem == null) throw new BusinessException("溯源信息不存在!");
|
|
||||||
|
|
||||||
JcSourceItem sourceItem = jcBillService.queryJcSourceItemById(Long.parseLong(sourceItemId));
|
|
||||||
|
|
||||||
if(sourceItem == null) throw new BusinessException("溯源明细不存在!");
|
|
||||||
|
|
||||||
// 稽查收入记录
|
|
||||||
|
|
||||||
// 溯源信息更新
|
|
||||||
billItem.setStatus(JcBillSourceItem.STATUS_THREE);
|
|
||||||
billItem.setLogisticsid(sourceItem.getLogisticsid());
|
|
||||||
billItem.setBillout(sourceItem.getBillout());
|
|
||||||
billItem.setBilloutdt(sourceItem.getBilloutdt());
|
|
||||||
billItem.setBilloutwh(sourceItem.getBilloutwh());
|
|
||||||
billItem.setBilloutwhname(sourceItem.getBilloutwhname());
|
|
||||||
billItem.setProduct(sourceItem.getProduct());
|
|
||||||
billItem.setProductname(sourceItem.getProductname());
|
|
||||||
billItem.setAccount(sourceItem.getAccount());
|
|
||||||
billItem.setAccountname(sourceItem.getAccountname());
|
|
||||||
billItem.setOperator(sourceItem.getOperator());
|
|
||||||
billItem.setOperatorname(sourceItem.getOperatorname());
|
|
||||||
billItem.setGroupid(sourceItem.getGroupid());
|
|
||||||
billItem.setGroupname(sourceItem.getGroupname());
|
|
||||||
billItem.setSalearea(sourceItem.getSalearea());
|
|
||||||
billItem.setSaleareaname(sourceItem.getSaleareaname());
|
|
||||||
billItem.setSource(sourceItem.getSource());
|
|
||||||
|
|
||||||
|
|
||||||
// 确认溯源明细
|
|
||||||
sourceItem.setStatus(JcSourceItem.STATUS_ONE);
|
|
||||||
|
|
||||||
jcBillService.saveQuerenBillSourceItem(billItem, sourceItem);
|
|
||||||
|
|
||||||
} catch(Throwable e){
|
|
||||||
LOG.error(e.getMessage(), e);
|
|
||||||
e.printStackTrace();
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* TODO 新增溯源明细信息
|
|
||||||
* @param billId
|
|
||||||
* @param srcItemId
|
|
||||||
* @return
|
|
||||||
* @throws Throwable
|
|
||||||
*/
|
|
||||||
@RequestMapping(value = "saveSourceItems", method = RequestMethod.POST)
|
|
||||||
public JcSourceItem saveSourceItems(
|
|
||||||
@RequestParam(required = true) String billid,
|
|
||||||
@RequestParam(required = true) String srcitemid,
|
|
||||||
@RequestParam(required = true) String goodsid,
|
|
||||||
@RequestParam(required = true) String logisticsid,
|
|
||||||
@RequestParam(required = true) String billout,
|
|
||||||
@RequestParam(required = true) String billoutdt,
|
|
||||||
@RequestParam(required = true) String billoutwh,
|
|
||||||
@RequestParam(required = true) String billoutwhname,
|
|
||||||
@RequestParam(required = true) String product,
|
|
||||||
@RequestParam(required = true) String productname,
|
|
||||||
@RequestParam(required = true) String account,
|
|
||||||
@RequestParam(required = true) String accountname,
|
|
||||||
@RequestParam(required = true) String operator,
|
|
||||||
@RequestParam(required = true) String operatorname,
|
|
||||||
@RequestParam(required = true) String groupid,
|
|
||||||
@RequestParam(required = true) String groupname,
|
|
||||||
@RequestParam(required = true) String salearea,
|
|
||||||
@RequestParam(required = true) String saleareaname,
|
|
||||||
@RequestParam(required = true) String source
|
|
||||||
)
|
|
||||||
throws Throwable {
|
|
||||||
try {
|
|
||||||
JcSourceItem sourceItem = new JcSourceItem();
|
|
||||||
sourceItem.setStatus(JcSourceItem.STATUS_ZERO);
|
|
||||||
sourceItem.setBillid(billid);
|
|
||||||
sourceItem.setSrcitemid(srcitemid);
|
|
||||||
sourceItem.setGoodsid(goodsid);
|
|
||||||
sourceItem.setLogisticsid(logisticsid);
|
|
||||||
sourceItem.setBillout(billout);
|
|
||||||
sourceItem.setBilloutdt(DateUtil.toDate(billoutdt));
|
|
||||||
sourceItem.setBilloutwh(billoutwh);
|
|
||||||
sourceItem.setBilloutwhname(billoutwhname);
|
|
||||||
sourceItem.setProduct(product);
|
|
||||||
sourceItem.setProductname(productname);
|
|
||||||
sourceItem.setAccount(account);
|
|
||||||
sourceItem.setAccountname(accountname);
|
|
||||||
sourceItem.setOperator(operator);
|
|
||||||
sourceItem.setOperatorname(operatorname);
|
|
||||||
sourceItem.setGroupid(groupid);
|
|
||||||
sourceItem.setGroupname(groupname);
|
|
||||||
sourceItem.setSalearea(salearea);
|
|
||||||
sourceItem.setSaleareaname(saleareaname);
|
|
||||||
sourceItem.setSource(source);
|
|
||||||
|
|
||||||
JcSourceItem tempItem = jcBillService.saveJcSourceItem(sourceItem);
|
|
||||||
|
|
||||||
return tempItem;
|
|
||||||
} catch(Throwable e){
|
|
||||||
LOG.error(e.getMessage(), e);
|
|
||||||
e.printStackTrace();
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* TODO 删除溯源明细信息
|
|
||||||
* @param billId
|
|
||||||
* @param srcItemId
|
|
||||||
* @return
|
|
||||||
* @throws Throwable
|
|
||||||
*/
|
|
||||||
@RequestMapping(value = "deleteSourceItem", method = RequestMethod.POST)
|
|
||||||
public void deleteSourceItem(
|
|
||||||
@RequestParam(required = true) String codes
|
|
||||||
)
|
|
||||||
throws Throwable {
|
|
||||||
try {
|
|
||||||
|
|
||||||
if (StringUtils.isEmpty(codes)) {
|
|
||||||
throw new BusinessException("溯源明细信息编码不能为空");
|
|
||||||
}
|
|
||||||
|
|
||||||
List<Long> ids = JSON.parseArray(codes, Long.class);
|
|
||||||
|
|
||||||
jcBillService.deleteJcSourceItem(ids);
|
|
||||||
|
|
||||||
} catch(Throwable e){
|
|
||||||
LOG.error(e.getMessage(), e);
|
|
||||||
e.printStackTrace();
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* TODO 溯源信息驳回
|
|
||||||
* @param billId
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
@RequestMapping(value = "rejectJcSourceItems", method = RequestMethod.POST)
|
|
||||||
public void rejectJcSourceItems(
|
|
||||||
@RequestParam(required = true) String billId,
|
|
||||||
@RequestParam(required = true) String srcItemId,
|
|
||||||
@RequestParam(required = true) String reason
|
|
||||||
)
|
|
||||||
throws Throwable {
|
|
||||||
try {
|
|
||||||
JcBill jcBill = jcBillService.queryJcBillById(billId);
|
|
||||||
|
|
||||||
if(jcBill == null) throw new BusinessException("收货记录不存在!");
|
|
||||||
|
|
||||||
JcBillSourceItem billItem = jcBillService.queryJcBillSourceItemById(Long.parseLong(srcItemId));
|
|
||||||
|
|
||||||
if(billItem == null) throw new BusinessException("溯源信息不存在!");
|
|
||||||
|
|
||||||
jcBill.setStatus(JcBill.STATUS_MINUS_TWO);
|
|
||||||
|
|
||||||
billItem.setStatus(JcBillSourceItem.STATUS_MINUS_TWO);
|
|
||||||
billItem.setReason(reason);
|
|
||||||
|
|
||||||
jcBillService.saveRejectJcSourceItems(billItem, jcBill);
|
|
||||||
|
|
||||||
} catch(Throwable e){
|
|
||||||
LOG.error(e.getMessage(), e);
|
|
||||||
e.printStackTrace();
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* TODO 修改收货仓库
|
|
||||||
* @param billId
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
@RequestMapping(value = "updateWarehouse", method = RequestMethod.POST)
|
|
||||||
public JcBill updateWarehouse(
|
|
||||||
@RequestParam(required = true) String billId,
|
|
||||||
@RequestParam(required = true) String warehouse,
|
|
||||||
@RequestParam(required = true) String warehouseName
|
|
||||||
)
|
|
||||||
throws Throwable {
|
|
||||||
try {
|
|
||||||
JcBill jcBill = jcBillService.queryJcBillById(billId);
|
|
||||||
|
|
||||||
if(jcBill == null) throw new BusinessException("收货记录不存在!");
|
|
||||||
|
|
||||||
// 老对象保存为JSONString
|
|
||||||
jcBill.setOldJson(JSON.toJSONString(jcBill));
|
|
||||||
|
|
||||||
jcBill.setWarehouse(warehouse);
|
|
||||||
jcBill.setWarehousename(warehouseName);
|
|
||||||
|
|
||||||
jcBillService.updateWarehouse(jcBill);
|
|
||||||
|
|
||||||
return jcBill;
|
|
||||||
} catch(Throwable e){
|
|
||||||
LOG.error(e.getMessage(), e);
|
|
||||||
e.printStackTrace();
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* TODO 生成入库单
|
|
||||||
* @param billId
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
@RequestMapping(value = "createStockIn", method = RequestMethod.POST)
|
|
||||||
public JcBill createStockIn(
|
|
||||||
@RequestParam(required = true) String billId
|
|
||||||
)
|
|
||||||
throws Throwable {
|
|
||||||
try {
|
|
||||||
JcBill jcBill = jcBillService.queryJcBillById(billId);
|
|
||||||
|
|
||||||
if(jcBill == null) throw new BusinessException("收货记录不存在!");
|
|
||||||
|
|
||||||
jcBill.setStatus(JcBill.STATUS_FOUR);
|
|
||||||
|
|
||||||
jcBillService.createStockIn(jcBill);
|
|
||||||
|
|
||||||
return jcBill;
|
|
||||||
} catch(Throwable e){
|
|
||||||
LOG.error(e.getMessage(), e);
|
|
||||||
e.printStackTrace();
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* TODO 撤回
|
|
||||||
* @param billId
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
@RequestMapping(value = "rejectBill", method = RequestMethod.POST)
|
|
||||||
public JcBill rejectBill(
|
|
||||||
@RequestParam(required = false) String billId,
|
|
||||||
@RequestParam(required = false) int status
|
|
||||||
)
|
|
||||||
throws Throwable {
|
|
||||||
try {
|
|
||||||
JcBill jcBill = jcBillService.queryJcBillById(billId);
|
|
||||||
|
|
||||||
if(jcBill == null) throw new BusinessException("收货记录不存在!");
|
|
||||||
|
|
||||||
List<JcBillInItem> inItems = jcBillService.queryJcBillInItemByBillId(billId);
|
|
||||||
|
|
||||||
List<JcBillSourceItem> sourceItems = jcBillService.queryJcBillSourceItemByBillId(billId);
|
|
||||||
if(sourceItems == null) throw new BusinessException("收货明细不存在!");
|
|
||||||
|
|
||||||
if(JcBill.STATUS_FOUR == status) {// 入库待审核 进行撤回(事件生成—进行事件删除)
|
|
||||||
|
|
||||||
SiDepositlocation sd = jcBillService.querySiDepositlocation(jcBill.getId());
|
|
||||||
|
|
||||||
if(sd == null) {// WDT
|
|
||||||
throw new BusinessException("该单据需要通知仓库在旺店通删除入库单,并联系信息部撤回。");
|
|
||||||
} else {
|
|
||||||
if(sd.getPush() == 1) {// WMS
|
|
||||||
|
|
||||||
JSONObject obj = jcBillService.gwisSubCancelOrder(jcBill.getId(), "QTRK");
|
|
||||||
|
|
||||||
if(obj.getBooleanValue("success")) {
|
|
||||||
|
|
||||||
jcBill.setStatus(JcBill.STATUS_THREE);
|
|
||||||
} else {
|
|
||||||
throw new BusinessException(obj.getString("body"));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
throw new BusinessException("该单据需要通知仓库在旺店通删除入库单,并联系信息部撤回。");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {// 待入库撤回
|
|
||||||
jcBill.setStatus(JcBill.STATUS_TWO);
|
|
||||||
|
|
||||||
for(JcBillSourceItem item : sourceItems) {
|
|
||||||
item.setStatus(JcBillSourceItem.STATUS_TWO);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
jcBillService.saveRejectBill(status, jcBill, inItems, sourceItems);
|
|
||||||
return jcBill;
|
|
||||||
} catch(Throwable e){
|
|
||||||
LOG.error(e.getMessage(), e);
|
|
||||||
e.printStackTrace();
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* TODO 查询溯源明细-已确认
|
|
||||||
* @param billId
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
@RequestMapping(value = "queryJcSourceItemsQue", method = RequestMethod.POST)
|
|
||||||
public List<JcSourceItem> queryJcSourceItemsQue(
|
|
||||||
@RequestParam(required = true) String billId,
|
|
||||||
@RequestParam(required = true) String srcItemId
|
|
||||||
)
|
|
||||||
throws Throwable {
|
|
||||||
try {
|
|
||||||
List<JcSourceItem> items = jcBillService.queryJcSourceItemByBillId(billId, srcItemId, 1);
|
|
||||||
|
|
||||||
return items;
|
|
||||||
} catch(Throwable e){
|
|
||||||
LOG.error(e.getMessage(), e);
|
|
||||||
e.printStackTrace();
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,316 +0,0 @@
|
|||||||
package abacus.springboot.example.dao;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
import javax.persistence.Entity;
|
|
||||||
import javax.persistence.Id;
|
|
||||||
import javax.persistence.Table;
|
|
||||||
import javax.persistence.Temporal;
|
|
||||||
import javax.persistence.TemporalType;
|
|
||||||
import javax.persistence.Transient;
|
|
||||||
import javax.persistence.Version;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonBackReference;
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
|
|
||||||
@Entity
|
|
||||||
@Table(name = "jc_bill")
|
|
||||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
|
||||||
@Schema(description = "稽查主单")
|
|
||||||
public class JcBill implements Serializable {
|
|
||||||
|
|
||||||
private static final long serialVersionUID = 7089440541784316919L;
|
|
||||||
|
|
||||||
/**唯一标识:订单号*/
|
|
||||||
@Id
|
|
||||||
@Schema(description="稽查单号", required=true, example="JC202411180001")
|
|
||||||
private String id;
|
|
||||||
|
|
||||||
@Version
|
|
||||||
@Schema(description = "版本号", required = true, example = "1")
|
|
||||||
private Integer version = 1;
|
|
||||||
|
|
||||||
@Schema(description="状态", required=true, pattern="-3:取消,-2:溯源驳回,0:待提交,1:系统溯源验证通过,2:待溯源,3:待入库,4:入库待审核,5:已入库,6:部分回购,7:回购完成", example = "1")
|
|
||||||
private int status = 1;
|
|
||||||
/** 取消*/
|
|
||||||
public final static int STATUS_MINUS_THREE = -3;
|
|
||||||
/** 溯源驳回*/
|
|
||||||
public final static int STATUS_MINUS_TWO = -2;
|
|
||||||
/** 待提交*/
|
|
||||||
public final static int STATUS_ZERO = 0;
|
|
||||||
/** 系统溯源验证通过*/
|
|
||||||
public final static int STATUS_ONE = 1;
|
|
||||||
/** 待溯源*/
|
|
||||||
public final static int STATUS_TWO = 2;
|
|
||||||
/** 待入库*/
|
|
||||||
public final static int STATUS_THREE = 3;
|
|
||||||
/** 入库待审核 */
|
|
||||||
public final static int STATUS_FOUR = 4;
|
|
||||||
/** 已入库 */
|
|
||||||
public final static int STATUS_FIVE = 5;
|
|
||||||
/** 部分回购 */
|
|
||||||
public final static int STATUS_SIX = 6;
|
|
||||||
/** 回购完成*/
|
|
||||||
public final static int STATUS_SEVEN = 7;
|
|
||||||
|
|
||||||
/** 部分出库-不保存到系统,前端使用*/
|
|
||||||
public final static int STATUS_EIGHT = 8;
|
|
||||||
/** 已出库-不保存到系统,前端使用*/
|
|
||||||
public final static int STATUS_NINE = 9;
|
|
||||||
|
|
||||||
@Schema(description="状态", required=true, pattern="0:待回购,1:部分回购,2:回购完成", example = "0")
|
|
||||||
private int hgstatus = 0;
|
|
||||||
/** 待回购*/
|
|
||||||
public final static int HGSTATUS_ZERO = 0;
|
|
||||||
/** 部分回购*/
|
|
||||||
public final static int HGSTATUS_ONE = 1;
|
|
||||||
/** 回购完成*/
|
|
||||||
public final static int HGSTATUS_TWO = 2;
|
|
||||||
|
|
||||||
@Schema(description = "收货产品", required = true, example = "")
|
|
||||||
private String goods;
|
|
||||||
|
|
||||||
@Schema(description = "收货仓库编码", required = true, example = "")
|
|
||||||
private String warehouse;
|
|
||||||
|
|
||||||
@Schema(description = "收货仓库名称", required = true, example = "")
|
|
||||||
private String warehousename;
|
|
||||||
|
|
||||||
@Schema(description = "收货日期", required = true, example = "2024-11-11")
|
|
||||||
private String receivedt;
|
|
||||||
|
|
||||||
@Schema(description = "收货数量", required = true, example = "")
|
|
||||||
private double quantity;
|
|
||||||
|
|
||||||
@Schema(description = "收货总金额", required = true, example = "")
|
|
||||||
private double subtotal;
|
|
||||||
|
|
||||||
@Schema(description = "入库单号", required = true, example = "")
|
|
||||||
private String billin;
|
|
||||||
|
|
||||||
@Temporal(TemporalType.TIMESTAMP)
|
|
||||||
@Schema(description = "入库单时间", required = true, example = "")
|
|
||||||
private Date billindt;
|
|
||||||
|
|
||||||
@Schema(description = "申请人编码", required = true, example = "")
|
|
||||||
private String applicant;
|
|
||||||
|
|
||||||
@Schema(description = "申请人名称", required = true, example = "")
|
|
||||||
private String applicantname;
|
|
||||||
|
|
||||||
@Temporal(TemporalType.TIMESTAMP)
|
|
||||||
@Schema(description = "申请人时间", required = true, example = "")
|
|
||||||
private Date applicantdt;
|
|
||||||
|
|
||||||
@Schema(description = "部门编码", required = true, example = "")
|
|
||||||
private String dept;
|
|
||||||
|
|
||||||
@Temporal(TemporalType.TIMESTAMP)
|
|
||||||
@Schema(description = "时间戳", required = true, example = "")
|
|
||||||
private Date dt = new Date();
|
|
||||||
|
|
||||||
@Transient
|
|
||||||
@Schema(description = "收货来源", hidden = true,required = true, example = "")
|
|
||||||
private String recsource;
|
|
||||||
|
|
||||||
@Transient
|
|
||||||
@Schema(description = "收货平台", hidden = true,required = true, example = "")
|
|
||||||
private String recplatform;
|
|
||||||
|
|
||||||
@Transient
|
|
||||||
@Schema(description = "收货渠道", hidden = true,required = true, example = "")
|
|
||||||
private String channel;
|
|
||||||
|
|
||||||
@Transient
|
|
||||||
@JsonBackReference
|
|
||||||
@Schema(description = "历史对象JSONString", required = false, hidden = true, pattern = "", example = "")
|
|
||||||
private String oldJson;
|
|
||||||
|
|
||||||
public String getRecsource() {
|
|
||||||
return recsource;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRecsource(String recsource) {
|
|
||||||
this.recsource = recsource;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getRecplatform() {
|
|
||||||
return recplatform;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRecplatform(String recplatform) {
|
|
||||||
this.recplatform = recplatform;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getChannel() {
|
|
||||||
return channel;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setChannel(String channel) {
|
|
||||||
this.channel = channel;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getHgstatus() {
|
|
||||||
return hgstatus;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHgstatus(int hgstatus) {
|
|
||||||
this.hgstatus = hgstatus;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getDept() {
|
|
||||||
return dept;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setDept(String dept) {
|
|
||||||
this.dept = dept;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getOldJson() {
|
|
||||||
return oldJson;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setOldJson(String oldJson) {
|
|
||||||
this.oldJson = oldJson;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setId(String id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Integer getVersion() {
|
|
||||||
return version;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setVersion(Integer version) {
|
|
||||||
this.version = version;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getStatus() {
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setStatus(int status) {
|
|
||||||
this.status = status;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getGoods() {
|
|
||||||
return goods;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setGoods(String goods) {
|
|
||||||
this.goods = goods;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getWarehouse() {
|
|
||||||
return warehouse;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setWarehouse(String warehouse) {
|
|
||||||
this.warehouse = warehouse;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getWarehousename() {
|
|
||||||
return warehousename;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setWarehousename(String warehousename) {
|
|
||||||
this.warehousename = warehousename;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getReceivedt() {
|
|
||||||
return receivedt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setReceivedt(String receivedt) {
|
|
||||||
this.receivedt = receivedt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getQuantity() {
|
|
||||||
return quantity;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setQuantity(double quantity) {
|
|
||||||
this.quantity = quantity;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getSubtotal() {
|
|
||||||
return subtotal;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSubtotal(double subtotal) {
|
|
||||||
this.subtotal = subtotal;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getBillin() {
|
|
||||||
return billin;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setBillin(String billin) {
|
|
||||||
this.billin = billin;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Date getBillindt() {
|
|
||||||
return billindt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setBillindt(Date billindt) {
|
|
||||||
this.billindt = billindt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getApplicant() {
|
|
||||||
return applicant;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setApplicant(String applicant) {
|
|
||||||
this.applicant = applicant;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getApplicantname() {
|
|
||||||
return applicantname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setApplicantname(String applicantname) {
|
|
||||||
this.applicantname = applicantname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Date getApplicantdt() {
|
|
||||||
return applicantdt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setApplicantdt(Date applicantdt) {
|
|
||||||
this.applicantdt = applicantdt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Date getDt() {
|
|
||||||
return dt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setDt(Date dt) {
|
|
||||||
this.dt = dt;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,671 +0,0 @@
|
|||||||
package abacus.springboot.example.dao;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
import javax.persistence.Entity;
|
|
||||||
import javax.persistence.Id;
|
|
||||||
import javax.persistence.Table;
|
|
||||||
import javax.persistence.Transient;
|
|
||||||
import javax.persistence.Version;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
|
|
||||||
@Entity
|
|
||||||
@Table(name = "jc_billhg")
|
|
||||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
|
||||||
@Schema(description = "回购单主单")
|
|
||||||
public class JcBillHg implements Serializable {
|
|
||||||
|
|
||||||
private static final long serialVersionUID = -4735685141695682399L;
|
|
||||||
|
|
||||||
/**唯一标识:订单号*/
|
|
||||||
@Id
|
|
||||||
@Schema(description="回购单单号", required=true, example="HG202411180001")
|
|
||||||
private String id;
|
|
||||||
|
|
||||||
@Version
|
|
||||||
@Schema(description = "版本号", required = true, example = "1")
|
|
||||||
private Integer version = 1;
|
|
||||||
|
|
||||||
@Schema(description = "稽查单号", required = true, example = "")
|
|
||||||
private String billid;
|
|
||||||
|
|
||||||
@Schema(description = "状态", required = true, pattern="-1:作废,1:待提交,2:待付款,3:已付款,4:(确认收款转待分仓)待分仓,5:已分仓-待出库,6:已出库", example = "")
|
|
||||||
private int status = 1;
|
|
||||||
/** 作废*/
|
|
||||||
public final static int STATUS_MINUS_ONE = -1;
|
|
||||||
/** 待提交 */
|
|
||||||
public final static int STATUS_ONE = 1;
|
|
||||||
/** 待付款 */
|
|
||||||
public final static int STATUS_TWO = 2;
|
|
||||||
/** 已付款 */
|
|
||||||
public final static int STATUS_THREE = 3;
|
|
||||||
/** (确认收款转待分仓)待分仓 */
|
|
||||||
public final static int STATUS_FOUR = 4;
|
|
||||||
/** 已分仓-待出库 */
|
|
||||||
public final static int STATUS_FIVE = 5;
|
|
||||||
/** 已出库 */
|
|
||||||
public final static int STATUS_SIX = 6;
|
|
||||||
// /** 回购完成*/
|
|
||||||
// public final static int STATUS_SEVEN = 7;
|
|
||||||
|
|
||||||
// @Schema(description = "分仓状态", required = false, example = "")
|
|
||||||
// private int fcstatus = 1;
|
|
||||||
// public final static int FCSTATUS_ONE = 1;// 待分仓
|
|
||||||
// public final static int FCSTATUS_TWO = 2;// 已分仓-待出库
|
|
||||||
// public final static int FCSTATUS_THREE = 3;// 已出库
|
|
||||||
|
|
||||||
@Schema(description = "订单来源:掌上华致", required = true, example = "")
|
|
||||||
private String source;
|
|
||||||
|
|
||||||
@Schema(description = "客户编码", required = true, example = "")
|
|
||||||
private String account;
|
|
||||||
|
|
||||||
@Schema(description = "客户名称", required = true, example = "")
|
|
||||||
private String accountname;
|
|
||||||
|
|
||||||
@Schema(description = "商品总数量", required = true, example = "")
|
|
||||||
private double quantity;
|
|
||||||
|
|
||||||
@Schema(description = "商品总金额", required = true, example = "")
|
|
||||||
private double subtotal;
|
|
||||||
|
|
||||||
@Schema(description = "运费", required = true, example = "")
|
|
||||||
private double freight;
|
|
||||||
|
|
||||||
@Schema(description = "运营经理编码", required = true, example = "")
|
|
||||||
private String manager;
|
|
||||||
|
|
||||||
@Schema(description = "运营经理名称", required = true, example = "")
|
|
||||||
private String managername;
|
|
||||||
|
|
||||||
@Schema(description = "收货人姓名", required = true, example = "")
|
|
||||||
private String consignee;
|
|
||||||
|
|
||||||
@Schema(description = "收货人电话", required = true, example = "")
|
|
||||||
private String consigneephone;
|
|
||||||
|
|
||||||
@Schema(description = "省", required = true, example = "")
|
|
||||||
private String province;
|
|
||||||
|
|
||||||
@Schema(description = "省", required = true, example = "")
|
|
||||||
private String provincename;
|
|
||||||
|
|
||||||
@Schema(description = "市", required = true, example = "")
|
|
||||||
private String city;
|
|
||||||
|
|
||||||
@Schema(description = "市", required = true, example = "")
|
|
||||||
private String cityname;
|
|
||||||
|
|
||||||
@Schema(description = "区", required = true, example = "")
|
|
||||||
private String area;
|
|
||||||
|
|
||||||
@Schema(description = "区", required = true, example = "")
|
|
||||||
private String areaname;
|
|
||||||
|
|
||||||
@Schema(description = "详细地址", required = true, example = "")
|
|
||||||
private String address;
|
|
||||||
|
|
||||||
@Schema(description = "收货方式", pattern = "0:送货上门1:仓库自提2:货站自提3:空运自提", required = true, example = "")
|
|
||||||
private String receiveway;
|
|
||||||
/** 送货上门 */
|
|
||||||
public final static String RECEIVEWAY_ZERO = "0";
|
|
||||||
/** 仓库自提 */
|
|
||||||
public final static String RECEIVEWAY_ONE = "1";
|
|
||||||
/** 货站自提 */
|
|
||||||
public final static String RECEIVEWAY_TWO = "2";
|
|
||||||
/** 空运自提 */
|
|
||||||
public final static String RECEIVEWAY_THREE = "3";
|
|
||||||
|
|
||||||
|
|
||||||
@Schema(description = "订单备注", required = true, example = "")
|
|
||||||
private String remark;
|
|
||||||
|
|
||||||
@Schema(description = "运营备注", required = true, example = "")
|
|
||||||
private String remark1;
|
|
||||||
|
|
||||||
@Schema(description = "分销区域编码", required = true, example = "")
|
|
||||||
private String salearea;
|
|
||||||
|
|
||||||
@Schema(description = "分销区域名称", required = true, example = "")
|
|
||||||
private String saleareaname;
|
|
||||||
|
|
||||||
@Schema(description = "业务组编码", required = true, example = "")
|
|
||||||
private String groupid;
|
|
||||||
|
|
||||||
@Schema(description = "业务组名称", required = true, example = "")
|
|
||||||
private String groupname;
|
|
||||||
|
|
||||||
@Schema(description = "创建人", required = true, example = "")
|
|
||||||
private String found;
|
|
||||||
|
|
||||||
@Schema(description = "创建人编码", required = true, example = "")
|
|
||||||
private String foundname;
|
|
||||||
|
|
||||||
@Schema(description = "创建时间", required = true, example = "")
|
|
||||||
private Date founddt;
|
|
||||||
|
|
||||||
@Schema(description = "提交人编码", required = true, example = "")
|
|
||||||
private String submit;
|
|
||||||
|
|
||||||
@Schema(description = "提交人名称", required = true, example = "")
|
|
||||||
private String submitname;
|
|
||||||
|
|
||||||
@Schema(description = "提交人时间", required = true, example = "")
|
|
||||||
private Date submitdt;
|
|
||||||
|
|
||||||
@Schema(description = "审核人编码", required = true, example = "")
|
|
||||||
private String audit;
|
|
||||||
|
|
||||||
@Schema(description = "审核人名称", required = true, example = "")
|
|
||||||
private String auditname;
|
|
||||||
|
|
||||||
@Schema(description = "审核人时间", required = true, example = "")
|
|
||||||
private Date auditdt;
|
|
||||||
|
|
||||||
@Schema(description = "分货仓库编码", required = true, example = "")
|
|
||||||
private String fhwarehouse;
|
|
||||||
|
|
||||||
@Schema(description = "分货仓库名称", required = true, example = "")
|
|
||||||
private String fhwarehousename;
|
|
||||||
|
|
||||||
@Schema(description = "物流公司名称", required = true, example = "")
|
|
||||||
private String logisticsname;
|
|
||||||
|
|
||||||
@Schema(description = "物流公司代码", required = true, example = "")
|
|
||||||
private String logisticscode;
|
|
||||||
|
|
||||||
@Schema(description = "物流方式", required = true, example = "")
|
|
||||||
private String logisticstype;
|
|
||||||
|
|
||||||
@Schema(description = "物流单号", required = true, example = "")
|
|
||||||
private String logisticsno;
|
|
||||||
|
|
||||||
@Schema(description = "旺店通单号", required = true, example = "")
|
|
||||||
private String wdtorder;
|
|
||||||
|
|
||||||
@Schema(description = "旺店通出库单号", required = true, example = "")
|
|
||||||
private String wdtbillout;
|
|
||||||
|
|
||||||
@Schema(description = "旺店通出库状态", required = true, example = "")
|
|
||||||
private String wdtbillouttyp;
|
|
||||||
|
|
||||||
@Schema(description = "旺店通出库时间", required = true, example = "")
|
|
||||||
private Date wdtoutdt;
|
|
||||||
|
|
||||||
@Schema(description = "旺店通入库时间", required = true, example = "")
|
|
||||||
private Date wdtindt;
|
|
||||||
|
|
||||||
@Schema(description = "传输旺店通时间", required = true, example = "")
|
|
||||||
private Date wdtdt;
|
|
||||||
|
|
||||||
@Schema(description = "回款客户名称", required = true, example = "")
|
|
||||||
private String proofaccountname;
|
|
||||||
|
|
||||||
@Schema(description = "凭证上传时间", required = true, example = "")
|
|
||||||
private Date proofdt;
|
|
||||||
|
|
||||||
@Schema(description = "时间戳", required = true, example = "")
|
|
||||||
private Date dt = new Date();
|
|
||||||
|
|
||||||
// 合计金额=商品总金额+运费
|
|
||||||
@Transient
|
|
||||||
private double amount;
|
|
||||||
|
|
||||||
// 稽查单状态
|
|
||||||
@Transient
|
|
||||||
private int jcstatus;
|
|
||||||
|
|
||||||
// public int getFcstatus() {
|
|
||||||
// return fcstatus;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// public void setFcstatus(int fcstatus) {
|
|
||||||
// this.fcstatus = fcstatus;
|
|
||||||
// }
|
|
||||||
|
|
||||||
public double getAmount() {
|
|
||||||
return amount;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getJcstatus() {
|
|
||||||
return jcstatus;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setJcstatus(int jcstatus) {
|
|
||||||
this.jcstatus = jcstatus;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Date getWdtoutdt() {
|
|
||||||
return wdtoutdt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setWdtoutdt(Date wdtoutdt) {
|
|
||||||
this.wdtoutdt = wdtoutdt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Date getWdtindt() {
|
|
||||||
return wdtindt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setWdtindt(Date wdtindt) {
|
|
||||||
this.wdtindt = wdtindt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getProofaccountname() {
|
|
||||||
return proofaccountname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setProofaccountname(String proofaccountname) {
|
|
||||||
this.proofaccountname = proofaccountname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Date getProofdt() {
|
|
||||||
return proofdt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setProofdt(Date proofdt) {
|
|
||||||
this.proofdt = proofdt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getWdtorder() {
|
|
||||||
return wdtorder;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setWdtorder(String wdtorder) {
|
|
||||||
this.wdtorder = wdtorder;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getWdtbillout() {
|
|
||||||
return wdtbillout;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setWdtbillout(String wdtbillout) {
|
|
||||||
this.wdtbillout = wdtbillout;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getWdtbillouttyp() {
|
|
||||||
return wdtbillouttyp;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setWdtbillouttyp(String wdtbillouttyp) {
|
|
||||||
this.wdtbillouttyp = wdtbillouttyp;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Date getWdtdt() {
|
|
||||||
return wdtdt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setWdtdt(Date wdtdt) {
|
|
||||||
this.wdtdt = wdtdt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAmount(double amount) {
|
|
||||||
this.amount = amount;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getFhwarehouse() {
|
|
||||||
return fhwarehouse;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setFhwarehouse(String fhwarehouse) {
|
|
||||||
this.fhwarehouse = fhwarehouse;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getFhwarehousename() {
|
|
||||||
return fhwarehousename;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setFhwarehousename(String fhwarehousename) {
|
|
||||||
this.fhwarehousename = fhwarehousename;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getLogisticsname() {
|
|
||||||
return logisticsname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setLogisticsname(String logisticsname) {
|
|
||||||
this.logisticsname = logisticsname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getLogisticscode() {
|
|
||||||
return logisticscode;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setLogisticscode(String logisticscode) {
|
|
||||||
this.logisticscode = logisticscode;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getLogisticstype() {
|
|
||||||
return logisticstype;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setLogisticstype(String logisticstype) {
|
|
||||||
this.logisticstype = logisticstype;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getLogisticsno() {
|
|
||||||
return logisticsno;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setLogisticsno(String logisticsno) {
|
|
||||||
this.logisticsno = logisticsno;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setId(String id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Integer getVersion() {
|
|
||||||
return version;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setVersion(Integer version) {
|
|
||||||
this.version = version;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getBillid() {
|
|
||||||
return billid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setBillid(String billid) {
|
|
||||||
this.billid = billid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getStatus() {
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setStatus(int status) {
|
|
||||||
this.status = status;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getSource() {
|
|
||||||
return source;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSource(String source) {
|
|
||||||
this.source = source;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getAccount() {
|
|
||||||
return account;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAccount(String account) {
|
|
||||||
this.account = account;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getAccountname() {
|
|
||||||
return accountname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAccountname(String accountname) {
|
|
||||||
this.accountname = accountname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getQuantity() {
|
|
||||||
return quantity;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setQuantity(double quantity) {
|
|
||||||
this.quantity = quantity;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getSubtotal() {
|
|
||||||
return subtotal;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSubtotal(double subtotal) {
|
|
||||||
this.subtotal = subtotal;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getFreight() {
|
|
||||||
return freight;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setFreight(double freight) {
|
|
||||||
this.freight = freight;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getManager() {
|
|
||||||
return manager;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setManager(String manager) {
|
|
||||||
this.manager = manager;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getManagername() {
|
|
||||||
return managername;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setManagername(String managername) {
|
|
||||||
this.managername = managername;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getConsignee() {
|
|
||||||
return consignee;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setConsignee(String consignee) {
|
|
||||||
this.consignee = consignee;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getConsigneephone() {
|
|
||||||
return consigneephone;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setConsigneephone(String consigneephone) {
|
|
||||||
this.consigneephone = consigneephone;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getProvince() {
|
|
||||||
return province;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setProvince(String province) {
|
|
||||||
this.province = province;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getProvincename() {
|
|
||||||
return provincename;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setProvincename(String provincename) {
|
|
||||||
this.provincename = provincename;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getCity() {
|
|
||||||
return city;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCity(String city) {
|
|
||||||
this.city = city;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getCityname() {
|
|
||||||
return cityname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCityname(String cityname) {
|
|
||||||
this.cityname = cityname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getArea() {
|
|
||||||
return area;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setArea(String area) {
|
|
||||||
this.area = area;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getAreaname() {
|
|
||||||
return areaname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAreaname(String areaname) {
|
|
||||||
this.areaname = areaname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getAddress() {
|
|
||||||
return address;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAddress(String address) {
|
|
||||||
this.address = address;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getReceiveway() {
|
|
||||||
return receiveway;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setReceiveway(String receiveway) {
|
|
||||||
this.receiveway = receiveway;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getRemark() {
|
|
||||||
return remark;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRemark(String remark) {
|
|
||||||
this.remark = remark;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getRemark1() {
|
|
||||||
return remark1;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRemark1(String remark1) {
|
|
||||||
this.remark1 = remark1;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getSalearea() {
|
|
||||||
return salearea;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSalearea(String salearea) {
|
|
||||||
this.salearea = salearea;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getSaleareaname() {
|
|
||||||
return saleareaname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSaleareaname(String saleareaname) {
|
|
||||||
this.saleareaname = saleareaname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getGroupid() {
|
|
||||||
return groupid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setGroupid(String groupid) {
|
|
||||||
this.groupid = groupid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getGroupname() {
|
|
||||||
return groupname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setGroupname(String groupname) {
|
|
||||||
this.groupname = groupname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getFound() {
|
|
||||||
return found;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setFound(String found) {
|
|
||||||
this.found = found;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getFoundname() {
|
|
||||||
return foundname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setFoundname(String foundname) {
|
|
||||||
this.foundname = foundname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Date getFounddt() {
|
|
||||||
return founddt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setFounddt(Date founddt) {
|
|
||||||
this.founddt = founddt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getSubmit() {
|
|
||||||
return submit;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSubmit(String submit) {
|
|
||||||
this.submit = submit;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getSubmitname() {
|
|
||||||
return submitname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSubmitname(String submitname) {
|
|
||||||
this.submitname = submitname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Date getSubmitdt() {
|
|
||||||
return submitdt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSubmitdt(Date submitdt) {
|
|
||||||
this.submitdt = submitdt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getAudit() {
|
|
||||||
return audit;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAudit(String audit) {
|
|
||||||
this.audit = audit;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getAuditname() {
|
|
||||||
return auditname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAuditname(String auditname) {
|
|
||||||
this.auditname = auditname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Date getAuditdt() {
|
|
||||||
return auditdt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAuditdt(Date auditdt) {
|
|
||||||
this.auditdt = auditdt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Date getDt() {
|
|
||||||
return dt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setDt(Date dt) {
|
|
||||||
this.dt = dt;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-150
@@ -1,150 +0,0 @@
|
|||||||
package abacus.springboot.example.dao;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
import javax.persistence.Entity;
|
|
||||||
import javax.persistence.GeneratedValue;
|
|
||||||
import javax.persistence.GenerationType;
|
|
||||||
import javax.persistence.Id;
|
|
||||||
import javax.persistence.Table;
|
|
||||||
import javax.persistence.Version;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
|
|
||||||
@Entity
|
|
||||||
@Table(name = "jc_billhg_pay")
|
|
||||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
|
||||||
@Schema(description = "回购支付明细")
|
|
||||||
public class JcBillHgPay implements Serializable {
|
|
||||||
|
|
||||||
private static final long serialVersionUID = 7782628530648454397L;
|
|
||||||
|
|
||||||
@Id
|
|
||||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
|
||||||
@Schema(description = "自增长编码", required = true, example = "10")
|
|
||||||
private Long id;
|
|
||||||
|
|
||||||
@Version
|
|
||||||
@Schema(description = "版本号", required = true, example = "1")
|
|
||||||
private Integer version;
|
|
||||||
|
|
||||||
@Schema(description = "稽查单号", required = true, example = "")
|
|
||||||
private String billid;
|
|
||||||
|
|
||||||
@Schema(description = "回购单号", required = true, example = "")
|
|
||||||
private String billhg;
|
|
||||||
|
|
||||||
@Schema(description = "支付方式", required = true, example = "")
|
|
||||||
private String payment;
|
|
||||||
|
|
||||||
@Schema(description = "支付金额", required = true, example = "")
|
|
||||||
private double amount;
|
|
||||||
|
|
||||||
@Schema(description = "账号名称", required = true, example = "")
|
|
||||||
private String zhmc;
|
|
||||||
|
|
||||||
@Schema(description = "开发银行", required = true, example = "")
|
|
||||||
private String khyh;
|
|
||||||
|
|
||||||
@Schema(description = "银行账号", required = true, example = "")
|
|
||||||
private String yhzh;
|
|
||||||
|
|
||||||
@Schema(description = "时间戳", required = true, example = "")
|
|
||||||
private Date dt = new Date();
|
|
||||||
|
|
||||||
public Long getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setId(Long id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Integer getVersion() {
|
|
||||||
return version;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setVersion(Integer version) {
|
|
||||||
this.version = version;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getBillid() {
|
|
||||||
return billid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setBillid(String billid) {
|
|
||||||
this.billid = billid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getBillhg() {
|
|
||||||
return billhg;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setBillhg(String billhg) {
|
|
||||||
this.billhg = billhg;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getPayment() {
|
|
||||||
return payment;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPayment(String payment) {
|
|
||||||
this.payment = payment;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getAmount() {
|
|
||||||
return amount;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAmount(double amount) {
|
|
||||||
this.amount = amount;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getZhmc() {
|
|
||||||
return zhmc;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setZhmc(String zhmc) {
|
|
||||||
this.zhmc = zhmc;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getKhyh() {
|
|
||||||
return khyh;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setKhyh(String khyh) {
|
|
||||||
this.khyh = khyh;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getYhzh() {
|
|
||||||
return yhzh;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setYhzh(String yhzh) {
|
|
||||||
this.yhzh = yhzh;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Date getDt() {
|
|
||||||
return dt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setDt(Date dt) {
|
|
||||||
this.dt = dt;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-486
@@ -1,486 +0,0 @@
|
|||||||
package abacus.springboot.example.dao;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
import javax.persistence.Entity;
|
|
||||||
import javax.persistence.GeneratedValue;
|
|
||||||
import javax.persistence.GenerationType;
|
|
||||||
import javax.persistence.Id;
|
|
||||||
import javax.persistence.Table;
|
|
||||||
import javax.persistence.Transient;
|
|
||||||
import javax.persistence.Version;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
|
|
||||||
@Entity
|
|
||||||
@Table(name = "jc_billin_item")
|
|
||||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
|
||||||
@Schema(description = "稽查入库(回购通知)明细")
|
|
||||||
public class JcBillInItem implements Serializable {
|
|
||||||
|
|
||||||
private static final long serialVersionUID = -3841490251161254597L;
|
|
||||||
|
|
||||||
@Id
|
|
||||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
|
||||||
@Schema(description = "自增长编码", required = true, example = "10")
|
|
||||||
private Long id;
|
|
||||||
|
|
||||||
@Version
|
|
||||||
@Schema(description = "版本号", required = true, example = "1")
|
|
||||||
private Integer version;
|
|
||||||
|
|
||||||
@Schema(description = "稽查单号", required = true, example = "")
|
|
||||||
private String billid;
|
|
||||||
|
|
||||||
@Schema(description = "入库单号", required = true, example = "")
|
|
||||||
private String billin;
|
|
||||||
|
|
||||||
@Schema(description = "回购单号", required = true, example = "")
|
|
||||||
private String billhg;
|
|
||||||
|
|
||||||
@Schema(description = "状态", required = true, pattern="-1:终止,1:待通知回购,2:已通知回购", example = "")
|
|
||||||
private int status = 1;
|
|
||||||
/** 终止*/
|
|
||||||
public final static int STATUS_MINUS_ONE = -1;
|
|
||||||
/** 待通知回购*/
|
|
||||||
public final static int STATUS_ONE = 1;
|
|
||||||
/** 已通知回购*/
|
|
||||||
public final static int STATUS_TWO = 2;
|
|
||||||
|
|
||||||
@Schema(description = "收货渠道-收货门店", required = true, example = "")
|
|
||||||
private String channel;
|
|
||||||
|
|
||||||
@Schema(description = "客户编码", required = true, example = "")
|
|
||||||
private String account;
|
|
||||||
|
|
||||||
@Schema(description = "客户名称", required = true, example = "")
|
|
||||||
private String accountname;
|
|
||||||
|
|
||||||
@Schema(description = "商品编码", required = true, example = "")
|
|
||||||
private String product;
|
|
||||||
|
|
||||||
@Schema(description = "商品名称", required = true, example = "")
|
|
||||||
private String productname;
|
|
||||||
|
|
||||||
@Schema(description = "收货单价", required = true, example = "")
|
|
||||||
private double price;
|
|
||||||
|
|
||||||
@Schema(description = "入库数量", required = true, example = "")
|
|
||||||
private double quantity;
|
|
||||||
|
|
||||||
@Schema(description = "入库件数", required = true, example = "")
|
|
||||||
private double numbers;
|
|
||||||
|
|
||||||
@Schema(description = "回购单价", required = true, example = "")
|
|
||||||
private Double hgprice;
|
|
||||||
|
|
||||||
@Schema(description = "回购金额", required = true, example = "")
|
|
||||||
private Double hgamount;
|
|
||||||
|
|
||||||
@Schema(description = "业务员编码", required = true, example = "")
|
|
||||||
private String operator;
|
|
||||||
|
|
||||||
@Schema(description = "业务员名称", required = true, example = "")
|
|
||||||
private String operatorname;
|
|
||||||
|
|
||||||
@Schema(description = "业务组编码", required = true, example = "")
|
|
||||||
private String groupid;
|
|
||||||
|
|
||||||
@Schema(description = "业务组名称", required = true, example = "")
|
|
||||||
private String groupname;
|
|
||||||
|
|
||||||
@Schema(description = "分销区域编码", required = true, example = "")
|
|
||||||
private String salearea;
|
|
||||||
|
|
||||||
@Schema(description = "分销区域名称", required = true, example = "")
|
|
||||||
private String saleareaname;
|
|
||||||
|
|
||||||
@Schema(description = "分货数量", required = true, example = "")
|
|
||||||
private double fhquantity;
|
|
||||||
|
|
||||||
@Schema(description = "分货件数", required = true, example = "")
|
|
||||||
private double fhnumbers;
|
|
||||||
|
|
||||||
@Schema(description = "分货仓库编码", required = true, hidden = true, example = "")
|
|
||||||
private String fhwarehouse;
|
|
||||||
|
|
||||||
@Schema(description = "分货仓库名称", required = true, hidden = true, example = "")
|
|
||||||
private String fhwarehousename;
|
|
||||||
|
|
||||||
@Schema(description = "旺店通单号", required = true, hidden = true, example = "")
|
|
||||||
private String wdtorder;
|
|
||||||
|
|
||||||
@Schema(description = "旺店通出库单号", required = true, hidden = true, example = "")
|
|
||||||
private String wdtbillout;
|
|
||||||
|
|
||||||
@Schema(description = "旺店通出库状态", required = true, hidden = true, example = "")
|
|
||||||
private String wdtbillouttyp;
|
|
||||||
|
|
||||||
@Schema(description = "旺店通出库时间", required = true, hidden = true, example = "")
|
|
||||||
private Date wdtoutdt;
|
|
||||||
|
|
||||||
@Schema(description = "旺店通入库时间", required = true, hidden = true, example = "")
|
|
||||||
private Date wdtindt;
|
|
||||||
|
|
||||||
@Schema(description = "传输旺店通时间", required = true, hidden = true, example = "")
|
|
||||||
private Date wdtdt;
|
|
||||||
|
|
||||||
@Schema(description = "时间戳", required = true, example = "")
|
|
||||||
private Date dt = new Date();
|
|
||||||
|
|
||||||
@Transient
|
|
||||||
@Schema(description = "规格", hidden = true, required = false, example = "")
|
|
||||||
private String spec;
|
|
||||||
|
|
||||||
@Transient
|
|
||||||
@Schema(description = "计量单位", hidden = true, required = false, example = "瓶")
|
|
||||||
private String measure;
|
|
||||||
|
|
||||||
@Transient
|
|
||||||
@Schema(description = "采购包装单位", hidden = true, required = false, example = "false")
|
|
||||||
private String purunit;
|
|
||||||
|
|
||||||
@Transient
|
|
||||||
@Schema(description = "采购包装量", hidden = true, required = true, example = "1")
|
|
||||||
private double purpkg = 1.0;
|
|
||||||
|
|
||||||
@Transient
|
|
||||||
@Schema(description = "历史价格", hidden = true, required = true, example = "1")
|
|
||||||
private Double oldhgprice;
|
|
||||||
|
|
||||||
@Transient
|
|
||||||
@Schema(description = "物流公司名称", hidden = true, required = true, example = "")
|
|
||||||
private String logisticsname;
|
|
||||||
|
|
||||||
@Transient
|
|
||||||
@Schema(description = "物流单号", hidden = true, required = true, example = "")
|
|
||||||
private String logisticsno;
|
|
||||||
|
|
||||||
public String getLogisticsname() {
|
|
||||||
return logisticsname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setLogisticsname(String logisticsname) {
|
|
||||||
this.logisticsname = logisticsname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getLogisticsno() {
|
|
||||||
return logisticsno;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setLogisticsno(String logisticsno) {
|
|
||||||
this.logisticsno = logisticsno;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Date getWdtoutdt() {
|
|
||||||
return wdtoutdt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setWdtoutdt(Date wdtoutdt) {
|
|
||||||
this.wdtoutdt = wdtoutdt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Date getWdtindt() {
|
|
||||||
return wdtindt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setWdtindt(Date wdtindt) {
|
|
||||||
this.wdtindt = wdtindt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getChannel() {
|
|
||||||
return channel;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setChannel(String channel) {
|
|
||||||
this.channel = channel;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Double getOldhgprice() {
|
|
||||||
return oldhgprice;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setOldhgprice(Double oldhgprice) {
|
|
||||||
this.oldhgprice = oldhgprice;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getSpec() {
|
|
||||||
return spec;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSpec(String spec) {
|
|
||||||
this.spec = spec;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getMeasure() {
|
|
||||||
return measure;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setMeasure(String measure) {
|
|
||||||
this.measure = measure;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getPurunit() {
|
|
||||||
return purunit;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPurunit(String purunit) {
|
|
||||||
this.purunit = purunit;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getPurpkg() {
|
|
||||||
return purpkg;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPurpkg(double purpkg) {
|
|
||||||
this.purpkg = purpkg;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Long getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setId(Long id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Integer getVersion() {
|
|
||||||
return version;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setVersion(Integer version) {
|
|
||||||
this.version = version;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getBillid() {
|
|
||||||
return billid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setBillid(String billid) {
|
|
||||||
this.billid = billid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getBillin() {
|
|
||||||
return billin;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setBillin(String billin) {
|
|
||||||
this.billin = billin;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getBillhg() {
|
|
||||||
return billhg;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setBillhg(String billhg) {
|
|
||||||
this.billhg = billhg;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getStatus() {
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setStatus(int status) {
|
|
||||||
this.status = status;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getAccount() {
|
|
||||||
return account;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAccount(String account) {
|
|
||||||
this.account = account;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getAccountname() {
|
|
||||||
return accountname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAccountname(String accountname) {
|
|
||||||
this.accountname = accountname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getProduct() {
|
|
||||||
return product;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setProduct(String product) {
|
|
||||||
this.product = product;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getProductname() {
|
|
||||||
return productname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setProductname(String productname) {
|
|
||||||
this.productname = productname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getPrice() {
|
|
||||||
return price;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPrice(double price) {
|
|
||||||
this.price = price;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getQuantity() {
|
|
||||||
return quantity;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setQuantity(double quantity) {
|
|
||||||
this.quantity = quantity;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getNumbers() {
|
|
||||||
return numbers;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setNumbers(double numbers) {
|
|
||||||
this.numbers = numbers;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Double getHgprice() {
|
|
||||||
return hgprice;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHgprice(Double hgprice) {
|
|
||||||
this.hgprice = hgprice;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Double getHgamount() {
|
|
||||||
return hgamount;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHgamount(Double hgamount) {
|
|
||||||
this.hgamount = hgamount;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getOperator() {
|
|
||||||
return operator;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setOperator(String operator) {
|
|
||||||
this.operator = operator;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getOperatorname() {
|
|
||||||
return operatorname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setOperatorname(String operatorname) {
|
|
||||||
this.operatorname = operatorname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getGroupid() {
|
|
||||||
return groupid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setGroupid(String groupid) {
|
|
||||||
this.groupid = groupid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getGroupname() {
|
|
||||||
return groupname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setGroupname(String groupname) {
|
|
||||||
this.groupname = groupname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getSalearea() {
|
|
||||||
return salearea;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSalearea(String salearea) {
|
|
||||||
this.salearea = salearea;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getSaleareaname() {
|
|
||||||
return saleareaname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSaleareaname(String saleareaname) {
|
|
||||||
this.saleareaname = saleareaname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getFhquantity() {
|
|
||||||
return fhquantity;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setFhquantity(double fhquantity) {
|
|
||||||
this.fhquantity = fhquantity;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getFhnumbers() {
|
|
||||||
return fhnumbers;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setFhnumbers(double fhnumbers) {
|
|
||||||
this.fhnumbers = fhnumbers;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getFhwarehouse() {
|
|
||||||
return fhwarehouse;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setFhwarehouse(String fhwarehouse) {
|
|
||||||
this.fhwarehouse = fhwarehouse;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getFhwarehousename() {
|
|
||||||
return fhwarehousename;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setFhwarehousename(String fhwarehousename) {
|
|
||||||
this.fhwarehousename = fhwarehousename;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getWdtorder() {
|
|
||||||
return wdtorder;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setWdtorder(String wdtorder) {
|
|
||||||
this.wdtorder = wdtorder;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getWdtbillout() {
|
|
||||||
return wdtbillout;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setWdtbillout(String wdtbillout) {
|
|
||||||
this.wdtbillout = wdtbillout;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getWdtbillouttyp() {
|
|
||||||
return wdtbillouttyp;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setWdtbillouttyp(String wdtbillouttyp) {
|
|
||||||
this.wdtbillouttyp = wdtbillouttyp;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Date getWdtdt() {
|
|
||||||
return wdtdt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setWdtdt(Date wdtdt) {
|
|
||||||
this.wdtdt = wdtdt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Date getDt() {
|
|
||||||
return dt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setDt(Date dt) {
|
|
||||||
this.dt = dt;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-120
@@ -1,120 +0,0 @@
|
|||||||
package abacus.springboot.example.dao;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
import javax.persistence.Entity;
|
|
||||||
import javax.persistence.GeneratedValue;
|
|
||||||
import javax.persistence.GenerationType;
|
|
||||||
import javax.persistence.Id;
|
|
||||||
import javax.persistence.Table;
|
|
||||||
import javax.persistence.Version;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
|
|
||||||
@Entity
|
|
||||||
@Table(name = "jc_bill_photo")
|
|
||||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
|
||||||
@Schema(description = "稽查图片")
|
|
||||||
public class JcBillPhoto implements Serializable {
|
|
||||||
|
|
||||||
private static final long serialVersionUID = -5561468051239492839L;
|
|
||||||
|
|
||||||
@Id
|
|
||||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
|
||||||
@Schema(description = "自增长编码", required = true, example = "10")
|
|
||||||
private Long id;
|
|
||||||
|
|
||||||
@Version
|
|
||||||
@Schema(description = "版本号", required = true, example = "1")
|
|
||||||
private Integer version;
|
|
||||||
|
|
||||||
@Schema(description = "来源单号", required = true, example = "1")
|
|
||||||
private String srcid;
|
|
||||||
|
|
||||||
@Schema(description = "来源明细", required = true, example = "1")
|
|
||||||
private String srcitemid;
|
|
||||||
|
|
||||||
@Schema(description = "图片类型", required = true, pattern="稽查付款截图,稽查货品图,回购通知函,回购违规通知函,回购支付凭证", example = "1")
|
|
||||||
private String typephoto;
|
|
||||||
public final static String JC_FK = "稽查付款截图";
|
|
||||||
public final static String JC_HP = "稽查货品图";
|
|
||||||
public final static String HG_TZH = "回购通知函";
|
|
||||||
public final static String HG_WGTZH = "回购违规通知函";
|
|
||||||
public final static String HG_ZFPZ = "回购支付凭证";
|
|
||||||
|
|
||||||
@Schema(description = "url地址", required = true, example = "1")
|
|
||||||
private String urlphoto;
|
|
||||||
|
|
||||||
@Schema(description = "时间戳", required = true, example = "1")
|
|
||||||
private Date dt = new Date();
|
|
||||||
|
|
||||||
public Long getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setId(Long id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Integer getVersion() {
|
|
||||||
return version;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setVersion(Integer version) {
|
|
||||||
this.version = version;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getSrcid() {
|
|
||||||
return srcid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSrcid(String srcid) {
|
|
||||||
this.srcid = srcid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getSrcitemid() {
|
|
||||||
return srcitemid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSrcitemid(String srcitemid) {
|
|
||||||
this.srcitemid = srcitemid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getTypephoto() {
|
|
||||||
return typephoto;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTypephoto(String typephoto) {
|
|
||||||
this.typephoto = typephoto;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getUrlphoto() {
|
|
||||||
return urlphoto;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setUrlphoto(String urlphoto) {
|
|
||||||
this.urlphoto = urlphoto;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Date getDt() {
|
|
||||||
return dt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setDt(Date dt) {
|
|
||||||
this.dt = dt;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-434
@@ -1,434 +0,0 @@
|
|||||||
package abacus.springboot.example.dao;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import javax.persistence.Entity;
|
|
||||||
import javax.persistence.GeneratedValue;
|
|
||||||
import javax.persistence.GenerationType;
|
|
||||||
import javax.persistence.Id;
|
|
||||||
import javax.persistence.Table;
|
|
||||||
import javax.persistence.Temporal;
|
|
||||||
import javax.persistence.TemporalType;
|
|
||||||
import javax.persistence.Transient;
|
|
||||||
import javax.persistence.Version;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
|
|
||||||
@Entity
|
|
||||||
@Table(name = "jc_billsource_item")
|
|
||||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
|
||||||
@Schema(description = "稽查收货明细")
|
|
||||||
public class JcBillSourceItem implements Serializable {
|
|
||||||
|
|
||||||
private static final long serialVersionUID = 8819914697371518608L;
|
|
||||||
|
|
||||||
@Id
|
|
||||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
|
||||||
@Schema(description = "自增长编码", required = true, example = "10")
|
|
||||||
private Long id;
|
|
||||||
|
|
||||||
@Version
|
|
||||||
@Schema(description = "版本号", required = true, example = "1")
|
|
||||||
private Integer version = 1;
|
|
||||||
|
|
||||||
@Schema(description = "行号", required = false, example = "2")
|
|
||||||
private int indexno;
|
|
||||||
|
|
||||||
@Schema(description = "稽查单号", required = true, example = "")
|
|
||||||
private String billid;
|
|
||||||
|
|
||||||
@Schema(description = "状态", required = true, pattern="-2:人工朔源驳回,-1:系统朔源验证未通过,0:系统溯源未验证,1:系统朔源验证通过,2:人工朔源待确认,3:人工朔源已确认", example = "")
|
|
||||||
private int status = 0;
|
|
||||||
/** 人工朔源驳回*/
|
|
||||||
public final static int STATUS_MINUS_TWO = -2;
|
|
||||||
/** 系统朔源验证未通过*/
|
|
||||||
public final static int STATUS_MINUS_ONE = -1;
|
|
||||||
/** 系统溯源未验证*/
|
|
||||||
public final static int STATUS_ZERO = 0;
|
|
||||||
/** 系统朔源验证通过*/
|
|
||||||
public final static int STATUS_ONE = 1;
|
|
||||||
/** 人工朔源待确认*/
|
|
||||||
public final static int STATUS_TWO = 2;
|
|
||||||
/** 人工朔源已确认*/
|
|
||||||
public final static int STATUS_THREE = 3;
|
|
||||||
|
|
||||||
@Schema(description = "收货来源", required = true, example = "")
|
|
||||||
private String recsource;
|
|
||||||
|
|
||||||
@Schema(description = "收货平台", required = true, example = "")
|
|
||||||
private String recplatform;
|
|
||||||
|
|
||||||
@Schema(description = "收货渠道", required = true, example = "")
|
|
||||||
private String channel;
|
|
||||||
|
|
||||||
@Schema(description = "收货单价", required = true, example = "")
|
|
||||||
private double price;
|
|
||||||
|
|
||||||
@Schema(description = "收货数量", required = true, example = "")
|
|
||||||
private double quantity;
|
|
||||||
|
|
||||||
@Schema(description = "收货件数", required = true, example = "")
|
|
||||||
private double numbers;
|
|
||||||
|
|
||||||
@Schema(description = "收货金额", required = true, example = "")
|
|
||||||
private double subtotal;
|
|
||||||
|
|
||||||
@Schema(description = "货品编号", required = true, example = "")
|
|
||||||
private String goodsid;
|
|
||||||
|
|
||||||
@Schema(description = "物流码", required = true, example = "")
|
|
||||||
private String logisticsid;
|
|
||||||
|
|
||||||
@Schema(description = "出库单号", required = true, example = "")
|
|
||||||
private String billout;
|
|
||||||
|
|
||||||
@Temporal(TemporalType.TIMESTAMP)
|
|
||||||
@Schema(description = "出库日期", required = true, example = "")
|
|
||||||
private Date billoutdt;
|
|
||||||
|
|
||||||
@Schema(description = "出库仓库编码", required = true, example = "")
|
|
||||||
private String billoutwh;
|
|
||||||
|
|
||||||
@Schema(description = "出库仓库名称", required = true, example = "")
|
|
||||||
private String billoutwhname;
|
|
||||||
|
|
||||||
@Schema(description = "商品编码", required = true, example = "")
|
|
||||||
private String product;
|
|
||||||
|
|
||||||
@Schema(description = "商品名称", required = true, example = "")
|
|
||||||
private String productname;
|
|
||||||
|
|
||||||
@Schema(description = "客户编码", required = true, example = "")
|
|
||||||
private String account;
|
|
||||||
|
|
||||||
@Schema(description = "客户名称", required = true, example = "")
|
|
||||||
private String accountname;
|
|
||||||
|
|
||||||
@Schema(description = "考核业务员编码", required = true, example = "")
|
|
||||||
private String operator;
|
|
||||||
|
|
||||||
@Schema(description = "考核业务员名称", required = true, example = "")
|
|
||||||
private String operatorname;
|
|
||||||
|
|
||||||
@Schema(description = "业务组编码", required = true, example = "")
|
|
||||||
private String groupid;
|
|
||||||
|
|
||||||
@Schema(description = "业务组名称", required = true, example = "")
|
|
||||||
private String groupname;
|
|
||||||
|
|
||||||
@Schema(description = "分销区域编码", required = true, example = "")
|
|
||||||
private String salearea;
|
|
||||||
|
|
||||||
@Schema(description = "分销区域名称", required = true, example = "")
|
|
||||||
private String saleareaname;
|
|
||||||
|
|
||||||
@Schema(description = "比对来源", required = true, example = "")
|
|
||||||
private String source;
|
|
||||||
public static final String SOURCE_ERP = "业务中台";
|
|
||||||
public static final String SOURCE_EWM = "二维码";
|
|
||||||
public static final String SOURCE_XX = "线下";
|
|
||||||
|
|
||||||
@Schema(description = "驳回原因", required = true, example = "")
|
|
||||||
private String reason;
|
|
||||||
|
|
||||||
@Temporal(TemporalType.TIMESTAMP)
|
|
||||||
@Schema(description = "时间戳", required = true, example = "")
|
|
||||||
private Date dt = new Date();
|
|
||||||
|
|
||||||
@Transient
|
|
||||||
@Schema(description = "付款图片", required = false, hidden = true, pattern = "这是个JSON数组,不是JSONArray对象", example = "[\"44444\",\"aaaaa\"]")
|
|
||||||
private List<String> paymentPhoto;
|
|
||||||
|
|
||||||
@Transient
|
|
||||||
@Schema(description = "货品图片", required = false, hidden = true, pattern = "这是个JSON数组,不是JSONArray对象", example = "[\"44444\",\"aaaaa\"]")
|
|
||||||
private List<String> goodsPhotos;
|
|
||||||
|
|
||||||
@Transient
|
|
||||||
@Schema(description = "货品图片", required = false, hidden = true, pattern = "这是个JSON数组,不是JSONArray对象", example = "[\"44444\",\"aaaaa\"]")
|
|
||||||
private List<JcBillPhoto> hpts;
|
|
||||||
|
|
||||||
public List<JcBillPhoto> getHpts() {
|
|
||||||
return hpts;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHpts(List<JcBillPhoto> hpts) {
|
|
||||||
this.hpts = hpts;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<String> getPaymentPhoto() {
|
|
||||||
return paymentPhoto;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPaymentPhoto(List<String> paymentPhoto) {
|
|
||||||
this.paymentPhoto = paymentPhoto;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<String> getGoodsPhotos() {
|
|
||||||
return goodsPhotos;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setGoodsPhotos(List<String> goodsPhotos) {
|
|
||||||
this.goodsPhotos = goodsPhotos;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getIndexno() {
|
|
||||||
return indexno;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setIndexno(int indexno) {
|
|
||||||
this.indexno = indexno;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getRecplatform() {
|
|
||||||
return recplatform;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRecplatform(String recplatform) {
|
|
||||||
this.recplatform = recplatform;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Long getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setId(Long id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Integer getVersion() {
|
|
||||||
return version;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setVersion(Integer version) {
|
|
||||||
this.version = version;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getBillid() {
|
|
||||||
return billid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setBillid(String billid) {
|
|
||||||
this.billid = billid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getStatus() {
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setStatus(int status) {
|
|
||||||
this.status = status;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getRecsource() {
|
|
||||||
return recsource;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRecsource(String recsource) {
|
|
||||||
this.recsource = recsource;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getChannel() {
|
|
||||||
return channel;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setChannel(String channel) {
|
|
||||||
this.channel = channel;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getPrice() {
|
|
||||||
return price;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPrice(double price) {
|
|
||||||
this.price = price;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getQuantity() {
|
|
||||||
return quantity;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setQuantity(double quantity) {
|
|
||||||
this.quantity = quantity;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getNumbers() {
|
|
||||||
return numbers;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setNumbers(double numbers) {
|
|
||||||
this.numbers = numbers;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getSubtotal() {
|
|
||||||
return subtotal;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSubtotal(double subtotal) {
|
|
||||||
this.subtotal = subtotal;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getGoodsid() {
|
|
||||||
return goodsid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setGoodsid(String goodsid) {
|
|
||||||
this.goodsid = goodsid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getLogisticsid() {
|
|
||||||
return logisticsid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setLogisticsid(String logisticsid) {
|
|
||||||
this.logisticsid = logisticsid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getBillout() {
|
|
||||||
return billout;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setBillout(String billout) {
|
|
||||||
this.billout = billout;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Date getBilloutdt() {
|
|
||||||
return billoutdt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setBilloutdt(Date billoutdt) {
|
|
||||||
this.billoutdt = billoutdt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getBilloutwh() {
|
|
||||||
return billoutwh;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setBilloutwh(String billoutwh) {
|
|
||||||
this.billoutwh = billoutwh;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getBilloutwhname() {
|
|
||||||
return billoutwhname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setBilloutwhname(String billoutwhname) {
|
|
||||||
this.billoutwhname = billoutwhname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getProduct() {
|
|
||||||
return product;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setProduct(String product) {
|
|
||||||
this.product = product;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getProductname() {
|
|
||||||
return productname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setProductname(String productname) {
|
|
||||||
this.productname = productname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getAccount() {
|
|
||||||
return account;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAccount(String account) {
|
|
||||||
this.account = account;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getAccountname() {
|
|
||||||
return accountname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAccountname(String accountname) {
|
|
||||||
this.accountname = accountname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getOperator() {
|
|
||||||
return operator;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setOperator(String operator) {
|
|
||||||
this.operator = operator;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getOperatorname() {
|
|
||||||
return operatorname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setOperatorname(String operatorname) {
|
|
||||||
this.operatorname = operatorname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getGroupid() {
|
|
||||||
return groupid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setGroupid(String groupid) {
|
|
||||||
this.groupid = groupid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getGroupname() {
|
|
||||||
return groupname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setGroupname(String groupname) {
|
|
||||||
this.groupname = groupname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getSalearea() {
|
|
||||||
return salearea;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSalearea(String salearea) {
|
|
||||||
this.salearea = salearea;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getSaleareaname() {
|
|
||||||
return saleareaname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSaleareaname(String saleareaname) {
|
|
||||||
this.saleareaname = saleareaname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getSource() {
|
|
||||||
return source;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSource(String source) {
|
|
||||||
this.source = source;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getReason() {
|
|
||||||
return reason;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setReason(String reason) {
|
|
||||||
this.reason = reason;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Date getDt() {
|
|
||||||
return dt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setDt(Date dt) {
|
|
||||||
this.dt = dt;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-298
@@ -1,298 +0,0 @@
|
|||||||
package abacus.springboot.example.dao;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
import javax.persistence.Entity;
|
|
||||||
import javax.persistence.GeneratedValue;
|
|
||||||
import javax.persistence.GenerationType;
|
|
||||||
import javax.persistence.Id;
|
|
||||||
import javax.persistence.Table;
|
|
||||||
import javax.persistence.Temporal;
|
|
||||||
import javax.persistence.TemporalType;
|
|
||||||
import javax.persistence.Transient;
|
|
||||||
import javax.persistence.Version;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
|
|
||||||
@Entity
|
|
||||||
@Table(name = "jc_source_item")
|
|
||||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
|
||||||
@Schema(description = "稽查溯源明细")
|
|
||||||
public class JcSourceItem implements Serializable {
|
|
||||||
|
|
||||||
private static final long serialVersionUID = -2272967075701112300L;
|
|
||||||
|
|
||||||
@Id
|
|
||||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
|
||||||
@Schema(description = "自增长编码", required = true, example = "10")
|
|
||||||
private Long id;
|
|
||||||
|
|
||||||
@Version
|
|
||||||
@Schema(description = "版本号", required = true, example = "1")
|
|
||||||
private Integer version = 1;
|
|
||||||
|
|
||||||
@Schema(description = "稽查单号", required = true, example = "")
|
|
||||||
private String billid;
|
|
||||||
|
|
||||||
@Schema(description = "明细Id", required = true, example = "")
|
|
||||||
private String srcitemid;
|
|
||||||
|
|
||||||
@Schema(description = "状态", required = true, pattern="0:待确认,1:已确认", example = "")
|
|
||||||
private int status = 0;
|
|
||||||
/** 待确认*/
|
|
||||||
public final static int STATUS_ZERO = 0;
|
|
||||||
/** 已确认*/
|
|
||||||
public final static int STATUS_ONE = 1;
|
|
||||||
|
|
||||||
@Schema(description = "货品编号", required = true, example = "")
|
|
||||||
private String goodsid;
|
|
||||||
|
|
||||||
@Schema(description = "物流码", required = true, example = "")
|
|
||||||
private String logisticsid;
|
|
||||||
|
|
||||||
@Schema(description = "出库单号", required = true, example = "")
|
|
||||||
private String billout;
|
|
||||||
|
|
||||||
@Temporal(TemporalType.TIMESTAMP)
|
|
||||||
@Schema(description = "出库日期", required = true, example = "")
|
|
||||||
private Date billoutdt;
|
|
||||||
|
|
||||||
@Schema(description = "出库仓库编码", required = true, example = "")
|
|
||||||
private String billoutwh;
|
|
||||||
|
|
||||||
@Schema(description = "出库仓库名称", required = true, example = "")
|
|
||||||
private String billoutwhname;
|
|
||||||
|
|
||||||
@Schema(description = "商品编码", required = true, example = "")
|
|
||||||
private String product;
|
|
||||||
|
|
||||||
@Schema(description = "商品名称", required = true, example = "")
|
|
||||||
private String productname;
|
|
||||||
|
|
||||||
@Schema(description = "客户编码", required = true, example = "")
|
|
||||||
private String account;
|
|
||||||
|
|
||||||
@Schema(description = "客户名称", required = true, example = "")
|
|
||||||
private String accountname;
|
|
||||||
|
|
||||||
@Schema(description = "考核业务员编码", required = true, example = "")
|
|
||||||
private String operator;
|
|
||||||
|
|
||||||
@Schema(description = "考核业务员名称", required = true, example = "")
|
|
||||||
private String operatorname;
|
|
||||||
|
|
||||||
@Schema(description = "业务组编码", required = true, example = "")
|
|
||||||
private String groupid;
|
|
||||||
|
|
||||||
@Schema(description = "业务组名称", required = true, example = "")
|
|
||||||
private String groupname;
|
|
||||||
|
|
||||||
@Schema(description = "分销区域编码", required = true, example = "")
|
|
||||||
private String salearea;
|
|
||||||
|
|
||||||
@Schema(description = "分销区域名称", required = true, example = "")
|
|
||||||
private String saleareaname;
|
|
||||||
|
|
||||||
@Schema(description = "比对来源", required = true, pattern="业务中台,二维码,线下", example = "")
|
|
||||||
private String source;
|
|
||||||
|
|
||||||
@Temporal(TemporalType.TIMESTAMP)
|
|
||||||
@Schema(description = "时间戳", required = true, example = "")
|
|
||||||
private Date dt = new Date();
|
|
||||||
|
|
||||||
|
|
||||||
public int getStatus() {
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setStatus(int status) {
|
|
||||||
this.status = status;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Long getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setId(Long id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Integer getVersion() {
|
|
||||||
return version;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setVersion(Integer version) {
|
|
||||||
this.version = version;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getBillid() {
|
|
||||||
return billid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setBillid(String billid) {
|
|
||||||
this.billid = billid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getSrcitemid() {
|
|
||||||
return srcitemid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSrcitemid(String srcitemid) {
|
|
||||||
this.srcitemid = srcitemid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getGoodsid() {
|
|
||||||
return goodsid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setGoodsid(String goodsid) {
|
|
||||||
this.goodsid = goodsid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getLogisticsid() {
|
|
||||||
return logisticsid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setLogisticsid(String logisticsid) {
|
|
||||||
this.logisticsid = logisticsid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getBillout() {
|
|
||||||
return billout;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setBillout(String billout) {
|
|
||||||
this.billout = billout;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Date getBilloutdt() {
|
|
||||||
return billoutdt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setBilloutdt(Date billoutdt) {
|
|
||||||
this.billoutdt = billoutdt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getBilloutwh() {
|
|
||||||
return billoutwh;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setBilloutwh(String billoutwh) {
|
|
||||||
this.billoutwh = billoutwh;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getBilloutwhname() {
|
|
||||||
return billoutwhname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setBilloutwhname(String billoutwhname) {
|
|
||||||
this.billoutwhname = billoutwhname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getProduct() {
|
|
||||||
return product;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setProduct(String product) {
|
|
||||||
this.product = product;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getProductname() {
|
|
||||||
return productname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setProductname(String productname) {
|
|
||||||
this.productname = productname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getAccount() {
|
|
||||||
return account;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAccount(String account) {
|
|
||||||
this.account = account;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getAccountname() {
|
|
||||||
return accountname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAccountname(String accountname) {
|
|
||||||
this.accountname = accountname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getOperator() {
|
|
||||||
return operator;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setOperator(String operator) {
|
|
||||||
this.operator = operator;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getOperatorname() {
|
|
||||||
return operatorname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setOperatorname(String operatorname) {
|
|
||||||
this.operatorname = operatorname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getGroupid() {
|
|
||||||
return groupid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setGroupid(String groupid) {
|
|
||||||
this.groupid = groupid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getGroupname() {
|
|
||||||
return groupname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setGroupname(String groupname) {
|
|
||||||
this.groupname = groupname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getSalearea() {
|
|
||||||
return salearea;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSalearea(String salearea) {
|
|
||||||
this.salearea = salearea;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getSaleareaname() {
|
|
||||||
return saleareaname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSaleareaname(String saleareaname) {
|
|
||||||
this.saleareaname = saleareaname;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getSource() {
|
|
||||||
return source;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSource(String source) {
|
|
||||||
this.source = source;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Date getDt() {
|
|
||||||
return dt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setDt(Date dt) {
|
|
||||||
this.dt = dt;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-835
@@ -1,835 +0,0 @@
|
|||||||
package abacus.springboot.example.esb;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Optional;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.data.domain.Page;
|
|
||||||
import org.springframework.data.domain.Pageable;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import org.springframework.transaction.annotation.Isolation;
|
|
||||||
import org.springframework.transaction.annotation.Propagation;
|
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
|
||||||
|
|
||||||
import abacus.springboot.example.api.view.ApiBillHg;
|
|
||||||
import abacus.springboot.example.api.view.ApiBillHgItem;
|
|
||||||
import abacus.springboot.example.api.view.ApiBillHgPayment;
|
|
||||||
import abacus.springboot.example.api.view.ApiJcBill;
|
|
||||||
import abacus.springboot.example.api.view.ApiJcBillHgSearchItem;
|
|
||||||
import abacus.springboot.example.api.view.ApiJcBillItem;
|
|
||||||
import abacus.springboot.example.api.view.ApiJcBillSearch;
|
|
||||||
import abacus.springboot.example.api.view.ApiReqJcBill;
|
|
||||||
import abacus.springboot.example.api.view.ApiReqJcBillGoodsPhoto;
|
|
||||||
import abacus.springboot.example.api.view.ApiReqJcBillItem;
|
|
||||||
import abacus.springboot.example.api.view.JcBillCount;
|
|
||||||
import abacus.springboot.example.api.view.JcCodeFlow;
|
|
||||||
import abacus.springboot.example.api.view.JcProduct;
|
|
||||||
import abacus.springboot.example.api.view.JcProductBillSouce;
|
|
||||||
import abacus.springboot.example.dao.JcBill;
|
|
||||||
import abacus.springboot.example.dao.JcBillHg;
|
|
||||||
import abacus.springboot.example.dao.JcBillHgPay;
|
|
||||||
import abacus.springboot.example.dao.JcBillInItem;
|
|
||||||
import abacus.springboot.example.dao.JcBillPhoto;
|
|
||||||
import abacus.springboot.example.dao.JcBillSourceItem;
|
|
||||||
import abacus.springboot.example.dao.JcSourceItem;
|
|
||||||
import abacus.springboot.example.pi.ApiJcBillAccessIF;
|
|
||||||
import abacus.springboot.example.pi.JcBillAccessIF;
|
|
||||||
import abacus.springboot.example.repository.JcBillHgPayRepository;
|
|
||||||
import abacus.springboot.example.repository.JcBillHgRepository;
|
|
||||||
import abacus.springboot.example.repository.JcBillInItemRepository;
|
|
||||||
import abacus.springboot.example.repository.JcBillPhotoRepository;
|
|
||||||
import abacus.springboot.example.repository.JcBillRepository;
|
|
||||||
import abacus.springboot.example.repository.JcBillSourceItemRepository;
|
|
||||||
import abacus.springboot.example.repository.JcSourceItemRepository;
|
|
||||||
import abacus.springboot.example.wsi.ApiJcBillServiceIF;
|
|
||||||
|
|
||||||
@Service
|
|
||||||
public class ApiJcBillService implements ApiJcBillServiceIF {
|
|
||||||
|
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(ApiJcBillService.class);
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private ApiJcBillAccessIF apiJcBillAccess;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private JcBillAccessIF jcBillAccess;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private JcBillRepository jcBillRepository;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private JcBillSourceItemRepository jcBillSourceItemRepository;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private JcBillPhotoRepository jcBillPhotoRepository;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private JcBillHgRepository jcBillHgRepository;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private JcBillHgPayRepository jcBillHgPayRepository;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private JcSourceItemRepository jcSourceItemRepository;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private JcBillInItemRepository jcBillInItemRepository;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Page<ApiJcBillSearch> queryApiJcBillSearch(String keyword, String employee, String status, Pageable pageable)
|
|
||||||
throws RuntimeException {
|
|
||||||
try {
|
|
||||||
return this.apiJcBillAccess.queryApiJcBillSearch(keyword, employee, status, pageable);
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ApiJcBill queryApiJcBillById(String id) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
return this.apiJcBillAccess.queryApiJcBillById(id);
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<ApiJcBillItem> queryApiJcBillItemByBIllId(String billId) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
return this.apiJcBillAccess.queryApiJcBillItemByBIllId(billId);
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Map<String, List<JcBillPhoto>> queryJcBillPhoto(String srcid) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
List<JcBillPhoto> billPhotos = jcBillAccess.queryJcBillPhoto(srcid, null, null);
|
|
||||||
|
|
||||||
if(billPhotos == null) return new HashMap<String, List<JcBillPhoto>>();
|
|
||||||
|
|
||||||
Map<String, List<JcBillPhoto>> map = billPhotos.stream()
|
|
||||||
.collect(Collectors.groupingBy(e -> {
|
|
||||||
return e.getTypephoto() + "#" + e.getSrcitemid();
|
|
||||||
},
|
|
||||||
Collectors.collectingAndThen(Collectors.toList(), value -> value)
|
|
||||||
));
|
|
||||||
|
|
||||||
return map;
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Map<String, List<JcBillPhoto>> queryJcBillPhotoIn(List<String> srcids) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
List<JcBillPhoto> billPhotos = jcBillAccess.queryJcBillPhotoIn(srcids);
|
|
||||||
|
|
||||||
if(billPhotos == null) return new HashMap<String, List<JcBillPhoto>>();
|
|
||||||
|
|
||||||
Map<String, List<JcBillPhoto>> map = billPhotos.stream()
|
|
||||||
.collect(Collectors.groupingBy(e -> {
|
|
||||||
return e.getTypephoto() + "#" + e.getSrcitemid();
|
|
||||||
},
|
|
||||||
Collectors.collectingAndThen(Collectors.toList(), value -> value)
|
|
||||||
));
|
|
||||||
|
|
||||||
return map;
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Transactional(isolation = Isolation.DEFAULT, propagation = Propagation.REQUIRED, rollbackFor = {Exception.class})
|
|
||||||
@Override
|
|
||||||
public ApiReqJcBill saveApiReqJcBill(ApiReqJcBill reqJcBill, JcBill jcBill, List<JcBillSourceItem> createItems)
|
|
||||||
throws RuntimeException {
|
|
||||||
try {
|
|
||||||
|
|
||||||
List<JcBillSourceItem> tempItems = jcBillSourceItemRepository.saveAll(createItems);
|
|
||||||
|
|
||||||
// Map<String, JcBillSourceItem> map = tempItems.stream()
|
|
||||||
// .collect(Collectors.groupingBy(e -> {
|
|
||||||
// return String.valueOf(e.getIndexno()) + e.getGoodsid();
|
|
||||||
// },
|
|
||||||
// Collectors.collectingAndThen(Collectors.toList(), value -> value.get(0))
|
|
||||||
// ));
|
|
||||||
|
|
||||||
// 新增
|
|
||||||
List<JcBillPhoto> createPhoto = new ArrayList<JcBillPhoto>();
|
|
||||||
if(reqJcBill.getItems() != null && reqJcBill.getItems().size() >= 1) {
|
|
||||||
JcBillPhoto fkPhoto = null;
|
|
||||||
JcBillPhoto hpPhoto = null;
|
|
||||||
for(ApiReqJcBillItem item : reqJcBill.getItems()) {
|
|
||||||
|
|
||||||
// 付款图
|
|
||||||
if(item.getPaymentPhoto() != null && item.getPaymentPhoto().size() >= 1) {
|
|
||||||
for(String urlphoto : item.getPaymentPhoto()) {
|
|
||||||
fkPhoto = new JcBillPhoto();
|
|
||||||
fkPhoto.setSrcid(jcBill.getId());
|
|
||||||
fkPhoto.setSrcitemid(String.valueOf(item.getIndexno()));
|
|
||||||
fkPhoto.setTypephoto(JcBillPhoto.JC_FK);
|
|
||||||
fkPhoto.setUrlphoto(urlphoto);
|
|
||||||
|
|
||||||
createPhoto.add(fkPhoto);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for(ApiReqJcBillGoodsPhoto photo : item.getGoodsPhotos()) {
|
|
||||||
// 货品图
|
|
||||||
if(item.getGoodsPhotos() != null && item.getGoodsPhotos().size() >= 1) {
|
|
||||||
for(String urlphoto : photo.getGoodsPhotos()) {
|
|
||||||
hpPhoto = new JcBillPhoto();
|
|
||||||
hpPhoto.setSrcid(jcBill.getId());
|
|
||||||
hpPhoto.setSrcitemid(String.valueOf(item.getIndexno()) + "#" + photo.getGoodsid());
|
|
||||||
hpPhoto.setTypephoto(JcBillPhoto.JC_HP);
|
|
||||||
hpPhoto.setUrlphoto(urlphoto);
|
|
||||||
|
|
||||||
createPhoto.add(hpPhoto);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// 删除图片
|
|
||||||
jcBillAccess.deleteJcBillPhoto(jcBill.getId(), null, JcBillPhoto.JC_FK);
|
|
||||||
jcBillAccess.deleteJcBillPhoto(jcBill.getId(), null, JcBillPhoto.JC_HP);
|
|
||||||
|
|
||||||
jcBillPhotoRepository.saveAll(createPhoto);
|
|
||||||
|
|
||||||
jcBillRepository.save(jcBill);
|
|
||||||
|
|
||||||
return reqJcBill;
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Transactional(isolation = Isolation.DEFAULT, propagation = Propagation.REQUIRED, rollbackFor = {Exception.class})
|
|
||||||
@Override
|
|
||||||
public ApiReqJcBill updateApiReqJcBill(ApiReqJcBill reqJcBill, JcBill jcBill, List<JcBillSourceItem> createItems,
|
|
||||||
List<JcBillSourceItem> updateItems) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
|
|
||||||
// Map<String, JcBillSourceItem> map = tempItems.stream()
|
|
||||||
// .collect(Collectors.groupingBy(e -> {
|
|
||||||
// return String.valueOf(e.getIndexno()) + e.getGoodsid();
|
|
||||||
// },
|
|
||||||
// Collectors.collectingAndThen(Collectors.toList(), value -> value.get(0))
|
|
||||||
// ));
|
|
||||||
|
|
||||||
// 新增
|
|
||||||
List<JcBillPhoto> createPhoto = new ArrayList<JcBillPhoto>();
|
|
||||||
if(reqJcBill.getItems() != null && reqJcBill.getItems().size() >= 1) {
|
|
||||||
JcBillPhoto fkPhoto = null;
|
|
||||||
JcBillPhoto hpPhoto = null;
|
|
||||||
for(ApiReqJcBillItem item : reqJcBill.getItems()) {
|
|
||||||
|
|
||||||
// 付款图
|
|
||||||
if(item.getPaymentPhoto() != null && item.getPaymentPhoto().size() >= 1) {
|
|
||||||
for(String urlphoto : item.getPaymentPhoto()) {
|
|
||||||
fkPhoto = new JcBillPhoto();
|
|
||||||
fkPhoto.setSrcid(jcBill.getId());
|
|
||||||
fkPhoto.setSrcitemid(String.valueOf(item.getIndexno()));
|
|
||||||
fkPhoto.setTypephoto(JcBillPhoto.JC_FK);
|
|
||||||
fkPhoto.setUrlphoto(urlphoto);
|
|
||||||
|
|
||||||
createPhoto.add(fkPhoto);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for(ApiReqJcBillGoodsPhoto photo : item.getGoodsPhotos()) {
|
|
||||||
// 货品图
|
|
||||||
if(item.getGoodsPhotos() != null && item.getGoodsPhotos().size() >= 1) {
|
|
||||||
for(String urlphoto : photo.getGoodsPhotos()) {
|
|
||||||
hpPhoto = new JcBillPhoto();
|
|
||||||
hpPhoto.setSrcid(jcBill.getId());
|
|
||||||
hpPhoto.setSrcitemid(String.valueOf(item.getIndexno()) + "#" + photo.getGoodsid());
|
|
||||||
hpPhoto.setTypephoto(JcBillPhoto.JC_HP);
|
|
||||||
hpPhoto.setUrlphoto(urlphoto);
|
|
||||||
|
|
||||||
createPhoto.add(hpPhoto);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// 删除图片
|
|
||||||
jcBillAccess.deleteJcBillPhoto(jcBill.getId(), null, JcBillPhoto.JC_FK);
|
|
||||||
jcBillAccess.deleteJcBillPhoto(jcBill.getId(), null, JcBillPhoto.JC_HP);
|
|
||||||
|
|
||||||
jcBillSourceItemRepository.deleteByBillid(jcBill.getId());
|
|
||||||
|
|
||||||
jcBillRepository.deleteById(jcBill.getId());
|
|
||||||
|
|
||||||
List<JcBillSourceItem> tempItems = jcBillSourceItemRepository.saveAll(createItems);
|
|
||||||
|
|
||||||
jcBillPhotoRepository.saveAll(createPhoto);
|
|
||||||
|
|
||||||
jcBillRepository.save(jcBill);
|
|
||||||
|
|
||||||
return reqJcBill;
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*@Transactional(isolation = Isolation.DEFAULT, propagation = Propagation.REQUIRED, rollbackFor = {Exception.class})
|
|
||||||
@Override
|
|
||||||
public ApiReqJcBill updateApiReqJcBill(ApiReqJcBill reqJcBill, JcBill jcBill, List<JcBillSourceItem> createItems,
|
|
||||||
List<JcBillSourceItem> updateItems) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
|
|
||||||
List<JcBillSourceItem> tempItems = jcBillSourceItemRepository.saveAll(createItems);
|
|
||||||
|
|
||||||
// Map<String, JcBillSourceItem> map = tempItems.stream()
|
|
||||||
// .collect(Collectors.groupingBy(e -> {
|
|
||||||
// return String.valueOf(e.getIndexno());
|
|
||||||
// },
|
|
||||||
// Collectors.collectingAndThen(Collectors.toList(), value -> value.get(0))
|
|
||||||
// ));
|
|
||||||
|
|
||||||
// 新增
|
|
||||||
List<JcBillPhoto> createPhoto = new ArrayList<JcBillPhoto>();
|
|
||||||
// 修改
|
|
||||||
List<JcBillPhoto> updatePhoto = new ArrayList<JcBillPhoto>();
|
|
||||||
|
|
||||||
if(reqJcBill.getItems() != null && reqJcBill.getItems().size() >= 1) {
|
|
||||||
JcBillPhoto fkPhoto = null;
|
|
||||||
JcBillPhoto hpPhoto = null;
|
|
||||||
for(ApiReqJcBillItem item : reqJcBill.getItems()) {
|
|
||||||
|
|
||||||
// 付款图
|
|
||||||
if(item.getPaymentPhoto() != null && item.getPaymentPhoto().size() >= 1) {
|
|
||||||
for(String urlphoto : item.getPaymentPhoto()) {
|
|
||||||
fkPhoto = new JcBillPhoto();
|
|
||||||
fkPhoto.setSrcid(jcBill.getId());
|
|
||||||
fkPhoto.setSrcitemid(String.valueOf(item.getIndexno()));
|
|
||||||
fkPhoto.setTypephoto(JcBillPhoto.JC_FK);
|
|
||||||
fkPhoto.setUrlphoto(urlphoto);
|
|
||||||
|
|
||||||
createPhoto.add(fkPhoto);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for(ApiReqJcBillGoodsPhoto photo : item.getGoodsPhotos()) {
|
|
||||||
// 货品图
|
|
||||||
if(item.getGoodsPhotos() != null && item.getGoodsPhotos().size() >= 1) {
|
|
||||||
for(String urlphoto : photo.getGoodsPhotos()) {
|
|
||||||
hpPhoto = new JcBillPhoto();
|
|
||||||
hpPhoto.setSrcid(jcBill.getId());
|
|
||||||
hpPhoto.setSrcitemid(String.valueOf(item.getIndexno()) + "#" + photo.getGoodsid());
|
|
||||||
hpPhoto.setTypephoto(JcBillPhoto.JC_HP);
|
|
||||||
hpPhoto.setUrlphoto(urlphoto);
|
|
||||||
|
|
||||||
createPhoto.add(hpPhoto);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// 删除图片
|
|
||||||
// for(JcBillPhoto photo : createPhoto) {
|
|
||||||
// jcBillAccess.deleteJcBillPhoto(photo.getSrcid(), photo.getSrcitemid(), photo.getTypephoto());
|
|
||||||
// }
|
|
||||||
jcBillAccess.deleteJcBillPhoto(jcBill.getId(), null, JcBillPhoto.JC_FK);
|
|
||||||
jcBillAccess.deleteJcBillPhoto(jcBill.getId(), null, JcBillPhoto.JC_HP);
|
|
||||||
|
|
||||||
jcBillPhotoRepository.saveAll(createPhoto);
|
|
||||||
|
|
||||||
jcBillAccess.updateJcBill(jcBill);
|
|
||||||
|
|
||||||
jcBillAccess.updateJcBillSourceItem(updateItems);
|
|
||||||
|
|
||||||
List<JcBillSourceItem> itemsLogs = new ArrayList<JcBillSourceItem>();
|
|
||||||
itemsLogs.addAll(tempItems);
|
|
||||||
itemsLogs.addAll(updateItems);
|
|
||||||
|
|
||||||
List<JcBillPhoto> photoLogs = new ArrayList<JcBillPhoto>();
|
|
||||||
photoLogs.addAll(createPhoto);
|
|
||||||
photoLogs.addAll(updatePhoto);
|
|
||||||
|
|
||||||
操作日志
|
|
||||||
OperationLog log = new OperationLog("api_jc_bill", jcBill.getId(), "更新", "", "",
|
|
||||||
JSONObject.toJSONString(jcBill) + JSONArray.toJSONString(itemsLogs) + JSONArray.toJSONString(photoLogs));
|
|
||||||
log.setOperator(jcBill.getApplicant());
|
|
||||||
log.setOperatorName(jcBill.getApplicantname());
|
|
||||||
BusinessESUtil.checkService(this.operationLogService).saveOperationLog(log);
|
|
||||||
|
|
||||||
return reqJcBill;
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int countJcBillItemIndexno(String billId) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
return jcBillAccess.countJcBillItemIndexno(billId);
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public JcBill queryJcBillById(String billId) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
Optional<JcBill> optional = jcBillRepository.findById(billId);
|
|
||||||
|
|
||||||
return optional.isPresent() ? optional.get() : null;
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<JcBillSourceItem> queryJcBillSourceItemByBillId(String billId) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
List<JcBillSourceItem> list = jcBillSourceItemRepository.findByBillid(billId);
|
|
||||||
|
|
||||||
return (list != null && list.size() >= 1) ? list : null;
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public JcBillSourceItem queryJcBillSourceItembyId(Long id) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
|
|
||||||
Optional<JcBillSourceItem> optional = jcBillSourceItemRepository.findById(id);
|
|
||||||
|
|
||||||
return optional.isPresent() ? optional.get() : new JcBillSourceItem();
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Transactional(isolation = Isolation.DEFAULT, propagation = Propagation.REQUIRED, rollbackFor = {Exception.class})
|
|
||||||
@Override
|
|
||||||
public void updateStatusJcBill(JcBill jcBill, int oldStatus) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
jcBillRepository.save(jcBill);
|
|
||||||
|
|
||||||
// jcBillSourceItemRepository.saveAll(sourceItems);
|
|
||||||
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Page<ApiJcBillHgSearchItem> queryApiJcBillHgSearchItem(String keyword, String employee, String status, Pageable pageable)
|
|
||||||
throws RuntimeException {
|
|
||||||
try {
|
|
||||||
return this.apiJcBillAccess.queryApiJcBillHgSearchItem(keyword, employee, status, pageable);
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Map<String, JcBillCount> queryJcBillCount(List<String> ids) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
|
|
||||||
if(ids != null && ids.size() >= 1) {
|
|
||||||
List<JcBillCount> counts = apiJcBillAccess.queryJcBillCount(ids);
|
|
||||||
|
|
||||||
if(counts == null) return new HashMap<String, JcBillCount>();
|
|
||||||
|
|
||||||
Map<String, JcBillCount> map = counts.stream()
|
|
||||||
.collect(Collectors.groupingBy(e -> {
|
|
||||||
return e.getId();
|
|
||||||
},
|
|
||||||
Collectors.collectingAndThen(Collectors.toList(), value -> value.get(0))
|
|
||||||
));
|
|
||||||
|
|
||||||
return map;
|
|
||||||
} else {
|
|
||||||
return new HashMap<String, JcBillCount>();
|
|
||||||
}
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ApiBillHg queryApiBillHgById(String hgId) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
return this.apiJcBillAccess.queryApiBillHgById(hgId);
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<ApiBillHgItem> queryApiBillHgItemByHgId(String hgId) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
return this.apiJcBillAccess.queryApiBillHgItemByHgId(hgId);
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<ApiBillHgPayment> queryApiBillHgPaymentByHgId(String hgId) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
return this.apiJcBillAccess.queryApiBillHgPaymentByHgId(hgId);
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public JcBillHg queryJcBillHg(String billHg) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
Optional<JcBillHg> optional = jcBillHgRepository.findById(billHg);
|
|
||||||
|
|
||||||
return optional.isPresent() ? optional.get() : null;
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Transactional(isolation = Isolation.DEFAULT, propagation = Propagation.REQUIRED, rollbackFor = {Exception.class})
|
|
||||||
@Override
|
|
||||||
public void updateJcBillHg(JcBillHg entity, List<JcBillHgPay> pays) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
jcBillHgRepository.save(entity);
|
|
||||||
|
|
||||||
jcBillHgPayRepository.saveAll(pays);
|
|
||||||
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public JcBillPhoto queryJcBillPhoto(String srcid, String srcitemid, String typephoto) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
return jcBillPhotoRepository.findBySrcidAndSrcitemidAndTypephoto(srcid, srcitemid, typephoto);
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<JcBillPhoto> queryJcBillPhoto(String srcid, String typephoto) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
return jcBillAccess.queryJcBillPhoto(srcid, null, typephoto);
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Transactional(isolation = Isolation.DEFAULT, propagation = Propagation.REQUIRED, rollbackFor = {Exception.class})
|
|
||||||
@Override
|
|
||||||
public void saveAndDeletePhoto(List<JcBillPhoto> photos, JcBillHg billHg) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
|
|
||||||
for(JcBillPhoto photo : photos) {
|
|
||||||
jcBillPhotoRepository.deleteBySrcidAndSrcitemidAndTypephoto(photo.getSrcid(), photo.getSrcitemid(), photo.getTypephoto());
|
|
||||||
}
|
|
||||||
|
|
||||||
jcBillPhotoRepository.saveAll(photos);
|
|
||||||
|
|
||||||
jcBillHgRepository.save(billHg);
|
|
||||||
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Transactional(isolation = Isolation.DEFAULT, propagation = Propagation.REQUIRED, rollbackFor = {Exception.class})
|
|
||||||
@Override
|
|
||||||
public void saveAndDeletePhoto(List<JcBillPhoto> photos, String billId) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
|
|
||||||
jcBillPhotoRepository.saveAll(photos);
|
|
||||||
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String lastBillHgId() throws RuntimeException {
|
|
||||||
try {
|
|
||||||
return jcBillAccess.lastBillHgId();
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<JcCodeFlow> queryJcCodeFlow(List<String> codes) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
List<JcCodeFlow> flows = apiJcBillAccess.queryJcCodeFlow(codes);
|
|
||||||
|
|
||||||
if(flows == null) return null;
|
|
||||||
|
|
||||||
// Map<String, JcCodeFlow> map = flows.stream()
|
|
||||||
// .collect(Collectors.groupingBy(e -> {
|
|
||||||
// return e.getCode();
|
|
||||||
// },
|
|
||||||
// Collectors.collectingAndThen(Collectors.toList(), value -> value.get(0))
|
|
||||||
// ));
|
|
||||||
|
|
||||||
return flows;
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<JcSourceItem> queryJcSourceItemByBillId(String billId) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
return jcBillAccess.queryJcSourceItemByBillId(billId);
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Transactional(isolation = Isolation.DEFAULT, propagation = Propagation.REQUIRED, rollbackFor = {Exception.class})
|
|
||||||
@Override
|
|
||||||
public void saveJcSourceItem(List<JcBillSourceItem> items, List<JcSourceItem> sourceItems, JcBill jcBill) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
|
|
||||||
jcBillAccess.deleteJcSourceItemBySource(jcBill.getId());
|
|
||||||
|
|
||||||
if(sourceItems != null && sourceItems.size() >= 1) jcSourceItemRepository.saveAll(sourceItems);
|
|
||||||
|
|
||||||
jcBillSourceItemRepository.saveAll(items);
|
|
||||||
|
|
||||||
boolean flag = true;
|
|
||||||
for(JcBillSourceItem item : items) {
|
|
||||||
if(item.getStatus() == 0 && item.getStatus() == -2) flag = false;
|
|
||||||
}
|
|
||||||
if(flag)jcBill.setStatus(JcBill.STATUS_ONE);
|
|
||||||
|
|
||||||
jcBillRepository.save(jcBill);
|
|
||||||
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public JcBillPhoto queryJcBillPhotoById(String id) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
Optional<JcBillPhoto> optional = jcBillPhotoRepository.findById(Long.parseLong(id));
|
|
||||||
|
|
||||||
return optional.isPresent() ? optional.get() : null;
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Transactional(isolation = Isolation.DEFAULT, propagation = Propagation.REQUIRED, rollbackFor = {Exception.class})
|
|
||||||
@Override
|
|
||||||
public void deleteJcBillPhotoById(JcBillPhoto entity) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
jcBillPhotoRepository.delete(entity);
|
|
||||||
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Transactional(isolation = Isolation.DEFAULT, propagation = Propagation.REQUIRED, rollbackFor = {Exception.class})
|
|
||||||
@Override
|
|
||||||
public void deleteJcSourceItem(String billid, String itemid) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
Optional<JcBillSourceItem> optional = jcBillSourceItemRepository.findById(Long.parseLong(itemid));
|
|
||||||
|
|
||||||
if(optional.isPresent()) {
|
|
||||||
JcBillSourceItem item = optional.get();
|
|
||||||
|
|
||||||
jcBillAccess.deleteJcBillPhoto(billid, String.valueOf(item.getIndexno()), JcBillPhoto.JC_FK);
|
|
||||||
|
|
||||||
jcBillAccess.deleteJcBillPhoto(billid, item.getIndexno() + "#" + item.getGoodsid(), JcBillPhoto.JC_HP);
|
|
||||||
|
|
||||||
jcBillSourceItemRepository.delete(item);
|
|
||||||
}
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<ApiBillHgPayment> queryApiBillHgPaymentByHgId(List<String> hgIds) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
return this.apiJcBillAccess.queryApiBillHgPaymentByHgId(hgIds);
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getBaiduToken() throws RuntimeException {
|
|
||||||
return jcBillAccess.getBaiduToken();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<JcProduct> queryJcProduct(String product, String stockInId, String hgId) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
return this.apiJcBillAccess.queryJcProduct(product, stockInId, hgId);
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Map<String, List<JcProductBillSouce>> queryJcProductBillSouce(List<String> billIds) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
List<JcProductBillSouce> billPhotos = apiJcBillAccess.queryJcProductBillSouce(billIds);
|
|
||||||
|
|
||||||
if(billPhotos == null) return new HashMap<String, List<JcProductBillSouce>>();
|
|
||||||
|
|
||||||
Map<String, List<JcProductBillSouce>> map = billPhotos.stream()
|
|
||||||
.collect(Collectors.groupingBy(e -> {
|
|
||||||
return e.getBillid() + e.getAccount() + e.getProduct();
|
|
||||||
},
|
|
||||||
Collectors.collectingAndThen(Collectors.toList(), value -> value)
|
|
||||||
));
|
|
||||||
|
|
||||||
return map;
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<JcProduct> queryJcProduct(String product, String stockInId) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
return this.apiJcBillAccess.queryJcProduct(product, stockInId);
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void updateStatusByJcBill(JcBill jcBill, int status) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
|
|
||||||
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<JcBillHg> qeryJcBillHgs(List<String> billids) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
return apiJcBillAccess.qeryJcBillHgs(billids);
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public JcBillInItem queryJcBillInItemById(Long id) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
|
|
||||||
Optional<JcBillInItem> optional = jcBillInItemRepository.findById(id);
|
|
||||||
|
|
||||||
return optional.isPresent() ? optional.get() : new JcBillInItem();
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-547
@@ -1,547 +0,0 @@
|
|||||||
package abacus.springboot.example.esb;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
|
|
||||||
import com.abacus.xpos.foundation.dao.Employee;
|
|
||||||
import com.abacus.xpos.foundation.pubs.DaoIdGenerator;
|
|
||||||
import com.abacus.xpos.foundation.wsi.EmployeeServiceIF;
|
|
||||||
import com.alibaba.fastjson.JSON;
|
|
||||||
|
|
||||||
import abacus.commons.exception.BusinessException;
|
|
||||||
import abacus.springboot.example.api.view.ApiReqJcBill;
|
|
||||||
import abacus.springboot.example.api.view.ApiReqJcBillGoodsPhoto;
|
|
||||||
import abacus.springboot.example.api.view.ApiReqJcBillItem;
|
|
||||||
import abacus.springboot.example.api.view.ApiRespJcPorduct;
|
|
||||||
import abacus.springboot.example.api.view.ApiRespJcPorductAcount;
|
|
||||||
import abacus.springboot.example.api.view.ApiRespJcPorductItem;
|
|
||||||
import abacus.springboot.example.api.view.ApiRespJcPorductProduct;
|
|
||||||
import abacus.springboot.example.api.view.JcProduct;
|
|
||||||
import abacus.springboot.example.api.view.JcProductBillSouce;
|
|
||||||
import abacus.springboot.example.dao.JcBill;
|
|
||||||
import abacus.springboot.example.dao.JcBillPhoto;
|
|
||||||
import abacus.springboot.example.dao.JcBillSourceItem;
|
|
||||||
import abacus.springboot.example.wsi.ApiJcBillServiceIF;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>Title:JcBillBizService</p>
|
|
||||||
<p>Description: 稽查单业务编排(原内聚于 Controller 的私有方法,按 5 层 DAG 下沉到 esb)</p>
|
|
||||||
@author chuanZeng
|
|
||||||
@date 2026年8月18日
|
|
||||||
*/
|
|
||||||
@Service
|
|
||||||
public class JcBillBizService {
|
|
||||||
|
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(JcBillBizService.class);
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private ApiJcBillServiceIF apiJcBillService;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private DaoIdGenerator jcBillIdGenerator;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private EmployeeServiceIF employeeService;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 稽查收货主单保存逻辑
|
|
||||||
* @param reqJcBill
|
|
||||||
* @throws Exception
|
|
||||||
*/
|
|
||||||
public void saveJcBill(ApiReqJcBill reqJcBill) throws Exception{
|
|
||||||
try {
|
|
||||||
|
|
||||||
// 稽查单号
|
|
||||||
String billId = jcBillIdGenerator.takeDaoId(null);
|
|
||||||
|
|
||||||
reqJcBill.setId(billId);
|
|
||||||
|
|
||||||
// 明细
|
|
||||||
List<ApiReqJcBillItem> items = reqJcBill.getItems();
|
|
||||||
|
|
||||||
// 解析明细
|
|
||||||
// 新增明细
|
|
||||||
List<JcBillSourceItem> createItems = new ArrayList<JcBillSourceItem>();
|
|
||||||
|
|
||||||
// 汇总数量
|
|
||||||
BigDecimal quantityBig = new BigDecimal("0");
|
|
||||||
// 汇总金额
|
|
||||||
BigDecimal subtotalBig = new BigDecimal("0");
|
|
||||||
|
|
||||||
if(items != null && items.size() >= 1) {
|
|
||||||
int indexno = 0;
|
|
||||||
for(ApiReqJcBillItem item : items) {
|
|
||||||
|
|
||||||
Double quantity = item.getQuantity();
|
|
||||||
if(quantity == null) throw new BusinessException("收货数量为空!");
|
|
||||||
if(quantity <= 0) throw new BusinessException("收货数量不能小于等于0!");
|
|
||||||
|
|
||||||
Double numbers = item.getNumbers();
|
|
||||||
if(numbers == null) throw new BusinessException("收货件数为空!");
|
|
||||||
if(numbers <= 0) throw new BusinessException("收货件数不能小于等于0!");
|
|
||||||
|
|
||||||
Double price = item.getPrice();
|
|
||||||
if(price == null) throw new BusinessException("价格为空!");
|
|
||||||
if(price <= 0) throw new BusinessException("价格不能小于等于0!");
|
|
||||||
|
|
||||||
Double subtotal = item.getSubtotal();
|
|
||||||
if(subtotal == null) throw new BusinessException("金额为空!");
|
|
||||||
if(subtotal <= 0) throw new BusinessException("金额不能小于等于0!");
|
|
||||||
|
|
||||||
item.setIndexno(++indexno);
|
|
||||||
createItems.addAll(saveJcBillItem(billId, item));
|
|
||||||
|
|
||||||
if(item.getQuantity() != null ) quantityBig = quantityBig.add(new BigDecimal(String.valueOf(item.getQuantity())));
|
|
||||||
|
|
||||||
if(item.getSubtotal() != null ) subtotalBig = subtotalBig.add(new BigDecimal(String.valueOf(item.getSubtotal())));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Employee emp = employeeService.getEmployee(reqJcBill.getApplicant());
|
|
||||||
if(emp == null) throw new BusinessException("申请人不存在!");
|
|
||||||
|
|
||||||
// 主单对象
|
|
||||||
JcBill jcBill = new JcBill();
|
|
||||||
jcBill.setId(billId);
|
|
||||||
jcBill.setStatus(JcBill.STATUS_ZERO);
|
|
||||||
jcBill.setGoods(reqJcBill.getGoods());
|
|
||||||
jcBill.setWarehouse(reqJcBill.getWarehouse());
|
|
||||||
jcBill.setWarehousename(reqJcBill.getWarehousename());
|
|
||||||
jcBill.setReceivedt(reqJcBill.getReceivedt());
|
|
||||||
jcBill.setQuantity(quantityBig.doubleValue());
|
|
||||||
jcBill.setSubtotal(subtotalBig.doubleValue());
|
|
||||||
jcBill.setApplicant(reqJcBill.getApplicant());
|
|
||||||
jcBill.setApplicantname(reqJcBill.getApplicantname());
|
|
||||||
jcBill.setDept(emp.getDept().getId());
|
|
||||||
jcBill.setApplicantdt(new Date());
|
|
||||||
|
|
||||||
apiJcBillService.saveApiReqJcBill(reqJcBill, jcBill, createItems);
|
|
||||||
} catch(Throwable e){
|
|
||||||
LOG.error(e.getMessage(), e);
|
|
||||||
e.printStackTrace();
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 稽查收货明细保存逻辑
|
|
||||||
* @param item
|
|
||||||
* @return
|
|
||||||
* @throws Exception
|
|
||||||
*/
|
|
||||||
public List<JcBillSourceItem> saveJcBillItem(String billId, ApiReqJcBillItem item) throws Exception{
|
|
||||||
try {
|
|
||||||
BigDecimal numbersBig = new BigDecimal(String.valueOf(item.getNumbers()));
|
|
||||||
BigDecimal qunantiyBig = new BigDecimal(String.valueOf(item.getQuantity()));
|
|
||||||
BigDecimal bigprice = new BigDecimal(String.valueOf(item.getPrice()));
|
|
||||||
|
|
||||||
// 余数
|
|
||||||
double yus = item.getQuantity() % item.getNumbers();
|
|
||||||
|
|
||||||
// 瓶数
|
|
||||||
BigDecimal qunantiyInt = qunantiyBig.divide(numbersBig, BigDecimal.ROUND_DOWN).setScale(0, BigDecimal.ROUND_DOWN);
|
|
||||||
|
|
||||||
// 金额
|
|
||||||
BigDecimal bigAmount = bigprice.multiply(new BigDecimal(String.valueOf(item.getQuantity())));
|
|
||||||
double subtotal = bigAmount.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
|
||||||
|
|
||||||
List<JcBillSourceItem> sourceItems = new ArrayList<JcBillSourceItem>();
|
|
||||||
JcBillSourceItem sourceItem = null;
|
|
||||||
for(int i = 0; i < item.getGoodsPhotos().size(); i++) {
|
|
||||||
|
|
||||||
ApiReqJcBillGoodsPhoto photo = item.getGoodsPhotos().get(i);
|
|
||||||
|
|
||||||
sourceItem = new JcBillSourceItem();
|
|
||||||
sourceItem.setBillid(billId);
|
|
||||||
sourceItem.setIndexno(item.getIndexno());
|
|
||||||
sourceItem.setStatus(0);
|
|
||||||
sourceItem.setRecsource(item.getRecsource());
|
|
||||||
sourceItem.setRecplatform(item.getRecplatform());
|
|
||||||
sourceItem.setChannel(item.getChannel());
|
|
||||||
sourceItem.setPrice(item.getPrice());
|
|
||||||
|
|
||||||
if(i == (item.getGoodsPhotos().size() - 1)) {
|
|
||||||
sourceItem.setQuantity(qunantiyInt.doubleValue() + yus);
|
|
||||||
} else {
|
|
||||||
sourceItem.setQuantity(qunantiyInt.doubleValue());
|
|
||||||
}
|
|
||||||
|
|
||||||
sourceItem.setNumbers(1);
|
|
||||||
sourceItem.setSubtotal(subtotal);
|
|
||||||
|
|
||||||
sourceItem.setGoodsid(photo.getGoodsid());
|
|
||||||
sourceItem.setLogisticsid(photo.getLogisticsid());
|
|
||||||
sourceItems.add(sourceItem);
|
|
||||||
}
|
|
||||||
return sourceItems;
|
|
||||||
} catch(Throwable e){
|
|
||||||
LOG.error(e.getMessage(), e);
|
|
||||||
e.printStackTrace();
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 稽查收货主单修改逻辑
|
|
||||||
* @param reqJcBill
|
|
||||||
* @throws Exception
|
|
||||||
*/
|
|
||||||
public void updateJcbill(ApiReqJcBill reqJcBill) throws Exception{
|
|
||||||
try {
|
|
||||||
|
|
||||||
// 稽查单号
|
|
||||||
String billId = reqJcBill.getId();
|
|
||||||
|
|
||||||
// 明细
|
|
||||||
List<ApiReqJcBillItem> items = reqJcBill.getItems();
|
|
||||||
|
|
||||||
// 解析明细
|
|
||||||
// 新增明细
|
|
||||||
List<JcBillSourceItem> createItems = new ArrayList<JcBillSourceItem>();
|
|
||||||
// 修改明细
|
|
||||||
List<JcBillSourceItem> updateItems = new ArrayList<JcBillSourceItem>();
|
|
||||||
|
|
||||||
// 汇总数量
|
|
||||||
BigDecimal quantityBig = new BigDecimal("0");
|
|
||||||
// 汇总金额
|
|
||||||
BigDecimal subtotalBig = new BigDecimal("0");
|
|
||||||
|
|
||||||
/*if(items != null && items.size() >= 1) {
|
|
||||||
int indexno = apiJcBillService.countJcBillItemIndexno(billId);
|
|
||||||
for(ApiReqJcBillItem item : items) {
|
|
||||||
if(item.getId() == null) {
|
|
||||||
|
|
||||||
item.setIndexno(++indexno);
|
|
||||||
createItems.addAll(saveJcBillItem(billId, item));
|
|
||||||
} else {
|
|
||||||
|
|
||||||
updateItems.addAll(updateJcbillItem(billId, item));
|
|
||||||
}
|
|
||||||
|
|
||||||
if(item.getQuantity() != null ) quantityBig = quantityBig.add(new BigDecimal(String.valueOf(item.getQuantity())));
|
|
||||||
|
|
||||||
if(item.getSubtotal() != null ) subtotalBig = subtotalBig.add(new BigDecimal(String.valueOf(item.getSubtotal())));
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
if(items != null && items.size() >= 1) {
|
|
||||||
int indexno = 0;
|
|
||||||
for(ApiReqJcBillItem item : items) {
|
|
||||||
|
|
||||||
Double quantity = item.getQuantity();
|
|
||||||
if(quantity == null) throw new BusinessException("收货数量为空!");
|
|
||||||
if(quantity <= 0) throw new BusinessException("收货数量不能小于等于0!");
|
|
||||||
|
|
||||||
Double numbers = item.getNumbers();
|
|
||||||
if(numbers == null) throw new BusinessException("收货件数为空!");
|
|
||||||
if(numbers <= 0) throw new BusinessException("收货件数不能小于等于0!");
|
|
||||||
|
|
||||||
Double price = item.getPrice();
|
|
||||||
if(price == null) throw new BusinessException("价格为空!");
|
|
||||||
if(price <= 0) throw new BusinessException("价格不能小于等于0!");
|
|
||||||
|
|
||||||
Double subtotal = item.getSubtotal();
|
|
||||||
if(subtotal == null) throw new BusinessException("金额为空!");
|
|
||||||
if(subtotal <= 0) throw new BusinessException("金额不能小于等于0!");
|
|
||||||
|
|
||||||
item.setIndexno(++indexno);
|
|
||||||
createItems.addAll(saveJcBillItem(billId, item));
|
|
||||||
|
|
||||||
if(item.getQuantity() != null ) quantityBig = quantityBig.add(new BigDecimal(String.valueOf(item.getQuantity())));
|
|
||||||
|
|
||||||
if(item.getSubtotal() != null ) subtotalBig = subtotalBig.add(new BigDecimal(String.valueOf(item.getSubtotal())));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Employee emp = employeeService.getEmployee(reqJcBill.getApplicant());
|
|
||||||
if(emp == null) throw new BusinessException("申请人不存在!");
|
|
||||||
|
|
||||||
// 主单对象
|
|
||||||
JcBill jcBill = new JcBill();
|
|
||||||
jcBill.setId(reqJcBill.getId());
|
|
||||||
jcBill.setStatus(JcBill.STATUS_ZERO);
|
|
||||||
jcBill.setGoods(reqJcBill.getGoods());
|
|
||||||
jcBill.setWarehouse(reqJcBill.getWarehouse());
|
|
||||||
jcBill.setWarehousename(reqJcBill.getWarehousename());
|
|
||||||
jcBill.setReceivedt(reqJcBill.getReceivedt());
|
|
||||||
jcBill.setQuantity(quantityBig.doubleValue());
|
|
||||||
jcBill.setSubtotal(subtotalBig.doubleValue());
|
|
||||||
jcBill.setApplicant(reqJcBill.getApplicant());
|
|
||||||
jcBill.setApplicantname(reqJcBill.getApplicantname());
|
|
||||||
jcBill.setDept(emp.getDept().getId());
|
|
||||||
jcBill.setApplicantdt(new Date());
|
|
||||||
|
|
||||||
apiJcBillService.updateApiReqJcBill(reqJcBill, jcBill, createItems, updateItems);
|
|
||||||
|
|
||||||
} catch(Throwable e){
|
|
||||||
LOG.error(e.getMessage(), e);
|
|
||||||
e.printStackTrace();
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 稽查收货明细修改逻辑
|
|
||||||
* @param item
|
|
||||||
* @return
|
|
||||||
* @throws Exception
|
|
||||||
*/
|
|
||||||
public List<JcBillSourceItem> updateJcbillItem(String billId, ApiReqJcBillItem item) throws Exception{
|
|
||||||
try {
|
|
||||||
BigDecimal numbersBig = new BigDecimal(String.valueOf(item.getNumbers()));
|
|
||||||
BigDecimal qunantiyBig = new BigDecimal(String.valueOf(item.getQuantity()));
|
|
||||||
BigDecimal bigprice = new BigDecimal(String.valueOf(item.getPrice()));
|
|
||||||
|
|
||||||
// 余数
|
|
||||||
double yus = item.getQuantity() % item.getNumbers();
|
|
||||||
|
|
||||||
// 瓶数
|
|
||||||
BigDecimal qunantiyInt = qunantiyBig.divide(numbersBig, BigDecimal.ROUND_DOWN).setScale(0, BigDecimal.ROUND_DOWN);
|
|
||||||
|
|
||||||
// 金额
|
|
||||||
BigDecimal bigAmount = bigprice.multiply(new BigDecimal(String.valueOf(item.getQuantity())));
|
|
||||||
double subtotal = bigAmount.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
|
||||||
|
|
||||||
List<JcBillSourceItem> sourceItems = new ArrayList<JcBillSourceItem>();
|
|
||||||
JcBillSourceItem sourceItem = null;
|
|
||||||
for(int i = 0; i < item.getGoodsPhotos().size(); i++) {
|
|
||||||
|
|
||||||
ApiReqJcBillGoodsPhoto photo = item.getGoodsPhotos().get(i);
|
|
||||||
|
|
||||||
sourceItem = new JcBillSourceItem();
|
|
||||||
sourceItem.setId(item.getId());
|
|
||||||
sourceItem.setBillid(billId);
|
|
||||||
sourceItem.setIndexno(item.getIndexno());
|
|
||||||
sourceItem.setStatus(0);
|
|
||||||
sourceItem.setRecsource(item.getRecsource());
|
|
||||||
sourceItem.setRecplatform(item.getRecplatform());
|
|
||||||
sourceItem.setChannel(item.getChannel());
|
|
||||||
sourceItem.setPrice(item.getPrice());
|
|
||||||
|
|
||||||
if(i == (item.getGoodsPhotos().size() - 1)) {
|
|
||||||
sourceItem.setQuantity(qunantiyInt.doubleValue() + yus);
|
|
||||||
} else {
|
|
||||||
sourceItem.setQuantity(qunantiyInt.doubleValue());
|
|
||||||
}
|
|
||||||
|
|
||||||
sourceItem.setNumbers(1);
|
|
||||||
sourceItem.setSubtotal(subtotal);
|
|
||||||
|
|
||||||
sourceItem.setGoodsid(photo.getGoodsid());
|
|
||||||
sourceItem.setLogisticsid(photo.getLogisticsid());
|
|
||||||
sourceItems.add(sourceItem);
|
|
||||||
}
|
|
||||||
return sourceItems;
|
|
||||||
|
|
||||||
// JcBillSourceItem sourceItem = new JcBillSourceItem();
|
|
||||||
// sourceItem.setId(item.getId());
|
|
||||||
// sourceItem.setBillid(billId);
|
|
||||||
// sourceItem.setIndexno(item.getIndexno());
|
|
||||||
// sourceItem.setStatus(1);
|
|
||||||
// sourceItem.setRecsource(sourceItem.getRecsource());
|
|
||||||
// sourceItem.setRecplatform(sourceItem.getRecplatform());
|
|
||||||
// sourceItem.setChannel(sourceItem.getChannel());
|
|
||||||
// sourceItem.setPrice(sourceItem.getPrice());
|
|
||||||
// sourceItem.setQuantity(sourceItem.getQuantity());
|
|
||||||
// sourceItem.setNumbers(sourceItem.getNumbers());
|
|
||||||
// sourceItem.setSubtotal(sourceItem.getSubtotal());
|
|
||||||
// sourceItem.setGoodsid(sourceItem.getGoodsid());
|
|
||||||
// sourceItem.setLogisticsid(sourceItem.getLogisticsid());
|
|
||||||
//
|
|
||||||
// return sourceItem;
|
|
||||||
} catch(Throwable e){
|
|
||||||
LOG.error(e.getMessage(), e);
|
|
||||||
e.printStackTrace();
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 回购单号是按回购单显示明细,以回购单号为主,解析
|
|
||||||
* @param product
|
|
||||||
* @param stockInId
|
|
||||||
* @param hgId
|
|
||||||
* @return
|
|
||||||
* @throws Exception
|
|
||||||
*/
|
|
||||||
public List<ApiRespJcPorduct> hgAnalyze(String product, String stockInId, String hgId) throws Exception {
|
|
||||||
try {
|
|
||||||
|
|
||||||
long time1 = System.currentTimeMillis();
|
|
||||||
List<JcProduct> jcProducts = apiJcBillService.queryJcProduct(product, stockInId, hgId);
|
|
||||||
LOG.info("稽查货品查询>>>回购单逻辑>>>queryJcProduct耗时>>>{}", (System.currentTimeMillis() - time1));
|
|
||||||
|
|
||||||
// 获取稽查单号集合
|
|
||||||
List<String> billIds = jcProducts.stream()
|
|
||||||
.map(JcProduct::getBillid)
|
|
||||||
.collect(Collectors.toList());
|
|
||||||
|
|
||||||
long time2 = System.currentTimeMillis();
|
|
||||||
Map<String, List<JcProductBillSouce>> mapGoods = apiJcBillService.queryJcProductBillSouce(billIds);
|
|
||||||
LOG.info("稽查货品查询>>>回购单逻辑>>>queryJcProductBillSouce耗时>>>{}", (System.currentTimeMillis() - time2));
|
|
||||||
|
|
||||||
LOG.info("稽查货品查询>>>回购单逻辑>>>按稽查单号+客户编码+商品编码,分组数据>>>{}", JSON.toJSONString(mapGoods));
|
|
||||||
|
|
||||||
|
|
||||||
long time3 = System.currentTimeMillis();
|
|
||||||
Map<String, List<JcBillPhoto>> mapPhoto = apiJcBillService.queryJcBillPhotoIn(billIds);
|
|
||||||
LOG.info("稽查货品查询>>>回购单逻辑>>>queryJcBillPhotoIn查询耗时>>>{}", (System.currentTimeMillis() - time3));
|
|
||||||
|
|
||||||
// 按稽查单号+入库单号+回购单号+出库单号,分组
|
|
||||||
Map<String, List<JcProduct>> mapProducts = jcProducts.stream()
|
|
||||||
.collect(Collectors.groupingBy(e -> {
|
|
||||||
return e.getBillid() + e.getBillin() + e.getBillhg() + e.getWdtbillout();
|
|
||||||
},
|
|
||||||
Collectors.collectingAndThen(Collectors.toList(), value -> value)
|
|
||||||
));
|
|
||||||
LOG.info("稽查货品查询>>>回购单逻辑>>>按稽查单号+入库单号+回购单号+出库单号,分组数据>>>{}", JSON.toJSONString(mapProducts));
|
|
||||||
|
|
||||||
// 客户编码汇总,同一个客户下的商品
|
|
||||||
Map<String, List<JcProduct>> mapAccProducts = jcProducts.stream()
|
|
||||||
.collect(Collectors.groupingBy(e -> {
|
|
||||||
return e.getBillid() + e.getBillin() + e.getBillhg()+ e.getAccount();
|
|
||||||
},
|
|
||||||
Collectors.collectingAndThen(Collectors.toList(), value -> value)
|
|
||||||
));
|
|
||||||
LOG.info("稽查货品查询>>>回购单逻辑>>>按稽查单号+入库单号+回购单号+客户编码,分组数据>>>{}", JSON.toJSONString(mapAccProducts));
|
|
||||||
|
|
||||||
|
|
||||||
long time4 = System.currentTimeMillis();
|
|
||||||
List<ApiRespJcPorduct> respJcProducts = new ArrayList<ApiRespJcPorduct>();
|
|
||||||
ApiRespJcPorduct respJcProduct = null;
|
|
||||||
for(String key : mapProducts.keySet()) {
|
|
||||||
|
|
||||||
List<JcProduct> tempJcProducts = mapProducts.get(key);
|
|
||||||
|
|
||||||
JcProduct jcProduct = tempJcProducts.get(0);
|
|
||||||
|
|
||||||
respJcProduct = new ApiRespJcPorduct();
|
|
||||||
if(jcProduct.getBillid() != null) respJcProduct.setBillId(jcProduct.getBillid());
|
|
||||||
if(jcProduct.getBillin() != null) respJcProduct.setStockInId(jcProduct.getBillin());
|
|
||||||
if(jcProduct.getBillhg() != null) respJcProduct.setHgId(jcProduct.getBillhg());
|
|
||||||
if(jcProduct.getWdtbillout() != null) respJcProduct.setStockOutId(jcProduct.getWdtbillout());
|
|
||||||
|
|
||||||
List<ApiRespJcPorductAcount> accounts = new ArrayList<ApiRespJcPorductAcount>();
|
|
||||||
ApiRespJcPorductAcount account = null;
|
|
||||||
for(JcProduct tempJcProduct : tempJcProducts) {
|
|
||||||
|
|
||||||
account = new ApiRespJcPorductAcount();
|
|
||||||
account.setAccount(tempJcProduct.getAccount());
|
|
||||||
account.setAccountName(tempJcProduct.getAccountname());
|
|
||||||
|
|
||||||
String keyAccount = tempJcProduct.getBillid() + tempJcProduct.getBillin() + tempJcProduct.getBillhg() +tempJcProduct.getAccount();
|
|
||||||
|
|
||||||
List<JcProduct> accTempJcProducts = mapAccProducts.get(keyAccount);
|
|
||||||
|
|
||||||
LOG.info("稽查货品查询>>>回购单逻辑>>>按稽查单号+入库单号+回购单号+客户编码({}),汇总同一客户数据>>>{}", keyAccount, JSON.toJSONString(accTempJcProducts));
|
|
||||||
|
|
||||||
List<ApiRespJcPorductProduct> products = new ArrayList<ApiRespJcPorductProduct>();
|
|
||||||
ApiRespJcPorductProduct ajproduct = null;
|
|
||||||
for(JcProduct accJcProduct : accTempJcProducts) {
|
|
||||||
|
|
||||||
ajproduct = new ApiRespJcPorductProduct();
|
|
||||||
ajproduct.setProduct(tempJcProduct.getProduct());
|
|
||||||
ajproduct.setProductName(tempJcProduct.getProductname());
|
|
||||||
ajproduct.setQuantity(tempJcProduct.getQuantity() + "瓶/" + tempJcProduct.getNumbers() + "件");
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
String keyGoods = accJcProduct.getBillid() + accJcProduct.getAccount() + accJcProduct.getProduct();
|
|
||||||
|
|
||||||
List<JcProductBillSouce> tempGoods = mapGoods.get(keyGoods);
|
|
||||||
|
|
||||||
LOG.info("稽查货品查询>>>回购单逻辑>>>按稽查单号+客户编码+商品编码({}),分组数据>>>{}", keyGoods, JSON.toJSONString(tempGoods));
|
|
||||||
|
|
||||||
List<ApiRespJcPorductItem> items = new ArrayList<ApiRespJcPorductItem>();
|
|
||||||
ApiRespJcPorductItem item = null;
|
|
||||||
for(JcProductBillSouce tempGood : tempGoods) {
|
|
||||||
item = new ApiRespJcPorductItem();
|
|
||||||
item.setGoodsId(tempGood.getGoodsid());
|
|
||||||
|
|
||||||
List<JcBillPhoto> hpts = mapPhoto.get(JcBillPhoto.JC_HP + "#" + String.valueOf(tempGood.getIndexno()) + "#" + String.valueOf(tempGood.getGoodsid()));
|
|
||||||
List<String> hptList = new ArrayList<String>();
|
|
||||||
if(hpts != null && hpts.size() >= 1) {
|
|
||||||
for(JcBillPhoto hpt : hpts) {
|
|
||||||
if(tempGood.getBillid().equals(hpt.getSrcid())) {
|
|
||||||
hptList.add(hpt.getUrlphoto());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
item.setPhotos(hptList);
|
|
||||||
|
|
||||||
items.add(item);
|
|
||||||
/*if(StringUtils.isBlank(product)) {
|
|
||||||
item = new ApiRespJcPorductItem();
|
|
||||||
item.setGoodsId(tempGood.getGoodsid());
|
|
||||||
|
|
||||||
List<JcBillPhoto> hpts = mapPhoto.get(JcBillPhoto.JC_HP + "#" + String.valueOf(tempGood.getIndexno()) + "#" + String.valueOf(tempGood.getGoodsid()));
|
|
||||||
List<String> hptList = new ArrayList<String>();
|
|
||||||
if(hpts != null && hpts.size() >= 1) {
|
|
||||||
for(JcBillPhoto hpt : hpts) {
|
|
||||||
hptList.add(hpt.getUrlphoto());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
item.setPhotos(hptList);
|
|
||||||
|
|
||||||
items.add(item);
|
|
||||||
} else {
|
|
||||||
if(product.equals(tempGood.getGoodsid())) {
|
|
||||||
item = new ApiRespJcPorductItem();
|
|
||||||
item.setGoodsId(tempGood.getGoodsid());
|
|
||||||
|
|
||||||
List<JcBillPhoto> hpts = mapPhoto.get(JcBillPhoto.JC_HP + "#" + String.valueOf(tempGood.getIndexno()) + "#" + String.valueOf(tempGood.getGoodsid()));
|
|
||||||
List<String> hptList = new ArrayList<String>();
|
|
||||||
if(hpts != null && hpts.size() >= 1) {
|
|
||||||
for(JcBillPhoto hpt : hpts) {
|
|
||||||
hptList.add(hpt.getUrlphoto());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
item.setPhotos(hptList);
|
|
||||||
|
|
||||||
items.add(item);
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
if(items.size() >= 1) {
|
|
||||||
ajproduct.setItems(items);
|
|
||||||
|
|
||||||
products.add(ajproduct);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(products.size() >= 1) {
|
|
||||||
account.setProducts(products);
|
|
||||||
|
|
||||||
accounts.add(account);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(accounts.size() >= 1) {
|
|
||||||
respJcProduct.setAccounts(accounts);
|
|
||||||
|
|
||||||
respJcProducts.add(respJcProduct);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
LOG.info("稽查货品查询>>>回购单逻辑>>>数据封装耗时>>>{}", (System.currentTimeMillis() - time4));
|
|
||||||
|
|
||||||
return respJcProducts;
|
|
||||||
} catch (Exception e) {
|
|
||||||
LOG.error(e.getMessage(), e);
|
|
||||||
e.printStackTrace();
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
-719
@@ -1,719 +0,0 @@
|
|||||||
package abacus.springboot.example.esb;
|
|
||||||
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Optional;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
import org.apache.commons.lang.StringUtils;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.data.domain.Page;
|
|
||||||
import org.springframework.data.domain.Pageable;
|
|
||||||
import org.springframework.stereotype.Repository;
|
|
||||||
import org.springframework.transaction.annotation.Isolation;
|
|
||||||
import org.springframework.transaction.annotation.Propagation;
|
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
|
||||||
|
|
||||||
import abacus.commons.context.interceptor.UserContext;
|
|
||||||
import abacus.commons.exception.BusinessException;
|
|
||||||
import abacus.config.ext.AbacusExtConfig;
|
|
||||||
import abacus.springboot.example.dao.JcBill;
|
|
||||||
import abacus.springboot.example.dao.JcBillHg;
|
|
||||||
import abacus.springboot.example.dao.JcBillInItem;
|
|
||||||
import abacus.springboot.example.dao.JcBillPhoto;
|
|
||||||
import abacus.springboot.example.dao.JcBillSourceItem;
|
|
||||||
import abacus.springboot.example.dao.JcSourceItem;
|
|
||||||
import abacus.springboot.example.pi.JcBillAccessIF;
|
|
||||||
import abacus.springboot.example.repository.JcBillHgRepository;
|
|
||||||
import abacus.springboot.example.repository.JcBillInItemRepository;
|
|
||||||
import abacus.springboot.example.repository.JcBillPhotoRepository;
|
|
||||||
import abacus.springboot.example.repository.JcBillRepository;
|
|
||||||
import abacus.springboot.example.repository.JcBillSourceItemRepository;
|
|
||||||
import abacus.springboot.example.repository.JcSourceItemRepository;
|
|
||||||
import abacus.springboot.example.util.RequestUtil;
|
|
||||||
import abacus.springboot.example.vo.PMSConfigKey;
|
|
||||||
import abacus.springboot.example.vo.SiDepositlocation;
|
|
||||||
import abacus.springboot.example.wsi.JcBillServiceIF;
|
|
||||||
|
|
||||||
@Repository
|
|
||||||
public class JcBillService implements JcBillServiceIF{
|
|
||||||
|
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(JcBillService.class);
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private JcBillAccessIF jcBillAccess;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private JcBillRepository jcBillRepository;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private JcBillSourceItemRepository jcBillSourceItemRepository;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private JcBillHgRepository jcBillHgRepository;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private JcSourceItemRepository jcSourceItemRepository;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private JcBillInItemRepository jcBillInItemRepository;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private JcBillPhotoRepository jcBillPhotoRepository;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private AbacusExtConfig abacusExtConfig;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Page<JcBill> queryJcBill(String fromDate, String thruDate, String id, String applicant, String goods,
|
|
||||||
String billin, String goodsid, String product, String status, int typ, Pageable pageable) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
return this.jcBillAccess.queryJcBill(fromDate, thruDate, applicant, goods, id, billin, goodsid, product, status, typ, pageable);
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public JcBill queryJcBillById(String billId) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
Optional<JcBill> optional = jcBillRepository.findById(billId);
|
|
||||||
|
|
||||||
return optional.isPresent() ? optional.get() : null;
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<JcBillSourceItem> queryJcBillSourceItemByBillId(String billId) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
List<JcBillSourceItem> list = jcBillSourceItemRepository.findByBillid(billId);
|
|
||||||
|
|
||||||
return (list != null && list.size() >= 1) ? list : null;
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public JcBillHg queryJcBillHg(String billHg) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
Optional<JcBillHg> optional = jcBillHgRepository.findById(billHg);
|
|
||||||
|
|
||||||
return optional.isPresent() ? optional.get() : null;
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<JcSourceItem> queryJcSourceItemByBillId(String billId) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
return jcBillAccess.queryJcSourceItemByBillId(billId);
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Map<String, List<JcBillPhoto>> queryJcBillPhoto(String srcid) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
List<JcBillPhoto> billPhotos = jcBillAccess.queryJcBillPhoto(srcid, null, null);
|
|
||||||
|
|
||||||
if(billPhotos == null) return new HashMap<String, List<JcBillPhoto>>();
|
|
||||||
|
|
||||||
Map<String, List<JcBillPhoto>> map = billPhotos.stream()
|
|
||||||
.collect(Collectors.groupingBy(e -> {
|
|
||||||
return e.getTypephoto() + "#" + e.getSrcitemid();
|
|
||||||
},
|
|
||||||
Collectors.collectingAndThen(Collectors.toList(), value -> value)
|
|
||||||
));
|
|
||||||
|
|
||||||
return map;
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<JcSourceItem> queryJcSourceItemByBillId(String billId, String srcitemid) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
return jcSourceItemRepository.findByBillidAndSrcitemid(billId, srcitemid);
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public JcBillSourceItem queryJcBillSourceItemById(Long id) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
Optional<JcBillSourceItem> optional = jcBillSourceItemRepository.findById(id);
|
|
||||||
|
|
||||||
return optional.isPresent() ? optional.get() : null;
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public JcSourceItem queryJcSourceItemById(Long id) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
Optional<JcSourceItem> optional = jcSourceItemRepository.findById(id);
|
|
||||||
|
|
||||||
return optional.isPresent() ? optional.get() : null;
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Transactional(isolation = Isolation.DEFAULT, propagation = Propagation.REQUIRED, rollbackFor = {Exception.class})
|
|
||||||
@Override
|
|
||||||
public void saveQuerenBillSourceItem(JcBillSourceItem billItem, JcSourceItem sourceItem) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
|
|
||||||
jcBillSourceItemRepository.save(billItem);
|
|
||||||
|
|
||||||
jcSourceItemRepository.save(sourceItem);
|
|
||||||
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Transactional(isolation = Isolation.DEFAULT, propagation = Propagation.REQUIRED, rollbackFor = {Exception.class})
|
|
||||||
@Override
|
|
||||||
public void saveRejectJcSourceItems(JcBillSourceItem billItem, JcBill jcBill) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
|
|
||||||
jcBillSourceItemRepository.save(billItem);
|
|
||||||
|
|
||||||
jcBillRepository.save(jcBill);
|
|
||||||
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Transactional(isolation = Isolation.DEFAULT, propagation = Propagation.REQUIRED, rollbackFor = {Exception.class})
|
|
||||||
@Override
|
|
||||||
public void saveCompleteJcBill(List<JcBillInItem> inItems, JcBill jcBill) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
|
|
||||||
jcBillInItemRepository.saveAll(inItems);
|
|
||||||
|
|
||||||
jcBillRepository.save(jcBill);
|
|
||||||
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Transactional(isolation = Isolation.DEFAULT, propagation = Propagation.REQUIRED, rollbackFor = {Exception.class})
|
|
||||||
@Override
|
|
||||||
public void updateWarehouse(JcBill jcBill) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
|
|
||||||
jcBillRepository.save(jcBill);
|
|
||||||
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<JcBillInItem> queryJcBillInItemByBillId(String billId, int status) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
List<JcBillInItem> list = jcBillInItemRepository.findByBillidAndStatus(billId, status);
|
|
||||||
|
|
||||||
return (list != null && list.size() >= 1) ? list : null;
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<JcBillInItem> queryJcBillInItemByBillId(String billId) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
List<JcBillInItem> list = jcBillInItemRepository.findByBillid(billId);
|
|
||||||
|
|
||||||
return (list != null && list.size() >= 1) ? list : null;
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Transactional(isolation = Isolation.DEFAULT, propagation = Propagation.REQUIRED, rollbackFor = {Exception.class})
|
|
||||||
@Override
|
|
||||||
public void createStockIn(JcBill jcBill) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
|
|
||||||
jcBillRepository.save(jcBill);
|
|
||||||
|
|
||||||
jcBillAccess.saveEvent(jcBill.getId(), "稽查收货", "其他入库");
|
|
||||||
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public JcBillInItem queryJcBillInItemById(Long id) {
|
|
||||||
try {
|
|
||||||
Optional<JcBillInItem> optional = jcBillInItemRepository.findById(id);
|
|
||||||
|
|
||||||
return optional.isPresent() ? optional.get() : null;
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Transactional(isolation = Isolation.DEFAULT, propagation = Propagation.REQUIRED, rollbackFor = {Exception.class})
|
|
||||||
@Override
|
|
||||||
public void saveTerminateHgInItem(JcBillInItem inItem) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
|
|
||||||
jcBillInItemRepository.save(inItem);
|
|
||||||
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<JcBillInItem> findAllById(List<Long> ids) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
return jcBillInItemRepository.findAllById(ids);
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Transactional(isolation = Isolation.DEFAULT, propagation = Propagation.REQUIRED, rollbackFor = {Exception.class})
|
|
||||||
@Override
|
|
||||||
public void saveInformHg(List<JcBillInItem> inItems, JcBill jcBill, JcBillHg jcBillHg, String photoUrl) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
|
|
||||||
JcBillPhoto photo = new JcBillPhoto();
|
|
||||||
photo.setSrcid(jcBillHg.getId());
|
|
||||||
photo.setSrcitemid(jcBillHg.getId());
|
|
||||||
photo.setTypephoto(JcBillPhoto.HG_TZH);
|
|
||||||
photo.setUrlphoto(photoUrl);
|
|
||||||
|
|
||||||
jcBillPhotoRepository.save(photo);
|
|
||||||
|
|
||||||
jcBillInItemRepository.saveAll(inItems);
|
|
||||||
|
|
||||||
jcBillRepository.save(jcBill);
|
|
||||||
|
|
||||||
jcBillHgRepository.save(jcBillHg);
|
|
||||||
|
|
||||||
jcBillAccess.saveEvent(jcBillHg.getId(), "回购订单", "回购通知");
|
|
||||||
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Page<JcBillHg> queryJcBillHg(String fromDate, String thruDate, String account, String salearea, String id,
|
|
||||||
String billId, String status, String product, String manager, int typ, Pageable pageable)
|
|
||||||
throws RuntimeException {
|
|
||||||
try {
|
|
||||||
|
|
||||||
return jcBillAccess.queryJcBillHg(fromDate, thruDate, account, salearea, id, billId, status, product, manager, typ, pageable);
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<JcBillInItem> queryJcBillInItemByBillHg(String billHgId) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
List<JcBillInItem> list = jcBillInItemRepository.findByBillhg(billHgId);
|
|
||||||
|
|
||||||
return (list != null && list.size() >= 1) ? list : null;
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Transactional(isolation = Isolation.DEFAULT, propagation = Propagation.REQUIRED, rollbackFor = {Exception.class})
|
|
||||||
@Override
|
|
||||||
public void saveRejectBillHg(int status, int typ, JcBill jcBill, JcBillHg billHg, List<JcBillInItem> inItems) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
if(JcBillHg.STATUS_ONE == status) {
|
|
||||||
|
|
||||||
jcBillRepository.save(jcBill);
|
|
||||||
jcBillHgRepository.save(billHg);
|
|
||||||
jcBillInItemRepository.saveAll(inItems);
|
|
||||||
|
|
||||||
|
|
||||||
} else if(JcBillHg.STATUS_TWO == status) {
|
|
||||||
|
|
||||||
jcBillHgRepository.save(billHg);
|
|
||||||
|
|
||||||
|
|
||||||
} else if(JcBillHg.STATUS_THREE == status || JcBillHg.STATUS_FOUR == status) {
|
|
||||||
|
|
||||||
jcBillHgRepository.save(billHg);
|
|
||||||
|
|
||||||
} else if (JcBillHg.STATUS_FIVE == status){
|
|
||||||
|
|
||||||
// 删除对应的事件
|
|
||||||
jcBillAccess.deleteEvent(billHg.getId(), "回购分仓", "回购分仓");
|
|
||||||
} else {
|
|
||||||
throw new BusinessException("未知状态不能驳回!");
|
|
||||||
}
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Transactional(isolation = Isolation.DEFAULT, propagation = Propagation.REQUIRED, rollbackFor = {Exception.class})
|
|
||||||
@Override
|
|
||||||
public void saveQuerenSk(JcBillHg billHg, boolean fcFlag) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
billHg.setAudit(UserContext.getUserId());
|
|
||||||
billHg.setAuditname(UserContext.getUserName());
|
|
||||||
billHg.setAuditdt(new Date());
|
|
||||||
jcBillHgRepository.save(billHg);
|
|
||||||
|
|
||||||
if(fcFlag) {
|
|
||||||
|
|
||||||
jcBillAccess.saveEvent(billHg.getId(), "回购分仓", "回购分仓");
|
|
||||||
|
|
||||||
}
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Transactional(isolation = Isolation.DEFAULT, propagation = Propagation.REQUIRED, rollbackFor = {Exception.class})
|
|
||||||
@Override
|
|
||||||
public void savecreateFc(JcBillHg billHg) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
|
|
||||||
jcBillHgRepository.save(billHg);
|
|
||||||
|
|
||||||
jcBillAccess.saveEvent(billHg.getId(), "回购分仓", "回购分仓");
|
|
||||||
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Transactional(isolation = Isolation.DEFAULT, propagation = Propagation.REQUIRED, rollbackFor = {Exception.class})
|
|
||||||
@Override
|
|
||||||
public void updateFcWarehouse(String oldJsonStr, JcBillHg billHg) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
|
|
||||||
jcBillHgRepository.save(billHg);
|
|
||||||
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Transactional(isolation = Isolation.DEFAULT, propagation = Propagation.REQUIRED, rollbackFor = {Exception.class})
|
|
||||||
@Override
|
|
||||||
public JcSourceItem saveJcSourceItem(JcSourceItem item) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
|
|
||||||
JcSourceItem tempItem = jcSourceItemRepository.save(item);
|
|
||||||
|
|
||||||
|
|
||||||
return tempItem;
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Transactional(isolation = Isolation.DEFAULT, propagation = Propagation.REQUIRED, rollbackFor = {Exception.class})
|
|
||||||
@Override
|
|
||||||
public void deleteJcSourceItem(List<Long> ids) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
|
|
||||||
jcBillAccess.deleteJcSourceItem(ids);
|
|
||||||
|
|
||||||
// /*操作日志*/
|
|
||||||
// OperationLog log = new OperationLog("jc_bill", item.getBillid(), "删除溯源确认信息", "", "", JSON.toJSONString(item));
|
|
||||||
// log.setOperator(UserContext.getUserId());
|
|
||||||
// log.setOperatorName(UserContext.getUserName());
|
|
||||||
// BusinessESUtil.checkService(this.operationLogService).saveOperationLog(log);
|
|
||||||
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Transactional(isolation = Isolation.DEFAULT, propagation = Propagation.REQUIRED, rollbackFor = {Exception.class})
|
|
||||||
@Override
|
|
||||||
public void updateHgprice(JcBillInItem inItem) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
jcBillInItemRepository.save(inItem);
|
|
||||||
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Transactional(isolation = Isolation.DEFAULT, propagation = Propagation.REQUIRED, rollbackFor = {Exception.class})
|
|
||||||
@Override
|
|
||||||
public void updateRemark(String oldJsonStr, JcBillHg billHg) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
|
|
||||||
jcBillHgRepository.save(billHg);
|
|
||||||
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Transactional(isolation = Isolation.DEFAULT, propagation = Propagation.REQUIRED, rollbackFor = {Exception.class})
|
|
||||||
@Override
|
|
||||||
public void updatePac(String oldJsonStr, JcBillHg billHg) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
|
|
||||||
jcBillHgRepository.save(billHg);
|
|
||||||
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Transactional(isolation = Isolation.DEFAULT, propagation = Propagation.REQUIRED, rollbackFor = {Exception.class})
|
|
||||||
@Override
|
|
||||||
public void updateOperatorname(JcBillInItem inItem, String oldStr) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
jcBillInItemRepository.save(inItem);
|
|
||||||
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void saveJcBillInItem(List<JcBillInItem> items) throws RuntimeException {
|
|
||||||
jcBillInItemRepository.saveAll(items);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<JcBillSourceItem> queryJcBillSourceItemInBillId(List<String> billIds) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
return jcBillAccess.queryJcBillSourceItemInBillId(billIds);
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Transactional(isolation = Isolation.DEFAULT, propagation = Propagation.REQUIRED, rollbackFor = {Exception.class})
|
|
||||||
@Override
|
|
||||||
public void saveRejectBill(int status, JcBill jcBill, List<JcBillInItem> inItems, List<JcBillSourceItem> sourceItems) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
|
|
||||||
jcBillRepository.save(jcBill);
|
|
||||||
jcBillSourceItemRepository.saveAll(sourceItems);
|
|
||||||
if(inItems != null) jcBillInItemRepository.deleteAll(inItems);
|
|
||||||
|
|
||||||
if(JcBill.STATUS_FOUR == status) {// 入库待审核 进行撤回
|
|
||||||
|
|
||||||
// 进行事件删除
|
|
||||||
jcBillAccess.deleteEvent(jcBill.getId(), "稽查收货", "其他入库");
|
|
||||||
|
|
||||||
}
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<JcSourceItem> queryJcSourceItemByBillId(String billId, String srcitemid, int status)
|
|
||||||
throws RuntimeException {
|
|
||||||
try {
|
|
||||||
return jcSourceItemRepository.findByBillidAndSrcitemidAndStatus(billId, srcitemid, status);
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Transactional(isolation = Isolation.DEFAULT, propagation = Propagation.REQUIRED, rollbackFor = {Exception.class})
|
|
||||||
@Override
|
|
||||||
public void updateSourceItemAccount(String sourceItemLogJson, String billSourceItemLogJson, String billSourceItemNewLogJson,
|
|
||||||
JcSourceItem sourceItem, List<JcBillSourceItem> billSourceItems,
|
|
||||||
List<JcBillInItem> oldInItems, List<JcBillInItem> inItems) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
String biillId = sourceItem.getBillid();
|
|
||||||
|
|
||||||
jcSourceItemRepository.save(sourceItem);
|
|
||||||
jcBillSourceItemRepository.saveAll(billSourceItems);
|
|
||||||
jcBillInItemRepository.deleteAll(oldInItems);
|
|
||||||
jcBillInItemRepository.saveAll(inItems);
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@Override
|
|
||||||
public SiDepositlocation querySiDepositlocation(String srcid) throws Exception {
|
|
||||||
return jcBillAccess.querySiDepositlocation(srcid);
|
|
||||||
}
|
|
||||||
@Override
|
|
||||||
public SiDepositlocation querySiDepositlocationHGfc(String srcid) throws Exception {
|
|
||||||
return jcBillAccess.querySiDepositlocationHGfc(srcid);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public JSONObject gwisSubCancelOrder(String orderCode, String orderType) throws Exception {
|
|
||||||
try {
|
|
||||||
|
|
||||||
Map<String, String> configValues = this.abacusExtConfig.getAbacusConfigSetByKeyGroupByKey(
|
|
||||||
PMSConfigKey.KEY_GROUP, PMSConfigKey.PMS_WMSCONF);
|
|
||||||
if (configValues == null || configValues.isEmpty())
|
|
||||||
throw new Exception(PMSConfigKey.PMS_WMSCONF + "为空!");
|
|
||||||
|
|
||||||
// 判断key是否存在
|
|
||||||
if (!configValues.containsKey(PMSConfigKey.PMS_WMSCONF_URL))
|
|
||||||
throw new Exception(PMSConfigKey.PMS_WMSCONF + "配置中" + PMSConfigKey.PMS_WMSCONF_URL + "不存在!");
|
|
||||||
if (!configValues.containsKey(PMSConfigKey.PMS_WMSCONF_APPKEY))
|
|
||||||
throw new Exception(PMSConfigKey.PMS_WMSCONF + "配置中" + PMSConfigKey.PMS_WMSCONF_APPKEY + "不存在!");
|
|
||||||
if (!configValues.containsKey(PMSConfigKey.PMS_WMSCONF_SESSIONKEY))
|
|
||||||
throw new Exception(PMSConfigKey.PMS_WMSCONF + "配置中" + PMSConfigKey.PMS_WMSCONF_SESSIONKEY + "不存在!");
|
|
||||||
|
|
||||||
// 判断值是否为空
|
|
||||||
String url = configValues.get(PMSConfigKey.PMS_WMSCONF_URL);
|
|
||||||
if (StringUtils.isBlank(url))
|
|
||||||
throw new Exception(PMSConfigKey.PMS_WMSCONF + "配置中" + PMSConfigKey.PMS_WMSCONF_URL + "为空!");
|
|
||||||
|
|
||||||
String appkey = configValues.get(PMSConfigKey.PMS_WMSCONF_APPKEY);
|
|
||||||
if (StringUtils.isBlank(appkey))
|
|
||||||
throw new Exception(PMSConfigKey.PMS_WMSCONF + "配置中" + PMSConfigKey.PMS_WMSCONF_APPKEY + "为空!");
|
|
||||||
|
|
||||||
String sessionKey = configValues.get(PMSConfigKey.PMS_WMSCONF_SESSIONKEY);
|
|
||||||
if (StringUtils.isBlank(sessionKey))
|
|
||||||
throw new Exception(PMSConfigKey.PMS_WMSCONF + "配置中" + PMSConfigKey.PMS_WMSCONF_SESSIONKEY + "为空!");
|
|
||||||
|
|
||||||
String goodsOwner = configValues.get(PMSConfigKey.PMS_WMSCONF_GOODSOWNER);
|
|
||||||
if (StringUtils.isBlank(goodsOwner))
|
|
||||||
throw new Exception(PMSConfigKey.PMS_WMSCONF + "配置中" + PMSConfigKey.PMS_WMSCONF_GOODSOWNER + "为空!");
|
|
||||||
|
|
||||||
JSONObject head = new JSONObject();
|
|
||||||
head.put("orderCode", orderCode); // 唯一订单号
|
|
||||||
head.put("orderType", orderType);
|
|
||||||
head.put("goodsOwner", goodsOwner);
|
|
||||||
|
|
||||||
// 2. 计算签名 secret = MD5(contentJson + sessionKey)
|
|
||||||
String secret = md5(head.toJSONString() + sessionKey);
|
|
||||||
|
|
||||||
// 3. 拼接完整URL(带上method、appkey、secret)
|
|
||||||
String fullUrl = url
|
|
||||||
+ "?method=gwisSubCancelOrder"
|
|
||||||
+ "&appkey=" + appkey
|
|
||||||
+ "&secret=" + secret;
|
|
||||||
|
|
||||||
LOG.info("WMS取消订单>>>orderCode>>>{}>>>orderType>>>{}>>>请求参数>>>{}", orderCode, orderType, head.toJSONString());
|
|
||||||
String returnJson = RequestUtil.send(fullUrl, head.toJSONString(), orderCode);
|
|
||||||
LOG.info("WMS取消订单>>>orderCode>>>{}>>>orderType>>>{}>>>响应参数>>>{}", orderCode, orderType, returnJson);
|
|
||||||
|
|
||||||
JSONObject jsonObj = JSONObject.parseObject(returnJson);
|
|
||||||
|
|
||||||
return jsonObj;
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error("WMS取消订单接口服务异常", e.getMessage());
|
|
||||||
throw new RuntimeException("WMS取消订单接口服务异常:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static String md5(String input) {
|
|
||||||
try {
|
|
||||||
java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5");
|
|
||||||
byte[] digest = md.digest(input.getBytes("UTF-8"));
|
|
||||||
StringBuilder sb = new StringBuilder();
|
|
||||||
for (byte b : digest) {
|
|
||||||
sb.append(String.format("%02X", b)); // 大写十六进制
|
|
||||||
}
|
|
||||||
return sb.toString();
|
|
||||||
} catch (Exception e) {
|
|
||||||
throw new RuntimeException("MD5计算失败", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
-593
@@ -1,593 +0,0 @@
|
|||||||
package abacus.springboot.example.impl;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.data.domain.Page;
|
|
||||||
import org.springframework.data.domain.PageImpl;
|
|
||||||
import org.springframework.data.domain.Pageable;
|
|
||||||
import org.springframework.jdbc.core.BeanPropertyRowMapper;
|
|
||||||
import org.springframework.jdbc.core.JdbcTemplate;
|
|
||||||
import org.springframework.stereotype.Repository;
|
|
||||||
|
|
||||||
import abacus.springboot.example.api.view.ApiBillHg;
|
|
||||||
import abacus.springboot.example.api.view.ApiBillHgItem;
|
|
||||||
import abacus.springboot.example.api.view.ApiBillHgPayment;
|
|
||||||
import abacus.springboot.example.api.view.ApiJcBill;
|
|
||||||
import abacus.springboot.example.api.view.ApiJcBillHgSearchItem;
|
|
||||||
import abacus.springboot.example.api.view.ApiJcBillItem;
|
|
||||||
import abacus.springboot.example.api.view.ApiJcBillSearch;
|
|
||||||
import abacus.springboot.example.api.view.JcBillCount;
|
|
||||||
import abacus.springboot.example.api.view.JcCodeFlow;
|
|
||||||
import abacus.springboot.example.api.view.JcProduct;
|
|
||||||
import abacus.springboot.example.api.view.JcProductBillSouce;
|
|
||||||
import abacus.springboot.example.dao.JcBillHg;
|
|
||||||
import abacus.springboot.example.pi.ApiJcBillAccessIF;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>Title:ApiJcBillAccess</p>
|
|
||||||
<p>Description: 底层实现</p>
|
|
||||||
@author chuanZeng
|
|
||||||
@date 2026年8月18日
|
|
||||||
*/
|
|
||||||
@Repository
|
|
||||||
public class ApiJcBillAccess implements ApiJcBillAccessIF {
|
|
||||||
|
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(ApiJcBillAccess.class);
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private JdbcTemplate jdbcTemplate;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Page<ApiJcBillSearch> queryApiJcBillSearch(String keyword, String employee, String status, Pageable pageable)
|
|
||||||
throws RuntimeException {
|
|
||||||
try {
|
|
||||||
Map<String,Object> params = new HashMap<String, Object>();
|
|
||||||
StringBuffer sb = new StringBuffer("");
|
|
||||||
|
|
||||||
if(StringUtils.isNotBlank(keyword)) {
|
|
||||||
sb.append(params.size() > 0 ?" and ":" where ");
|
|
||||||
sb.append(" (a.id like '%" + keyword + "%' ");
|
|
||||||
sb.append(" or a.goods like '%" + keyword + "%'");
|
|
||||||
sb.append(" or a.id in (select b.billid from jc_billsource_item b where b.goodsid like'%" + keyword + "%'))");
|
|
||||||
|
|
||||||
params.put("id", "%"+keyword+"%");
|
|
||||||
}
|
|
||||||
|
|
||||||
if(StringUtils.isNotBlank(employee)) {
|
|
||||||
sb.append(params.size() > 0 ?" and ":" where ");
|
|
||||||
sb.append(" (a.dept in (");
|
|
||||||
sb.append(" select deptid from (");
|
|
||||||
sb.append(" select dataid as deptid from distributionmapping where erid ='" + employee + "' and rtype = 1 and ftype = 1 and dtype = 1");
|
|
||||||
sb.append(" union");
|
|
||||||
sb.append(" select a.dataid as deptid from distributionmapping a ,acas_assign b where a.erid =b.rolez and a.rtype = 0 and a.ftype = 1 and a.dtype = 1 and b.userz ='" + employee + "'");
|
|
||||||
sb.append(" ) adept)");
|
|
||||||
sb.append(" or");
|
|
||||||
sb.append(" a.applicant in (");
|
|
||||||
sb.append(" select dataid from (");
|
|
||||||
sb.append(" select dataid from distributionmapping where erid ='" + employee + "' and rtype = 1 and ftype = 1 and dtype = 2");
|
|
||||||
sb.append(" union");
|
|
||||||
sb.append(" select dataid from distributionmapping a ,acas_assign b where a.erid =b.rolez and a.rtype = 0 and a.ftype = 1 and a.dtype = 2 and b.userz ='" + employee + "'");
|
|
||||||
sb.append(" union");
|
|
||||||
sb.append(" select '" + employee + "'");
|
|
||||||
sb.append(" ) adept )");
|
|
||||||
sb.append(" )");
|
|
||||||
params.put("employee", employee);
|
|
||||||
// sb.append(" a.dept in (");
|
|
||||||
// sb.append(" select deptid from (");
|
|
||||||
// sb.append(" select dataid as deptid from distributionmapping where erid ='" + employee + "' and rtype = 1 and ftype = 1 and dtype = 1");
|
|
||||||
// sb.append(" union ");
|
|
||||||
// sb.append(" select a.dataid as deptid from distributionmapping a ,acas_assign b where a.erid =b.rolez and a.rtype = 0 and a.ftype = 1 and a.dtype = 1 and b.userz ='" + employee + "'");
|
|
||||||
// sb.append(" union ");
|
|
||||||
// sb.append("select (select dept as deptid from employee e where e.id = dataid) as deptid from distributionmapping where erid ='" + employee + "' and rtype = 1 and ftype = 1 and dtype = 2");
|
|
||||||
// sb.append(" union ");
|
|
||||||
// sb.append("select (select dept as deptid from employee e where e.id = a.dataid) as deptid from distributionmapping a ,acas_assign b where a.erid =b.rolez and a.rtype = 0 and a.ftype = 1 and a.dtype = 2 and b.userz ='" + employee + "'");
|
|
||||||
// sb.append(" union ");
|
|
||||||
// sb.append("select dept as deptid from employee e where e.id = '" + employee + "'");
|
|
||||||
// sb.append(" ) adept");
|
|
||||||
// sb.append(" )");
|
|
||||||
// params.put("employee", employee);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(StringUtils.isNotBlank(status)) {
|
|
||||||
sb.append(params.size() > 0 ?" and ":" where ");
|
|
||||||
int statusInt = Integer.parseInt(status);
|
|
||||||
if(statusInt == 0) {// 待提交:已录入或者录入完成提交验证
|
|
||||||
sb.append(" a.status in(0, 1) ");
|
|
||||||
params.put("status", statusInt);
|
|
||||||
} else if(statusInt == 2) {// 待溯源
|
|
||||||
sb.append(" a.status = 2 ");
|
|
||||||
params.put("status", statusInt);
|
|
||||||
} else if(statusInt == -2) {// 人工溯源驳回
|
|
||||||
sb.append(" a.status = -2 ");
|
|
||||||
params.put("status", statusInt);
|
|
||||||
} else if(statusInt == 3) {// 待入库,待入库审核
|
|
||||||
sb.append(" a.status in(3, 4) ");
|
|
||||||
params.put("status", statusInt);
|
|
||||||
} else if(statusInt == 5) {// 已入库
|
|
||||||
sb.append(" a.status = 5 ");
|
|
||||||
params.put("status", statusInt);
|
|
||||||
} else if(statusInt == 6 || statusInt == 8) {// 部分回购,回购完成
|
|
||||||
sb.append(" a.hgstatus in(1, 2) ");
|
|
||||||
params.put("status", statusInt);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
sb.append(params.size() > 0 ?" and ":" where ");
|
|
||||||
sb.append(" a.status in(-2, 0, 1, 2, 3, 4, 5) ");
|
|
||||||
params.put("status", 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
StringBuffer orderBy = new StringBuffer("");
|
|
||||||
|
|
||||||
orderBy.append(" order by dt desc ");
|
|
||||||
|
|
||||||
orderBy.append(" offset "+ (pageable.getPageNumber() * pageable.getPageSize()) + " rows fetch next "+ pageable.getPageSize() + " rows only ");
|
|
||||||
|
|
||||||
String sql = " select a.id as billid, receivedt as receivedt, a.goods as goods, "
|
|
||||||
+ " a.quantity as quantity, a.status as status, a.hgstatus as hgstatus from jc_bill a "
|
|
||||||
+ sb.toString() + orderBy.toString();
|
|
||||||
LOG.info("queryApiJcBillSearch>>>SQLgetPageNumber>>>{}", pageable.getPageNumber());
|
|
||||||
LOG.info("queryApiJcBillSearch>>>SQLgetPageSize>>>{}", pageable.getPageSize());
|
|
||||||
LOG.info("queryApiJcBillSearch>>>SQL>>>{}", sql);
|
|
||||||
|
|
||||||
List<ApiJcBillSearch> lists = jdbcTemplate.query(sql, new BeanPropertyRowMapper<ApiJcBillSearch>(ApiJcBillSearch.class));
|
|
||||||
|
|
||||||
Long count = jdbcTemplate.queryForObject("select count(a.id) from jc_bill a " + sb.toString(), Long.class);
|
|
||||||
|
|
||||||
Page<ApiJcBillSearch> scorePage = new PageImpl<ApiJcBillSearch>(lists, pageable, count);
|
|
||||||
return scorePage;
|
|
||||||
}catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
throw new RuntimeException(e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ApiJcBill queryApiJcBillById(String id) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
Map<String,Object> params = new HashMap<String, Object>();
|
|
||||||
StringBuffer sb = new StringBuffer(" select a.id, a.status, a.goods, a.warehouse, a.warehousename, a.receivedt,");
|
|
||||||
sb.append(" a.quantity, a.subtotal, a.applicant, a.applicantname, a.applicantdt");
|
|
||||||
sb.append(" from jc_bill a");
|
|
||||||
|
|
||||||
if(StringUtils.isNotBlank(id)) {
|
|
||||||
sb.append(params.size() > 0 ?" and ":" where ");
|
|
||||||
sb.append(" a.id = '" + id + "' ");
|
|
||||||
params.put("id", id);
|
|
||||||
}
|
|
||||||
|
|
||||||
LOG.info("queryApiJcBillById>>>SQL>>>{}", sb.toString());
|
|
||||||
|
|
||||||
List<ApiJcBill> lsit = jdbcTemplate.query(sb.toString(), new BeanPropertyRowMapper<ApiJcBill>(ApiJcBill.class));
|
|
||||||
|
|
||||||
return (lsit != null && lsit.size() >= 1) ? lsit.get(0) : null;
|
|
||||||
}catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
throw new RuntimeException(e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<ApiJcBillItem> queryApiJcBillItemByBIllId(String billId) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
Map<String,Object> params = new HashMap<String, Object>();
|
|
||||||
StringBuffer sb = new StringBuffer("select a.id,a.status,a.recsource,a.channel,a.price,a.quantity,");
|
|
||||||
sb.append(" a.numbers,a.subtotal,a.goodsid,a.logisticsid ");
|
|
||||||
sb.append(" from jc_billsource_item a ");
|
|
||||||
|
|
||||||
if(StringUtils.isNotBlank(billId)) {
|
|
||||||
sb.append(params.size() > 0 ?" and ":" where ");
|
|
||||||
sb.append(" a.billid = '" + billId + "' ");
|
|
||||||
params.put("billId", billId);
|
|
||||||
}
|
|
||||||
|
|
||||||
LOG.info("queryApiJcBillItemByBIllId>>>SQL>>>{}", sb.toString());
|
|
||||||
|
|
||||||
List<ApiJcBillItem> lsit = jdbcTemplate.query(sb.toString(), new BeanPropertyRowMapper<ApiJcBillItem>(ApiJcBillItem.class));
|
|
||||||
|
|
||||||
return lsit;
|
|
||||||
}catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
throw new RuntimeException(e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Page<ApiJcBillHgSearchItem> queryApiJcBillHgSearchItem(String keyword, String employee, String status, Pageable pageable)
|
|
||||||
throws RuntimeException {
|
|
||||||
try {
|
|
||||||
Map<String,Object> params = new HashMap<String, Object>();
|
|
||||||
StringBuffer sb = new StringBuffer("");
|
|
||||||
|
|
||||||
if(StringUtils.isNotBlank(keyword)) {
|
|
||||||
sb.append(params.size() > 0 ?" and ":" where ");
|
|
||||||
sb.append(" (a.id like '%" + keyword + "%' ");
|
|
||||||
sb.append(" or a.account like '%" + keyword + "%'");
|
|
||||||
sb.append(" or a.accountname like '%" + keyword + "%'");
|
|
||||||
sb.append(" or a.consigneephone like '%" + keyword + "%'");
|
|
||||||
sb.append(" or a.id in (select b.billhg from jc_billin_item b where b.product like '%" + keyword + "%' and b.productname like'%" + keyword + "%'))");
|
|
||||||
|
|
||||||
params.put("id", "%"+keyword+"%");
|
|
||||||
}
|
|
||||||
|
|
||||||
if(StringUtils.isNotBlank(employee)) {
|
|
||||||
sb.append(params.size() > 0 ?" and ":" where ");
|
|
||||||
sb.append(" (");
|
|
||||||
sb.append(" a.account in (");
|
|
||||||
sb.append(" select sa.id from sams_account sa where sa.groupid in (select pc.id from pms_customergroup pc where pc.grouperid='" + employee + "' or ',' + groupempid + ',' like '%," + employee + ",%')");
|
|
||||||
sb.append(" )");
|
|
||||||
sb.append(" or ");
|
|
||||||
sb.append(" a.account in (");
|
|
||||||
sb.append(" select customerid from ws_wsempmgcustomer where wsempid ='" + employee + "' ");
|
|
||||||
sb.append(" )");
|
|
||||||
sb.append(" )");
|
|
||||||
// sb.append(" a.account in (select sa.id from sams_account sa where sa.groupid in (select pc.id from pms_customergroup pc where pc.grouperid='" + employee + "' or ',' + groupempid + ',' like '%," + employee + ",%')) ");
|
|
||||||
params.put("employee", employee);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(StringUtils.isNotBlank(status)) {
|
|
||||||
sb.append(params.size() > 0 ?" and ":" where ");
|
|
||||||
int statusInt = Integer.parseInt(status);
|
|
||||||
if(statusInt == 1) {// 待提交
|
|
||||||
sb.append(" a.status = 1 ");
|
|
||||||
params.put("status", statusInt);
|
|
||||||
} else if(statusInt == 2) {// 待付款
|
|
||||||
sb.append(" a.status = 2 ");
|
|
||||||
params.put("status", statusInt);
|
|
||||||
} else if(statusInt == 3) {// 待分仓
|
|
||||||
sb.append(" a.status in(3, 4) ");
|
|
||||||
params.put("status", statusInt);
|
|
||||||
} else if(statusInt == 5) {// 待出库
|
|
||||||
sb.append(" a.status = 5 ");
|
|
||||||
params.put("status", statusInt);
|
|
||||||
} else if(statusInt == 6) {// 已出库
|
|
||||||
sb.append(" a.status = 6 ");
|
|
||||||
params.put("status", statusInt);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
StringBuffer orderBy = new StringBuffer("");
|
|
||||||
|
|
||||||
orderBy.append(" order by dt desc ");
|
|
||||||
|
|
||||||
orderBy.append(" offset "+ (pageable.getPageNumber() * pageable.getPageSize()) + " rows fetch next "+ pageable.getPageSize() + " rows only ");
|
|
||||||
|
|
||||||
String sql = " select a.id as billHg, a.account, a.accountname, a.manager, a.managername, a.status, "
|
|
||||||
+ " a.logisticsname, a.logisticsno, (a.subtotal+a.freight) as subtotal from jc_billhg a "
|
|
||||||
+ sb.toString() + orderBy.toString();
|
|
||||||
|
|
||||||
LOG.info("queryApiJcBillHgSearchItem>>>SQL>>>{}", sql);
|
|
||||||
|
|
||||||
List<ApiJcBillHgSearchItem> lists = jdbcTemplate.query(sql, new BeanPropertyRowMapper<ApiJcBillHgSearchItem>(ApiJcBillHgSearchItem.class));
|
|
||||||
|
|
||||||
Long count = jdbcTemplate.queryForObject("select count(a.id) from jc_billhg a " + sb.toString(), Long.class);
|
|
||||||
|
|
||||||
Page<ApiJcBillHgSearchItem> scorePage = new PageImpl<ApiJcBillHgSearchItem>(lists, pageable, count);
|
|
||||||
return scorePage;
|
|
||||||
}catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
throw new RuntimeException(e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<JcBillCount> queryJcBillCount(List<String> ids) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
Map<String,Object> params = new HashMap<String, Object>();
|
|
||||||
StringBuffer sb = new StringBuffer("select billhg as id, count(product) as breednum, sum(numbers) as numbers ");
|
|
||||||
sb.append(" from jc_billin_item a ");
|
|
||||||
|
|
||||||
if(ids != null && ids.size() >= 1) {
|
|
||||||
StringBuffer idIn = new StringBuffer();
|
|
||||||
for(String key : ids){
|
|
||||||
idIn.append("'" + key + "',");
|
|
||||||
}
|
|
||||||
String idIns = idIn.toString().substring(0, idIn.length() - 1);
|
|
||||||
|
|
||||||
sb.append(params.size() > 0 ?" and ":" where ");
|
|
||||||
sb.append(" a.billhg in (" + idIns + ") ");
|
|
||||||
params.put("billhg", idIn);
|
|
||||||
}
|
|
||||||
|
|
||||||
sb.append(" group by billhg");
|
|
||||||
|
|
||||||
LOG.info("queryJcBillCount>>>SQL>>>{}", sb.toString());
|
|
||||||
|
|
||||||
List<JcBillCount> lsit = jdbcTemplate.query(sb.toString(), new BeanPropertyRowMapper<JcBillCount>(JcBillCount.class));
|
|
||||||
|
|
||||||
return lsit;
|
|
||||||
}catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
throw new RuntimeException(e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ApiBillHg queryApiBillHgById(String hgId) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
Map<String,Object> params = new HashMap<String, Object>();
|
|
||||||
StringBuffer sb = new StringBuffer(" select a.id, a.billid, a.status, a.source, a.account,");
|
|
||||||
sb.append(" a.accountname, a.quantity, a.subtotal, a.freight, a.manager,");
|
|
||||||
sb.append(" a.managername, a.consignee, a.consigneephone, a.province, a.provincename,");
|
|
||||||
sb.append(" a.city, a.cityname, a.area, a.areaname, a.address,");
|
|
||||||
sb.append(" a.receiveway, a.remark, a.remark1, a.logisticsname, a.logisticscode,");
|
|
||||||
sb.append(" a.logisticstype, a.logisticsno");
|
|
||||||
sb.append(" from jc_billhg a");
|
|
||||||
|
|
||||||
if(StringUtils.isNotBlank(hgId)) {
|
|
||||||
sb.append(params.size() > 0 ?" and ":" where ");
|
|
||||||
sb.append(" a.id = '" + hgId + "' ");
|
|
||||||
params.put("id", hgId);
|
|
||||||
}
|
|
||||||
|
|
||||||
LOG.info("queryApiBillHgById>>>SQL>>>{}", sb.toString());
|
|
||||||
|
|
||||||
List<ApiBillHg> lsit = jdbcTemplate.query(sb.toString(), new BeanPropertyRowMapper<ApiBillHg>(ApiBillHg.class));
|
|
||||||
|
|
||||||
return (lsit != null && lsit.size() >= 1) ? lsit.get(0) : null;
|
|
||||||
}catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
throw new RuntimeException(e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<ApiBillHgItem> queryApiBillHgItemByHgId(String hgId) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
Map<String,Object> params = new HashMap<String, Object>();
|
|
||||||
StringBuffer sb = new StringBuffer("select a.id, a.status, a.product, a.productname, b.spec, a.price, ");
|
|
||||||
sb.append(" a.quantity, a.numbers, a.hgprice, a.hgamount");
|
|
||||||
sb.append(" from jc_billin_item a");
|
|
||||||
sb.append(" left join pms_product b on a.product = b.id");
|
|
||||||
|
|
||||||
if(StringUtils.isNotBlank(hgId)) {
|
|
||||||
sb.append(params.size() > 0 ?" and ":" where ");
|
|
||||||
sb.append(" a.billhg = '" + hgId + "' ");
|
|
||||||
params.put("billhg", hgId);
|
|
||||||
}
|
|
||||||
|
|
||||||
LOG.info("queryApiBillHgItemByHgId>>>SQL>>>{}", sb.toString());
|
|
||||||
|
|
||||||
List<ApiBillHgItem> lsit = jdbcTemplate.query(sb.toString(), new BeanPropertyRowMapper<ApiBillHgItem>(ApiBillHgItem.class));
|
|
||||||
|
|
||||||
return lsit;
|
|
||||||
}catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
throw new RuntimeException(e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<ApiBillHgPayment> queryApiBillHgPaymentByHgId(String hgId) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
Map<String,Object> params = new HashMap<String, Object>();
|
|
||||||
StringBuffer sb = new StringBuffer(" select a.billhg, a.payment, a.amount, a.zhmc, a.khyh, a.yhzh from jc_billhg_pay a ");
|
|
||||||
|
|
||||||
if(StringUtils.isNotBlank(hgId)) {
|
|
||||||
sb.append(params.size() > 0 ?" and ":" where ");
|
|
||||||
sb.append(" a.billhg = '" + hgId + "' ");
|
|
||||||
params.put("billhg", hgId);
|
|
||||||
}
|
|
||||||
|
|
||||||
LOG.info("queryApiBillHgPaymentByHgId>>>SQL>>>{}", sb.toString());
|
|
||||||
|
|
||||||
List<ApiBillHgPayment> lsit = jdbcTemplate.query(sb.toString(), new BeanPropertyRowMapper<ApiBillHgPayment>(ApiBillHgPayment.class));
|
|
||||||
|
|
||||||
return lsit;
|
|
||||||
}catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
throw new RuntimeException(e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<JcCodeFlow> queryJcCodeFlow(List<String> codes) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
Map<String,Object> params = new HashMap<String, Object>();
|
|
||||||
StringBuffer sb = new StringBuffer("select b.id, b.deposit, b.depositname, b.dt as tdate, b.orderid,");
|
|
||||||
sb.append(" c.customerid, c.customername, c.aprssalemanid, c.aprssalemanname, c.bizgroupid,");
|
|
||||||
sb.append(" c.bizgroupname, c.wsareaid, c.wsareaname,");
|
|
||||||
sb.append(" a.code, a.productid, a.productname");
|
|
||||||
sb.append(" from bcs_codeflow a");
|
|
||||||
sb.append(" left join wmsn_despatch b on b.id = a.srcid ");
|
|
||||||
sb.append(" left join ws_wholesalebill c on c.id = b.orderid");
|
|
||||||
|
|
||||||
if(codes != null && codes.size() >= 1) {
|
|
||||||
StringBuffer idIn = new StringBuffer();
|
|
||||||
for(String key : codes){
|
|
||||||
idIn.append("'" + key + "',");
|
|
||||||
}
|
|
||||||
String idIns = idIn.toString().substring(0, idIn.length() - 1);
|
|
||||||
|
|
||||||
sb.append(params.size() > 0 ?" and ":" where ");
|
|
||||||
sb.append(" a.code in (" + idIns + ") ");
|
|
||||||
params.put("id", idIn);
|
|
||||||
}
|
|
||||||
|
|
||||||
LOG.info("queryJcCodeFlow>>>SQL>>>{}", sb.toString());
|
|
||||||
|
|
||||||
List<JcCodeFlow> lsit = jdbcTemplate.query(sb.toString(), new BeanPropertyRowMapper<JcCodeFlow>(JcCodeFlow.class));
|
|
||||||
|
|
||||||
return lsit;
|
|
||||||
}catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
throw new RuntimeException(e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<ApiBillHgPayment> queryApiBillHgPaymentByHgId(List<String> hgIds) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
Map<String,Object> params = new HashMap<String, Object>();
|
|
||||||
StringBuffer sb = new StringBuffer(" select a.billhg, a.payment, a.amount, a.zhmc, a.khyh, a.yhzh from jc_billhg_pay a ");
|
|
||||||
|
|
||||||
if(hgIds != null && hgIds.size() >= 1) {
|
|
||||||
StringBuffer idIn = new StringBuffer();
|
|
||||||
for(String key : hgIds){
|
|
||||||
idIn.append("'" + key + "',");
|
|
||||||
}
|
|
||||||
String idIns = idIn.toString().substring(0, idIn.length() - 1);
|
|
||||||
|
|
||||||
sb.append(params.size() > 0 ?" and ":" where ");
|
|
||||||
sb.append(" a.billhg in (" + idIns + ") ");
|
|
||||||
params.put("id", idIn);
|
|
||||||
}
|
|
||||||
|
|
||||||
LOG.info("queryApiBillHgPaymentByHgId>>>SQL>>>{}", sb.toString());
|
|
||||||
|
|
||||||
List<ApiBillHgPayment> lsit = jdbcTemplate.query(sb.toString(), new BeanPropertyRowMapper<ApiBillHgPayment>(ApiBillHgPayment.class));
|
|
||||||
|
|
||||||
return lsit;
|
|
||||||
}catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
throw new RuntimeException(e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<JcProduct> queryJcProduct(String product, String stockInId, String hgId) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
Map<String,Object> params = new HashMap<String, Object>();
|
|
||||||
StringBuffer sb = new StringBuffer(" select a.billid,a.billin,a.billhg,a.account,a.accountname,a.product,a.productname,");
|
|
||||||
sb.append(" sum(a.quantity) as quantity ,sum(a.numbers) as numbers,");
|
|
||||||
sb.append(" (select h.wdtbillout from jc_billhg h where h.billid = a.billid and h.id = a.billhg) as wdtbillout");
|
|
||||||
sb.append(" from jc_billin_item a");
|
|
||||||
|
|
||||||
if(StringUtils.isNotBlank(product)) {
|
|
||||||
sb.append(params.size() > 0 ?" and ":" where ");
|
|
||||||
// sb.append(" a.product ='" + product + "' ");
|
|
||||||
sb.append(" a.billid in (select jbi.billid from jc_billsource_item jbi where jbi.goodsid ='" + product + "' and jbi.status = 3) ");
|
|
||||||
params.put("product", product);
|
|
||||||
}
|
|
||||||
if(StringUtils.isNotBlank(stockInId)) {
|
|
||||||
sb.append(params.size() > 0 ?" and ":" where ");
|
|
||||||
sb.append(" a.billin ='" + stockInId + "' ");
|
|
||||||
params.put("billin", stockInId);
|
|
||||||
}
|
|
||||||
if(StringUtils.isNotBlank(hgId)) {
|
|
||||||
sb.append(params.size() > 0 ?" and ":" where ");
|
|
||||||
sb.append(" a.billhg ='" + hgId + "' ");
|
|
||||||
params.put("billhg", hgId);
|
|
||||||
}
|
|
||||||
|
|
||||||
sb.append(" group by a.billid,a.billin,a.billhg,a.account,a.accountname,a.product,a.productname");
|
|
||||||
|
|
||||||
LOG.info("queryJcProduct>>>SQL>>>{}", sb.toString());
|
|
||||||
|
|
||||||
List<JcProduct> lsit = jdbcTemplate.query(sb.toString(), new BeanPropertyRowMapper<JcProduct>(JcProduct.class));
|
|
||||||
|
|
||||||
return lsit;
|
|
||||||
}catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
throw new RuntimeException(e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<JcProductBillSouce> queryJcProductBillSouce(List<String> billIds) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
Map<String,Object> params = new HashMap<String, Object>();
|
|
||||||
StringBuffer sb = new StringBuffer(" select indexno,billid,account,product,goodsid from jc_billsource_item a ");
|
|
||||||
|
|
||||||
if(billIds != null && billIds.size() >= 1) {
|
|
||||||
StringBuffer idIn = new StringBuffer();
|
|
||||||
for(String key : billIds){
|
|
||||||
idIn.append("'" + key + "',");
|
|
||||||
}
|
|
||||||
String idIns = idIn.toString().substring(0, idIn.length() - 1);
|
|
||||||
|
|
||||||
sb.append(params.size() > 0 ?" and ":" where ");
|
|
||||||
sb.append(" a.billid in (" + idIns + ") ");
|
|
||||||
params.put("id", idIn);
|
|
||||||
}
|
|
||||||
|
|
||||||
LOG.info("queryJcProductBillSouce>>>SQL>>>{}", sb.toString());
|
|
||||||
|
|
||||||
List<JcProductBillSouce> lsit = jdbcTemplate.query(sb.toString(), new BeanPropertyRowMapper<JcProductBillSouce>(JcProductBillSouce.class));
|
|
||||||
|
|
||||||
return lsit;
|
|
||||||
}catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
throw new RuntimeException(e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<JcProduct> queryJcProduct(String product, String stockInId) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
Map<String,Object> params = new HashMap<String, Object>();
|
|
||||||
StringBuffer sb = new StringBuffer(" select a.billid,a.billin,a.billhg,a.account,a.accountname,a.product,a.productname,");
|
|
||||||
sb.append(" sum(a.quantity) as quantity ,sum(a.numbers) as numbers,b.goodsid,");
|
|
||||||
sb.append(" (select h.wdtbillout from jc_billhg h where h.billid = a.billid and h.id = a.billhg) as wdtbillout");
|
|
||||||
sb.append(" from jc_billin_item a");
|
|
||||||
sb.append(" left join jc_billsource_item b on a.billid = b.billid and a.account = b.account and a.product = b.product ");
|
|
||||||
|
|
||||||
if(StringUtils.isNotBlank(product)) {
|
|
||||||
sb.append(params.size() > 0 ?" and ":" where ");
|
|
||||||
// sb.append(" a.product ='" + product + "' ");
|
|
||||||
sb.append(" a.billid in (select jbi.billid from jc_billsource_item jbi where jbi.goodsid ='" + product + "' and jbi.status = 3) ");
|
|
||||||
params.put("product", product);
|
|
||||||
}
|
|
||||||
if(StringUtils.isNotBlank(stockInId)) {
|
|
||||||
sb.append(params.size() > 0 ?" and ":" where ");
|
|
||||||
sb.append(" a.billin ='" + stockInId + "' ");
|
|
||||||
params.put("billin", stockInId);
|
|
||||||
}
|
|
||||||
|
|
||||||
sb.append(" group by a.billid,a.billin,a.billhg,a.account,a.accountname,a.product,a.productname,b.goodsid");
|
|
||||||
|
|
||||||
LOG.info("queryJcProduct>>>SQL>>>{}", sb.toString());
|
|
||||||
|
|
||||||
List<JcProduct> lsit = jdbcTemplate.query(sb.toString(), new BeanPropertyRowMapper<JcProduct>(JcProduct.class));
|
|
||||||
|
|
||||||
return lsit;
|
|
||||||
}catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
throw new RuntimeException(e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<JcBillHg> qeryJcBillHgs(List<String> billids) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
Map<String,Object> params = new HashMap<String, Object>();
|
|
||||||
StringBuffer sql = new StringBuffer("select id, version, billid, status, source,");
|
|
||||||
sql.append(" account, accountname, quantity, subtotal, freight,");
|
|
||||||
sql.append(" manager, managername, consignee, consigneephone, province,");
|
|
||||||
sql.append(" provincename, city, cityname, area, areaname,");
|
|
||||||
sql.append(" address, receiveway, remark, remark1, salearea,");
|
|
||||||
sql.append(" saleareaname, groupid, groupname, logisticsname, logisticscode,");
|
|
||||||
sql.append(" logisticstype, logisticsno, found, foundname,");
|
|
||||||
sql.append(" founddt, submit, submitname, submitdt, audit,");
|
|
||||||
sql.append(" auditname, auditdt, dt, fhwarehouse, fhwarehousename,");
|
|
||||||
sql.append(" wdtorder, wdtbillout, wdtbillouttyp");
|
|
||||||
sql.append(" from jc_billhg a");
|
|
||||||
|
|
||||||
if(billids != null && billids.size() >= 1) {
|
|
||||||
StringBuffer idIn = new StringBuffer();
|
|
||||||
for(String key : billids){
|
|
||||||
idIn.append("'" + key + "',");
|
|
||||||
}
|
|
||||||
String idIns = idIn.toString().substring(0, idIn.length() - 1);
|
|
||||||
|
|
||||||
sql.append(params.size() > 0 ?" and ":" where ");
|
|
||||||
sql.append(" a.billid in (" + idIns + ") ");
|
|
||||||
params.put("billid", idIn);
|
|
||||||
}
|
|
||||||
|
|
||||||
LOG.info("qeryJcBillHgs>>>SQL>>>{}", sql.toString());
|
|
||||||
|
|
||||||
List<JcBillHg> lsit = jdbcTemplate.query(sql.toString(), new BeanPropertyRowMapper<JcBillHg>(JcBillHg.class));
|
|
||||||
|
|
||||||
return lsit;
|
|
||||||
}catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
throw new RuntimeException(e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-416
@@ -1,416 +0,0 @@
|
|||||||
package abacus.springboot.example.impl;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import javax.persistence.EntityManager;
|
|
||||||
import javax.persistence.PersistenceContext;
|
|
||||||
import javax.persistence.Query;
|
|
||||||
|
|
||||||
import org.apache.commons.lang.StringUtils;
|
|
||||||
import org.apache.commons.logging.Log;
|
|
||||||
import org.apache.commons.logging.LogFactory;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.jdbc.core.BeanPropertyRowMapper;
|
|
||||||
import org.springframework.jdbc.core.JdbcTemplate;
|
|
||||||
import org.springframework.stereotype.Repository;
|
|
||||||
|
|
||||||
import com.abacus.pms.dao.Account;
|
|
||||||
import com.abacus.pms.dao.Brand;
|
|
||||||
import com.abacus.pms.dao.MoreCategory;
|
|
||||||
import com.abacus.pms.dao.Product;
|
|
||||||
import com.abacus.pms.dao.Spec;
|
|
||||||
import com.abacus.xpos.foundation.dao.BaseArea;
|
|
||||||
import com.abacus.xpos.foundation.dao.Dept;
|
|
||||||
import com.abacus.xpos.foundation.dao.Employee;
|
|
||||||
|
|
||||||
import abacus.config.dao.AbacusConfigItem;
|
|
||||||
import abacus.springboot.example.dao.JcBill;
|
|
||||||
import abacus.springboot.example.pi.AutoCompleteAccessIF;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>Title:ApiJcBillAccess</p>
|
|
||||||
<p>Description: 底层实现</p>
|
|
||||||
@author chuanZeng
|
|
||||||
@date 2026年8月18日
|
|
||||||
*/
|
|
||||||
@Repository("autoCompleteAccess")
|
|
||||||
public class AutoCompleteAccess extends MyJpaUtils implements AutoCompleteAccessIF {
|
|
||||||
|
|
||||||
private final static Log LOG = LogFactory.getLog(AutoCompleteAccess.class);
|
|
||||||
|
|
||||||
@PersistenceContext
|
|
||||||
private EntityManager entityManager;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private JdbcTemplate jdbcTemplate;
|
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
public List<Product> prductAutoComplete(String keyCode, List<String> areaIds) throws Exception {
|
|
||||||
try {
|
|
||||||
Map<String,Object> params = new HashMap<String, Object>();
|
|
||||||
|
|
||||||
StringBuffer sql = new StringBuffer("from Product ");
|
|
||||||
if(StringUtils.isNotBlank(keyCode)){
|
|
||||||
sql.append(params.size() > 0 ? " and " : " where ");
|
|
||||||
sql.append(" (lower(name) like lower('%" + keyCode.replaceAll("'", "") + "%')");
|
|
||||||
sql.append(" or lower(id) like lower('%" + keyCode.replaceAll("'", "") + "%')");
|
|
||||||
sql.append(" or lower(shortstring) like lower('%" + keyCode.replaceAll("'", "") + "%'))");
|
|
||||||
params.put("id", keyCode);
|
|
||||||
}
|
|
||||||
|
|
||||||
// if(!areaIds.isEmpty()){
|
|
||||||
// sql.append(params.size() > 0 ? " and " : " where ");
|
|
||||||
// sql.append(" areaid in (:areaid) ");
|
|
||||||
// params.put("areaid", areaIds);
|
|
||||||
// }
|
|
||||||
|
|
||||||
Query query = this.entityManager.createQuery(sql.toString(), Product.class);
|
|
||||||
|
|
||||||
// setParameters(query, params);
|
|
||||||
|
|
||||||
List<Product> products = query.getResultList();
|
|
||||||
|
|
||||||
return products;
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error(e.getMessage(), e);
|
|
||||||
throw new Exception(e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
@Override
|
|
||||||
public List<Dept> deptAutoComplete(String keyCode, String type) throws Exception {
|
|
||||||
try {
|
|
||||||
Map<String,Object> params = new HashMap<String, Object>();
|
|
||||||
|
|
||||||
StringBuffer sql = new StringBuffer("from Dept");
|
|
||||||
if(StringUtils.isNotBlank(keyCode)){
|
|
||||||
sql.append(params.size() > 0 ? " and " : " where ");
|
|
||||||
sql.append(" (lower(name) like lower(:name)");
|
|
||||||
sql.append(" or lower(id) like lower(:id)");
|
|
||||||
sql.append(" or lower(shortString) like lower(:shortstring))");
|
|
||||||
|
|
||||||
params.put("name","%"+keyCode+"%");
|
|
||||||
params.put("id","%"+keyCode+"%");
|
|
||||||
params.put("shortstring","%"+keyCode+"%");
|
|
||||||
}
|
|
||||||
|
|
||||||
if(StringUtils.isNotBlank(type)){
|
|
||||||
sql.append(params.size() > 0 ? " and " : " where ");
|
|
||||||
sql.append(" typ = :typ ");
|
|
||||||
params.put("typ", Integer.parseInt(type));
|
|
||||||
}
|
|
||||||
|
|
||||||
Query query = this.entityManager.createQuery(sql.toString(), Dept.class);
|
|
||||||
|
|
||||||
setParameters(query, params);
|
|
||||||
|
|
||||||
return new ArrayList<Dept>(query.getResultList());
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error(e.getMessage(), e);
|
|
||||||
throw new Exception(e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
@Override
|
|
||||||
public List<MoreCategory> moreCategoryAutoComplete(String keyCode, String areaid, String levels, String lastlevel)
|
|
||||||
throws Exception {
|
|
||||||
try {
|
|
||||||
Map<String,Object> params = new HashMap<String, Object>();
|
|
||||||
|
|
||||||
StringBuffer sql = new StringBuffer("from MoreCategory");
|
|
||||||
if(StringUtils.isNotBlank(keyCode)){
|
|
||||||
sql.append(params.size() > 0 ? " and " : " where ");
|
|
||||||
sql.append(" (lower(name) like lower(:name)");
|
|
||||||
sql.append(" or lower(id) like lower(:id))");
|
|
||||||
|
|
||||||
params.put("name","%"+keyCode+"%");
|
|
||||||
params.put("id","%"+keyCode+"%");
|
|
||||||
}
|
|
||||||
|
|
||||||
if(StringUtils.isNotBlank(areaid)){
|
|
||||||
sql.append(params.size() > 0 ? " and " : " where ");
|
|
||||||
sql.append(" areaid = :areaid ");
|
|
||||||
params.put("areaid", areaid);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(StringUtils.isNotBlank(levels)){
|
|
||||||
sql.append(params.size() > 0 ? " and " : " where ");
|
|
||||||
sql.append(" levels = :levels ");
|
|
||||||
params.put("levels", Integer.parseInt(levels));
|
|
||||||
}
|
|
||||||
|
|
||||||
if(StringUtils.isNotBlank(lastlevel)){
|
|
||||||
sql.append(params.size() > 0 ? " and " : " where ");
|
|
||||||
sql.append(" lastlevel = :lastlevel ");
|
|
||||||
params.put("lastlevel", Integer.parseInt(lastlevel));
|
|
||||||
}
|
|
||||||
|
|
||||||
Query query = this.entityManager.createQuery(sql.toString(), MoreCategory.class);
|
|
||||||
|
|
||||||
setParameters(query, params);
|
|
||||||
|
|
||||||
return new ArrayList<MoreCategory>(query.getResultList());
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error(e.getMessage(), e);
|
|
||||||
throw new Exception(e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
@Override
|
|
||||||
public List<Brand> brandAutoComplete(String keyCode, String areaid, String levels, String lastlevel)
|
|
||||||
throws Exception {
|
|
||||||
try {
|
|
||||||
Map<String,Object> params = new HashMap<String, Object>();
|
|
||||||
|
|
||||||
StringBuffer sql = new StringBuffer("from Brand");
|
|
||||||
if(StringUtils.isNotBlank(keyCode)){
|
|
||||||
sql.append(params.size() > 0 ? " and " : " where ");
|
|
||||||
sql.append(" (lower(name) like lower(:name)");
|
|
||||||
sql.append(" or lower(id) like lower(:id))");
|
|
||||||
|
|
||||||
params.put("name","%"+keyCode+"%");
|
|
||||||
params.put("id","%"+keyCode+"%");
|
|
||||||
}
|
|
||||||
|
|
||||||
if(StringUtils.isNotBlank(areaid)){
|
|
||||||
sql.append(params.size() > 0 ? " and " : " where ");
|
|
||||||
sql.append(" areaid = :areaid ");
|
|
||||||
params.put("areaid", areaid);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(StringUtils.isNotBlank(levels)){
|
|
||||||
sql.append(params.size() > 0 ? " and " : " where ");
|
|
||||||
sql.append(" levels = :levels ");
|
|
||||||
params.put("levels", Integer.parseInt(levels));
|
|
||||||
}
|
|
||||||
|
|
||||||
if(StringUtils.isNotBlank(lastlevel)){
|
|
||||||
sql.append(params.size() > 0 ? " and " : " where ");
|
|
||||||
sql.append(" lastlevel = :lastlevel ");
|
|
||||||
params.put("lastlevel", Integer.parseInt(lastlevel));
|
|
||||||
}
|
|
||||||
|
|
||||||
Query query = this.entityManager.createQuery(sql.toString(), Brand.class);
|
|
||||||
|
|
||||||
setParameters(query, params);
|
|
||||||
|
|
||||||
return new ArrayList<Brand>(query.getResultList());
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error(e.getMessage(), e);
|
|
||||||
throw new Exception(e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
@Override
|
|
||||||
public List<Spec> specAutoComplete(String keyCode, String areaid) throws Exception {
|
|
||||||
try {
|
|
||||||
Map<String,Object> params = new HashMap<String, Object>();
|
|
||||||
|
|
||||||
StringBuffer sql = new StringBuffer("from Spec ");
|
|
||||||
if(StringUtils.isNotBlank(keyCode)){
|
|
||||||
sql.append(params.size() > 0 ? " and " : " where ");
|
|
||||||
sql.append(" (lower(name) like lower('%" + keyCode.replaceAll("'", "") + "%')");
|
|
||||||
sql.append(" or lower(id) like lower('%" + keyCode.replaceAll("'", "") + "%'))");
|
|
||||||
}
|
|
||||||
|
|
||||||
if(StringUtils.isNotBlank(areaid)){
|
|
||||||
sql.append(params.size() > 0 ? " and " : " where ");
|
|
||||||
sql.append(" areaid = :areaid ");
|
|
||||||
params.put("areaid", areaid);
|
|
||||||
}
|
|
||||||
|
|
||||||
Query query = this.entityManager.createQuery(sql.toString(), Spec.class);
|
|
||||||
|
|
||||||
setParameters(query, params);
|
|
||||||
|
|
||||||
return new ArrayList<Spec>(query.getResultList());
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error(e.getMessage(), e);
|
|
||||||
throw new Exception(e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
@Override
|
|
||||||
public List<Account> accountAutoComplete(String keyCode, String areaid) throws Exception {
|
|
||||||
try {
|
|
||||||
Map<String,Object> params = new HashMap<String, Object>();
|
|
||||||
|
|
||||||
StringBuffer sql = new StringBuffer("from Account");
|
|
||||||
if(StringUtils.isNotBlank(keyCode)){
|
|
||||||
sql.append(params.size() > 0 ? " and " : " where ");
|
|
||||||
sql.append(" (lower(name) like lower(:name)");
|
|
||||||
sql.append(" or lower(id) like lower(:id)");
|
|
||||||
sql.append(" or lower(shortString) like lower(:shortstring))");
|
|
||||||
|
|
||||||
params.put("name","%"+keyCode+"%");
|
|
||||||
params.put("id","%"+keyCode+"%");
|
|
||||||
params.put("shortstring","%"+keyCode+"%");
|
|
||||||
}
|
|
||||||
|
|
||||||
if(StringUtils.isNotBlank(areaid)){
|
|
||||||
sql.append(params.size() > 0 ? " and " : " where ");
|
|
||||||
sql.append(" areaid = :areaid ");
|
|
||||||
params.put("areaid", areaid);
|
|
||||||
}
|
|
||||||
|
|
||||||
Query query = this.entityManager.createQuery(sql.toString(), Account.class);
|
|
||||||
|
|
||||||
setParameters(query, params);
|
|
||||||
|
|
||||||
return new ArrayList<Account>(query.getResultList());
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error(e.getMessage(), e);
|
|
||||||
throw new Exception(e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
@Override
|
|
||||||
public List<Employee> employeeAutoComplete(String keyCode) throws Exception {
|
|
||||||
try {
|
|
||||||
Map<String,Object> params = new HashMap<String, Object>();
|
|
||||||
|
|
||||||
StringBuffer sql = new StringBuffer("from Employee");
|
|
||||||
if(StringUtils.isNotBlank(keyCode)){
|
|
||||||
sql.append(params.size() > 0 ? " and " : " where ");
|
|
||||||
sql.append(" (lower(name) like lower(:name)");
|
|
||||||
sql.append(" or lower(id) like lower(:id)");
|
|
||||||
sql.append(" or lower(shortString) like lower(:shortstring))");
|
|
||||||
|
|
||||||
params.put("name","%"+keyCode+"%");
|
|
||||||
params.put("id","%"+keyCode+"%");
|
|
||||||
params.put("shortstring","%"+keyCode+"%");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Query query = this.entityManager.createQuery(sql.toString(), Employee.class);
|
|
||||||
|
|
||||||
setParameters(query, params);
|
|
||||||
|
|
||||||
return new ArrayList<Employee>(query.getResultList());
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error(e.getMessage(), e);
|
|
||||||
throw new Exception(e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
@Override
|
|
||||||
public List<JcBill> jcBillAutoComplete(String keyCode) throws Exception {
|
|
||||||
try {
|
|
||||||
Map<String,Object> params = new HashMap<String, Object>();
|
|
||||||
|
|
||||||
StringBuffer sql = new StringBuffer("from JcBill ");
|
|
||||||
if(StringUtils.isNotBlank(keyCode)){
|
|
||||||
sql.append(params.size() > 0 ? " and " : " where ");
|
|
||||||
sql.append(" lower(id) like lower('%" + keyCode.replaceAll("'", "") + "%')");
|
|
||||||
params.put("id", keyCode);
|
|
||||||
}
|
|
||||||
|
|
||||||
Query query = this.entityManager.createQuery(sql.toString(), JcBill.class);
|
|
||||||
|
|
||||||
List<JcBill> products = query.getResultList();
|
|
||||||
|
|
||||||
return products;
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error(e.getMessage(), e);
|
|
||||||
throw new Exception(e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
@Override
|
|
||||||
public List<AbacusConfigItem> abacusConfigItemGroupAutoComplete(String keyCode, String keyGroup, String key) throws Exception {
|
|
||||||
try {
|
|
||||||
|
|
||||||
Map<String,Object> params = new HashMap<String, Object>();
|
|
||||||
|
|
||||||
StringBuffer sql = new StringBuffer("from AbacusConfigItem");
|
|
||||||
if(StringUtils.isNotBlank(keyCode)){
|
|
||||||
sql.append(params.size() > 0 ? " and " : " where ");
|
|
||||||
sql.append(" (lower(code) like lower(:code)");
|
|
||||||
sql.append(" or lower(name) like lower(:name))");
|
|
||||||
|
|
||||||
params.put("code","%"+keyCode+"%");
|
|
||||||
params.put("name","%"+keyCode+"%");
|
|
||||||
}
|
|
||||||
|
|
||||||
if(StringUtils.isNotBlank(keyGroup)){
|
|
||||||
sql.append(params.size() > 0 ? " and " : " where ");
|
|
||||||
sql.append(" keyGroup = :keyGroup ");
|
|
||||||
params.put("keyGroup", keyGroup);
|
|
||||||
}
|
|
||||||
if(StringUtils.isNotBlank(key)){
|
|
||||||
sql.append(params.size() > 0 ? " and " : " where ");
|
|
||||||
sql.append(" key = :key ");
|
|
||||||
params.put("key", key);
|
|
||||||
}
|
|
||||||
|
|
||||||
Query query = this.entityManager.createQuery(sql.toString(), AbacusConfigItem.class);
|
|
||||||
|
|
||||||
setParameters(query, params);
|
|
||||||
|
|
||||||
return new ArrayList<AbacusConfigItem>(query.getResultList());
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error(e.getMessage(), e);
|
|
||||||
throw new Exception(e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Map<String, Map<String, String>> getGovbs() throws Exception {
|
|
||||||
try {
|
|
||||||
Map<String, Map<String, String>> map = new HashMap<String, Map<String, String>>();
|
|
||||||
|
|
||||||
String sql = "select city, id, name from basearea order by id desc offset 0 rows fetch next 3000 rows only ";
|
|
||||||
List<BaseArea> lists = jdbcTemplate.query(sql, new BeanPropertyRowMapper<BaseArea>(BaseArea.class));
|
|
||||||
|
|
||||||
if(lists!=null&&!lists.isEmpty()){
|
|
||||||
for(BaseArea obj:lists){
|
|
||||||
Map<String, String> mapb = map.get(obj.getCity());
|
|
||||||
if(mapb==null){
|
|
||||||
mapb = new HashMap<String, String>();
|
|
||||||
map.put(obj.getCity(), mapb);
|
|
||||||
}
|
|
||||||
mapb.put(obj.getId(), obj.getName());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return map;
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
LOG.error(e.getMessage(), e);
|
|
||||||
throw new Exception(e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-670
@@ -1,670 +0,0 @@
|
|||||||
package abacus.springboot.example.impl;
|
|
||||||
|
|
||||||
import java.sql.PreparedStatement;
|
|
||||||
import java.sql.SQLException;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import javax.persistence.EntityManager;
|
|
||||||
import javax.persistence.PersistenceContext;
|
|
||||||
import javax.persistence.Query;
|
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.data.domain.Page;
|
|
||||||
import org.springframework.data.domain.PageImpl;
|
|
||||||
import org.springframework.data.domain.Pageable;
|
|
||||||
import org.springframework.jdbc.core.BatchPreparedStatementSetter;
|
|
||||||
import org.springframework.jdbc.core.BeanPropertyRowMapper;
|
|
||||||
import org.springframework.jdbc.core.JdbcTemplate;
|
|
||||||
import org.springframework.stereotype.Repository;
|
|
||||||
|
|
||||||
import abacus.springboot.example.dao.JcBill;
|
|
||||||
import abacus.springboot.example.dao.JcBillHg;
|
|
||||||
import abacus.springboot.example.dao.JcBillPhoto;
|
|
||||||
import abacus.springboot.example.dao.JcBillSourceItem;
|
|
||||||
import abacus.springboot.example.dao.JcSourceItem;
|
|
||||||
import abacus.springboot.example.pi.JcBillAccessIF;
|
|
||||||
import abacus.springboot.example.util.DateUtil;
|
|
||||||
import abacus.springboot.example.vo.BaiduToken;
|
|
||||||
import abacus.springboot.example.vo.SiDepositlocation;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>Title:ApiJcBillAccess</p>
|
|
||||||
<p>Description: 底层实现</p>
|
|
||||||
@author chuanZeng
|
|
||||||
@date 2026年8月18日
|
|
||||||
*/
|
|
||||||
@Repository
|
|
||||||
public class JcBillAccess extends MyJpaUtils implements JcBillAccessIF {
|
|
||||||
|
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(JcBillAccess.class);
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private JdbcTemplate jdbcTemplate;
|
|
||||||
|
|
||||||
@PersistenceContext
|
|
||||||
private EntityManager em;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<JcBillPhoto> queryJcBillPhoto(String srcid, String srcitemid, String typephoto)
|
|
||||||
throws RuntimeException {
|
|
||||||
try {
|
|
||||||
Map<String,Object> params = new HashMap<String, Object>();
|
|
||||||
List<Object> args = new ArrayList<Object>();
|
|
||||||
StringBuffer sb = new StringBuffer("select id, version, srcid, srcitemid, typephoto, urlphoto, dt from jc_bill_photo a");
|
|
||||||
|
|
||||||
if(StringUtils.isNotBlank(srcid)) {
|
|
||||||
sb.append(params.size() > 0 ?" and ":" where ");
|
|
||||||
sb.append(" a.srcid = ? ");
|
|
||||||
args.add(srcid);
|
|
||||||
params.put("srcid", srcid);
|
|
||||||
}
|
|
||||||
if(StringUtils.isNotBlank(srcitemid)) {
|
|
||||||
sb.append(params.size() > 0 ?" and ":" where ");
|
|
||||||
sb.append(" a.srcitemid = ? ");
|
|
||||||
args.add(srcitemid);
|
|
||||||
params.put("srcitemid", srcitemid);
|
|
||||||
}
|
|
||||||
if(StringUtils.isNotBlank(typephoto)) {
|
|
||||||
sb.append(params.size() > 0 ?" and ":" where ");
|
|
||||||
sb.append(" a.typephoto = ? ");
|
|
||||||
args.add(typephoto);
|
|
||||||
params.put("typephoto", typephoto);
|
|
||||||
}
|
|
||||||
|
|
||||||
LOG.info("queryJcBillPhoto>>>SQL>>>{}", sb.toString());
|
|
||||||
|
|
||||||
List<JcBillPhoto> lists = jdbcTemplate.query( sb.toString(), args.toArray(), new BeanPropertyRowMapper<JcBillPhoto>(JcBillPhoto.class));
|
|
||||||
|
|
||||||
return lists;
|
|
||||||
}catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
throw new RuntimeException(e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<JcBillPhoto> queryJcBillPhotoIn(List<String> srcids) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
Map<String,Object> params = new HashMap<String, Object>();
|
|
||||||
List<Object> args = new ArrayList<Object>();
|
|
||||||
StringBuffer sb = new StringBuffer("select id, version, srcid, srcitemid, typephoto, urlphoto, dt from jc_bill_photo a");
|
|
||||||
|
|
||||||
if(srcids != null && srcids.size() >= 1) {
|
|
||||||
sb.append(params.size() > 0 ?" and ":" where ");
|
|
||||||
sb.append(" a.srcid in (");
|
|
||||||
for(int i = 0; i < srcids.size(); i++){
|
|
||||||
if(i > 0) sb.append(",");
|
|
||||||
sb.append("?");
|
|
||||||
args.add(srcids.get(i));
|
|
||||||
}
|
|
||||||
sb.append(") ");
|
|
||||||
}
|
|
||||||
|
|
||||||
LOG.info("queryJcBillPhotoIn>>>SQL>>>{}", sb.toString());
|
|
||||||
|
|
||||||
List<JcBillPhoto> lists = jdbcTemplate.query( sb.toString(), args.toArray(), new BeanPropertyRowMapper<JcBillPhoto>(JcBillPhoto.class));
|
|
||||||
|
|
||||||
return lists;
|
|
||||||
}catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
throw new RuntimeException(e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void updateJcBill(JcBill bill) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
List<Object> args = new ArrayList<Object>();
|
|
||||||
StringBuffer sql = new StringBuffer(" update jc_bill ");
|
|
||||||
sql.append(" set status = ?,");
|
|
||||||
sql.append(" warehouse = ?,");
|
|
||||||
sql.append(" warehousename = ?,");
|
|
||||||
sql.append(" receivedt = ?,");
|
|
||||||
sql.append(" quantity = ?,");
|
|
||||||
sql.append(" subtotal = ?,");
|
|
||||||
sql.append(" applicant = ?,");
|
|
||||||
sql.append(" applicantname = ?,");
|
|
||||||
sql.append(" applicantdt = ?");
|
|
||||||
sql.append(" where id = ?");
|
|
||||||
|
|
||||||
args.add(bill.getStatus());
|
|
||||||
args.add(bill.getWarehouse());
|
|
||||||
args.add(bill.getWarehousename());
|
|
||||||
args.add(bill.getReceivedt());
|
|
||||||
args.add(bill.getQuantity());
|
|
||||||
args.add(bill.getSubtotal());
|
|
||||||
args.add(bill.getApplicant());
|
|
||||||
args.add(bill.getApplicantname());
|
|
||||||
args.add(DateUtil.formatDateTime(bill.getApplicantdt()));
|
|
||||||
args.add(bill.getId());
|
|
||||||
|
|
||||||
this.jdbcTemplate.update(sql.toString(), args.toArray());
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
throw new RuntimeException(e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void updateJcBillSourceItem(List<JcBillSourceItem> items) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
String sql = "update jc_billsource_item set recsource = ?, recplatform = ?, channel = ?, price = ?, quantity = ?,"
|
|
||||||
+ " numbers = ?, subtotal = ?, goodsid = ?, logisticsid = ?"
|
|
||||||
+ " where id = ?";
|
|
||||||
|
|
||||||
this.jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {
|
|
||||||
|
|
||||||
public void setValues(PreparedStatement ps, int i) throws SQLException {
|
|
||||||
JcBillSourceItem item = items.get(i);
|
|
||||||
ps.setString(1, item.getRecsource());
|
|
||||||
ps.setString(2, item.getRecplatform());
|
|
||||||
ps.setString(3, item.getChannel());
|
|
||||||
ps.setDouble(4, item.getPrice());
|
|
||||||
ps.setDouble(5, item.getQuantity());
|
|
||||||
|
|
||||||
ps.setDouble(6, item.getNumbers());
|
|
||||||
ps.setDouble(7, item.getSubtotal());
|
|
||||||
ps.setString(8, item.getGoodsid());
|
|
||||||
ps.setString(9, item.getLogisticsid());
|
|
||||||
|
|
||||||
ps.setLong(10, item.getId());
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getBatchSize() {
|
|
||||||
return items.size();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
throw new RuntimeException(e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void updateJcBillPhoto(List<JcBillPhoto> photos) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
String sql = "update jc_bill_photo set urlphoto = ?, dt = ? where srcid = ? and srcitemid = ? and typephoto = ?";
|
|
||||||
|
|
||||||
this.jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {
|
|
||||||
|
|
||||||
public void setValues(PreparedStatement ps, int i) throws SQLException {
|
|
||||||
JcBillPhoto item = photos.get(i);
|
|
||||||
ps.setString(1, item.getUrlphoto());
|
|
||||||
ps.setDate(2, new java.sql.Date(item.getDt().getTime()));
|
|
||||||
ps.setString(3, item.getSrcid());
|
|
||||||
ps.setString(4, item.getSrcitemid());
|
|
||||||
ps.setString(5, item.getTypephoto());
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getBatchSize() {
|
|
||||||
return photos.size();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
throw new RuntimeException(e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int countJcBillItemIndexno(String billId) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
StringBuffer sb = new StringBuffer(" select max(indexno) from jc_billsource_item a where a.billid = ?");
|
|
||||||
|
|
||||||
Query q = this.em.createNativeQuery(sb.toString()).setParameter(1, billId);
|
|
||||||
|
|
||||||
return q.getSingleResult() == null ? 0 : Integer.valueOf(q.getSingleResult().toString());
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
throw new RuntimeException(e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String lastBillHgId() throws RuntimeException {
|
|
||||||
try {
|
|
||||||
StringBuffer sb = new StringBuffer(" select top 1 id from jc_billhg a where a.status = 1 order by founddt asc ");
|
|
||||||
|
|
||||||
List<JcBill> lists = jdbcTemplate.query(sb.toString(), new BeanPropertyRowMapper<JcBill>(JcBill.class));
|
|
||||||
|
|
||||||
return (lists != null && lists.size() >= 1) ? lists.get(0).getId() : "";
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
throw new RuntimeException(e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<JcSourceItem> queryJcSourceItemByBillId(String billId) {
|
|
||||||
try {
|
|
||||||
Map<String,Object> params = new HashMap<String, Object>();
|
|
||||||
List<Object> args = new ArrayList<Object>();
|
|
||||||
StringBuffer sb = new StringBuffer("select id, version, indexno, billid, srcitemid,");
|
|
||||||
sb.append(" goodsid, logisticsid, billout, billoutdt, billoutwh,");
|
|
||||||
sb.append(" billoutwhname, product, productname, account, accountname,");
|
|
||||||
sb.append(" operator, operatorname, groupid, groupname, salearea,");
|
|
||||||
sb.append(" saleareaname, source, dt");
|
|
||||||
sb.append(" from jc_source_item a");
|
|
||||||
|
|
||||||
if(StringUtils.isNotBlank(billId)) {
|
|
||||||
sb.append(params.size() > 0 ?" and ":" where ");
|
|
||||||
sb.append(" a.billid = ? ");
|
|
||||||
args.add(billId);
|
|
||||||
params.put("billId", billId);
|
|
||||||
}
|
|
||||||
|
|
||||||
LOG.info("queryJcSourceItemByBillId>>>SQL>>>{}", sb.toString());
|
|
||||||
|
|
||||||
List<JcSourceItem> lists = jdbcTemplate.query( sb.toString(), args.toArray(), new BeanPropertyRowMapper<JcSourceItem>(JcSourceItem.class));
|
|
||||||
|
|
||||||
return lists;
|
|
||||||
}catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
throw new RuntimeException(e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void deleteJcSourceItemBySource(String billId) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
StringBuffer sb = new StringBuffer(" delete from jc_source_item where billid = ? and source in ('业务中台', '二维码')");
|
|
||||||
|
|
||||||
LOG.info("deleteJcSourceItemBySource>>>SQL>>>{}", sb.toString());
|
|
||||||
|
|
||||||
jdbcTemplate.update(sb.toString(), billId);
|
|
||||||
|
|
||||||
}catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
throw new RuntimeException(e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Page<JcBill> queryJcBill(String fromDate, String thruDate, String applicant, String goods, String id,
|
|
||||||
String billin, String goodsid, String product, String status, int typ, Pageable pageable) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
Map<String,Object> params = new HashMap<String, Object>();
|
|
||||||
List<Object> args = new ArrayList<Object>();
|
|
||||||
StringBuffer sb = new StringBuffer("");
|
|
||||||
|
|
||||||
if(StringUtils.isNotBlank(fromDate)) {
|
|
||||||
sb.append(params.size() > 0 ? " and ":" where ");
|
|
||||||
sb.append(" a.applicantdt >= ? ");
|
|
||||||
args.add(fromDate);
|
|
||||||
params.put("fromDate", fromDate);
|
|
||||||
}
|
|
||||||
if(StringUtils.isNotBlank(thruDate)) {
|
|
||||||
sb.append(params.size() > 0 ? " and ":" where ");
|
|
||||||
sb.append(" a.applicantdt <= ? ");
|
|
||||||
args.add(thruDate);
|
|
||||||
params.put("thruDate", thruDate);
|
|
||||||
}
|
|
||||||
if(StringUtils.isNotBlank(applicant)) {
|
|
||||||
sb.append(params.size() > 0 ? " and ":" where ");
|
|
||||||
sb.append(" a.applicant = ? ");
|
|
||||||
args.add(applicant);
|
|
||||||
params.put("applicant", applicant);
|
|
||||||
}
|
|
||||||
if(StringUtils.isNotBlank(goods)) {
|
|
||||||
sb.append(params.size() > 0 ? " and ":" where ");
|
|
||||||
sb.append(" a.goods = ? ");
|
|
||||||
args.add(goods);
|
|
||||||
params.put("goods", goods);
|
|
||||||
}
|
|
||||||
if(StringUtils.isNotBlank(id)) {
|
|
||||||
sb.append(params.size() > 0 ? " and ":" where ");
|
|
||||||
sb.append(" a.id = ? ");
|
|
||||||
args.add(id);
|
|
||||||
params.put("id", id);
|
|
||||||
}
|
|
||||||
if(StringUtils.isNotBlank(billin)) {
|
|
||||||
sb.append(params.size() > 0 ? " and ":" where ");
|
|
||||||
sb.append(" a.billin = ? ");
|
|
||||||
args.add(billin);
|
|
||||||
params.put("billin", billin);
|
|
||||||
}
|
|
||||||
if(StringUtils.isNotBlank(status)) {
|
|
||||||
if(typ == 1) {
|
|
||||||
sb.append(params.size() > 0 ? " and ":" where ");
|
|
||||||
sb.append(" a.status = ? ");
|
|
||||||
args.add(Integer.parseInt(status));
|
|
||||||
params.put("status", Integer.parseInt(status));
|
|
||||||
} else {
|
|
||||||
|
|
||||||
if("1".equals(status) || "2".equals(status)) {
|
|
||||||
sb.append(params.size() > 0 ? " and ":" where ");
|
|
||||||
sb.append(" a.hgstatus = ? ");
|
|
||||||
args.add(Integer.parseInt(status));
|
|
||||||
params.put("hgstatus", Integer.parseInt(status));
|
|
||||||
} else {
|
|
||||||
sb.append(params.size() > 0 ? " and ":" where ");
|
|
||||||
sb.append(" a.status = ? ");
|
|
||||||
args.add(Integer.parseInt(status));
|
|
||||||
params.put("status", Integer.parseInt(status));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}else {
|
|
||||||
if(typ == 1) {
|
|
||||||
sb.append(params.size() > 0 ? " and ":" where ");
|
|
||||||
sb.append(" a.status in (-3, -2, 2, 3, 4, 5) ");
|
|
||||||
params.put("status", status);
|
|
||||||
} else {
|
|
||||||
sb.append(params.size() > 0 ? " and ":" where ");
|
|
||||||
sb.append(" (a.status in (3, 4, 5) or a.hgstatus in (1, 2))");
|
|
||||||
params.put("status", status);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(StringUtils.isNotBlank(goodsid)) {
|
|
||||||
sb.append(params.size() > 0 ? " and ":" where ");
|
|
||||||
sb.append(" a.id in (select b.billid from jc_billsource_item b where b.goods like ? ) ");
|
|
||||||
args.add("%" + goodsid + "%");
|
|
||||||
params.put("goodsid", goodsid);
|
|
||||||
}
|
|
||||||
if(StringUtils.isNotBlank(product)) {
|
|
||||||
sb.append(params.size() > 0 ? " and ":" where ");
|
|
||||||
sb.append(" a.id in (select b.billid from jc_billsource_item b where b.product = ? ) ");
|
|
||||||
args.add(product);
|
|
||||||
params.put("product", product);
|
|
||||||
}
|
|
||||||
|
|
||||||
StringBuffer orderBy = new StringBuffer("");
|
|
||||||
|
|
||||||
orderBy.append(" order by dt desc ");
|
|
||||||
|
|
||||||
orderBy.append(" offset "+ (pageable.getPageNumber() * pageable.getPageSize()) + " rows fetch next "+ pageable.getPageSize() + " rows only ");
|
|
||||||
|
|
||||||
|
|
||||||
StringBuffer sql = new StringBuffer("select id, version, status, hgstatus, goods, warehouse, warehousename,");
|
|
||||||
sql.append(" receivedt, quantity, subtotal, billin, billindt, applicant, applicantname, applicantdt, dt");
|
|
||||||
sql.append(" from jc_bill a ");
|
|
||||||
sql.append(sb.toString());
|
|
||||||
sql.append(orderBy.toString());
|
|
||||||
|
|
||||||
LOG.info("queryJcBill>>>SQL>>>{}", sql.toString());
|
|
||||||
|
|
||||||
List<JcBill> lists = jdbcTemplate.query(sql.toString(), args.toArray(), new BeanPropertyRowMapper<JcBill>(JcBill.class));
|
|
||||||
|
|
||||||
Long count = jdbcTemplate.queryForObject("select count(a.id) from jc_bill a " + sb.toString(), args.toArray(), Long.class);
|
|
||||||
|
|
||||||
Page<JcBill> scorePage = new PageImpl<JcBill>(lists, pageable, count);
|
|
||||||
return scorePage;
|
|
||||||
}catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
throw new RuntimeException(e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void saveEvent(String srcid, String typ, String billtyp) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
String sql="insert into si_siwdevent(srcid, typ, billtyp, deptid, stauts,"
|
|
||||||
+ " node, remake, dt, inputdate)"
|
|
||||||
+ " values (?, ?, ?, ?, ?,"
|
|
||||||
+ " ?, ?, ?, ?) ";
|
|
||||||
Query query = em.createNativeQuery(sql);
|
|
||||||
query.setParameter(1, srcid);
|
|
||||||
query.setParameter(2, typ);
|
|
||||||
query.setParameter(3, billtyp);
|
|
||||||
query.setParameter(4, "");
|
|
||||||
query.setParameter(5, 0);
|
|
||||||
|
|
||||||
query.setParameter(6, 0);
|
|
||||||
query.setParameter(7, "");
|
|
||||||
query.setParameter(8, new Date());
|
|
||||||
query.setParameter(9, new Date());
|
|
||||||
query.executeUpdate();
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
throw new RuntimeException(e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Page<JcBillHg> queryJcBillHg(String fromDate, String thruDate, String account, String salearea, String id,
|
|
||||||
String billId, String status, String product, String manager, int typ, Pageable pageable)
|
|
||||||
throws RuntimeException {
|
|
||||||
try {
|
|
||||||
Map<String,Object> params = new HashMap<String, Object>();
|
|
||||||
List<Object> args = new ArrayList<Object>();
|
|
||||||
StringBuffer sb = new StringBuffer("");
|
|
||||||
|
|
||||||
if(StringUtils.isNotBlank(fromDate)) {
|
|
||||||
sb.append(params.size() > 0 ? " and ":" where ");
|
|
||||||
sb.append(" a.founddt >= ? ");
|
|
||||||
args.add(fromDate);
|
|
||||||
params.put("fromDate", fromDate);
|
|
||||||
}
|
|
||||||
if(StringUtils.isNotBlank(thruDate)) {
|
|
||||||
sb.append(params.size() > 0 ? " and ":" where ");
|
|
||||||
sb.append(" a.founddt <= ? ");
|
|
||||||
args.add(thruDate);
|
|
||||||
params.put("thruDate", thruDate);
|
|
||||||
}
|
|
||||||
if(StringUtils.isNotBlank(account)) {
|
|
||||||
sb.append(params.size() > 0 ? " and ":" where ");
|
|
||||||
sb.append(" a.account = ? ");
|
|
||||||
args.add(account);
|
|
||||||
params.put("account", account);
|
|
||||||
}
|
|
||||||
if(StringUtils.isNotBlank(salearea)) {
|
|
||||||
sb.append(params.size() > 0 ? " and ":" where ");
|
|
||||||
sb.append(" a.salearea = ? ");
|
|
||||||
args.add(salearea);
|
|
||||||
params.put("salearea", salearea);
|
|
||||||
}
|
|
||||||
if(StringUtils.isNotBlank(id)) {
|
|
||||||
sb.append(params.size() > 0 ? " and ":" where ");
|
|
||||||
sb.append(" a.id = ? ");
|
|
||||||
args.add(id);
|
|
||||||
params.put("id", id);
|
|
||||||
}
|
|
||||||
if(StringUtils.isNotBlank(billId)) {
|
|
||||||
sb.append(params.size() > 0 ? " and ":" where ");
|
|
||||||
sb.append(" a.billid = ? ");
|
|
||||||
args.add(billId);
|
|
||||||
params.put("billId", billId);
|
|
||||||
}
|
|
||||||
if(StringUtils.isNotBlank(status)) {
|
|
||||||
sb.append(params.size() > 0 ? " and ":" where ");
|
|
||||||
sb.append(" a.status = ? ");
|
|
||||||
args.add(Integer.parseInt(status));
|
|
||||||
params.put("status", Integer.parseInt(status));
|
|
||||||
} else {
|
|
||||||
if(typ == 1) {
|
|
||||||
sb.append(params.size() > 0 ? " and ":" where ");
|
|
||||||
sb.append(" a.status in (1, 2, 3) ");
|
|
||||||
params.put("status", status);
|
|
||||||
} else {
|
|
||||||
sb.append(params.size() > 0 ? " and ":" where ");
|
|
||||||
sb.append(" a.status in (4, 5, 6) ");
|
|
||||||
params.put("status", status);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(StringUtils.isNotBlank(product)) {
|
|
||||||
sb.append(params.size() > 0 ? " and ":" where ");
|
|
||||||
sb.append(" a.id in (select b.billhg from jc_billin_item b where b.product = ? ) ");
|
|
||||||
args.add(product);
|
|
||||||
params.put("product", product);
|
|
||||||
}
|
|
||||||
if(StringUtils.isNotBlank(manager)) {
|
|
||||||
sb.append(params.size() > 0 ? " and ":" where ");
|
|
||||||
sb.append(" a.manager = ? ");
|
|
||||||
args.add(manager);
|
|
||||||
params.put("manager", manager);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
StringBuffer orderBy = new StringBuffer("");
|
|
||||||
|
|
||||||
orderBy.append(" order by founddt desc ");
|
|
||||||
|
|
||||||
orderBy.append(" offset "+ (pageable.getPageNumber() * pageable.getPageSize()) + " rows fetch next "+ pageable.getPageSize() + " rows only ");
|
|
||||||
|
|
||||||
|
|
||||||
StringBuffer sql = new StringBuffer("select id, version, billid, status, source,");
|
|
||||||
sql.append(" account, accountname, quantity, subtotal, freight,");
|
|
||||||
sql.append(" manager, managername, consignee, consigneephone, province,");
|
|
||||||
sql.append(" provincename, city, cityname, area, areaname,");
|
|
||||||
sql.append(" address, receiveway, remark, remark1, salearea,");
|
|
||||||
sql.append(" saleareaname, groupid, groupname, logisticsname, logisticscode,");
|
|
||||||
sql.append(" logisticstype, logisticsno, found, foundname,");
|
|
||||||
sql.append(" founddt, submit, submitname, submitdt, audit,");
|
|
||||||
sql.append(" auditname, auditdt, dt, fhwarehouse, fhwarehousename,");
|
|
||||||
sql.append(" wdtorder, wdtbillout, wdtbillouttyp");
|
|
||||||
sql.append(" ,(select b.status from jc_bill b where b.id = a.billid ) as jcstatus");
|
|
||||||
sql.append(" from jc_billhg a");
|
|
||||||
sql.append(sb.toString());
|
|
||||||
sql.append(orderBy.toString());
|
|
||||||
|
|
||||||
LOG.info("queryJcBillHg>>>SQL>>>{}", sb.toString());
|
|
||||||
|
|
||||||
List<JcBillHg> lists = jdbcTemplate.query(sql.toString(), args.toArray(), new BeanPropertyRowMapper<JcBillHg>(JcBillHg.class));
|
|
||||||
|
|
||||||
Long count = jdbcTemplate.queryForObject("select count(a.id) from jc_billhg a " + sb.toString(), args.toArray(), Long.class);
|
|
||||||
|
|
||||||
Page<JcBillHg> scorePage = new PageImpl<JcBillHg>(lists, pageable, count);
|
|
||||||
return scorePage;
|
|
||||||
}catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
throw new RuntimeException(e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void deleteJcSourceItem(List<Long> ids) throws RuntimeException {
|
|
||||||
if(ids==null||ids.isEmpty()) return;
|
|
||||||
for(int i=0;i<ids.size();i+=500){
|
|
||||||
int end=(i+500)>ids.size()?ids.size():(i+500);
|
|
||||||
em.createNativeQuery("delete from jc_source_item where id in (:ids) ").setParameter("ids", ids.subList(i, end)).executeUpdate();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void deleteJcBillPhoto(String srcid, String srcitemid, String type) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
StringBuffer sb = new StringBuffer(" delete from jc_bill_photo where"
|
|
||||||
+ " srcid = ?"
|
|
||||||
// + " and srcitemid = ?"
|
|
||||||
+ " and typephoto = ?");
|
|
||||||
|
|
||||||
LOG.info("deleteJcBillPhoto>>>SQL>>>{}", sb.toString());
|
|
||||||
|
|
||||||
jdbcTemplate.update(sb.toString(), srcid, type);
|
|
||||||
}catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
throw new RuntimeException(e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getBaiduToken() throws RuntimeException {
|
|
||||||
try {
|
|
||||||
StringBuffer sb = new StringBuffer("select token from si_baidu_token");
|
|
||||||
|
|
||||||
List<BaiduToken> lists = jdbcTemplate.query(sb.toString(), new BeanPropertyRowMapper<BaiduToken>(BaiduToken.class));
|
|
||||||
|
|
||||||
return (lists != null && lists.size() >= 1) ? lists.get(0).getToken() : "";
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
throw new RuntimeException(e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<JcBillSourceItem> queryJcBillSourceItemInBillId(List<String> billIds) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
Map<String,Object> params = new HashMap<String, Object>();
|
|
||||||
List<Object> args = new ArrayList<Object>();
|
|
||||||
StringBuffer sb = new StringBuffer(" select billid, status, recsource, recplatform, channel ");
|
|
||||||
sb.append(" from jc_billsource_item a ");
|
|
||||||
|
|
||||||
if(billIds != null && billIds.size() >= 1) {
|
|
||||||
sb.append(params.size() > 0 ?" and ":" where ");
|
|
||||||
sb.append(" a.billid in (");
|
|
||||||
for(int i = 0; i < billIds.size(); i++){
|
|
||||||
if(i > 0) sb.append(",");
|
|
||||||
sb.append("?");
|
|
||||||
args.add(billIds.get(i));
|
|
||||||
}
|
|
||||||
sb.append(") ");
|
|
||||||
}
|
|
||||||
|
|
||||||
LOG.info("queryJcBillSourceItemInBillId>>>SQL>>>{}", sb.toString());
|
|
||||||
|
|
||||||
List<JcBillSourceItem> lsit = jdbcTemplate.query(sb.toString(), args.toArray(), new BeanPropertyRowMapper<JcBillSourceItem>(JcBillSourceItem.class));
|
|
||||||
|
|
||||||
return lsit;
|
|
||||||
}catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
throw new RuntimeException(e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public SiDepositlocation querySiDepositlocation(String srcid) throws Exception {
|
|
||||||
try {
|
|
||||||
List<Object> args = new ArrayList<Object>();
|
|
||||||
StringBuffer sb = new StringBuffer("select a.id, a.push from wms_depositlocation a");
|
|
||||||
sb.append(" where a.id in (select d.physicaldept from dept d where d.id in");
|
|
||||||
sb.append(" (select c.warehouse from jc_bill c where c.id = ?))");
|
|
||||||
args.add(srcid);
|
|
||||||
|
|
||||||
LOG.info("querySiDepositlocation>>>SQL>>>{}", sb.toString());
|
|
||||||
|
|
||||||
List<SiDepositlocation> lists = jdbcTemplate.query( sb.toString(), args.toArray(), new BeanPropertyRowMapper<SiDepositlocation>(SiDepositlocation.class));
|
|
||||||
|
|
||||||
return (lists != null && lists.size() >= 1) ? lists.get(0) : null;
|
|
||||||
}catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
throw new RuntimeException(e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public SiDepositlocation querySiDepositlocationHGfc(String srcid) throws Exception {
|
|
||||||
try {
|
|
||||||
List<Object> args = new ArrayList<Object>();
|
|
||||||
StringBuffer sb = new StringBuffer("select a.id, a.push from wms_depositlocation a");
|
|
||||||
sb.append(" where a.id in (select d.physicaldept from dept d where d.id in");
|
|
||||||
sb.append(" (select c.fhwarehouse from jc_billhg c where c.id = ?))");
|
|
||||||
args.add(srcid);
|
|
||||||
|
|
||||||
LOG.info("querySiDepositlocationHGfc>>>SQL>>>{}", sb.toString());
|
|
||||||
|
|
||||||
List<SiDepositlocation> lists = jdbcTemplate.query( sb.toString(), args.toArray(), new BeanPropertyRowMapper<SiDepositlocation>(SiDepositlocation.class));
|
|
||||||
|
|
||||||
return (lists != null && lists.size() >= 1) ? lists.get(0) : null;
|
|
||||||
}catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
throw new RuntimeException(e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void deleteEvent(String srcid, String typ, String billtyp) throws RuntimeException {
|
|
||||||
try {
|
|
||||||
String sql="delete from si_siwdevent where srcid = ? and typ = ? and billtyp = ?";
|
|
||||||
Query query = em.createNativeQuery(sql);
|
|
||||||
query.setParameter(1, srcid);
|
|
||||||
query.setParameter(2, typ);
|
|
||||||
query.setParameter(3, billtyp);
|
|
||||||
query.executeUpdate();
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
throw new RuntimeException(e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
-22
@@ -1,22 +0,0 @@
|
|||||||
package abacus.springboot.example.impl;
|
|
||||||
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import javax.persistence.Query;
|
|
||||||
|
|
||||||
public class MyJpaUtils {
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 给hql参数设置值
|
|
||||||
*
|
|
||||||
* @param query 查询
|
|
||||||
* @param params 参数
|
|
||||||
*/
|
|
||||||
public void setParameters(Query query, Map<String, Object> params) {
|
|
||||||
for (Map.Entry<String, Object> entry : params.entrySet()) {
|
|
||||||
query.setParameter(entry.getKey(), entry.getValue());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
-200
@@ -1,200 +0,0 @@
|
|||||||
package abacus.springboot.example.pi;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.springframework.data.domain.Page;
|
|
||||||
import org.springframework.data.domain.Pageable;
|
|
||||||
|
|
||||||
import abacus.springboot.example.api.view.ApiBillHg;
|
|
||||||
import abacus.springboot.example.api.view.ApiBillHgItem;
|
|
||||||
import abacus.springboot.example.api.view.ApiBillHgPayment;
|
|
||||||
import abacus.springboot.example.api.view.ApiJcBill;
|
|
||||||
import abacus.springboot.example.api.view.ApiJcBillHgSearchItem;
|
|
||||||
import abacus.springboot.example.api.view.ApiJcBillItem;
|
|
||||||
import abacus.springboot.example.api.view.ApiJcBillSearch;
|
|
||||||
import abacus.springboot.example.api.view.JcBillCount;
|
|
||||||
import abacus.springboot.example.api.view.JcCodeFlow;
|
|
||||||
import abacus.springboot.example.api.view.JcProduct;
|
|
||||||
import abacus.springboot.example.api.view.JcProductBillSouce;
|
|
||||||
import abacus.springboot.example.dao.JcBillHg;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>Title:ApiJcBillAccess</p>
|
|
||||||
<p>Description: 底层实现-interface</p>
|
|
||||||
@author chuanZeng
|
|
||||||
@date 2026年8月18日
|
|
||||||
*/
|
|
||||||
public interface ApiJcBillAccessIF {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 稽查收货查询
|
|
||||||
* @param keyword
|
|
||||||
* @param status
|
|
||||||
* @param pageable
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public Page<ApiJcBillSearch> queryApiJcBillSearch(String keyword, String employee, String status, Pageable pageable) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 稽查收货主单查询
|
|
||||||
* @param id
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public ApiJcBill queryApiJcBillById(String id) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 稽查收货明细
|
|
||||||
* @param billId
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public List<ApiJcBillItem> queryApiJcBillItemByBIllId(String billId) throws RuntimeException;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 回购列表查询
|
|
||||||
* @param keyword
|
|
||||||
* @param status
|
|
||||||
* @param pageable
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public Page<ApiJcBillHgSearchItem> queryApiJcBillHgSearchItem(String keyword, String employee, String status, Pageable pageable) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 回购;查询品种和件数汇总
|
|
||||||
* @param ids
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public List<JcBillCount> queryJcBillCount(List<String> ids) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 回购:主单查询
|
|
||||||
* @param id
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public ApiBillHg queryApiBillHgById(String hgId) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 回购:明细查询
|
|
||||||
* @param billId
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public List<ApiBillHgItem> queryApiBillHgItemByHgId(String hgId) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 回购:支付明细查询
|
|
||||||
* @param billId
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public List<ApiBillHgPayment> queryApiBillHgPaymentByHgId(String hgId) throws RuntimeException;
|
|
||||||
|
|
||||||
public List<ApiBillHgPayment> queryApiBillHgPaymentByHgId(List<String> hgIds) throws RuntimeException;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据物流码,查询出库相关信息
|
|
||||||
* @param code
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public List<JcCodeFlow> queryJcCodeFlow(List<String> codes) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 稽查货品查询-单号查询
|
|
||||||
* @param product
|
|
||||||
* @param stockInId
|
|
||||||
* @param hgId
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public List<JcProduct> queryJcProduct(String product, String stockInId, String hgId) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 稽查货品查询-单号查询
|
|
||||||
* @param product
|
|
||||||
* @param stockInId
|
|
||||||
* @param hgId
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public List<JcProduct> queryJcProduct(String product, String stockInId) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据稽查单号,查询对应的货品编号
|
|
||||||
* @param billIds
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public List<JcProductBillSouce> queryJcProductBillSouce(List<String> billIds)throws RuntimeException;
|
|
||||||
|
|
||||||
|
|
||||||
public List<JcBillHg> qeryJcBillHgs(List<String> billids) throws RuntimeException;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-121
@@ -1,121 +0,0 @@
|
|||||||
package abacus.springboot.example.pi;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import com.abacus.pms.dao.Account;
|
|
||||||
import com.abacus.pms.dao.Brand;
|
|
||||||
import com.abacus.pms.dao.MoreCategory;
|
|
||||||
import com.abacus.pms.dao.Product;
|
|
||||||
import com.abacus.pms.dao.Spec;
|
|
||||||
import com.abacus.xpos.foundation.dao.Dept;
|
|
||||||
import com.abacus.xpos.foundation.dao.Employee;
|
|
||||||
|
|
||||||
import abacus.config.dao.AbacusConfigItem;
|
|
||||||
import abacus.springboot.example.dao.JcBill;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>Title:ApiJcBillAccess</p>
|
|
||||||
<p>Description: 底层实现-interface</p>
|
|
||||||
@author chuanZeng
|
|
||||||
@date 2026年8月18日
|
|
||||||
*/
|
|
||||||
public interface AutoCompleteAccessIF {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 检索:商品
|
|
||||||
* @param keyCode
|
|
||||||
* @return
|
|
||||||
* @throws Exception
|
|
||||||
*/
|
|
||||||
public List<Product> prductAutoComplete(String keyCode, List<String> areaIds) throws Exception;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 检索:门店
|
|
||||||
* @param keycode
|
|
||||||
* @param type
|
|
||||||
* @return
|
|
||||||
* @throws Exception
|
|
||||||
*/
|
|
||||||
public List<Dept> deptAutoComplete(String keyCode, String type) throws Exception;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 检索:分类
|
|
||||||
* @param keycode
|
|
||||||
* @param type
|
|
||||||
* @return
|
|
||||||
* @throws Exception
|
|
||||||
*/
|
|
||||||
public List<MoreCategory> moreCategoryAutoComplete(String keyCode, String areaid, String levels, String lastlevel) throws Exception;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 检索:品牌
|
|
||||||
* @return
|
|
||||||
* @throws Exception
|
|
||||||
*/
|
|
||||||
public List<Brand> brandAutoComplete(String keyCode, String areaid, String levels, String lastlevel) throws Exception;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 检索:商品标签
|
|
||||||
* @param keyCode
|
|
||||||
* @param areaid
|
|
||||||
* @param lastlevel
|
|
||||||
* @return
|
|
||||||
* @throws Exception
|
|
||||||
*/
|
|
||||||
public List<Spec> specAutoComplete(String keyCode, String areaid) throws Exception;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 检索:客户
|
|
||||||
* @param keyCode
|
|
||||||
* @param areaid
|
|
||||||
* @return
|
|
||||||
* @throws Exception
|
|
||||||
*/
|
|
||||||
public List<Account> accountAutoComplete(String keyCode, String areaid) throws Exception;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 检索:员工
|
|
||||||
* @param keyCode
|
|
||||||
* @param areaid
|
|
||||||
* @return
|
|
||||||
* @throws Exception
|
|
||||||
*/
|
|
||||||
public List<Employee> employeeAutoComplete(String keyCode) throws Exception;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 检索:稽查单号
|
|
||||||
* @param keyCode
|
|
||||||
* @param areaid
|
|
||||||
* @return
|
|
||||||
* @throws Exception
|
|
||||||
*/
|
|
||||||
public List<JcBill> jcBillAutoComplete(String keyCode) throws Exception;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 检索:收货仓库
|
|
||||||
* @param keyCode
|
|
||||||
* @return
|
|
||||||
* @throws Exception
|
|
||||||
*/
|
|
||||||
public List<AbacusConfigItem> abacusConfigItemGroupAutoComplete(String keyCode, String keyGroup, String key) throws Exception;
|
|
||||||
|
|
||||||
/** 查询区域 */
|
|
||||||
public Map<String,Map<String,String>> getGovbs() throws Exception;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-268
@@ -1,268 +0,0 @@
|
|||||||
package abacus.springboot.example.pi;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.springframework.data.domain.Page;
|
|
||||||
import org.springframework.data.domain.Pageable;
|
|
||||||
|
|
||||||
import abacus.springboot.example.dao.JcBill;
|
|
||||||
import abacus.springboot.example.dao.JcBillHg;
|
|
||||||
import abacus.springboot.example.dao.JcBillPhoto;
|
|
||||||
import abacus.springboot.example.dao.JcBillSourceItem;
|
|
||||||
import abacus.springboot.example.dao.JcSourceItem;
|
|
||||||
import abacus.springboot.example.vo.SiDepositlocation;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>Title:ApiJcBillAccess</p>
|
|
||||||
<p>Description: 底层实现-interface</p>
|
|
||||||
@author chuanZeng
|
|
||||||
@date 2026年8月18日
|
|
||||||
*/
|
|
||||||
public interface JcBillAccessIF {
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据条件查询图片
|
|
||||||
* @param srcid
|
|
||||||
* @param srcitemid
|
|
||||||
* @param typephoto
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public List<JcBillPhoto> queryJcBillPhoto(String srcid, String srcitemid, String typephoto) throws RuntimeException;
|
|
||||||
|
|
||||||
public List<JcBillPhoto> queryJcBillPhotoIn(List<String> srcids) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public void updateJcBill(JcBill bill) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public void updateJcBillSourceItem(List<JcBillSourceItem> items) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改
|
|
||||||
* @param photos
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public void updateJcBillPhoto(List<JcBillPhoto> photos) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 当前明细行号
|
|
||||||
* @param billId
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public int countJcBillItemIndexno(String billId) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询:下一单待提交的回购单号
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public String lastBillHgId() throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询朔源明细
|
|
||||||
* @param billId
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public List<JcSourceItem> queryJcSourceItemByBillId(String billId);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 删除特定的来源
|
|
||||||
* @param billId
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public void deleteJcSourceItemBySource(String billId) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 界面查询
|
|
||||||
* @param fromDate
|
|
||||||
* @param thruDate
|
|
||||||
* @param applicant
|
|
||||||
* @param goods
|
|
||||||
* @param id
|
|
||||||
* @param billin
|
|
||||||
* @param goodsid
|
|
||||||
* @param product
|
|
||||||
* @param status
|
|
||||||
* @param pageable
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public Page<JcBill> queryJcBill(String fromDate, String thruDate, String applicant,
|
|
||||||
String goods, String id, String billin, String goodsid, String product, String status,
|
|
||||||
int typ, Pageable pageable) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 保存事件
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public void saveEvent(String srcid, String typ, String billtyp) throws RuntimeException;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 分页查询 回购订单
|
|
||||||
* @param typ 1-回购认款,2-回购分仓
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public Page<JcBillHg> queryJcBillHg(String fromDate, String thruDate, String account,
|
|
||||||
String salearea, String id, String billId, String status, String product,
|
|
||||||
String manager,
|
|
||||||
int typ, Pageable pageable) throws RuntimeException;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 删除溯源明细信息
|
|
||||||
* @param ids
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public void deleteJcSourceItem(List<Long> ids) throws RuntimeException;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 删除溯源明细图片
|
|
||||||
* @param ids
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public void deleteJcBillPhoto(String srcid, String srcitemid, String type) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取百度token
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public String getBaiduToken() throws RuntimeException;
|
|
||||||
|
|
||||||
public List<JcBillSourceItem> queryJcBillSourceItemInBillId(List<String> billIds) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 稽查:根据稽查单号,稽查单关联物理仓管理策略
|
|
||||||
* @param dept
|
|
||||||
* @return
|
|
||||||
* @throws Exception
|
|
||||||
*/
|
|
||||||
public SiDepositlocation querySiDepositlocation(String srcid) throws Exception;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 回购:根据回购单号,回购单关联物理仓管理策略
|
|
||||||
* @param dept
|
|
||||||
* @return
|
|
||||||
* @throws Exception
|
|
||||||
*/
|
|
||||||
public SiDepositlocation querySiDepositlocationHGfc(String srcid) throws Exception;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 删除事件
|
|
||||||
* @param srcid
|
|
||||||
* @param typ
|
|
||||||
* @param billtyp
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public void deleteEvent(String srcid, String typ, String billtyp) throws RuntimeException;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-20
@@ -1,20 +0,0 @@
|
|||||||
package abacus.springboot.example.repository;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
|
||||||
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
|
|
||||||
|
|
||||||
import abacus.springboot.example.dao.JcBillHgPay;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>Title:ApiJcBillAccess</p>
|
|
||||||
<p>Description: Repository</p>
|
|
||||||
@author chuanZeng
|
|
||||||
@date 2026年8月18日
|
|
||||||
*/
|
|
||||||
public interface JcBillHgPayRepository extends JpaRepository<JcBillHgPay, Long>,JpaSpecificationExecutor<JcBillHgPay> {
|
|
||||||
|
|
||||||
List<JcBillHgPay> findByBillhg(String billhg);
|
|
||||||
|
|
||||||
}
|
|
||||||
-14
@@ -1,14 +0,0 @@
|
|||||||
package abacus.springboot.example.repository;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
|
||||||
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
|
|
||||||
|
|
||||||
import abacus.springboot.example.dao.JcBillHg;
|
|
||||||
|
|
||||||
public interface JcBillHgRepository extends JpaRepository<JcBillHg, String>,JpaSpecificationExecutor<JcBillHg> {
|
|
||||||
|
|
||||||
List<JcBillHg> findByBillid(String billid);
|
|
||||||
|
|
||||||
}
|
|
||||||
-18
@@ -1,18 +0,0 @@
|
|||||||
package abacus.springboot.example.repository;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
|
||||||
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
|
|
||||||
|
|
||||||
import abacus.springboot.example.dao.JcBillInItem;
|
|
||||||
|
|
||||||
public interface JcBillInItemRepository extends JpaRepository<JcBillInItem, Long>,JpaSpecificationExecutor<JcBillInItem> {
|
|
||||||
|
|
||||||
List<JcBillInItem> findByBillid(String billid);
|
|
||||||
|
|
||||||
List<JcBillInItem> findByBillidAndStatus(String billid, int status);
|
|
||||||
|
|
||||||
List<JcBillInItem> findByBillhg(String billhg);
|
|
||||||
|
|
||||||
}
|
|
||||||
-16
@@ -1,16 +0,0 @@
|
|||||||
package abacus.springboot.example.repository;
|
|
||||||
|
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
|
||||||
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
|
|
||||||
|
|
||||||
import abacus.springboot.example.dao.JcBillPhoto;
|
|
||||||
|
|
||||||
public interface JcBillPhotoRepository extends JpaRepository<JcBillPhoto, Long>,JpaSpecificationExecutor<JcBillPhoto> {
|
|
||||||
|
|
||||||
JcBillPhoto findBySrcidAndSrcitemidAndTypephoto(String srcid, String srcitemid, String typephoto);
|
|
||||||
|
|
||||||
void deleteBySrcidAndSrcitemid(String srcid, String srcitemid);
|
|
||||||
|
|
||||||
void deleteBySrcidAndTypephoto(String srcid, String typephoto);
|
|
||||||
void deleteBySrcidAndSrcitemidAndTypephoto(String srcid, String srcitemid, String typephoto);
|
|
||||||
}
|
|
||||||
-11
@@ -1,11 +0,0 @@
|
|||||||
package abacus.springboot.example.repository;
|
|
||||||
|
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
|
||||||
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
|
|
||||||
|
|
||||||
import abacus.springboot.example.dao.JcBill;
|
|
||||||
|
|
||||||
public interface JcBillRepository extends JpaRepository<JcBill, String>,JpaSpecificationExecutor<JcBill> {
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
-15
@@ -1,15 +0,0 @@
|
|||||||
package abacus.springboot.example.repository;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
|
||||||
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
|
|
||||||
|
|
||||||
import abacus.springboot.example.dao.JcBillSourceItem;
|
|
||||||
|
|
||||||
public interface JcBillSourceItemRepository extends JpaRepository<JcBillSourceItem, Long>,JpaSpecificationExecutor<JcBillSourceItem> {
|
|
||||||
|
|
||||||
List<JcBillSourceItem> findByBillid(String billid);
|
|
||||||
|
|
||||||
void deleteByBillid(String billid);
|
|
||||||
}
|
|
||||||
-15
@@ -1,15 +0,0 @@
|
|||||||
package abacus.springboot.example.repository;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
|
||||||
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
|
|
||||||
|
|
||||||
import abacus.springboot.example.dao.JcSourceItem;
|
|
||||||
|
|
||||||
public interface JcSourceItemRepository extends JpaRepository<JcSourceItem, Long>,JpaSpecificationExecutor<JcSourceItem> {
|
|
||||||
|
|
||||||
List<JcSourceItem> findByBillidAndSrcitemid(String billid, String srcitemid);
|
|
||||||
|
|
||||||
List<JcSourceItem> findByBillidAndSrcitemidAndStatus(String billid, String srcitemid, int status);
|
|
||||||
}
|
|
||||||
-143
@@ -1,143 +0,0 @@
|
|||||||
package abacus.springboot.example.util;
|
|
||||||
|
|
||||||
|
|
||||||
import java.text.SimpleDateFormat;
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.regex.Matcher;
|
|
||||||
import java.util.regex.Pattern;
|
|
||||||
/**
|
|
||||||
* <p>Title:DateToUpperChinese</p>
|
|
||||||
<p>Description: 日期转成中文大写形式</p>
|
|
||||||
@author chuanZeng
|
|
||||||
@date 2026年8月18日
|
|
||||||
*/
|
|
||||||
public class DateToUpperChinese {
|
|
||||||
private static final String[] NUMBERS = {"零", "壹", "贰", "叁", "肆", "伍",
|
|
||||||
"陆", "柒", "捌", "玖"};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 通过 yyyy-MM-dd 得到中文大写格式 yyyy MM dd 日期
|
|
||||||
*/
|
|
||||||
public static synchronized String toChinese(String str) {
|
|
||||||
StringBuffer sb = new StringBuffer();
|
|
||||||
sb.append(getSplitDateStr(str, 0)).append(" ").append(
|
|
||||||
getSplitDateStr(str, 1)).append(" ").append(
|
|
||||||
getSplitDateStr(str, 2));
|
|
||||||
return sb.toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 分别得到年月日的大写 默认分割符 "-"
|
|
||||||
*/
|
|
||||||
public static String getSplitDateStr(String str, int unit) {
|
|
||||||
// unit是单位 0=年 1=月 2日
|
|
||||||
String[] DateStr = str.split("-");
|
|
||||||
if (unit > DateStr.length)
|
|
||||||
unit = 0;
|
|
||||||
StringBuffer sb = new StringBuffer();
|
|
||||||
for (int i = 0; i < DateStr[unit].length(); i++) {
|
|
||||||
|
|
||||||
if ((unit == 1 || unit == 2) && Integer.valueOf(DateStr[unit]) > 9) {
|
|
||||||
sb.append(convertNum(DateStr[unit].substring(0, 1)))
|
|
||||||
.append("拾").append(
|
|
||||||
convertNum(DateStr[unit].substring(1, 2)));
|
|
||||||
break;
|
|
||||||
} else {
|
|
||||||
sb.append(convertNum(DateStr[unit].substring(i, i + 1)));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (unit == 1 || unit == 2) {
|
|
||||||
return sb.toString().replaceAll("^壹", "").replace("零", "");
|
|
||||||
}
|
|
||||||
return sb.toString();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 转换数字为大写
|
|
||||||
*/
|
|
||||||
private static String convertNum(String str) {
|
|
||||||
return NUMBERS[Integer.valueOf(str)];
|
|
||||||
}
|
|
||||||
public final static char[] upper = "零一二三四五六七八九十".toCharArray();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据小写数字格式的日期转换成大写格式的日期
|
|
||||||
* @param date
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public static String getUpperDate(Date datez) {
|
|
||||||
|
|
||||||
//支持yyyy-MM-dd、yyyy/MM/dd、yyyyMMdd等格式
|
|
||||||
if(datez == null) return null;
|
|
||||||
|
|
||||||
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
|
|
||||||
String date = sdf.format(datez);
|
|
||||||
|
|
||||||
|
|
||||||
//非数字的都去掉
|
|
||||||
date = date.replaceAll("\\D", "");
|
|
||||||
if(date.length() != 8) return null;
|
|
||||||
StringBuilder sb = new StringBuilder();
|
|
||||||
for (int i=0;i<4;i++) {//年
|
|
||||||
sb.append(upper[Integer.parseInt(date.substring(i, i+1))]);
|
|
||||||
}
|
|
||||||
sb.append("年");//拼接年
|
|
||||||
int month = Integer.parseInt(date.substring(4, 6));
|
|
||||||
if(month <= 10) {
|
|
||||||
sb.append(upper[month]);
|
|
||||||
} else {
|
|
||||||
sb.append("十").append(upper[month%10]);
|
|
||||||
}
|
|
||||||
sb.append("月");//拼接月
|
|
||||||
|
|
||||||
int day = Integer.parseInt(date.substring(6));
|
|
||||||
if (day <= 10) {
|
|
||||||
sb.append(upper[day]);
|
|
||||||
} else if(day < 20) {
|
|
||||||
sb.append("十").append(upper[day % 10]);
|
|
||||||
} else {
|
|
||||||
sb.append(upper[day / 10]).append("十");
|
|
||||||
int tmp = day % 10;
|
|
||||||
if (tmp != 0) sb.append(upper[tmp]);
|
|
||||||
}
|
|
||||||
sb.append("日");//拼接日
|
|
||||||
return sb.toString();
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 判断是否是零或正整数
|
|
||||||
*/
|
|
||||||
public static boolean isNumeric(String str) {
|
|
||||||
Pattern pattern = Pattern.compile("[0-9]*");
|
|
||||||
Matcher isNum = pattern.matcher(str);
|
|
||||||
if (!isNum.matches()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void main(String args[]) {
|
|
||||||
System.out.println(getUpperDate(new Date()));
|
|
||||||
|
|
||||||
double d = 1000.0000;
|
|
||||||
|
|
||||||
String str = String.valueOf(d);
|
|
||||||
|
|
||||||
if(str.indexOf(".") > 0) {
|
|
||||||
str = str.replace("0+?$", "");// 删除掉尾数为0的字符
|
|
||||||
str = str.replace("[.]$", "");// 结尾如果是小数点,则去掉
|
|
||||||
}
|
|
||||||
System.out.println(str);
|
|
||||||
// System.out.println(dStr.replace("\\.0*$", ""));
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,883 +0,0 @@
|
|||||||
package abacus.springboot.example.util;
|
|
||||||
|
|
||||||
import java.sql.Timestamp;
|
|
||||||
import java.text.DateFormat;
|
|
||||||
import java.text.ParseException;
|
|
||||||
import java.text.SimpleDateFormat;
|
|
||||||
import java.util.Calendar;
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.GregorianCalendar;
|
|
||||||
import java.util.Locale;
|
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSON;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Title: 日期时间 Description: 工具类
|
|
||||||
*
|
|
||||||
* @author xuelin chen
|
|
||||||
* @version 1.0
|
|
||||||
*/
|
|
||||||
public class DateUtil {
|
|
||||||
|
|
||||||
/** 本地化 */
|
|
||||||
private static Locale locale = Locale.SIMPLIFIED_CHINESE;
|
|
||||||
|
|
||||||
/** 缺省的DateFormat对象,可以将一个java.util.Date格式化成 yyyy-mm-dd 输出 */
|
|
||||||
private static DateFormat dateDF = new SimpleDateFormat("yyyy-MM-dd");
|
|
||||||
|
|
||||||
/** 缺省的DateFormat对象,可以将一个java.util.Date格式化成 HH:SS:MM 输出 */
|
|
||||||
private static DateFormat timeDF = DateFormat.getTimeInstance(DateFormat.MEDIUM, locale);
|
|
||||||
|
|
||||||
/** 缺省的DateFormat对象,可以将一个java.util.Date格式化成 yyyy-mm-dd HH:SS:MM 输出 */
|
|
||||||
// private static DateFormat datetimeDF = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM, locale);
|
|
||||||
|
|
||||||
private static DateFormat datetimeDF = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
||||||
|
|
||||||
private static DateFormat fdt = new SimpleDateFormat("yyyyMMddHHmmss");
|
|
||||||
private static DateFormat fdtsss = new SimpleDateFormat("yyyyMMddHHmmssSSS");
|
|
||||||
|
|
||||||
public static final String DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 私有构造函数,表示不可实例化
|
|
||||||
*/
|
|
||||||
private DateUtil() {
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 将任意时间生成为当天的第一秒 如:2013-10-23 0:12:12 生成为 2013-10-23 00:00:00
|
|
||||||
* @param from 时间对象
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public static Date getFromDate(Date from) {
|
|
||||||
if (from == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
Calendar cal = Calendar.getInstance();
|
|
||||||
cal.clear();
|
|
||||||
cal.setTime(new Date(from.getTime()));
|
|
||||||
cal.set(Calendar.HOUR_OF_DAY, 0);
|
|
||||||
cal.set(Calendar.MINUTE, 0);
|
|
||||||
cal.set(Calendar.SECOND, 0);
|
|
||||||
cal.set(Calendar.MILLISECOND, 0);
|
|
||||||
return cal.getTime();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 将任意时间生成为当天的最后一秒 如:2013-10-23 0:12:12 生成为 2013-10-23 23:59:59
|
|
||||||
* @param thru 时间对象
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public static Date getThruDate(Date thru) {
|
|
||||||
if (thru == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
Calendar cal = Calendar.getInstance();
|
|
||||||
cal.clear();
|
|
||||||
cal.setTime(new Date(thru.getTime()));
|
|
||||||
cal.set(Calendar.HOUR_OF_DAY, 23);
|
|
||||||
cal.set(Calendar.MINUTE, 59);
|
|
||||||
cal.set(Calendar.SECOND, 59);
|
|
||||||
cal.set(Calendar.MILLISECOND, 998);
|
|
||||||
return cal.getTime();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 时间减去几个小时
|
|
||||||
* @param dateStart
|
|
||||||
* @param num
|
|
||||||
* @return dateStart-num
|
|
||||||
*/
|
|
||||||
public static java.util.Date nowDateMinusHour(java.util.Date dateStart, int num) {
|
|
||||||
try {
|
|
||||||
Calendar cal = Calendar.getInstance();
|
|
||||||
cal.setTime(dateStart);
|
|
||||||
cal.add(Calendar.HOUR_OF_DAY, -num);
|
|
||||||
return cal.getTime();
|
|
||||||
} catch (Exception ex) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 时间减几分钟
|
|
||||||
* @param dateStart
|
|
||||||
* @param num
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public static java.util.Date nowDateMinusTime(java.util.Date dateStart, int num) {
|
|
||||||
try {
|
|
||||||
Calendar cal = Calendar.getInstance();
|
|
||||||
cal.setTime(dateStart);
|
|
||||||
cal.add(Calendar.MINUTE, -num);
|
|
||||||
return cal.getTime();
|
|
||||||
} catch (Exception ex) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/** 返回当前日期格式 yyyyMMddHHmmss*/
|
|
||||||
public static String getDateFormat(Date date) {
|
|
||||||
if (date == null)
|
|
||||||
date = new Date();
|
|
||||||
return fdt.format(date);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String getDateFormatsss(Date date) {
|
|
||||||
if (date == null)
|
|
||||||
date = new Date();
|
|
||||||
return fdtsss.format(date);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 返回一个当前的时间,并按格式转换为字符串 例:17:27:03
|
|
||||||
*
|
|
||||||
* @return String
|
|
||||||
*/
|
|
||||||
public static String getTime() {
|
|
||||||
GregorianCalendar gcNow = new GregorianCalendar();
|
|
||||||
java.util.Date dNow = gcNow.getTime();
|
|
||||||
return timeDF.format(dNow);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 返回一个当前日期,并按格式转换为字符串 例:2009-12-12
|
|
||||||
*
|
|
||||||
* @return String
|
|
||||||
*/
|
|
||||||
public static String getDate() {
|
|
||||||
GregorianCalendar gcNow = new GregorianCalendar();
|
|
||||||
java.util.Date dNow = gcNow.getTime();
|
|
||||||
return dateDF.format(dNow);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 返回一个当前日期和时间,并按格式转换为字符串 例:2009-12-08 14:27:03
|
|
||||||
*
|
|
||||||
* @return String
|
|
||||||
*/
|
|
||||||
public static String getDateTime() {
|
|
||||||
GregorianCalendar gcNow = new GregorianCalendar();
|
|
||||||
java.util.Date dNow = gcNow.getTime();
|
|
||||||
return datetimeDF.format(dNow);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 返回当前年的年号
|
|
||||||
*
|
|
||||||
* @return int
|
|
||||||
*/
|
|
||||||
public static int getYear() {
|
|
||||||
GregorianCalendar gcNow = new GregorianCalendar();
|
|
||||||
return gcNow.get(GregorianCalendar.YEAR);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 返回本月月号:从 0 开始
|
|
||||||
*
|
|
||||||
* @return int
|
|
||||||
*/
|
|
||||||
public static int getMonth() {
|
|
||||||
GregorianCalendar gcNow = new GregorianCalendar();
|
|
||||||
return gcNow.get(GregorianCalendar.MONTH);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 返回今天是本月的第几天
|
|
||||||
*
|
|
||||||
* @return int 从1开始
|
|
||||||
*/
|
|
||||||
public static int getToDayOfMonth() {
|
|
||||||
GregorianCalendar gcNow = new GregorianCalendar();
|
|
||||||
return gcNow.get(GregorianCalendar.DAY_OF_MONTH);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 返回本月的第一天
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 返回一格式化的日期
|
|
||||||
*
|
|
||||||
* @param date
|
|
||||||
* java.util.Date
|
|
||||||
* @return String yyyy-mm-dd 格式
|
|
||||||
*/
|
|
||||||
public static String formatDate(java.util.Date date) {
|
|
||||||
return dateDF.format(date);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 返回一格式化的日期
|
|
||||||
*
|
|
||||||
* @param date
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public static String formatDate(long date) {
|
|
||||||
return formatDate(new java.util.Date(date));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 返回一格式化的时间
|
|
||||||
*
|
|
||||||
* @param date
|
|
||||||
* Date
|
|
||||||
* @return String hh:ss:mm 格式
|
|
||||||
*/
|
|
||||||
public static String formatTime(java.util.Date date) {
|
|
||||||
return timeDF.format(date);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 返回一格式化的时间
|
|
||||||
*
|
|
||||||
* @param date
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public static String formatTime(long date) {
|
|
||||||
return formatTime(new java.util.Date(date));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 返回一格式化的日期时间
|
|
||||||
*
|
|
||||||
* @param date
|
|
||||||
* Date
|
|
||||||
* @return String yyyy-mm-dd hh:ss:mm 格式
|
|
||||||
*/
|
|
||||||
public static String formatDateTime(java.util.Date date) {
|
|
||||||
return datetimeDF.format(date);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 返回一格式化的日期时间
|
|
||||||
*
|
|
||||||
* @param date
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public static String formatDateTime(long date) {
|
|
||||||
return formatDateTime(new java.util.Date(date));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 将字串转成日期和时间,字串格式: yyyy-MM-dd HH:mm:ss
|
|
||||||
*
|
|
||||||
* @param string
|
|
||||||
* String
|
|
||||||
* @return Date
|
|
||||||
*/
|
|
||||||
public static java.util.Date toDateTime(String string) {
|
|
||||||
try {
|
|
||||||
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
||||||
return (java.util.Date) formatter.parse(string);
|
|
||||||
} catch (Exception ex) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 将字串转成日期,字串格式: yyyy-MM-dd
|
|
||||||
*
|
|
||||||
* @param string
|
|
||||||
* String
|
|
||||||
* @return Date
|
|
||||||
*/
|
|
||||||
public static java.util.Date toDate(String string) {
|
|
||||||
try {
|
|
||||||
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
|
|
||||||
return (java.util.Date) formatter.parse(string);
|
|
||||||
} catch (Exception ex) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 将字串转成日期,字串格式: yyyyMMdd 转换成 yyyy-MM-dd
|
|
||||||
*
|
|
||||||
* @param string
|
|
||||||
* String
|
|
||||||
* @return Date
|
|
||||||
*/
|
|
||||||
public static String toDateyymmdd(String string) {
|
|
||||||
try {
|
|
||||||
DateFormat formatter = new SimpleDateFormat("yyyyMMdd");
|
|
||||||
return dateDF.format((java.util.Date)formatter.parse(string));
|
|
||||||
} catch (Exception ex) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 取值:某日期的年号
|
|
||||||
*
|
|
||||||
* @param date
|
|
||||||
* 格式: yyyy-MM-dd
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public static int getYear(String date) {
|
|
||||||
java.util.Date d = toDate(date);
|
|
||||||
if (d == null)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
Calendar calendar = Calendar.getInstance(locale);
|
|
||||||
calendar.setTime(d);
|
|
||||||
return calendar.get(Calendar.YEAR);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 取值:某日期的月号
|
|
||||||
*
|
|
||||||
* @param date
|
|
||||||
* 格式: yyyy-MM-dd
|
|
||||||
* @return 从0开始
|
|
||||||
*/
|
|
||||||
public static int getMonth(String date) {
|
|
||||||
java.util.Date d = toDate(date);
|
|
||||||
if (d == null)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
Calendar calendar = Calendar.getInstance(locale);
|
|
||||||
calendar.setTime(d);
|
|
||||||
return calendar.get(Calendar.MONTH);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 取值:某日期的日号
|
|
||||||
*
|
|
||||||
* @param date
|
|
||||||
* 格式: yyyy-MM-dd
|
|
||||||
* @return 从1开始
|
|
||||||
*/
|
|
||||||
public static int getDayOfMonth(String date) {
|
|
||||||
java.util.Date d = toDate(date);
|
|
||||||
if (d == null)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
Calendar calendar = Calendar.getInstance(locale);
|
|
||||||
calendar.setTime(d);
|
|
||||||
return calendar.get(Calendar.DAY_OF_MONTH);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 计算两个日期的年数差
|
|
||||||
*
|
|
||||||
* @param one
|
|
||||||
* 格式: yyyy-MM-dd
|
|
||||||
* @param two
|
|
||||||
* 格式: yyyy-MM-dd
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public static int compareYear(String one, String two) {
|
|
||||||
return getYear(one) - getYear(two);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 计算岁数
|
|
||||||
*
|
|
||||||
* @param date
|
|
||||||
* 格式: yyyy-MM-dd
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public static int compareYear(String date) {
|
|
||||||
return getYear() - getYear(date);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 使用format格式化Date对象为字符串
|
|
||||||
*
|
|
||||||
* @param date
|
|
||||||
* date
|
|
||||||
* @return String
|
|
||||||
*/
|
|
||||||
public static String getDateString(Date date) {
|
|
||||||
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
|
|
||||||
return format.format(date);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String getyyyyMMdd(Date date) {
|
|
||||||
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
|
|
||||||
return format.format(date);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String getHHmmss(Date date) {
|
|
||||||
SimpleDateFormat format = new SimpleDateFormat("HHmmss");
|
|
||||||
return format.format(date);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 使用format格式化Date对象为字符串,获取年份
|
|
||||||
*
|
|
||||||
* @param date
|
|
||||||
* date
|
|
||||||
* @return String
|
|
||||||
*/
|
|
||||||
static public String getYear(Date date) {
|
|
||||||
SimpleDateFormat format = new SimpleDateFormat("yyyy");
|
|
||||||
return format.format(date);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 使用format格式化Date对象为字符串,获取月份
|
|
||||||
*
|
|
||||||
* @param date
|
|
||||||
* date
|
|
||||||
* @return String
|
|
||||||
*/
|
|
||||||
static public String getMonth(Date date) {
|
|
||||||
SimpleDateFormat format = new SimpleDateFormat("MM");
|
|
||||||
return format.format(date);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 使用format格式化Date对象为字符串,获取日份
|
|
||||||
*
|
|
||||||
* @param date
|
|
||||||
* date
|
|
||||||
* @return String
|
|
||||||
*/
|
|
||||||
static public String getDay(Date date) {
|
|
||||||
SimpleDateFormat format = new SimpleDateFormat("dd");
|
|
||||||
return format.format(date);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 使用format格式化Date对象为字符串,获取中文表示的年月日
|
|
||||||
*
|
|
||||||
* @param date
|
|
||||||
* date
|
|
||||||
* @return String 2009年12月08日
|
|
||||||
*/
|
|
||||||
static public String getDateStrC(Date date) {
|
|
||||||
SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日");
|
|
||||||
return format.format(date);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 使用format格式化Date对象为字符串,获取年份
|
|
||||||
*
|
|
||||||
* @param date
|
|
||||||
* date
|
|
||||||
* @return String 20091208
|
|
||||||
*/
|
|
||||||
static public String getDateStrMonth(Date date) {
|
|
||||||
if (date == null)
|
|
||||||
return "";
|
|
||||||
SimpleDateFormat format = new SimpleDateFormat("yyyyMM");
|
|
||||||
String str = format.format(date);
|
|
||||||
return str;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 使用format格式化Date对象为字符串,获取年份
|
|
||||||
*
|
|
||||||
* @param date
|
|
||||||
* date
|
|
||||||
* @return String 20091208
|
|
||||||
*/
|
|
||||||
static public String getDateStrCompact(Date date) {
|
|
||||||
if (date == null)
|
|
||||||
return "";
|
|
||||||
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
|
|
||||||
String str = format.format(date);
|
|
||||||
return str;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 使用format格式化Date对象为字符串,获取年月日和时间
|
|
||||||
*
|
|
||||||
* @param date
|
|
||||||
* date
|
|
||||||
* @return String 2009年12月8日 14时03分10秒
|
|
||||||
*/
|
|
||||||
static public String getDateTimeStrC(Date date) {
|
|
||||||
SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
|
|
||||||
return format.format(date);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取指定日期当前小时起始时间
|
|
||||||
*/
|
|
||||||
static public Date getCurrentHoursFirstSecound(java.util.Date date) {
|
|
||||||
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH");
|
|
||||||
String dateStr = format.format(date);
|
|
||||||
return toDateTime(dateStr + ":00:00");
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取指定日期当前下一个小时时间
|
|
||||||
*/
|
|
||||||
static public Date getCurrentNextHours(java.util.Date date) {
|
|
||||||
Calendar scalendar = new GregorianCalendar();
|
|
||||||
scalendar.setTime(date);
|
|
||||||
scalendar.add(Calendar.HOUR, 1);
|
|
||||||
return new Date(scalendar.getTime().getTime());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取指定日期后下一个月的第一天
|
|
||||||
*
|
|
||||||
* @param java.sql.Date
|
|
||||||
* date
|
|
||||||
* @return java.sql.Date
|
|
||||||
*/
|
|
||||||
static public java.sql.Date getNextMonthFirstDate(java.util.Date date) throws ParseException {
|
|
||||||
Calendar scalendar = new GregorianCalendar();
|
|
||||||
scalendar.setTime(date);
|
|
||||||
scalendar.add(Calendar.MONTH, 1);
|
|
||||||
scalendar.set(Calendar.DATE, 1);
|
|
||||||
return new java.sql.Date(scalendar.getTime().getTime());
|
|
||||||
}
|
|
||||||
|
|
||||||
static public java.sql.Date getNextMonthDate(java.util.Date date) {
|
|
||||||
Calendar scalendar = new GregorianCalendar();
|
|
||||||
scalendar.setTime(date);
|
|
||||||
scalendar.add(Calendar.MONTH, 1);
|
|
||||||
return new java.sql.Date(scalendar.getTime().getTime());
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 上一个月 */
|
|
||||||
public static Date getLastMonthFirstDate(Date date, int month) {
|
|
||||||
if (date == null)
|
|
||||||
return date;
|
|
||||||
Calendar calendar = new GregorianCalendar();
|
|
||||||
calendar.setTime(date);
|
|
||||||
calendar.add(Calendar.MONTH, month);
|
|
||||||
date = calendar.getTime();
|
|
||||||
return date;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取指定日期的前面几天
|
|
||||||
*
|
|
||||||
* @param java.sql.Date
|
|
||||||
* date
|
|
||||||
* @param dayCount
|
|
||||||
* 表示前几天
|
|
||||||
* @return java.sql.Date
|
|
||||||
*/
|
|
||||||
static public java.sql.Date getFrontDateByDayCount(java.sql.Date date, int dayCount) throws ParseException {
|
|
||||||
Calendar scalendar = new GregorianCalendar();
|
|
||||||
scalendar.setTime(date);
|
|
||||||
scalendar.add(Calendar.DATE, -dayCount);
|
|
||||||
return new java.sql.Date(scalendar.getTime().getTime());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 取得指定年份和月份的第一天
|
|
||||||
*
|
|
||||||
* @param year
|
|
||||||
* 年
|
|
||||||
* @param month
|
|
||||||
* 月
|
|
||||||
* @return Date
|
|
||||||
*/
|
|
||||||
static public Date getFirstDay(String year, String month) throws ParseException {
|
|
||||||
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
|
|
||||||
return format.parse(year + "-" + month + "-1");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 取得指定年份和月份的第一天
|
|
||||||
*
|
|
||||||
* @param year
|
|
||||||
* 年
|
|
||||||
* @param month
|
|
||||||
* 月
|
|
||||||
* @return Date
|
|
||||||
*/
|
|
||||||
static public Date getFirstDay(int year, int month) throws ParseException {
|
|
||||||
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
|
|
||||||
return format.parse(year + "-" + month + "-1");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 取得指定年份和月份的最后一天
|
|
||||||
*
|
|
||||||
* @param year
|
|
||||||
* 年
|
|
||||||
* @param month
|
|
||||||
* 月
|
|
||||||
* @return Date
|
|
||||||
*/
|
|
||||||
static public Date getLastDay(String year, String month) throws ParseException {
|
|
||||||
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
|
|
||||||
Date date = format.parse(year + "-" + month + "-1");
|
|
||||||
|
|
||||||
Calendar scalendar = new GregorianCalendar();
|
|
||||||
scalendar.setTime(date);
|
|
||||||
scalendar.add(Calendar.MONTH, 1);
|
|
||||||
scalendar.add(Calendar.DATE, -1);
|
|
||||||
date = scalendar.getTime();
|
|
||||||
return date;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 取得指定年份和月份的最后一天
|
|
||||||
*
|
|
||||||
* @param year
|
|
||||||
* 年
|
|
||||||
* @param month
|
|
||||||
* 月
|
|
||||||
* @return Date
|
|
||||||
*/
|
|
||||||
static public Date getLastDay(int year, int month) throws ParseException {
|
|
||||||
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
|
|
||||||
Date date = format.parse(year + "-" + month + "-1");
|
|
||||||
|
|
||||||
Calendar scalendar = new GregorianCalendar();
|
|
||||||
scalendar.setTime(date);
|
|
||||||
scalendar.add(Calendar.MONTH, 1);
|
|
||||||
scalendar.add(Calendar.DATE, -1);
|
|
||||||
date = scalendar.getTime();
|
|
||||||
return date;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 取得指定年份之间的相隔月数
|
|
||||||
*
|
|
||||||
* @param year
|
|
||||||
* 年
|
|
||||||
* @param month
|
|
||||||
* 月
|
|
||||||
* @return Date
|
|
||||||
*/
|
|
||||||
static public long getDistinceMonth(String beforedate, String afterdate) throws ParseException {
|
|
||||||
SimpleDateFormat d = new SimpleDateFormat("yyyy-MM-dd");
|
|
||||||
long monthCount = 0;
|
|
||||||
try {
|
|
||||||
java.util.Date before = d.parse(beforedate);
|
|
||||||
java.util.Date after = d.parse(afterdate);
|
|
||||||
|
|
||||||
monthCount = (Integer.parseInt(DateUtil.getYear(after)) - Integer.parseInt(DateUtil.getYear(before))) * 12
|
|
||||||
+ DateUtil.getMonth(afterdate) - DateUtil.getMonth(beforedate);
|
|
||||||
|
|
||||||
} catch (ParseException e) {
|
|
||||||
System.out.println("Date parse error!");
|
|
||||||
}
|
|
||||||
return monthCount;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 取得指定年份之间的相隔天数
|
|
||||||
*
|
|
||||||
* @param year
|
|
||||||
* 年
|
|
||||||
* @param month
|
|
||||||
* 月
|
|
||||||
* @return Date
|
|
||||||
*/
|
|
||||||
static public long getDistinceDay(String beforedate, String afterdate) throws ParseException {
|
|
||||||
SimpleDateFormat d = new SimpleDateFormat("yyyy-MM-dd");
|
|
||||||
long dayCount = 0;
|
|
||||||
try {
|
|
||||||
java.util.Date d1 = d.parse(beforedate);
|
|
||||||
java.util.Date d2 = d.parse(afterdate);
|
|
||||||
|
|
||||||
dayCount = (d2.getTime() - d1.getTime()) / (24 * 60 * 60 * 1000);
|
|
||||||
|
|
||||||
} catch (ParseException e) {
|
|
||||||
System.out.println("Date parse error!");
|
|
||||||
// throw e;
|
|
||||||
}
|
|
||||||
return dayCount;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 指定日期加一天
|
|
||||||
*
|
|
||||||
* @param date
|
|
||||||
* @param day
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
static public Date getDaytoDay(Date date, int day) {
|
|
||||||
if (date == null)
|
|
||||||
return date;
|
|
||||||
|
|
||||||
Calendar calendar = new GregorianCalendar();
|
|
||||||
calendar.setTime(date);
|
|
||||||
calendar.add(Calendar.DATE, day);
|
|
||||||
date = calendar.getTime();
|
|
||||||
return date;
|
|
||||||
}
|
|
||||||
|
|
||||||
static public Date getMonthtoMonth(Date date, int day) {
|
|
||||||
if (date == null)
|
|
||||||
return date;
|
|
||||||
|
|
||||||
Calendar calendar = new GregorianCalendar();
|
|
||||||
calendar.setTime(date);
|
|
||||||
calendar.add(Calendar.MONTH, day);
|
|
||||||
date = calendar.getTime();
|
|
||||||
return date;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获取上一年或者下一年
|
|
||||||
static public Date getYeartoYaer(Date date, int year) {
|
|
||||||
if (date == null)
|
|
||||||
return date;
|
|
||||||
|
|
||||||
Calendar calendar = new GregorianCalendar();
|
|
||||||
calendar.setTime(date);
|
|
||||||
calendar.add(Calendar.YEAR, year);
|
|
||||||
date = calendar.getTime();
|
|
||||||
return date;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 指定日期的最开始时间
|
|
||||||
public static Date getDateStartTime(Date date) {
|
|
||||||
if (date == null)
|
|
||||||
return null;
|
|
||||||
try {
|
|
||||||
String strDate = formatDate(date);
|
|
||||||
return toDateTime(strDate + " 00:00:00");
|
|
||||||
} catch (Exception localException) {
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
static public Date getDateLastTime(Date date) {
|
|
||||||
if (date == null)
|
|
||||||
return null;
|
|
||||||
try {
|
|
||||||
String strDate = formatDate(date);
|
|
||||||
return toDateTime(strDate + " 23:59:59");
|
|
||||||
} catch (Exception localException) {
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 单位秒
|
|
||||||
static public long getDistinceFen(String beforedate, String afterdate) throws ParseException {
|
|
||||||
SimpleDateFormat d = new SimpleDateFormat(DATE_TIME_FORMAT);
|
|
||||||
long dayCount = 0;
|
|
||||||
try {
|
|
||||||
java.util.Date d1 = d.parse(beforedate);
|
|
||||||
java.util.Date d2 = d.parse(afterdate);
|
|
||||||
|
|
||||||
dayCount = (d2.getTime() - d1.getTime()) / (1000);
|
|
||||||
|
|
||||||
} catch (ParseException e) {
|
|
||||||
System.out.println("Date parse error!");
|
|
||||||
// throw e;
|
|
||||||
}
|
|
||||||
return dayCount;
|
|
||||||
}
|
|
||||||
|
|
||||||
static public Date getMINUTE(Date date, int day) {
|
|
||||||
if (date == null)
|
|
||||||
return date;
|
|
||||||
|
|
||||||
Calendar calendar = new GregorianCalendar();
|
|
||||||
calendar.setTime(date);
|
|
||||||
calendar.add(Calendar.MINUTE, day);
|
|
||||||
date = calendar.getTime();
|
|
||||||
return date;
|
|
||||||
}
|
|
||||||
|
|
||||||
static public String CalTimeDifference(String fromTime, int overTime) {
|
|
||||||
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
||||||
Date date = null;
|
|
||||||
try {
|
|
||||||
date = dateFormat.parse(fromTime);
|
|
||||||
} catch (ParseException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
Calendar calendar = Calendar.getInstance();
|
|
||||||
calendar.setTime(date);
|
|
||||||
calendar.add(Calendar.HOUR, overTime);//这里是分钟,如果需要,可以更换为day,moth
|
|
||||||
Date date1 = calendar.getTime();
|
|
||||||
|
|
||||||
Timestamp overQTimeKey = new Timestamp(calendar.getTime().getTime());
|
|
||||||
SimpleDateFormat overQTimeDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
||||||
return overQTimeDateFormat.format(overQTimeKey);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 10位时间戳
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
static public String tenBitTime() {
|
|
||||||
return String.valueOf(Calendar.getInstance().getTimeInMillis()/1000);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 使用format格式化Date对象为字符串
|
|
||||||
*
|
|
||||||
* @param date
|
|
||||||
* date
|
|
||||||
* @return String
|
|
||||||
*/
|
|
||||||
public static String getDatetoUpperCaseString() {
|
|
||||||
// 获取当前日期
|
|
||||||
Calendar calendar = Calendar.getInstance();
|
|
||||||
|
|
||||||
// 转换成大写
|
|
||||||
String year = toUpperCase(String.valueOf(calendar.get(Calendar.YEAR)));
|
|
||||||
String month = toUpperCase(String.valueOf(calendar.get(Calendar.MONTH) + 1));
|
|
||||||
String day = toUpperCase(String.valueOf(calendar.get(Calendar.DAY_OF_MONTH)));
|
|
||||||
|
|
||||||
// 组合成大写格式
|
|
||||||
String dateInChinese = year + "年" + month + "月" + day + "日";
|
|
||||||
return dateInChinese;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 将数字字符串转换成大写
|
|
||||||
private static String toUpperCase(String str) {
|
|
||||||
StringBuilder sb = new StringBuilder();
|
|
||||||
for (int i = 0; i < str.length(); i++) {
|
|
||||||
char c = str.charAt(i);
|
|
||||||
switch (c) {
|
|
||||||
case '0': sb.append('零'); break;
|
|
||||||
case '1': sb.append('一'); break;
|
|
||||||
case '2': sb.append('二'); break;
|
|
||||||
case '3': sb.append('三'); break;
|
|
||||||
case '4': sb.append('四'); break;
|
|
||||||
case '5': sb.append('五'); break;
|
|
||||||
case '6': sb.append('六'); break;
|
|
||||||
case '7': sb.append('七'); break;
|
|
||||||
case '8': sb.append('八'); break;
|
|
||||||
case '9': sb.append('九'); break;
|
|
||||||
default: sb.append(c);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return sb.toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void main(String[] args) throws ParseException {
|
|
||||||
// System.out.println(getDateStrC(getDaytoDay(new Date(),-7)));
|
|
||||||
// System.out.println(getDateFormat(null));
|
|
||||||
// getDistinceFen
|
|
||||||
|
|
||||||
// SimpleDateFormat format = new SimpleDateFormat("yyMMddHHmmss");
|
|
||||||
|
|
||||||
String code = "";
|
|
||||||
|
|
||||||
String[] codearray = code.split("/");
|
|
||||||
System.out.println(JSON.toJSONString(codearray));
|
|
||||||
System.out.println(codearray[codearray.length - 1]);
|
|
||||||
|
|
||||||
System.out.println(getDatetoUpperCaseString());
|
|
||||||
|
|
||||||
|
|
||||||
// System.out.println(formatDateTime(nowDateMinusTime(toDateTime("2023-19-27 00:00:00"), -10)));
|
|
||||||
// System.out.println(new Date().getTime());
|
|
||||||
// System.out.println(1614849936503L - new Date().getTime());
|
|
||||||
// DateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss");
|
|
||||||
// 第一个当前日期 第二个证照有效的日期
|
|
||||||
// Long s = DateUtil.getDistinceDay(DateUtil.getDate(), DateUtil.toDates("20190228"));
|
|
||||||
// System.out.println(s);
|
|
||||||
// System.out.println(DateUtil.toDateyymmdd("20180817"));
|
|
||||||
// TODO Auto-generated catch block
|
|
||||||
|
|
||||||
/*
|
|
||||||
* try { System.out.println(getDateFormat(null)); } catch
|
|
||||||
* (ParseException e) { // TODO Auto-generated catch block
|
|
||||||
* e.printStackTrace(); }
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-94
@@ -1,94 +0,0 @@
|
|||||||
package abacus.springboot.example.util;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.apache.commons.lang.StringUtils;
|
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSONArray;
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>Title:JsonStringRemoveRepetUtil</p>
|
|
||||||
<p>Description:json字符串-对比</p>
|
|
||||||
@author chuanZeng
|
|
||||||
@date 2026年8月18日
|
|
||||||
*/
|
|
||||||
public class JsonStringRemoveRepetUtil {
|
|
||||||
|
|
||||||
public String[] removeRepet(String oldStr,String newStr){
|
|
||||||
if(StringUtils.isEmpty(oldStr)||StringUtils.isEmpty(newStr)) return new String[]{oldStr,newStr};
|
|
||||||
try{
|
|
||||||
JSONObject oldjo=JSONObject.parseObject(oldStr);
|
|
||||||
JSONObject newjo=JSONObject.parseObject(newStr);
|
|
||||||
if(oldjo==null||newjo==null) return new String[]{oldStr,newStr};
|
|
||||||
List<String> rkeys=new ArrayList<String>();
|
|
||||||
List<String> akeys=new ArrayList<String>();
|
|
||||||
for(String key:oldjo.keySet()){
|
|
||||||
if(oldjo.getString(key)==null&&newjo.getString(key)==null){
|
|
||||||
rkeys.add(key);
|
|
||||||
}else if(oldjo.getString(key)==null&&newjo.getString(key)!=null||oldjo.getString(key)!=null&&newjo.getString(key)==null){
|
|
||||||
|
|
||||||
}else if(oldjo.getString(key).startsWith("{")){//对象
|
|
||||||
if(oldjo.getJSONObject(key).getString("id").equals(newjo.getJSONObject(key).getString("id"))){
|
|
||||||
rkeys.add(key);
|
|
||||||
}
|
|
||||||
}else if(oldjo.getString(key).startsWith("[")){//数组
|
|
||||||
if(oldjo.getString(key).equals(newjo.getString(key)))
|
|
||||||
rkeys.add(key);
|
|
||||||
else
|
|
||||||
akeys.add(key);
|
|
||||||
}else if(oldjo.getString(key).equals(newjo.getString(key))){
|
|
||||||
rkeys.add(key);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(!rkeys.isEmpty()){
|
|
||||||
for(String key:rkeys){
|
|
||||||
oldjo.remove(key);
|
|
||||||
newjo.remove(key);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(!akeys.isEmpty()){
|
|
||||||
for(String key:akeys){
|
|
||||||
JSONArray oldja= oldjo.getJSONArray(key);
|
|
||||||
JSONArray newja= newjo.getJSONArray(key);
|
|
||||||
if(oldja.isEmpty()||newja.isEmpty()) continue;
|
|
||||||
List<String> oldli=new ArrayList<String>();
|
|
||||||
for(Object obj:oldja){
|
|
||||||
JSONObject jo=(JSONObject) obj;
|
|
||||||
oldli.add(jo.toJSONString());
|
|
||||||
}
|
|
||||||
List<String> newli=new ArrayList<String>();
|
|
||||||
for(Object obj:newja){
|
|
||||||
JSONObject jo=(JSONObject) obj;
|
|
||||||
newli.add(jo.toJSONString());
|
|
||||||
}
|
|
||||||
oldli.retainAll(newli);
|
|
||||||
if(!oldli.isEmpty()){
|
|
||||||
String olds=oldjo.getString(key);
|
|
||||||
String news=newjo.getString(key);
|
|
||||||
for(String str:oldli){
|
|
||||||
olds=olds.replace(str, "").replace(",,", ",");
|
|
||||||
news=news.replace(str, "").replace(",,", ",");
|
|
||||||
}
|
|
||||||
olds=olds.replace("[,", "[").replace(",]", "]");
|
|
||||||
news=news.replace("[,", "[").replace(",]", "]");
|
|
||||||
if(olds.equals("[]"))
|
|
||||||
oldjo.remove(key);
|
|
||||||
else
|
|
||||||
oldjo.put(key, olds);
|
|
||||||
if(news.equals("[]"))
|
|
||||||
newjo.remove(key);
|
|
||||||
else
|
|
||||||
newjo.put(key, news);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
oldStr=oldjo.toJSONString();
|
|
||||||
newStr=newjo.toJSONString();
|
|
||||||
}catch(Exception e){
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
return new String[]{oldStr,newStr};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-112
@@ -1,112 +0,0 @@
|
|||||||
package abacus.springboot.example.util;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.net.InetAddress;
|
|
||||||
import java.net.InetSocketAddress;
|
|
||||||
import java.net.Socket;
|
|
||||||
import java.net.SocketAddress;
|
|
||||||
import java.net.UnknownHostException;
|
|
||||||
import java.security.KeyManagementException;
|
|
||||||
import java.security.NoSuchAlgorithmException;
|
|
||||||
import java.security.cert.CertificateException;
|
|
||||||
import java.security.cert.X509Certificate;
|
|
||||||
|
|
||||||
import javax.net.SocketFactory;
|
|
||||||
import javax.net.ssl.SSLContext;
|
|
||||||
import javax.net.ssl.TrustManager;
|
|
||||||
import javax.net.ssl.X509TrustManager;
|
|
||||||
|
|
||||||
import org.apache.commons.httpclient.ConnectTimeoutException;
|
|
||||||
import org.apache.commons.httpclient.params.HttpConnectionParams;
|
|
||||||
import org.apache.commons.httpclient.protocol.ProtocolSocketFactory;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 调过证书
|
|
||||||
*
|
|
||||||
* created at 2010-7-26 上午09:29:33
|
|
||||||
*/
|
|
||||||
public class MySSLProtocolSocketFactory implements ProtocolSocketFactory {
|
|
||||||
|
|
||||||
private SSLContext sslcontext = null;
|
|
||||||
|
|
||||||
private SSLContext createSSLContext() {
|
|
||||||
SSLContext sslcontext=null;
|
|
||||||
try {
|
|
||||||
sslcontext = SSLContext.getInstance("SSL");
|
|
||||||
sslcontext.init(null, new TrustManager[]{new TrustAnyTrustManager()}, new java.security.SecureRandom());
|
|
||||||
} catch (NoSuchAlgorithmException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
} catch (KeyManagementException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
return sslcontext;
|
|
||||||
}
|
|
||||||
|
|
||||||
private SSLContext getSSLContext() {
|
|
||||||
if (this.sslcontext == null) {
|
|
||||||
this.sslcontext = createSSLContext();
|
|
||||||
}
|
|
||||||
return this.sslcontext;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Socket createSocket(Socket socket, String host, int port, boolean autoClose)
|
|
||||||
throws IOException, UnknownHostException {
|
|
||||||
return getSSLContext().getSocketFactory().createSocket(
|
|
||||||
socket,
|
|
||||||
host,
|
|
||||||
port,
|
|
||||||
autoClose
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Socket createSocket(String host, int port) throws IOException,
|
|
||||||
UnknownHostException {
|
|
||||||
return getSSLContext().getSocketFactory().createSocket(
|
|
||||||
host,
|
|
||||||
port
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public Socket createSocket(String host, int port, InetAddress clientHost, int clientPort)
|
|
||||||
throws IOException, UnknownHostException {
|
|
||||||
return getSSLContext().getSocketFactory().createSocket(host, port, clientHost, clientPort);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Socket createSocket(String host, int port, InetAddress localAddress,
|
|
||||||
int localPort, HttpConnectionParams params) throws IOException,
|
|
||||||
UnknownHostException, ConnectTimeoutException {
|
|
||||||
if (params == null) {
|
|
||||||
throw new IllegalArgumentException("Parameters may not be null");
|
|
||||||
}
|
|
||||||
int timeout = params.getConnectionTimeout();
|
|
||||||
SocketFactory socketfactory = getSSLContext().getSocketFactory();
|
|
||||||
if (timeout == 0) {
|
|
||||||
return socketfactory.createSocket(host, port, localAddress, localPort);
|
|
||||||
} else {
|
|
||||||
Socket socket = socketfactory.createSocket();
|
|
||||||
SocketAddress localaddr = new InetSocketAddress(localAddress, localPort);
|
|
||||||
SocketAddress remoteaddr = new InetSocketAddress(host, port);
|
|
||||||
socket.bind(localaddr);
|
|
||||||
socket.connect(remoteaddr, timeout);
|
|
||||||
return socket;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//自定义私有类
|
|
||||||
private static class TrustAnyTrustManager implements X509TrustManager {
|
|
||||||
|
|
||||||
public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
|
|
||||||
}
|
|
||||||
|
|
||||||
public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
|
|
||||||
}
|
|
||||||
|
|
||||||
public X509Certificate[] getAcceptedIssuers() {
|
|
||||||
return new X509Certificate[]{};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
-295
@@ -1,295 +0,0 @@
|
|||||||
package abacus.springboot.example.util;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import org.apache.commons.httpclient.HttpClient;
|
|
||||||
import org.apache.commons.httpclient.HttpStatus;
|
|
||||||
import org.apache.commons.httpclient.NameValuePair;
|
|
||||||
import org.apache.commons.httpclient.SimpleHttpConnectionManager;
|
|
||||||
import org.apache.commons.httpclient.methods.GetMethod;
|
|
||||||
import org.apache.commons.httpclient.methods.PostMethod;
|
|
||||||
import org.apache.commons.httpclient.methods.StringRequestEntity;
|
|
||||||
import org.apache.commons.httpclient.params.HttpClientParams;
|
|
||||||
import org.apache.commons.httpclient.params.HttpMethodParams;
|
|
||||||
import org.apache.commons.httpclient.protocol.Protocol;
|
|
||||||
|
|
||||||
import com.abacus.xpos.foundation.pubs.WebserviceException;
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>Title:RequestUtil</p>
|
|
||||||
<p>Description: http-工具</p>
|
|
||||||
@author chuanZeng
|
|
||||||
@date 2026年8月18日
|
|
||||||
*/
|
|
||||||
public class RequestUtil {
|
|
||||||
private static final int connectTimeout = 5000; // 连接超时时间
|
|
||||||
private static final int connectionRequestTimeout = 5000; // 请求超时时间
|
|
||||||
private static final int socketTimeout = 5000; // 套接字连接超时(读取超时时间)
|
|
||||||
|
|
||||||
public static final String charset = "utf-8"; // 编码方式
|
|
||||||
|
|
||||||
/**
|
|
||||||
* post Json提交
|
|
||||||
* @param url
|
|
||||||
* @param jsonStr
|
|
||||||
* @return
|
|
||||||
* @throws WebserviceException
|
|
||||||
*/
|
|
||||||
public static String send(String url ,String jsonStr, String id) throws WebserviceException{
|
|
||||||
|
|
||||||
HttpClientParams params = new HttpClientParams();
|
|
||||||
params.setContentCharset("UTF-8");
|
|
||||||
|
|
||||||
HttpClient hc = new HttpClient(params,new SimpleHttpConnectionManager(true));
|
|
||||||
hc.getHttpConnectionManager().getParams().setConnectionTimeout(5000);
|
|
||||||
hc.getHttpConnectionManager().getParams().setSoTimeout(5000);
|
|
||||||
PostMethod hm = new PostMethod(url);
|
|
||||||
hm.setRequestHeader("Content-Type", "application/json; charset=UTF-8");
|
|
||||||
try {
|
|
||||||
System.out.println(DateUtil.getDateTime()+"-"+ id + "-url:"+url);
|
|
||||||
hm.setRequestEntity(new StringRequestEntity(jsonStr, "application/json", "utf-8"));
|
|
||||||
System.out.println(DateUtil.getDateTime()+"-"+ id + "-send报文:" + jsonStr.toString());
|
|
||||||
int status = hc.executeMethod(hm);
|
|
||||||
if(status == HttpStatus.SC_OK) {
|
|
||||||
String temp = hm.getResponseBodyAsString();
|
|
||||||
System.out.println(DateUtil.getDateTime()+"-"+ id + "-resp data:"+temp);
|
|
||||||
return temp ;
|
|
||||||
}else{
|
|
||||||
throw new WebserviceException("请求出错!");
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
System.out.println(e.getMessage());
|
|
||||||
throw new WebserviceException(e.getMessage());
|
|
||||||
}finally {
|
|
||||||
hm.releaseConnection();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* POST 键值对提交
|
|
||||||
* @param url
|
|
||||||
* @param paramsMap
|
|
||||||
* @return
|
|
||||||
* @throws WebserviceException
|
|
||||||
*/
|
|
||||||
public static String sendParams(String url ,Map<String,Object> paramsMap, String id) throws WebserviceException{
|
|
||||||
|
|
||||||
HttpClientParams params = new HttpClientParams();
|
|
||||||
params.setContentCharset("UTF-8");
|
|
||||||
|
|
||||||
HttpClient hc = new HttpClient(params,new SimpleHttpConnectionManager(true));
|
|
||||||
hc.getHttpConnectionManager().getParams().setConnectionTimeout(10000);
|
|
||||||
hc.getHttpConnectionManager().getParams().setSoTimeout(10000);
|
|
||||||
PostMethod hm = new PostMethod(url);
|
|
||||||
// GetMethod gm = new GetMethod(url);
|
|
||||||
hm.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
|
|
||||||
|
|
||||||
Protocol myhttps = new Protocol("https", new MySSLProtocolSocketFactory(), 443);
|
|
||||||
Protocol.registerProtocol("https", myhttps);
|
|
||||||
|
|
||||||
try {
|
|
||||||
for(String key : paramsMap.keySet()){
|
|
||||||
hm.addParameter(key, paramsMap.get(key).toString());
|
|
||||||
}
|
|
||||||
System.out.println(DateUtil.getDateTime()+">>>" + id + ">>>url>>>" + url
|
|
||||||
+ ">>>sendParams报文>>>" + paramsMap.toString());
|
|
||||||
int status = hc.executeMethod(hm);
|
|
||||||
if(status == HttpStatus.SC_OK) {
|
|
||||||
String temp = hm.getResponseBodyAsString();
|
|
||||||
System.out.println(DateUtil.getDateTime()+">>>" + id + ">>>resp data>>>"+ JSONObject.parseObject(temp));
|
|
||||||
return temp ;
|
|
||||||
}else{
|
|
||||||
throw new WebserviceException("请求出错!"+status);
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
System.out.println(e.getMessage());
|
|
||||||
throw new WebserviceException(e.getMessage());
|
|
||||||
}finally {
|
|
||||||
hm.releaseConnection();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String sendGet(String url) throws WebserviceException{
|
|
||||||
|
|
||||||
HttpClientParams params = new HttpClientParams();
|
|
||||||
params.setContentCharset("UTF-8");
|
|
||||||
|
|
||||||
HttpClient hc = new HttpClient(params,new SimpleHttpConnectionManager(true));
|
|
||||||
hc.getHttpConnectionManager().getParams().setConnectionTimeout(5000);
|
|
||||||
hc.getHttpConnectionManager().getParams().setSoTimeout(5000);
|
|
||||||
GetMethod getMethod = new GetMethod(url);
|
|
||||||
getMethod.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
|
|
||||||
try {
|
|
||||||
System.out.println("url:"+url);
|
|
||||||
|
|
||||||
int status = hc.executeMethod(getMethod);
|
|
||||||
|
|
||||||
if(status == HttpStatus.SC_OK) {
|
|
||||||
String temp = getMethod.getResponseBodyAsString();
|
|
||||||
System.out.println("resp data:"+temp);
|
|
||||||
return temp ;
|
|
||||||
}else{
|
|
||||||
throw new WebserviceException("请求出错!");
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
System.out.println(e.getMessage());
|
|
||||||
throw new WebserviceException(e.getMessage());
|
|
||||||
}finally {
|
|
||||||
getMethod.releaseConnection();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String postHttp(String urls, NameValuePair[] nvp) throws Exception {
|
|
||||||
try {
|
|
||||||
String result = "";
|
|
||||||
// 定义http客户端对象--httpClient
|
|
||||||
HttpClient httpClient = new HttpClient();
|
|
||||||
// 定义并实例化客户端链接对象-postMethod
|
|
||||||
PostMethod postMethod = new PostMethod(urls);
|
|
||||||
httpClient.setConnectionTimeout(5000);
|
|
||||||
|
|
||||||
try {
|
|
||||||
|
|
||||||
postMethod.setRequestHeader("application/json", "UTF-8");
|
|
||||||
|
|
||||||
postMethod.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "utf-8");
|
|
||||||
|
|
||||||
// 将表单的值放入postMethod中
|
|
||||||
postMethod.addParameters(nvp);
|
|
||||||
// 定义访问地址的链接状态
|
|
||||||
int statusCode = 0;
|
|
||||||
try {
|
|
||||||
// 客户端请求url数据
|
|
||||||
statusCode = httpClient.executeMethod(postMethod);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
// 请求成功状态-200
|
|
||||||
if (statusCode == HttpStatus.SC_OK) {
|
|
||||||
try {
|
|
||||||
result = postMethod.getResponseBodyAsString();
|
|
||||||
} catch (IOException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
} catch (Exception e) {
|
|
||||||
|
|
||||||
} finally {
|
|
||||||
// 释放链接
|
|
||||||
postMethod.releaseConnection();
|
|
||||||
httpClient.getHttpConnectionManager().closeIdleConnections(0);
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
} catch (Exception e) {
|
|
||||||
throw new Exception(e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String getHttp(String urls, NameValuePair[] nvp) throws Exception {
|
|
||||||
try {
|
|
||||||
String result = "";
|
|
||||||
// 定义http客户端对象--httpClient
|
|
||||||
HttpClient httpClient = new HttpClient();
|
|
||||||
|
|
||||||
// 定义并实例化客户端链接对象-postMethod
|
|
||||||
GetMethod getMethod = new GetMethod(urls);
|
|
||||||
|
|
||||||
try {
|
|
||||||
// 设置http的头
|
|
||||||
|
|
||||||
// (1)、这里可以设置自己想要的编码格式
|
|
||||||
getMethod.getParams().setContentCharset("utf-8");
|
|
||||||
|
|
||||||
// (2)、对于get方法也可以这样设置
|
|
||||||
getMethod.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "utf-8");
|
|
||||||
|
|
||||||
// (3)、还可以如下这样设置
|
|
||||||
getMethod.addRequestHeader("Content-Type", "text/html; charset=UTF-8");
|
|
||||||
|
|
||||||
getMethod.setQueryString(nvp);
|
|
||||||
|
|
||||||
// 定义访问地址的链接状态
|
|
||||||
int statusCode = 0;
|
|
||||||
try {
|
|
||||||
// 客户端请求url数据
|
|
||||||
statusCode = httpClient.executeMethod(getMethod);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
// 请求成功状态-200
|
|
||||||
if (statusCode == HttpStatus.SC_OK) {
|
|
||||||
try {
|
|
||||||
result = getMethod.getResponseBodyAsString();
|
|
||||||
} catch (IOException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
|
|
||||||
} finally {
|
|
||||||
// 释放链接
|
|
||||||
getMethod.releaseConnection();
|
|
||||||
httpClient.getHttpConnectionManager().closeIdleConnections(0);
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
} catch (Exception e) {
|
|
||||||
throw new Exception(e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void main(String[] args) {
|
|
||||||
// 验证设备唯一码,验证设备分配账户号
|
|
||||||
// Map<String, Object> paramsMap = new HashMap<String, Object>();
|
|
||||||
// paramsMap.put("error_code","1");
|
|
||||||
// paramsMap.put("msg","TRUE1");
|
|
||||||
// paramsMap.put("data","{\"Result\":{\"ResponseStatus\":{\"ErrorCode\":500,\"IsSuccess\":false,\"Errors\":[{\"FieldName\":null,\"Message\":\"插件取消了保存操作,可能因为数据不合法。\",\"DIndex\":0}],\"SuccessEntitys\":[],\"SuccessMessages\":[],\"MsgCode\":0},\"Id\":\"\",\"NeedReturnData\":[{}]}}");
|
|
||||||
//
|
|
||||||
// List<Map<String, Object>> mapl = new ArrayList<Map<String, Object>>();
|
|
||||||
// mapl.add(paramsMap);
|
|
||||||
//
|
|
||||||
// String str = JSONObject.toJSONString(mapl);
|
|
||||||
// System.out.println(str);
|
|
||||||
//
|
|
||||||
//// JSONObject jsonObject = JSONObject.parseObject(str);
|
|
||||||
// JSONArray jsonObject = JSONArray.parseArray(str);
|
|
||||||
//
|
|
||||||
// System.out.println(jsonObject.getJSONObject(0).getString("data"));
|
|
||||||
//
|
|
||||||
// JSONObject jsonObjects = JSONObject.parseObject(jsonObject.getJSONObject(0).getString("data")).getJSONObject("Result").getJSONObject("ResponseStatus");
|
|
||||||
//
|
|
||||||
// String message = jsonObjects.getInteger("ErrorCode") + ":" + jsonObjects.getJSONArray("Errors").getJSONObject(0).getString("Message");
|
|
||||||
// String FieldName = jsonObjects.getInteger("ErrorCode") + ":" + jsonObjects.getJSONArray("Errors").getJSONObject(0).getString("FieldName");
|
|
||||||
//
|
|
||||||
// System.out.println(message);
|
|
||||||
// System.out.println(FieldName);
|
|
||||||
|
|
||||||
// String context = "{\"type\":1,\"batchNub\":\"\",\"qctype\":2,\"prodNumber\":\"10401000006\",\"qrcode\":[\"https%3a%2f%2fbetascan.vats.com.cn%2fscan%2f3%2f001f3618fd5d4d1d84125c04d5c2ebe6\",\"https://betascan.vats.com.cn/scan/3/002f3618fd5d4d1d84125c04d5c2ebe6\",\"https://betascan.vats.com.cn/scan/3/003f3618fd5d4d1d84125c04d5c2ebe6\"],\"operateUser\":\"47\",\"companyCode\":\"25\"}";
|
|
||||||
// try {
|
|
||||||
//// String map1 = new RequestUtil().send("https://apistest.vatsliquor.com/hzztlgs/addProductQrcode?token=aHp6dC0xNTY2Mjc4OTcwMTE5LXZhdHM_", context);
|
|
||||||
//
|
|
||||||
//// System.out.println(map1);
|
|
||||||
// } catch (WebserviceException e) {
|
|
||||||
// // TODO Auto-generated catch block
|
|
||||||
// e.printStackTrace();
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// if("1".equals(jsonObject.get("error_code")) || "TRUE".equals(jsonObject.get("msg"))) {
|
|
||||||
// System.out.println(jsonObject.get("data"));
|
|
||||||
// }
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
package abacus.springboot.example.vo;
|
|
||||||
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>Title:BaiduToken</p>
|
|
||||||
<p>Description: BaiduToken-临时对象</p>
|
|
||||||
@author chuanZeng
|
|
||||||
@date 2026年8月18日
|
|
||||||
*/
|
|
||||||
public class BaiduToken {
|
|
||||||
|
|
||||||
private long id;
|
|
||||||
private int version;
|
|
||||||
private String token;
|
|
||||||
private String expirydate;
|
|
||||||
private Date dt;
|
|
||||||
public long getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
public void setId(long id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
public int getVersion() {
|
|
||||||
return version;
|
|
||||||
}
|
|
||||||
public void setVersion(int version) {
|
|
||||||
this.version = version;
|
|
||||||
}
|
|
||||||
public String getToken() {
|
|
||||||
return token;
|
|
||||||
}
|
|
||||||
public void setToken(String token) {
|
|
||||||
this.token = token;
|
|
||||||
}
|
|
||||||
public String getExpirydate() {
|
|
||||||
return expirydate;
|
|
||||||
}
|
|
||||||
public void setExpirydate(String expirydate) {
|
|
||||||
this.expirydate = expirydate;
|
|
||||||
}
|
|
||||||
public Date getDt() {
|
|
||||||
return dt;
|
|
||||||
}
|
|
||||||
public void setDt(Date dt) {
|
|
||||||
this.dt = dt;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-39
@@ -1,39 +0,0 @@
|
|||||||
package abacus.springboot.example.vo;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>Title:PMSConfigKey</p>
|
|
||||||
<p>Description:配置-key-全局设定</p>
|
|
||||||
@author chuanZeng
|
|
||||||
@date 2026年8月18日
|
|
||||||
*/
|
|
||||||
public interface PMSConfigKey {
|
|
||||||
|
|
||||||
/** keyGroup:系统号*/
|
|
||||||
public static final String KEY_GROUP = "pms";
|
|
||||||
|
|
||||||
/** set:WMS接口对接参数配置*/
|
|
||||||
public static final String PMS_WMSCONF = "pms.wmsconf";
|
|
||||||
/** pms.wmsconf:访问地址*/
|
|
||||||
public static final String PMS_WMSCONF_URL = "url";
|
|
||||||
/** pms.wmsconf:appkey*/
|
|
||||||
public static final String PMS_WMSCONF_APPKEY = "appkey";
|
|
||||||
/** pms.wmsconf:sessionKey*/
|
|
||||||
public static final String PMS_WMSCONF_SESSIONKEY = "sessionKey";
|
|
||||||
/** pms.wmsconf:goodsOwner*/
|
|
||||||
public static final String PMS_WMSCONF_GOODSOWNER = "goodsOwner";
|
|
||||||
|
|
||||||
public static final String PMS_WMSCONF_SHOPCODE = "shopCode";
|
|
||||||
public static final String PMS_WMSCONF_SHOPNAME = "shopName";
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-28
@@ -1,28 +0,0 @@
|
|||||||
package abacus.springboot.example.vo;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>Title:SiDepositlocation</p>
|
|
||||||
<p>Description: JDBC-数据返回-临时存储对象</p>
|
|
||||||
@author chuanZeng
|
|
||||||
@date 2026年8月18日
|
|
||||||
*/
|
|
||||||
public class SiDepositlocation {
|
|
||||||
|
|
||||||
// 仓库编码
|
|
||||||
private String id;
|
|
||||||
// 是否推送WMS:1-WMS,0-WDT
|
|
||||||
private int push;
|
|
||||||
|
|
||||||
public String getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
public void setId(String id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
public int getPush() {
|
|
||||||
return push;
|
|
||||||
}
|
|
||||||
public void setPush(int push) {
|
|
||||||
this.push = push;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-357
@@ -1,357 +0,0 @@
|
|||||||
package abacus.springboot.example.wsi;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import org.springframework.data.domain.Page;
|
|
||||||
import org.springframework.data.domain.Pageable;
|
|
||||||
|
|
||||||
import abacus.springboot.example.api.view.ApiBillHg;
|
|
||||||
import abacus.springboot.example.api.view.ApiBillHgItem;
|
|
||||||
import abacus.springboot.example.api.view.ApiBillHgPayment;
|
|
||||||
import abacus.springboot.example.api.view.ApiJcBill;
|
|
||||||
import abacus.springboot.example.api.view.ApiJcBillHgSearchItem;
|
|
||||||
import abacus.springboot.example.api.view.ApiJcBillItem;
|
|
||||||
import abacus.springboot.example.api.view.ApiJcBillSearch;
|
|
||||||
import abacus.springboot.example.api.view.ApiReqJcBill;
|
|
||||||
import abacus.springboot.example.api.view.JcBillCount;
|
|
||||||
import abacus.springboot.example.api.view.JcCodeFlow;
|
|
||||||
import abacus.springboot.example.api.view.JcProduct;
|
|
||||||
import abacus.springboot.example.api.view.JcProductBillSouce;
|
|
||||||
import abacus.springboot.example.dao.JcBill;
|
|
||||||
import abacus.springboot.example.dao.JcBillHg;
|
|
||||||
import abacus.springboot.example.dao.JcBillHgPay;
|
|
||||||
import abacus.springboot.example.dao.JcBillInItem;
|
|
||||||
import abacus.springboot.example.dao.JcBillPhoto;
|
|
||||||
import abacus.springboot.example.dao.JcBillSourceItem;
|
|
||||||
import abacus.springboot.example.dao.JcSourceItem;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>Title:ApiJcBillServiceIF</p>
|
|
||||||
<p>Description: 对外接口service服务</p>
|
|
||||||
@author chuanZeng
|
|
||||||
@date 2026年8月18日
|
|
||||||
*/
|
|
||||||
public interface ApiJcBillServiceIF {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 稽查收货查询
|
|
||||||
* @param keyword
|
|
||||||
* @param status
|
|
||||||
* @param pageable
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public Page<ApiJcBillSearch> queryApiJcBillSearch(String keyword, String employee, String status, Pageable pageable) throws RuntimeException;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 稽查收货主单查询
|
|
||||||
* @param id
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public ApiJcBill queryApiJcBillById(String id) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 稽查收货明细
|
|
||||||
* @param billId
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public List<ApiJcBillItem> queryApiJcBillItemByBIllId(String billId) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据条件查询图片
|
|
||||||
* @param srcid
|
|
||||||
* @param srcitemid
|
|
||||||
* @param typephoto
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public Map<String, List<JcBillPhoto>> queryJcBillPhoto(String srcid) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据条件查询图片
|
|
||||||
* @param srcid
|
|
||||||
* @param srcitemid
|
|
||||||
* @param typephoto
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public Map<String, List<JcBillPhoto>> queryJcBillPhotoIn(List<String> srcids) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 保存
|
|
||||||
* @param reqJcBill
|
|
||||||
* @param jcBill
|
|
||||||
* @param createItems
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public ApiReqJcBill saveApiReqJcBill(ApiReqJcBill reqJcBill, JcBill jcBill, List<JcBillSourceItem> createItems) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改
|
|
||||||
* @param reqJcBill
|
|
||||||
* @param jcBill
|
|
||||||
* @param createItems
|
|
||||||
* @param updateItems
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public ApiReqJcBill updateApiReqJcBill(ApiReqJcBill reqJcBill, JcBill jcBill, List<JcBillSourceItem> createItems, List<JcBillSourceItem> updateItems) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 当前明细行号
|
|
||||||
* @param billId
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public int countJcBillItemIndexno(String billId) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询
|
|
||||||
* @param billId
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public JcBill queryJcBillById(String billId) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询
|
|
||||||
* @param billId
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public List<JcBillSourceItem> queryJcBillSourceItemByBillId(String billId) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询
|
|
||||||
* @param id
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public JcBillSourceItem queryJcBillSourceItembyId(Long id) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询o
|
|
||||||
* @param id
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public JcBillInItem queryJcBillInItemById(Long id) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改状态:待提交>>>待溯源
|
|
||||||
* @param jcBill
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public void updateStatusJcBill(JcBill jcBill, int oldStatus) throws RuntimeException;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 回购列表查询
|
|
||||||
* @param keyword
|
|
||||||
* @param status
|
|
||||||
* @param pageable
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public Page<ApiJcBillHgSearchItem> queryApiJcBillHgSearchItem(String keyword, String employee, String status, Pageable pageable) throws RuntimeException;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 回购;查询品种和件数汇总
|
|
||||||
* @param ids
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public Map<String, JcBillCount> queryJcBillCount(List<String> ids) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 回购:主单查询
|
|
||||||
* @param id
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public ApiBillHg queryApiBillHgById(String hgId) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 回购:明细查询
|
|
||||||
* @param billId
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public List<ApiBillHgItem> queryApiBillHgItemByHgId(String hgId) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 回购:支付明细查询
|
|
||||||
* @param billId
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public List<ApiBillHgPayment> queryApiBillHgPaymentByHgId(String hgId) throws RuntimeException;
|
|
||||||
|
|
||||||
public List<ApiBillHgPayment> queryApiBillHgPaymentByHgId(List<String> hgIds) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询
|
|
||||||
* @param billHg
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public JcBillHg queryJcBillHg(String billHg) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改
|
|
||||||
* @param bill
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public void updateJcBillHg(JcBillHg entity, List<JcBillHgPay> pays) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询图片
|
|
||||||
* @param srcid
|
|
||||||
* @param srcitemid
|
|
||||||
* @param typephoto
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public JcBillPhoto queryJcBillPhoto(String srcid, String srcitemid, String typephoto) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询图片
|
|
||||||
* @param srcid
|
|
||||||
* @param srcitemid
|
|
||||||
* @param typephoto
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public List<JcBillPhoto> queryJcBillPhoto(String srcid, String typephoto) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 删除或保存图片
|
|
||||||
* @param photos
|
|
||||||
* @param billHg
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public void saveAndDeletePhoto(List<JcBillPhoto> photos, JcBillHg billHg) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 删除或保存图片
|
|
||||||
* @param photos
|
|
||||||
* @param billHg
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public void saveAndDeletePhoto(List<JcBillPhoto> photos, String billId) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询:下一单待提交的回购单号
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public String lastBillHgId() throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据物流码,查询出库相关信息
|
|
||||||
* @param code
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public List<JcCodeFlow> queryJcCodeFlow(List<String> codes) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询朔源明细
|
|
||||||
* @param billId
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public List<JcSourceItem> queryJcSourceItemByBillId(String billId) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 更新收货明细,以及保存溯源明细
|
|
||||||
* @param items
|
|
||||||
* @param sourceItems
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public void saveJcSourceItem(List<JcBillSourceItem> items, List<JcSourceItem> sourceItems, JcBill jcBill) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询图片
|
|
||||||
* @param srcid
|
|
||||||
* @param srcitemid
|
|
||||||
* @param typephoto
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public JcBillPhoto queryJcBillPhotoById(String id) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 删除图片
|
|
||||||
* @param entity
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public void deleteJcBillPhotoById(JcBillPhoto entity) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 删除订单详情以及对应的图片
|
|
||||||
* @param billid
|
|
||||||
* @param itemid
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public void deleteJcSourceItem(String billid, String itemid) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取百度token
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public String getBaiduToken() throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 稽查货品查询-单号查询
|
|
||||||
* @param product
|
|
||||||
* @param stockInId
|
|
||||||
* @param hgId
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public List<JcProduct> queryJcProduct(String product, String stockInId, String hgId) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 稽查货品查询-单号查询
|
|
||||||
* @param product
|
|
||||||
* @param stockInId
|
|
||||||
* @param hgId
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public List<JcProduct> queryJcProduct(String product, String stockInId) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据稽查单号,查询对应的货品编号
|
|
||||||
* @param billIds
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public Map<String, List<JcProductBillSouce>> queryJcProductBillSouce(List<String> billIds)throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改状态
|
|
||||||
* @param jcBill
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public void updateStatusByJcBill(JcBill jcBill, int status) throws RuntimeException;
|
|
||||||
|
|
||||||
public List<JcBillHg> qeryJcBillHgs(List<String> billids) throws RuntimeException;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-341
@@ -1,341 +0,0 @@
|
|||||||
package abacus.springboot.example.wsi;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import org.springframework.data.domain.Page;
|
|
||||||
import org.springframework.data.domain.Pageable;
|
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
|
||||||
|
|
||||||
import abacus.springboot.example.dao.JcBill;
|
|
||||||
import abacus.springboot.example.dao.JcBillHg;
|
|
||||||
import abacus.springboot.example.dao.JcBillInItem;
|
|
||||||
import abacus.springboot.example.dao.JcBillPhoto;
|
|
||||||
import abacus.springboot.example.dao.JcBillSourceItem;
|
|
||||||
import abacus.springboot.example.dao.JcSourceItem;
|
|
||||||
import abacus.springboot.example.vo.SiDepositlocation;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>Title:JcBillServiceIF</p>
|
|
||||||
<p>Description: service服务</p>
|
|
||||||
@author chuanZeng
|
|
||||||
@date 2026年8月18日
|
|
||||||
*/
|
|
||||||
public interface JcBillServiceIF {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 稽查收货查询
|
|
||||||
* @param fromDate
|
|
||||||
* @param thruDate
|
|
||||||
* @param id
|
|
||||||
* @param applicant
|
|
||||||
* @param goods
|
|
||||||
* @param billin
|
|
||||||
* @param goodsid
|
|
||||||
* @param product
|
|
||||||
* @param status
|
|
||||||
* @param pageable
|
|
||||||
* @param typ 1-溯源入库 2-回购通知
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public Page<JcBill> queryJcBill(String fromDate, String thruDate, String id,
|
|
||||||
String applicant, String goods, String billin, String goodsid, String product,
|
|
||||||
String status, int typ, Pageable pageable) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询
|
|
||||||
* @param billId
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public JcBill queryJcBillById(String billId) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询
|
|
||||||
* @param billId
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public List<JcBillSourceItem> queryJcBillSourceItemByBillId(String billId) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询
|
|
||||||
* @param billHg
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public JcBillHg queryJcBillHg(String billHg) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询朔源明细
|
|
||||||
* @param billId
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public List<JcSourceItem> queryJcSourceItemByBillId(String billId) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询朔源明细
|
|
||||||
* @param billId
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public List<JcSourceItem> queryJcSourceItemByBillId(String billId, String srcitemid) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询朔源明细
|
|
||||||
* @param billId
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public List<JcSourceItem> queryJcSourceItemByBillId(String billId, String srcitemid, int status) throws RuntimeException;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据条件查询图片
|
|
||||||
* @param srcid
|
|
||||||
* @param srcitemid
|
|
||||||
* @param typephoto
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public Map<String, List<JcBillPhoto>> queryJcBillPhoto(String srcid) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询稽查收货明细
|
|
||||||
* @param id
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public JcBillSourceItem queryJcBillSourceItemById(Long id) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 稽查溯源明细
|
|
||||||
* @param id
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public JcSourceItem queryJcSourceItemById(Long id) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 确认溯源
|
|
||||||
* @param billItem
|
|
||||||
* @param sourceItem
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public void saveQuerenBillSourceItem(JcBillSourceItem billItem, JcSourceItem sourceItem) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 溯源信息驳回
|
|
||||||
* @param billItem
|
|
||||||
* @param sourceItem
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public void saveRejectJcSourceItems(JcBillSourceItem billItem, JcBill jcBill) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 溯源完成
|
|
||||||
* @param billItem
|
|
||||||
* @param sourceItem
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public void saveCompleteJcBill(List<JcBillInItem> inItems, JcBill jcBill) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 稽查收货:仓库修改
|
|
||||||
* @param jcBill
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public void updateWarehouse(JcBill jcBill) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @param billId
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public List<JcBillInItem> queryJcBillInItemByBillId(String billId) throws RuntimeException;
|
|
||||||
|
|
||||||
public List<JcBillInItem> queryJcBillInItemByBillId(String billId, int status) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 稽查收货:生成入库单
|
|
||||||
* @param jcBill
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public void createStockIn(JcBill jcBill) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询回购单明细
|
|
||||||
* @param id
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public JcBillInItem queryJcBillInItemById(Long id) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 终止回购
|
|
||||||
* @param inItem
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public void saveTerminateHgInItem(JcBillInItem inItem) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 批量查询回购单明细
|
|
||||||
* @param ids
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public List<JcBillInItem> findAllById(List<Long> ids) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 确定通知
|
|
||||||
* @param inItems
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public void saveInformHg(List<JcBillInItem> inItems, JcBill jcBill, JcBillHg jcBillHg, String photoUrl) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 分页查询 回购订单
|
|
||||||
* @param typ 1-回购认款,2-回购分仓
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public Page<JcBillHg> queryJcBillHg(String fromDate, String thruDate, String account,
|
|
||||||
String salearea, String id, String billId, String status, String product,
|
|
||||||
String manager,
|
|
||||||
int typ, Pageable pageable) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @param billId
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public List<JcBillInItem> queryJcBillInItemByBillHg(String billHgId) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 回购驳回
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public void saveRejectBillHg(int status, int typ, JcBill jcBill, JcBillHg billHg, List<JcBillInItem> inItems) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 确认收款
|
|
||||||
* @param billHg
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public void saveQuerenSk(JcBillHg billHg, boolean fcFlag) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 分仓
|
|
||||||
* @param billHg
|
|
||||||
* @param fcFlag
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public void savecreateFc(JcBillHg billHg) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改分仓仓库
|
|
||||||
* @param oldJsonStr
|
|
||||||
* @param billHg
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public void updateFcWarehouse(String oldJsonStr, JcBillHg billHg) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改运营备注
|
|
||||||
* @param oldJsonStr
|
|
||||||
* @param billHg
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public void updateRemark(String oldJsonStr, JcBillHg billHg) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改收货地址
|
|
||||||
* @param oldJsonStr
|
|
||||||
* @param billHg
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public void updatePac(String oldJsonStr, JcBillHg billHg) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 保存溯源明细信息
|
|
||||||
* @param item
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public JcSourceItem saveJcSourceItem(JcSourceItem item) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 删除溯源明细信息
|
|
||||||
* @param ids
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public void deleteJcSourceItem(List<Long> ids) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改回购单价
|
|
||||||
* @param inItem
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public void updateHgprice(JcBillInItem inItem)throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改回购单价
|
|
||||||
* @param inItem
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public void updateOperatorname(JcBillInItem inItem, String oldStr)throws RuntimeException;
|
|
||||||
|
|
||||||
public void saveJcBillInItem(List<JcBillInItem> items)throws RuntimeException;
|
|
||||||
|
|
||||||
public List<JcBillSourceItem> queryJcBillSourceItemInBillId(List<String> billIds) throws RuntimeException;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 待入库撤回
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public void saveRejectBill(int status, JcBill jcBill, List<JcBillInItem> inItems, List<JcBillSourceItem> sourceItems) throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改溯源信息客户
|
|
||||||
* @param inItems
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public void updateSourceItemAccount(String sourceItemLogJson, String billSourceItemLogJson, String billSourceItemNewLogJson, JcSourceItem sourceItem, List<JcBillSourceItem> billSourceItems,
|
|
||||||
List<JcBillInItem> oldInItems, List<JcBillInItem> inItems)throws RuntimeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 稽查:根据稽查单号,稽查单关联物理仓管理策略
|
|
||||||
* @param dept
|
|
||||||
* @return
|
|
||||||
* @throws Exception
|
|
||||||
*/
|
|
||||||
public SiDepositlocation querySiDepositlocation(String srcid) throws Exception;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 回购:根据回购单号,回购单关联物理仓管理策略
|
|
||||||
* @param dept
|
|
||||||
* @return
|
|
||||||
* @throws Exception
|
|
||||||
*/
|
|
||||||
public SiDepositlocation querySiDepositlocationHGfc(String srcid) throws Exception;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* WMS取消订单接口
|
|
||||||
* @param orderCode
|
|
||||||
* @param orderType
|
|
||||||
* @return
|
|
||||||
* @throws Exception
|
|
||||||
*/
|
|
||||||
public JSONObject gwisSubCancelOrder(String orderCode, String orderType) throws Exception;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
##xxl-job
|
|
||||||
xxl:
|
|
||||||
job:
|
|
||||||
# admin:
|
|
||||||
### 调度中心部署跟地址 [选填]:如调度中心集群部署存在多个地址则用逗号分隔。执行器将会使用该地址进行"执行器心跳注册"和"任务结果回调";为空则关闭自动注册; http://localhost:9900/xxl-job-admin
|
|
||||||
# addresses: http://localhost:9900
|
|
||||||
# addresses: http://192.168.2.130:9900
|
|
||||||
executor:
|
|
||||||
### 执行器AppName [选填]:执行器心跳注册分组依据;为空则关闭自动注册
|
|
||||||
# appname: example-test
|
|
||||||
### 执行器注册 [选填]:优先使用该配置作为注册地址,为空时使用内嵌服务 ”IP:PORT“ 作为注册地址。从而更灵活的支持容器类型执行器动态IP和动态映射端口问题。
|
|
||||||
# address:
|
|
||||||
### 执行器IP [选填]:默认为空表示自动获取IP,多网卡时可手动设置指定IP,该IP不会绑定Host仅作为通讯实用;地址信息用于 "执行器注册" 和 "调度中心请求并触发任务";
|
|
||||||
# ip:
|
|
||||||
### 执行器AppName [选填]:执行器心跳注册分组依据;为空则关闭自动注册
|
|
||||||
### 使用产品
|
|
||||||
appname: example
|
|
||||||
### 执行器端口号 [选填]:小于等于0则自动获取;默认端口为9999,单机部署多个执行器时,注意要配置不同执行器端口;
|
|
||||||
#因为使用docker部署,为了方便docker镜像映射,发布时固定使用“9001”作为定时任务执行器端口
|
|
||||||
port: 9061
|
|
||||||
### 执行器日志文件保存天数 [选填] : 过期日志自动清理, 限制值大于等于3时生效; 否则, 如-1, 关闭自动清理功能;
|
|
||||||
logretentiondays: 7
|
|
||||||
### 执行器运行日志文件存储磁盘路径 [选填] :需要对该路径拥有读写权限;为空则使用默认路径;
|
|
||||||
logpath: D:\apps\file\work\log\xxljob\
|
|
||||||
### 执行器通讯TOKEN [选填]:非空时启用;
|
|
||||||
# accessToken:
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,100 +0,0 @@
|
|||||||
logging:
|
|
||||||
config: classpath:logback-spring.xml
|
|
||||||
maxhistory: 7
|
|
||||||
|
|
||||||
server:
|
|
||||||
port: 9060
|
|
||||||
max-http-header-size: 20480
|
|
||||||
servlet:
|
|
||||||
context-path: /example
|
|
||||||
session:
|
|
||||||
timeout: PT4H
|
|
||||||
|
|
||||||
|
|
||||||
spring:
|
|
||||||
data:
|
|
||||||
jpa:
|
|
||||||
repositories:
|
|
||||||
bootstrap-mode: lazy #jpa延迟启动
|
|
||||||
main:
|
|
||||||
lazy-initialization: true #bean延迟启动
|
|
||||||
servlet:
|
|
||||||
multipart:
|
|
||||||
max-file-size: 50MB #上传文件的大小限定
|
|
||||||
max-request-size: 50MB #上传请求数据的大小限定,限定请求的总数据大小
|
|
||||||
profiles:
|
|
||||||
active: xxljob
|
|
||||||
datasource:
|
|
||||||
druid:
|
|
||||||
#如果连接泄露,是否需要回收泄露的连接,默认false
|
|
||||||
removeAbandoned: true
|
|
||||||
#如果回收了泄露的连接,是否要打印一条log,默认false
|
|
||||||
logAbandoned: true
|
|
||||||
#连接回收的超时时间(单位:秒),默认5分钟
|
|
||||||
removeAbandonedTimeout: 300
|
|
||||||
#查询超时时间(单位:秒)
|
|
||||||
query-timeout: 300
|
|
||||||
#事务查询超时时间(单位:秒),如果小于或等于0,则取query-timeout配置
|
|
||||||
#transaction-query-timeout: 5
|
|
||||||
# 配置初始化大小、最小、最大
|
|
||||||
initial-size: 10
|
|
||||||
minIdle: 11
|
|
||||||
max-active: 60
|
|
||||||
# 配置获取连接等待超时的时间(单位:毫秒)
|
|
||||||
max-wait: 60000
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#在线接口文档扫描类路径
|
|
||||||
springdoc:
|
|
||||||
packages-to-scan:
|
|
||||||
- abacus.springboot.example.api
|
|
||||||
paths-to-match:
|
|
||||||
|
|
||||||
|
|
||||||
abacus:
|
|
||||||
#在线数据字典扫描类路径
|
|
||||||
entitypackages:
|
|
||||||
- abacus.springboot.example.dao
|
|
||||||
#本系统Controller扫描类路径
|
|
||||||
controllerPackages:
|
|
||||||
- abacus.springboot.example.controller
|
|
||||||
#以下uri将不被统一响应体拦截包装器进行包装
|
|
||||||
responseExcludePath:
|
|
||||||
|
|
||||||
# acas系统编码
|
|
||||||
acas:
|
|
||||||
current:
|
|
||||||
number: example
|
|
||||||
|
|
||||||
|
|
||||||
feign:
|
|
||||||
client:
|
|
||||||
config:
|
|
||||||
#feign全局超时配置,单位:毫秒
|
|
||||||
default:
|
|
||||||
connectTimeout: 10000
|
|
||||||
readTimeout: 30000
|
|
||||||
#单个微服务超时配置,优先级高于全局
|
|
||||||
# abacus-oauth2:
|
|
||||||
# connectTimeout: 10000
|
|
||||||
# readTimeout: 10000
|
|
||||||
|
|
||||||
|
|
||||||
management:
|
|
||||||
endpoint:
|
|
||||||
metrics:
|
|
||||||
enabled: true
|
|
||||||
prometheus:
|
|
||||||
enabled: true
|
|
||||||
startup:
|
|
||||||
enabled: true
|
|
||||||
endpoints:
|
|
||||||
web:
|
|
||||||
exposure:
|
|
||||||
include: "*"
|
|
||||||
base-path: /services/actuator
|
|
||||||
metrics:
|
|
||||||
export:
|
|
||||||
prometheus:
|
|
||||||
enabled: true
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
spring:
|
|
||||||
application:
|
|
||||||
name: example
|
|
||||||
cloud:
|
|
||||||
nacos:
|
|
||||||
username: v10dev
|
|
||||||
password: Abacus2022
|
|
||||||
config:
|
|
||||||
server-addr: 192.168.2.130:8848
|
|
||||||
namespace: 3d18c67a-d086-4c16-b377-a633c487eafb
|
|
||||||
file-extension: yml
|
|
||||||
group: DEFAULT_GROUP
|
|
||||||
extension-configs:
|
|
||||||
- data-id: abacus-database.yml
|
|
||||||
group: COMMON_GROUP
|
|
||||||
refresh: false
|
|
||||||
- data-id: abacus-discovery.yml
|
|
||||||
group: COMMON_GROUP
|
|
||||||
refresh: false
|
|
||||||
- data-id: abacus-acas.yml
|
|
||||||
group: COMMON_GROUP
|
|
||||||
refresh: false
|
|
||||||
- data-id: abacus-redis.yml
|
|
||||||
group: COMMON_GROUP
|
|
||||||
refresh: false
|
|
||||||
- data-id: abacus-actuator.yml
|
|
||||||
group: COMMON_GROUP
|
|
||||||
refresh: false
|
|
||||||
- data-id: abacus-xxljob.yml
|
|
||||||
group: COMMON_GROUP
|
|
||||||
refresh: false
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<configuration>
|
|
||||||
<!-- always a good activate OnConsoleStatusListener -->
|
|
||||||
<statusListener
|
|
||||||
class="ch.qos.logback.core.status.OnConsoleStatusListener" />
|
|
||||||
|
|
||||||
<springProperty name="LOGPATH" source="logging.path" />
|
|
||||||
<springProperty name="APPNAME" source="spring.application.name" />
|
|
||||||
|
|
||||||
<property name="log.path" value="F:/Eclipse/work/log/${APPNAME:-.}/${HOSTNAME:-.}" />
|
|
||||||
|
|
||||||
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
|
||||||
<file>${log.path}/access/access.log</file>
|
|
||||||
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
|
|
||||||
<fileNamePattern>${log.path}/access/access-%i.log</fileNamePattern>
|
|
||||||
<minIndex>1</minIndex>
|
|
||||||
<maxIndex>1</maxIndex>
|
|
||||||
</rollingPolicy>
|
|
||||||
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
|
|
||||||
<maxFileSize>10MB</maxFileSize>
|
|
||||||
</triggeringPolicy>
|
|
||||||
<encoder>
|
|
||||||
<pattern>%t{yyyy-MM-dd HH:mm:ss.SS} "%r" %s %b %D %h "%i{Referer}" "%i{User-Agent}" "%i{X-Request-ID}" "%i{X-Forwarded-For}"</pattern>
|
|
||||||
<charset>UTF-8</charset>
|
|
||||||
</encoder>
|
|
||||||
</appender>
|
|
||||||
<appender-ref ref="FILE" />
|
|
||||||
</configuration>
|
|
||||||
@@ -1,140 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 -->
|
|
||||||
<!-- scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true -->
|
|
||||||
<!-- scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
|
|
||||||
<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
|
|
||||||
<configuration scan="true">
|
|
||||||
|
|
||||||
<contextName>logback</contextName>
|
|
||||||
|
|
||||||
<springProperty name="APPNAME" source="spring.application.name" />
|
|
||||||
<springProperty name="LOGMAXHISTORY" source="logging.maxhistory" />
|
|
||||||
|
|
||||||
<property name="log.path" value="F:/Eclipse/work//log/${APPNAME:-.}/${HOSTNAME:-.}" />
|
|
||||||
<property name="log.maxhistory" value="${LOGMAXHISTORY:-7}" />
|
|
||||||
<property name="log.maxfilesize" value="50MB" />
|
|
||||||
<property name="log.pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%15.15t] %-40.40logger{39} [%X{traceId:-},%X{spanId:-}] : %m%n" />
|
|
||||||
|
|
||||||
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
|
|
||||||
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
|
||||||
<level>info</level>
|
|
||||||
</filter>
|
|
||||||
<encoder>
|
|
||||||
<pattern>${log.pattern}</pattern>
|
|
||||||
<charset>UTF-8</charset>
|
|
||||||
</encoder>
|
|
||||||
</appender>
|
|
||||||
|
|
||||||
<appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
|
||||||
<file>${log.path}/info/info.log</file>
|
|
||||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
|
||||||
<fileNamePattern>${log.path}/info/info.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
|
|
||||||
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
|
|
||||||
<maxFileSize>${log.maxfilesize}</maxFileSize>
|
|
||||||
</timeBasedFileNamingAndTriggeringPolicy>
|
|
||||||
<maxHistory>${log.maxhistory}</maxHistory>
|
|
||||||
</rollingPolicy>
|
|
||||||
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
|
||||||
<level>INFO</level>
|
|
||||||
<onMatch>ACCEPT</onMatch>
|
|
||||||
<onMismatch>DENY</onMismatch>
|
|
||||||
</filter>
|
|
||||||
<encoder>
|
|
||||||
<pattern>${log.pattern}</pattern>
|
|
||||||
<charset>UTF-8</charset>
|
|
||||||
</encoder>
|
|
||||||
</appender>
|
|
||||||
|
|
||||||
<appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
|
||||||
<file>${log.path}/warn/warn.log</file>
|
|
||||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
|
||||||
<fileNamePattern>${log.path}/warn/warn.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
|
|
||||||
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
|
|
||||||
<maxFileSize>${log.maxfilesize}</maxFileSize>
|
|
||||||
</timeBasedFileNamingAndTriggeringPolicy>
|
|
||||||
<maxHistory>${log.maxhistory}</maxHistory>
|
|
||||||
</rollingPolicy>
|
|
||||||
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
|
||||||
<level>WARN</level>
|
|
||||||
<onMatch>ACCEPT</onMatch>
|
|
||||||
<onMismatch>DENY</onMismatch>
|
|
||||||
</filter>
|
|
||||||
<encoder>
|
|
||||||
<pattern>${log.pattern}</pattern>
|
|
||||||
<charset>UTF-8</charset>
|
|
||||||
</encoder>
|
|
||||||
</appender>
|
|
||||||
|
|
||||||
<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
|
||||||
<file>${log.path}/error/error.log</file>
|
|
||||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
|
||||||
<fileNamePattern>${log.path}/error/error.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
|
|
||||||
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
|
|
||||||
<maxFileSize>${log.maxfilesize}</maxFileSize>
|
|
||||||
</timeBasedFileNamingAndTriggeringPolicy>
|
|
||||||
<maxHistory>${log.maxhistory}</maxHistory>
|
|
||||||
</rollingPolicy>
|
|
||||||
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
|
||||||
<level>ERROR</level>
|
|
||||||
<onMatch>ACCEPT</onMatch>
|
|
||||||
<onMismatch>DENY</onMismatch>
|
|
||||||
</filter>
|
|
||||||
<encoder>
|
|
||||||
<pattern>${log.pattern}</pattern>
|
|
||||||
<charset>UTF-8</charset>
|
|
||||||
</encoder>
|
|
||||||
</appender>
|
|
||||||
|
|
||||||
<appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
|
||||||
<file>${log.path}/debug/debug.log</file>
|
|
||||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
|
||||||
<fileNamePattern>${log.path}/debug/debug.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
|
|
||||||
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
|
|
||||||
<maxFileSize>${log.maxfilesize}</maxFileSize>
|
|
||||||
</timeBasedFileNamingAndTriggeringPolicy>
|
|
||||||
<maxHistory>${log.maxhistory}</maxHistory>
|
|
||||||
</rollingPolicy>
|
|
||||||
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
|
||||||
<level>DEBUG</level>
|
|
||||||
<onMatch>ACCEPT</onMatch>
|
|
||||||
<onMismatch>DENY</onMismatch>
|
|
||||||
</filter>
|
|
||||||
<encoder>
|
|
||||||
<pattern>${log.pattern}</pattern>
|
|
||||||
<charset>UTF-8</charset>
|
|
||||||
</encoder>
|
|
||||||
</appender>
|
|
||||||
|
|
||||||
|
|
||||||
<!--慢sql输出-->
|
|
||||||
<appender name="ABACUSSLOWSQL_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
|
||||||
<file>${log.path}/slowsql/slowsql.log</file>
|
|
||||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
|
||||||
<fileNamePattern>${log.path}/slowsql/slowsql.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
|
|
||||||
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
|
|
||||||
<maxFileSize>${log.maxfilesize}</maxFileSize>
|
|
||||||
</timeBasedFileNamingAndTriggeringPolicy>
|
|
||||||
<MaxHistory>30</MaxHistory>
|
|
||||||
</rollingPolicy>
|
|
||||||
<encoder>
|
|
||||||
<pattern>${log.pattern}</pattern>
|
|
||||||
<charset>UTF-8</charset>
|
|
||||||
</encoder>
|
|
||||||
</appender>
|
|
||||||
|
|
||||||
<logger name="abacusslowsql" additivity="false" >
|
|
||||||
<appender-ref ref="ABACUSSLOWSQL_FILE"/>
|
|
||||||
</logger>
|
|
||||||
|
|
||||||
<root level="info">
|
|
||||||
<appender-ref ref="CONSOLE" />
|
|
||||||
<appender-ref ref="DEBUG_FILE" />
|
|
||||||
<appender-ref ref="INFO_FILE" />
|
|
||||||
<appender-ref ref="WARN_FILE" />
|
|
||||||
<appender-ref ref="ERROR_FILE" />
|
|
||||||
</root>
|
|
||||||
|
|
||||||
|
|
||||||
<!--开发环境:打印控制台-->
|
|
||||||
|
|
||||||
</configuration>
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
##xxl-job
|
|
||||||
xxl:
|
|
||||||
job:
|
|
||||||
# admin:
|
|
||||||
### 调度中心部署跟地址 [选填]:如调度中心集群部署存在多个地址则用逗号分隔。执行器将会使用该地址进行"执行器心跳注册"和"任务结果回调";为空则关闭自动注册; http://localhost:9900/xxl-job-admin
|
|
||||||
# addresses: http://localhost:9900
|
|
||||||
# addresses: http://192.168.2.130:9900
|
|
||||||
executor:
|
|
||||||
### 执行器AppName [选填]:执行器心跳注册分组依据;为空则关闭自动注册
|
|
||||||
# appname: example-test
|
|
||||||
### 执行器注册 [选填]:优先使用该配置作为注册地址,为空时使用内嵌服务 ”IP:PORT“ 作为注册地址。从而更灵活的支持容器类型执行器动态IP和动态映射端口问题。
|
|
||||||
# address:
|
|
||||||
### 执行器IP [选填]:默认为空表示自动获取IP,多网卡时可手动设置指定IP,该IP不会绑定Host仅作为通讯实用;地址信息用于 "执行器注册" 和 "调度中心请求并触发任务";
|
|
||||||
# ip:
|
|
||||||
### 执行器AppName [选填]:执行器心跳注册分组依据;为空则关闭自动注册
|
|
||||||
### 使用产品
|
|
||||||
appname: example
|
|
||||||
### 执行器端口号 [选填]:小于等于0则自动获取;默认端口为9999,单机部署多个执行器时,注意要配置不同执行器端口;
|
|
||||||
#因为使用docker部署,为了方便docker镜像映射,发布时固定使用“9001”作为定时任务执行器端口
|
|
||||||
port: 9061
|
|
||||||
### 执行器日志文件保存天数 [选填] : 过期日志自动清理, 限制值大于等于3时生效; 否则, 如-1, 关闭自动清理功能;
|
|
||||||
logretentiondays: 7
|
|
||||||
### 执行器运行日志文件存储磁盘路径 [选填] :需要对该路径拥有读写权限;为空则使用默认路径;
|
|
||||||
logpath: D:\apps\file\work\log\xxljob\
|
|
||||||
### 执行器通讯TOKEN [选填]:非空时启用;
|
|
||||||
# accessToken:
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user