新增入库单据管理页面

This commit is contained in:
zgw
2025-12-18 10:42:57 +08:00
parent bbe7b8a021
commit abf21af5a8
34 changed files with 3753 additions and 78 deletions

View File

@@ -0,0 +1,53 @@
## 问题判断
- 仅勾选一条子单仍打印两页,典型原因是分页规则对最后一页也生效或伪类匹配异常导致空白页。
- `:last-child` 在存在空白文本节点/注释节点的情况下可能失效,导致最后一个实际页面元素仍应用分页。
- 也可能存在重复数据(同一个 `stockinDetailId` 被选中两次),引发两页输出。
## 修复与优化方案
### 1. 明确分页控制(按索引条件渲染)
- 将分页控制从 CSS 伪类改为模板条件,避免 `:last-child` 因节点影响而失效:
- 模板改为:
```vue
<div
v-for="(item, idx) in printData"
:key="item.stockinDetailId"
class="print-page"
:style="{ pageBreakAfter: idx < printData.length - 1 ? 'always' : 'auto' }"
>
<!-- 原卡片内容保持不变 -->
</div>
```
### 2. 去重与防重复打印
- 在 `printDetailQRCodes` 中对 `detailSelections` 去重,确保同一子单只打印一次:
```js
const map = new Map()
this.printData = []
for (const row of this.detailSelections) {
const key = row.stockinDetailId
if (key && !map.has(key)) {
map.set(key, true)
this.printData.push(row)
}
}
```
### 3. 保证单页不被拆分
- 保留并强化:`.print-page { page-break-inside: avoid; }`,防止卡片高度导致跨页拆分。
- 控制卡片外层高度与内边距不超过 A4 可打印区域(当前 720px 宽 + 常规内容高度安全)。
### 4. 打印触发时机与副本数
- 维持 `this.$nextTick(() => setTimeout(() => this.$refs.easyPrint2.print(), 100))`,避免多次触发。
- 如仍出现两页,追加保护:打印前记录 `printData.length` 与内容,控制仅当 `length >= 1` 才触发一次。
## 代码变更摘要
- 更新模板:将分页规则改为基于索引的内联样式条件。
- 更新方法:`printDetailQRCodes` 增加去重逻辑与空数组保护。
- 保留样式:`page-break-inside: avoid`;移除或忽略 `:last-child` 分页伪类。
## 验证步骤
- 勾选 1 条子单打印,预览应仅 1 页。
- 勾选 2 条子单打印,预览应为 2 页且无末尾空白页。
- 检查不同浏览器(Chromium/Edge)表现一致性。
请确认按此方案实施,我将立即更新代码并验证。

View File

@@ -0,0 +1,104 @@
## 目标
* 在 SQL Server 新增表 `in_stockin_detail_n`,用于存储 ERP 返回的入库产品明细(Cols/Rows)。
* 以实体、Mapper、Service 的方式接入到现有 WMS 代码,并在 `ToErpServiceImpl#getInStock` 中解析 JSON 后落库。
* 字段覆盖现有 ERP 索引映射,支持来源、创建/更新时间等审计信息。
## 数据表设计(SQL Server)
* 表名:`in_stockin_detail_n`
* 关键字段:
* stockin\_detail\_id (入库单主键,插入时,主单对应有几条子单,在主单ID后拼接“-”子单条数)
* stockin\_id 主单ID 与主单ID保持一致
* `erp_detail_id`(ERP入库明细ID,对应 Rows\[0])
* `product_name` nvarchar(200)(Rows\[1])
* `product_model` nvarchar(200)(Rows\[2],型号)
* `unit` nvarchar(50)(Rows\[3])
* `unit_price` decimal(18,6)(Rows\[4])
* `aux_unit` nvarchar(50) 或 int(Rows\[5],与现有实现保持兼容;建议 nvarchar 以避免字典耦合)
* `attr1` nvarchar(100)(Rows\[6])
* `attr2` nvarchar(100)(Rows\[7])
* `quantity` decimal(18,6)(Rows\[9])
* `in_quantity` decimal(18,6)(Rows\[10])
* `aux_quantity` decimal(18,6)(Rows\[11])
* `total_price` decimal(18,6)(Rows\[12])
* `cost_unit_price` decimal(18,6)(Rows\[13])
* `cost_total_price` decimal(18,6)(Rows\[14])
* `accounting_cost_total` decimal(18,6)(Rows\[15])
* `accounting_quantity` decimal(18,6)(Rows\[16])
* `accounting_status` int(Rows\[17])
* `batch_no` nvarchar(100)(Rows\[18])
* `serial_no` nvarchar(100)(Rows\[19])
* `production_date` datetime2(3)(Rows\[20])
* `expiry_date` datetime2(3)(Rows\[21])
* `arrival_date` datetime2(3)(Rows\[22])
* `remark` nvarchar(255)(Rows\[23])
* `custom1`..`custom6` nvarchar(255)(Rows\[24]..Rows\[29])
* `stevedore` nvarchar(100)(Rows\[30],装卸工)
* `create_time` datetime2(3) 默认 `SYSDATETIME()`
* `update_time` datetime2(3) 可在更新时写入 `SYSDATETIME()`
* 约束:`detail_id` 主键;如需防重复插入,可使用 `detail_id + production_date` 唯一索引(按您确认)。
## Java 代码接入
* 新增实体 `com.ruoyi.system.domain.InStockinDetailN`
* 字段与表结构一一对应,类型与上面一致;保留必要的 `@Excel` 注解,遵循现有风格。
* 继承 `BaseEntity`,复用 `createTime`、`updateTime` 字段。
* 新增 Mapper 接口 `com.ruoyi.system.mapper.InStockinDetailNMapper`
* 方法:`insertInStockinDetailN`、`updateInStockinDetailN`、`selectByDetailId`、`batchInsert(List<...>)`、`selectByDetailIdAndDate`(防重复)。
* 新增 XML `mapper/system/InStockinDetailNMapper.xml`
* 定义 `resultMap` 与列映射;提供 `insert`、`update`、`select`、`batchInsert`(`foreach`)语句,时间字段默认使用 `SYSDATETIME()`。
* 新增 Service `IInStockinDetailNService` 与实现 `InStockinDetailNServiceImpl`
* 封装批量写入与防重复逻辑(按 `detail_id` 或当天 `create_time` 过滤)。
## 解析与入库逻辑
* 在 `ToErpServiceImpl#getInStock` 中:
* 从 `row.get(15)`(产品明细 JSON)解析出 `Rows` 列表。
* 按上面索引映射生成 `InStockinDetailN` 对象,填充 `order_src='ERP'`、`create_time=当前时间`。
* 通过 `selectByDetailIdAndDate(detail_id, today)` 判断是否已存在,未存在则插入,已存在忽略。
* 将 `stockin_guid` 关联为当前主单 `newStockin.getStockinGuid()`(若可获得)。
## 索引映射校验
* 结合已有 `ErpInStockinDetail` 的使用位置(`ToErpServiceImpl#AddStockinDetailByErpStockinDetail`),确保以下关键位一致:
* `id`→Rows\[0]、`spare1`(产品名称)→Rows\[1]、`spare2`(产品编号/型号)→Rows\[2]
* 数量→Rows\[9]、批号→Rows\[17]、序列号→Rows\[18]、生产/有效/到货日期→Rows\[19]/\[20]/\[21]
* 如您确认 `Clos` 与 `Rows` 存在偏移或后续附加列,我们将按您提供的最终结构调整表与映射。
## 验证与回归
* 本地运行 `getInStock`,抓取一次 ERP 返回;在控制台输出解析计数与首条样例,以确认列位。
* 手工查询:`SELECT TOP 10 * FROM in_stockin_detail_n ORDER BY create_time DESC;`
* 回归检查:对 `in_stockin_n` 与新表之间的 `stockin_guid` 关联是否正确。
## 提交约定
* 在实现时,所有 Java 代码将补充详细中文注释,解释每一步改动原因与映射关系。
* 不自动创建 `.md` 或 `.sql` 文件;如您需要,我们可生成对应 SQL 文件并在您确认后执行。
* 仅在您确认后进行代码与数据库变更,并按您要求的 Git 提交规范执行提交。

View File

@@ -0,0 +1,61 @@
## 目标
- 在 `InStockIn` 页面满足 5 项需求:
1. 点击“单据新增”时,打开弹框隐藏“打印入库条码”按钮
2. 弹框内新增“选择物料”按钮,打开第二个弹框显示物料列表,选择后将物料加入子单明细
3. 子单明细中的“计划数量”和“入库数量”可编辑
4. 新增时自动生成 `stockinId`:`RK` + 当前毫秒时间戳
5. 提交时 `orderSrc` 默认赋值为“自建单”
## 技术实现
- 页面文件:`ruoyi-ui/src/views/system/inStockIn/index.vue`
- 参考实现:`ruoyi-ui/src/views/in/stockIn/add/index_new.vue` 的“添加物料”与“选择物料”弹框逻辑
## 详细改动
### 新增状态标识
- 在 `data()` 中新增:`isAddMode: false`
- 用于区分“新增”与“编辑/查看”,控制按钮显示与表格可编辑
### 隐藏打印按钮
- 对话框底部的打印按钮(`printDetailQRCodes`)改为:`v-if="!isAddMode"`
- 点击“单据新增”时将 `isAddMode = true`,从而隐藏打印按钮
### 选择物料入口
- 在“子单信息”卡片标题区域新增一个按钮:`选择物料`
- 按钮事件 `openProductSelector()` 打开二级弹框
### 物料选择弹框
- 复用 `index_new.vue` 的模式:
- 引入 API:`import { listBasProduct } from "@/api/bas/BasProduct"`
- 在 `data()` 中新增:`productSelectVisible, productOptions, selectedProducts, productTotal, queryProductParams, productLoading`
- 弹框内容包含搜索表单、物料表格(带选择)、分页与“确定/取消”
- 事件:`getProductList()、resetProductQuery()、handleProductSelectionChange()、confirmSelectProduct()`
### 子单明细数据与可编辑列
- 子单明细列表数据源仍使用 `inStockinDetailNList`
- 在“新增”模式下,`confirmSelectProduct()` 将选中的物料映射并 `push` 到 `inStockinDetailNList`:
- 字段映射示例:`productName、productModel(来自 productId 或 spec)、unit、quantity(默认 1)、inQuantity(默认 0)`
- 在子单表格中为 `quantity` 与 `inQuantity` 列增加模板:`<el-input-number v-model="scope.row.quantity" ...>` 与 `<el-input-number v-model="scope.row.inQuantity" ...>`,并用 `v-if="isAddMode"` 控制仅在新增时可编辑
### 自动生成主单号
- 在 `handleAdd()`:
- `this.reset()` 后设置:`this.form.stockinId = 'RK' + Date.now()`
- `this.isAddMode = true; this.open = true; this.isView = false; this.title = '添加入库单据管理'`
- 由于 `watch('form.stockinId')` 会尝试拉取子单,新增生成的主单号在后端不存在,列表将为空,此时通过物料选择填充本地子单明细
### 提交默认来源
- 在 `submitForm()` 里,在发起 `addInStockIn(this.form)` 前设置:`this.form.orderSrc = '自建单'`
- 编辑场景保持原逻辑不变;新增成功后 `isAddMode` 复位为 `false`
## 校验与兼容
- 行内“修改/删除”按钮逻辑保持现有条件控制;新增模式下仅本地操作子单明细
- 不影响历史单据查询与打印
- 若后端需要接收子单明细,一并在后续迭代中按后端接口扩展(当前仅前端本地编辑)
## 代码触点
- 模板:对话框底部按钮处、子单卡片标题区新增按钮、子单表格新增可编辑列
- 脚本:新增 `isAddMode` 标识、导入 `listBasProduct`、新增弹框及方法、在 `handleAdd()` 和 `submitForm()` 中按要求赋值
## 期望交互
- 点击“新增”→ 弹框打开且不显示打印按钮;自动生成主单号
- 点“选择物料”→ 打开物料选择弹框,勾选并确定→ 子单明细填充,可编辑数量
- 点“确定”提交→ 主单 `orderSrc` 自动为“自建单”

View File

@@ -0,0 +1,55 @@
## 目标
- 为 `in_stockin_n_finish` 和 `in_stockin_detail_n_finish` 两张“完成/归档表”新增后端代码(Mapper 接口 + MyBatis XML + Service 接口与实现)。
- 字段结构与现有 `in_stockin_n`、`in_stockin_detail_n` 完全一致,仅更换表名与命名空间。
## 范围
- 复用现有领域模型:直接复用 `InStockinN` 与 `InStockinDetailN` 两个实体类,不新增冗余实体。
- 新增 Mapper 接口与 XML:Finish 版本分别指向 `_finish` 表名。
- 新增 Service 接口与实现:提供基本 CRUD 与“从原表批量归档到 finish 表”的能力。
- 不改动现有 Controller(如需页面展示 Finish 列表,可后续扩展)。
## 技术方案
- MyBatis:在 `mapper/system` 目录新增两个 XML 文件,`resultMap` 的 `type` 仍然使用现有实体类;`select`/`insert`/`update`/`delete` 语句的 `from`/`into` 指向 `_finish` 表。
- Mapper 接口:在 `com.ruoyi.system.mapper` 新增 `InStockinNFinishMapper`、`InStockinDetailNFinishMapper`,方法签名与现有 Mapper 保持一致(命名不同)。
- Service:在 `com.ruoyi.system.service` 新增 `IInStockinNFinishService`、`IInStockinDetailNFinishService`;在 `com.ruoyi.system.service.impl` 新增对应实现类,注入 Finish Mapper 完成操作。
## 文件清单
- `ruoyi-admin/src/main/java/com/ruoyi/system/mapper/InStockinNFinishMapper.java`
- `ruoyi-admin/src/main/java/com/ruoyi/system/mapper/InStockinDetailNFinishMapper.java`
- `ruoyi-admin/src/main/resources/mapper/system/InStockinNFinishMapper.xml`
- `ruoyi-admin/src/main/resources/mapper/system/InStockinDetailNFinishMapper.xml`
- `ruoyi-admin/src/main/java/com/ruoyi/system/service/IInStockinNFinishService.java`
- `ruoyi-admin/src/main/java/com/ruoyi/system/service/IInStockinDetailNFinishService.java`
- `ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/InStockinNFinishServiceImpl.java`
- `ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/InStockinDetailNFinishServiceImpl.java`
## 方法签名(示例)
- InStockinNFinishMapper / Service:
- `InStockinN selectByStockinGuid(String stockinGuid)`
- `List<InStockinN> selectList(InStockinN query)`
- `int insert(InStockinN row)` / `int update(InStockinN row)` / `int deleteByStockinGuid(String stockinGuid)`
- `int batchArchiveFromSource(String date)`(可选:将当日数据从源表复制到 finish 表)
- InStockinDetailNFinishMapper / Service:
- `InStockinDetailN selectByStockinDetailId(String stockinDetailId)`
- `List<InStockinDetailN> selectListByStockinGuid(String stockinGuid)`
- `int insert(InStockinDetailN row)` / `int update(InStockinDetailN row)` / `int deleteByStockinDetailId(String stockinDetailId)`
- `int batchArchiveByStockinGuid(String stockinGuid)`(从源明细表按主单 guid 复制到 finish 表)
## 归档流程(可在 Service 中提供便捷方法)
- 主单:`archiveStockinNByGuid(stockinGuid)`
- 从 `in_stockin_n` 查询主单,存在则插入/更新到 `in_stockin_n_finish`
- 子单:`archiveStockinDetailNByGuid(stockinGuid)`
- 从 `in_stockin_detail_n` 批量查询 `stockin_guid=...` 的子单,批量插入到 `in_stockin_detail_n_finish`
- 幂等:`insert` 使用 `stockin_guid` 或 `stockin_detail_id` 作为唯一约束进行“存在则更新”的 upsert 逻辑(与现有 XML 风格保持一致)。
## 校验与验证
- 本地运行现有入库拉取逻辑,手工触发一次归档方法,验证两张 finish 表插入成功。
- 使用已有前端页面查询与导出功能验证数据一致性(如果后续增加 Controller,将绑定至 `/system/inStockInFinish` 与 `/system/inStockInDetailFinish`)。
## 不改动项
- 不修改实体字段与现有源表 Mapper/Service;Finish 仅新增并依赖现有结构。
- 不自动生成 SQL DDL(如需要我可根据现有表结构快速给出 `_finish` 建表 SQL)。
## 实施说明
- 所有新增 Java/XML 文件将包含详细中文注释,解释与源表的字段一致性、使用场景与幂等处理原因。
- 完成后不进行 Git 提交,等待您提供提交说明/提交人/提交时间/提交备注后再执行。

View File

@@ -61,4 +61,9 @@ public class ToErpApiController {
public AjaxResult qqq() {
return toErpService.getErpStockinList();
}
@RequestMapping("/getInStock")
public AjaxResult getInStock(){
return toErpService.getInStock();
}
}

View File

@@ -0,0 +1,39 @@
package com.ruoyi.api.domain.erp;
import cn.hutool.core.annotation.Alias;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ErpInStockinNResponse {
@Alias("Page")
private Page page;
@Alias("Cols")
private List<String> cols;
@Alias("Rows")
private List<List<Object>> rows;
@Alias("Code")
private Integer code;
@Alias("Msg")
private String msg;
@Data
@AllArgsConstructor
@NoArgsConstructor
public static class Page {
@Alias("RecordCount")
private int recordCount;
@Alias("PageSize")
private int pageSize;
@Alias("PageIndex")
private int pageIndex;
@Alias("PageCount")
private int pageCount;
}
}

View File

@@ -40,4 +40,5 @@ public interface IToErpService {
void AddStockinDetailByErpStockinDetail(ErpInStockinDetail erpInStockinetail);
AjaxResult getInStock();
}

View File

@@ -46,6 +46,12 @@ import com.ruoyi.out.outStockoutDetail.domain.OutStockoutDetail;
import com.ruoyi.out.outStockoutDetail.service.IOutStockoutDetailService;
import com.ruoyi.stock.stock.domain.BasStock;
import com.ruoyi.stock.stock.service.IBasStockService;
import com.ruoyi.system.domain.InStockinDetailN;
import com.ruoyi.system.domain.InStockinN;
import com.ruoyi.system.domain.InStockinNQueryRequest;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.ruoyi.common.enums.StockInCompleteStatus;
import com.ruoyi.system.service.IInStockinNService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
@@ -493,15 +499,12 @@ public class ToErpServiceImpl implements IToErpService {
log.info("请求异常:响应信息为空!检查请求内容!");
return null;
}
//------处理响应信息
ErpStockinResponse res = JSONUtil.toBean(response, ErpStockinResponse.class);
for (List<Object> list : res.getRows()) {
//【入库id】校验单据是否存在
String kuin = Convert.toStr(list.get(1));
ErpInStockin erpInStockin = new ErpInStockin();
//获取入库主单参数
erpInStockin.setTitle(Convert.toStr(list.get(0)));//主题
erpInStockin.setKuin(kuin);//入库id
@@ -524,22 +527,17 @@ public class ToErpServiceImpl implements IToErpService {
erpInStockin.setSysIcusIInheritIdIidI415(Convert.toStr(list.get(18)));//车号
String id = erpInStockin.getRkbh() + "_" + erpInStockin.getKuin();
erpInStockin.setStockinGuid(id);//guid
//------校验单据是否已经在表中 - 新增/更新
if (ObjUtil.isNotNull(erpInStockinService.selectErpInStockinByKuin(kuin))) {
erpInStockinService.updateErpInStockin(erpInStockin);
}else{
erpInStockinService.insertErpInStockin(erpInStockin);
}
//------更新wms主单
AddStockinByErpStockin(erpInStockin);
//=================================================================== 明细 =====================================================================
//------根据主单【kuinlist】字段获取子单信息
if (erpStockinParam.getNeedList() == 1) {
//------获取子单明细
JSONObject jsonObject = JSONUtil.parseObj(erpInStockin.getKuinList());
jsonObject.get("rows");
@@ -700,5 +698,152 @@ public class ToErpServiceImpl implements IToErpService {
}
@Autowired
private IInStockinNService inStockinNService;
@Autowired
private com.ruoyi.system.service.IInStockinDetailNService inStockinDetailNService;
@Autowired
private ObjectMapper objectMapper;
//获取入库单据
public AjaxResult getInStock(){
//创建请求体
InStockinNQueryRequest inStockinNQueryRequest = new InStockinNQueryRequest();
inStockinNQueryRequest.setComplete1(0);//查找未执行的单据
inStockinNQueryRequest.setSort1(0);
// 设置日期范围为当天
String today = DateUtil.today();
// inStockinNQueryRequest.setDate3Start(today + " 00:00:00");
// inStockinNQueryRequest.setDate3End(today + " 23:59:59");
inStockinNQueryRequest.setDate3Start("2025-11-03" + " 00:00:00");
inStockinNQueryRequest.setDate3End("2025-11-03" + " 23:59:59");
inStockinNQueryRequest.setDate5Start("2025-11-03" + " 00:00:00");
inStockinNQueryRequest.setDate5End("2025-11-03" + " 23:59:59");
inStockinNQueryRequest.setTitle("打冷");
inStockinNQueryRequest.setNeedList(1);
inStockinNQueryRequest.setPageIndex(1);
inStockinNQueryRequest.setPageSize(0);
String jsonStr = "";
try {
jsonStr = objectMapper.writeValueAsString(inStockinNQueryRequest);
} catch (Exception e) {
log.error("JSON序列化失败", e);
return AjaxResult.error("JSON序列化失败");
}
// 获取ERP数据
String body = HttpRequest.post(getStockinListUrl).header(TOKEN_KEY, login()).body(jsonStr).execute().body();
// 解析响应
ErpInStockinNResponse response = JSONUtil.toBean(body, ErpInStockinNResponse.class);
if (response != null && response.getRows() != null) {
List<List<Object>> rows = response.getRows();
for (List<Object> row : rows) {
// 0: 入库主题, 1: 入库id, 2: 入库状态, 3: 申请人, 4: 申请日期, 5: 确认日期, 6: 审批人, 7: 审批意见,
// 8: 入库备注, 9: 关联其他单据id, 10: 添加时间, 11: 库管id, 12: 入库类别, 13: 入库编号,
// 14: 审批状态, 15: 产品明细, 16: 客户名称, 17: 磅单编号, 18: 入库车号
String erpStockInId = Convert.toStr(row.get(13)); // 入库id
// 检查本地是否存在
InStockinN existing = inStockinNService.selectInStockinNByStockinIdAndDate(erpStockInId, "2025-11-03");
if (existing == null) {
// 不存在则插入
String stockinId = "RK" + DateUtil.format(DateUtil.date(), "yyyyMMddHHmmssSSS");
InStockinN newStockin = new InStockinN();
newStockin.setStockinGuid(UUID.randomUUID().toString());
newStockin.setStockinId(stockinId);
newStockin.setStatus(1);//未执行
newStockin.setSubject(Convert.toStr(row.get(0)));
newStockin.setErpStockinId(erpStockInId);
newStockin.setErpStatus(row.get(2).toString()); // 假设状态映射需要转换
newStockin.setApplicant(Convert.toStr(row.get(3)));
newStockin.setApplyDate(Convert.toStr(row.get(4)));
newStockin.setConfirmDate(Convert.toStr(row.get(5)));
newStockin.setApprover(Convert.toStr(row.get(6)));
newStockin.setApprovalComment(Convert.toStr(row.get(7)));
newStockin.setRemark(Convert.toStr(row.get(8)));
newStockin.setRelatedDocId(Convert.toStr(row.get(9)));
newStockin.setCreatedAt(Convert.toStr(row.get(10)));
newStockin.setKeeperId(Convert.toLong(row.get(11)));
newStockin.setCategory(Convert.toStr(row.get(12)));
newStockin.setEntryCode(Convert.toStr(row.get(1)));
newStockin.setApprovalStatus(Convert.toLong(row.get(14)));
newStockin.setProductDetails(Convert.toStr(row.get(15)));
newStockin.setCustomerName(Convert.toStr(row.get(16)));
newStockin.setWeighbillNo(Convert.toStr(row.get(17)));
newStockin.setVehicleNo(Convert.toStr(row.get(18)));
newStockin.setOrderSrc("ERP");
try {
java.math.BigDecimal orderSum = new java.math.BigDecimal("0");
cn.hutool.json.JSONObject detailsObjForSum = JSONUtil.parseObj(newStockin.getProductDetails());
cn.hutool.json.JSONArray detailRowsForSum = detailsObjForSum.getJSONArray("Rows");
if (detailRowsForSum != null) {
for (int si = 0; si < detailRowsForSum.size(); si++) {
cn.hutool.json.JSONArray sd = detailRowsForSum.getJSONArray(si);
orderSum = orderSum.add(Convert.toBigDecimal(sd.get(9)));
}
}
newStockin.setOrderNum(orderSum);
} catch (Exception ignore) {
}
inStockinNService.insertInStockinN(newStockin);
// 解析并落库产品明细(Rows)
try {
JSONObject detailsObj = JSONUtil.parseObj(newStockin.getProductDetails());
JSONArray detailRows = detailsObj.getJSONArray("Rows");
if (detailRows != null) {
for (int i = 0; i < detailRows.size(); i++) {
JSONArray d = detailRows.getJSONArray(i);
Long erpDetailId = Convert.toLong(d.get(0));
String stockinDetailId = newStockin.getStockinId() + "-" + (i + 1);
InStockinDetailN detail = new InStockinDetailN();
detail.setStockinDetailId(stockinDetailId);
detail.setErpDetailId(erpDetailId);
detail.setStockinGuid(newStockin.getStockinGuid());
detail.setStockinId(newStockin.getStockinId());
detail.setProductName(Convert.toStr(d.get(1)));
detail.setProductModel(Convert.toStr(d.get(2)));
detail.setUnit(Convert.toStr(d.get(3)));
detail.setUnitPrice(Convert.toBigDecimal(d.get(5)));
detail.setAuxUnit(Convert.toStr(d.get(6)));
detail.setAttr1(Convert.toStr(d.get(7)));
detail.setAttr2(Convert.toStr(d.get(8)));
detail.setQuantity(Convert.toBigDecimal(d.get(9)));
detail.setInQuantity(Convert.toBigDecimal(d.get(10)));
detail.setAuxQuantity(Convert.toBigDecimal(d.get(11)));
detail.setTotalPrice(Convert.toBigDecimal(d.get(12)));
detail.setCostUnitPrice(Convert.toBigDecimal(d.get(13)));
detail.setCostTotalPrice(Convert.toBigDecimal(d.get(14)));
detail.setAccountingCostTotal(Convert.toBigDecimal(d.get(15)));
detail.setAccountingQuantity(Convert.toBigDecimal(d.get(16)));
detail.setAccountingStatus(Long.valueOf(Convert.toInt(d.get(17))));
detail.setBatchNo(Convert.toStr(d.get(18)));
detail.setSerialNo(Convert.toStr(d.get(19)));
detail.setProductionDate(Convert.toStr(d.get(20)));
detail.setExpiryDate(Convert.toStr(d.get(21)));
detail.setArrivalDate(Convert.toStr(d.get(22)));
detail.setRemark(Convert.toStr(d.get(23)));
detail.setCustom1(Convert.toStr(d.get(24)));
detail.setCustom2(Convert.toStr(d.get(25)));
detail.setCustom3(Convert.toStr(d.get(26)));
detail.setCustom4(Convert.toStr(d.get(27)));
detail.setCustom5(Convert.toStr(d.get(28)));
detail.setCustom6(Convert.toStr(d.get(29)));
detail.setStevedore(Convert.toStr(d.get(30)));
detail.setOrderSrc("ERP");
inStockinDetailNService.insertInStockinDetailN(detail);
}
}
} catch (Exception e) {
log.error("解析并落库产品明细失败: {}", e.getMessage());
}
}
}
}
return AjaxResult.success(body);
}
}

View File

@@ -136,7 +136,9 @@ public class MydoJobServiceImpl implements IMydoJobService {
*/
@Override
public int insertMydoJob(MydoJob mydoJob) {
mydoJob.setCreateTime(new Date());
// mydoJob.setJobId(basJobIdService.getJobId("RK"));
// mydoJob.setTaskNo(Convert.toStr(basTaskNoService.getTaskNo("1")));
return mydoJobMapper.insertMydoJob(mydoJob);
}

View File

@@ -0,0 +1,104 @@
package com.ruoyi.system.controller;
import java.util.List;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.system.domain.InStockinDetailN;
import com.ruoyi.system.service.IInStockinDetailNService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
/**
* 入库子单Controller
*
* @author ruoyi
* @date 2025-12-17
*/
@RestController
@RequestMapping("/system/inStockinDetailN")
public class InStockinDetailNController extends BaseController
{
@Autowired
private IInStockinDetailNService inStockinDetailNService;
/**
* 查询入库子单列表
*/
@PreAuthorize("@ss.hasPermi('system:inStockinDetailN:list')")
@GetMapping("/list")
public TableDataInfo list(InStockinDetailN inStockinDetailN)
{
startPage();
List<InStockinDetailN> list = inStockinDetailNService.selectInStockinDetailNList(inStockinDetailN);
return getDataTable(list);
}
/**
* 导出入库子单列表
*/
@PreAuthorize("@ss.hasPermi('system:inStockinDetailN:export')")
@Log(title = "入库子单", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, InStockinDetailN inStockinDetailN)
{
List<InStockinDetailN> list = inStockinDetailNService.selectInStockinDetailNList(inStockinDetailN);
ExcelUtil<InStockinDetailN> util = new ExcelUtil<InStockinDetailN>(InStockinDetailN.class);
util.exportExcel(response, list, "入库子单数据");
}
/**
* 获取入库子单详细信息
*/
@PreAuthorize("@ss.hasPermi('system:inStockinDetailN:query')")
@GetMapping(value = "/{stockinDetailId}")
public AjaxResult getInfo(@PathVariable("stockinDetailId") String stockinDetailId)
{
return success(inStockinDetailNService.selectInStockinDetailNByStockinDetailId(stockinDetailId));
}
/**
* 新增入库子单
*/
@PreAuthorize("@ss.hasPermi('system:inStockinDetailN:add')")
@Log(title = "入库子单", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody InStockinDetailN inStockinDetailN)
{
return toAjax(inStockinDetailNService.insertInStockinDetailN(inStockinDetailN));
}
/**
* 修改入库子单
*/
@PreAuthorize("@ss.hasPermi('system:inStockinDetailN:edit')")
@Log(title = "入库子单", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody InStockinDetailN inStockinDetailN)
{
return toAjax(inStockinDetailNService.updateInStockinDetailN(inStockinDetailN));
}
/**
* 删除入库子单
*/
@PreAuthorize("@ss.hasPermi('system:inStockinDetailN:remove')")
@Log(title = "入库子单", businessType = BusinessType.DELETE)
@DeleteMapping("/{stockinDetailIds}")
public AjaxResult remove(@PathVariable String[] stockinDetailIds)
{
return toAjax(inStockinDetailNService.deleteInStockinDetailNByStockinDetailIds(stockinDetailIds));
}
}

View File

@@ -0,0 +1,104 @@
package com.ruoyi.system.controller;
import java.util.List;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.system.domain.InStockinDetailNFinish;
import com.ruoyi.system.service.IInStockinDetailNFinishService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
/**
* 入库子表历史Controller
*
* @author zgw
* @date 2025-12-17
*/
@RestController
@RequestMapping("/system/stockindetailNfinish")
public class InStockinDetailNFinishController extends BaseController
{
@Autowired
private IInStockinDetailNFinishService inStockinDetailNFinishService;
/**
* 查询入库子表历史列表
*/
@PreAuthorize("@ss.hasPermi('system:stockindetailNfinish:list')")
@GetMapping("/list")
public TableDataInfo list(InStockinDetailNFinish inStockinDetailNFinish)
{
startPage();
List<InStockinDetailNFinish> list = inStockinDetailNFinishService.selectInStockinDetailNFinishList(inStockinDetailNFinish);
return getDataTable(list);
}
/**
* 导出入库子表历史列表
*/
@PreAuthorize("@ss.hasPermi('system:stockindetailNfinish:export')")
@Log(title = "入库子表历史", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, InStockinDetailNFinish inStockinDetailNFinish)
{
List<InStockinDetailNFinish> list = inStockinDetailNFinishService.selectInStockinDetailNFinishList(inStockinDetailNFinish);
ExcelUtil<InStockinDetailNFinish> util = new ExcelUtil<InStockinDetailNFinish>(InStockinDetailNFinish.class);
util.exportExcel(response, list, "入库子表历史数据");
}
/**
* 获取入库子表历史详细信息
*/
@PreAuthorize("@ss.hasPermi('system:stockindetailNfinish:query')")
@GetMapping(value = "/{stockinDetailId}")
public AjaxResult getInfo(@PathVariable("stockinDetailId") String stockinDetailId)
{
return success(inStockinDetailNFinishService.selectInStockinDetailNFinishByStockinDetailId(stockinDetailId));
}
/**
* 新增入库子表历史
*/
@PreAuthorize("@ss.hasPermi('system:stockindetailNfinish:add')")
@Log(title = "入库子表历史", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody InStockinDetailNFinish inStockinDetailNFinish)
{
return toAjax(inStockinDetailNFinishService.insertInStockinDetailNFinish(inStockinDetailNFinish));
}
/**
* 修改入库子表历史
*/
@PreAuthorize("@ss.hasPermi('system:stockindetailNfinish:edit')")
@Log(title = "入库子表历史", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody InStockinDetailNFinish inStockinDetailNFinish)
{
return toAjax(inStockinDetailNFinishService.updateInStockinDetailNFinish(inStockinDetailNFinish));
}
/**
* 删除入库子表历史
*/
@PreAuthorize("@ss.hasPermi('system:stockindetailNfinish:remove')")
@Log(title = "入库子表历史", businessType = BusinessType.DELETE)
@DeleteMapping("/{stockinDetailIds}")
public AjaxResult remove(@PathVariable String[] stockinDetailIds)
{
return toAjax(inStockinDetailNFinishService.deleteInStockinDetailNFinishByStockinDetailIds(stockinDetailIds));
}
}

View File

@@ -0,0 +1,104 @@
package com.ruoyi.system.controller;
import java.util.List;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.system.domain.InStockinNFinish;
import com.ruoyi.system.service.IInStockinNFinishService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
/**
* 入库单历史表Controller
*
* @author zgw
* @date 2025-12-17
*/
@RestController
@RequestMapping("/system/stockinfinish")
public class InStockinNFinishController extends BaseController
{
@Autowired
private IInStockinNFinishService inStockinNFinishService;
/**
* 查询入库单历史表列表
*/
@PreAuthorize("@ss.hasPermi('system:stockinfinish:list')")
@GetMapping("/list")
public TableDataInfo list(InStockinNFinish inStockinNFinish)
{
startPage();
List<InStockinNFinish> list = inStockinNFinishService.selectInStockinNFinishList(inStockinNFinish);
return getDataTable(list);
}
/**
* 导出入库单历史表列表
*/
@PreAuthorize("@ss.hasPermi('system:stockinfinish:export')")
@Log(title = "入库单历史表", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, InStockinNFinish inStockinNFinish)
{
List<InStockinNFinish> list = inStockinNFinishService.selectInStockinNFinishList(inStockinNFinish);
ExcelUtil<InStockinNFinish> util = new ExcelUtil<InStockinNFinish>(InStockinNFinish.class);
util.exportExcel(response, list, "入库单历史表数据");
}
/**
* 获取入库单历史表详细信息
*/
@PreAuthorize("@ss.hasPermi('system:stockinfinish:query')")
@GetMapping(value = "/{stockinGuid}")
public AjaxResult getInfo(@PathVariable("stockinGuid") String stockinGuid)
{
return success(inStockinNFinishService.selectInStockinNFinishByStockinGuid(stockinGuid));
}
/**
* 新增入库单历史表
*/
@PreAuthorize("@ss.hasPermi('system:stockinfinish:add')")
@Log(title = "入库单历史表", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody InStockinNFinish inStockinNFinish)
{
return toAjax(inStockinNFinishService.insertInStockinNFinish(inStockinNFinish));
}
/**
* 修改入库单历史表
*/
@PreAuthorize("@ss.hasPermi('system:stockinfinish:edit')")
@Log(title = "入库单历史表", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody InStockinNFinish inStockinNFinish)
{
return toAjax(inStockinNFinishService.updateInStockinNFinish(inStockinNFinish));
}
/**
* 删除入库单历史表
*/
@PreAuthorize("@ss.hasPermi('system:stockinfinish:remove')")
@Log(title = "入库单历史表", businessType = BusinessType.DELETE)
@DeleteMapping("/{stockinGuids}")
public AjaxResult remove(@PathVariable String[] stockinGuids)
{
return toAjax(inStockinNFinishService.deleteInStockinNFinishByStockinGuids(stockinGuids));
}
}

View File

@@ -0,0 +1,534 @@
package com.ruoyi.system.domain;
import java.math.BigDecimal;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* 入库子单对象 in_stockin_detail_n
*
* @author ruoyi
* @date 2025-12-17
*/
@Data
public class InStockinDetailN extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Long erpDetailId;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String stockinGuid;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String stockinId;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String productName;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String productModel;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String unit;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private BigDecimal unitPrice;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String auxUnit;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String attr1;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String attr2;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private BigDecimal quantity;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private BigDecimal inQuantity;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private BigDecimal auxQuantity;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private BigDecimal totalPrice;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private BigDecimal costUnitPrice;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private BigDecimal costTotalPrice;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private BigDecimal accountingCostTotal;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private BigDecimal accountingQuantity;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Long accountingStatus;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String batchNo;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String serialNo;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String productionDate;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String expiryDate;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String arrivalDate;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String custom1;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String custom2;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String custom3;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String custom4;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String custom5;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String custom6;
/** 扫码数量 */
@Excel(name = "扫码数量")
private BigDecimal smNum;
/** 实际数量 */
@Excel(name = "实际数量")
private BigDecimal finishNum;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String stevedore;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String orderSrc;
/** $column.columnComment */
private String stockinDetailId;
public void setErpDetailId(Long erpDetailId)
{
this.erpDetailId = erpDetailId;
}
public Long getErpDetailId()
{
return erpDetailId;
}
public void setStockinGuid(String stockinGuid)
{
this.stockinGuid = stockinGuid;
}
public String getStockinGuid()
{
return stockinGuid;
}
public void setStockinId(String stockinId)
{
this.stockinId = stockinId;
}
public String getStockinId()
{
return stockinId;
}
public void setProductName(String productName)
{
this.productName = productName;
}
public String getProductName()
{
return productName;
}
public void setProductModel(String productModel)
{
this.productModel = productModel;
}
public String getProductModel()
{
return productModel;
}
public void setUnit(String unit)
{
this.unit = unit;
}
public String getUnit()
{
return unit;
}
public void setUnitPrice(BigDecimal unitPrice)
{
this.unitPrice = unitPrice;
}
public BigDecimal getUnitPrice()
{
return unitPrice;
}
public void setAuxUnit(String auxUnit)
{
this.auxUnit = auxUnit;
}
public String getAuxUnit()
{
return auxUnit;
}
public void setAttr1(String attr1)
{
this.attr1 = attr1;
}
public String getAttr1()
{
return attr1;
}
public void setAttr2(String attr2)
{
this.attr2 = attr2;
}
public String getAttr2()
{
return attr2;
}
public void setQuantity(BigDecimal quantity)
{
this.quantity = quantity;
}
public BigDecimal getQuantity()
{
return quantity;
}
public void setInQuantity(BigDecimal inQuantity)
{
this.inQuantity = inQuantity;
}
public BigDecimal getInQuantity()
{
return inQuantity;
}
public void setAuxQuantity(BigDecimal auxQuantity)
{
this.auxQuantity = auxQuantity;
}
public BigDecimal getAuxQuantity()
{
return auxQuantity;
}
public void setTotalPrice(BigDecimal totalPrice)
{
this.totalPrice = totalPrice;
}
public BigDecimal getTotalPrice()
{
return totalPrice;
}
public void setCostUnitPrice(BigDecimal costUnitPrice)
{
this.costUnitPrice = costUnitPrice;
}
public BigDecimal getCostUnitPrice()
{
return costUnitPrice;
}
public void setCostTotalPrice(BigDecimal costTotalPrice)
{
this.costTotalPrice = costTotalPrice;
}
public BigDecimal getCostTotalPrice()
{
return costTotalPrice;
}
public void setAccountingCostTotal(BigDecimal accountingCostTotal)
{
this.accountingCostTotal = accountingCostTotal;
}
public BigDecimal getAccountingCostTotal()
{
return accountingCostTotal;
}
public void setAccountingQuantity(BigDecimal accountingQuantity)
{
this.accountingQuantity = accountingQuantity;
}
public BigDecimal getAccountingQuantity()
{
return accountingQuantity;
}
public void setAccountingStatus(Long accountingStatus)
{
this.accountingStatus = accountingStatus;
}
public Long getAccountingStatus()
{
return accountingStatus;
}
public void setBatchNo(String batchNo)
{
this.batchNo = batchNo;
}
public String getBatchNo()
{
return batchNo;
}
public void setSerialNo(String serialNo)
{
this.serialNo = serialNo;
}
public String getSerialNo()
{
return serialNo;
}
public void setProductionDate(String productionDate)
{
this.productionDate = productionDate;
}
public String getProductionDate()
{
return productionDate;
}
public void setExpiryDate(String expiryDate)
{
this.expiryDate = expiryDate;
}
public String getExpiryDate()
{
return expiryDate;
}
public void setArrivalDate(String arrivalDate)
{
this.arrivalDate = arrivalDate;
}
public String getArrivalDate()
{
return arrivalDate;
}
public void setCustom1(String custom1)
{
this.custom1 = custom1;
}
public String getCustom1()
{
return custom1;
}
public void setCustom2(String custom2)
{
this.custom2 = custom2;
}
public String getCustom2()
{
return custom2;
}
public void setCustom3(String custom3)
{
this.custom3 = custom3;
}
public String getCustom3()
{
return custom3;
}
public void setCustom4(String custom4)
{
this.custom4 = custom4;
}
public String getCustom4()
{
return custom4;
}
public void setCustom5(String custom5)
{
this.custom5 = custom5;
}
public String getCustom5()
{
return custom5;
}
public void setCustom6(String custom6)
{
this.custom6 = custom6;
}
public String getCustom6()
{
return custom6;
}
public void setStevedore(String stevedore)
{
this.stevedore = stevedore;
}
public String getStevedore()
{
return stevedore;
}
public void setOrderSrc(String orderSrc)
{
this.orderSrc = orderSrc;
}
public String getOrderSrc()
{
return orderSrc;
}
public void setStockinDetailId(String stockinDetailId)
{
this.stockinDetailId = stockinDetailId;
}
public String getStockinDetailId()
{
return stockinDetailId;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("erpDetailId", getErpDetailId())
.append("stockinGuid", getStockinGuid())
.append("stockinId", getStockinId())
.append("productName", getProductName())
.append("productModel", getProductModel())
.append("unit", getUnit())
.append("unitPrice", getUnitPrice())
.append("auxUnit", getAuxUnit())
.append("attr1", getAttr1())
.append("attr2", getAttr2())
.append("quantity", getQuantity())
.append("inQuantity", getInQuantity())
.append("auxQuantity", getAuxQuantity())
.append("totalPrice", getTotalPrice())
.append("costUnitPrice", getCostUnitPrice())
.append("costTotalPrice", getCostTotalPrice())
.append("accountingCostTotal", getAccountingCostTotal())
.append("accountingQuantity", getAccountingQuantity())
.append("accountingStatus", getAccountingStatus())
.append("batchNo", getBatchNo())
.append("serialNo", getSerialNo())
.append("productionDate", getProductionDate())
.append("expiryDate", getExpiryDate())
.append("arrivalDate", getArrivalDate())
.append("remark", getRemark())
.append("custom1", getCustom1())
.append("custom2", getCustom2())
.append("custom3", getCustom3())
.append("custom4", getCustom4())
.append("custom5", getCustom5())
.append("custom6", getCustom6())
.append("smNum", getSmNum())
.append("finishNum", getFinishNum())
.append("stevedore", getStevedore())
.append("orderSrc", getOrderSrc())
.append("createTime", getCreateTime())
.append("updateTime", getUpdateTime())
.append("stockinDetailId", getStockinDetailId())
.toString();
}
}

View File

@@ -0,0 +1,521 @@
package com.ruoyi.system.domain;
import java.math.BigDecimal;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* 入库子表历史对象 in_stockin_detail_n_finish
*
* @author zgw
* @date 2025-12-17
*/
public class InStockinDetailNFinish extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Long erpDetailId;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String stockinGuid;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String stockinId;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String productName;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String productModel;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String unit;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private BigDecimal unitPrice;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String auxUnit;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String attr1;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String attr2;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private BigDecimal quantity;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private BigDecimal inQuantity;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private BigDecimal auxQuantity;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private BigDecimal totalPrice;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private BigDecimal costUnitPrice;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private BigDecimal costTotalPrice;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private BigDecimal accountingCostTotal;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private BigDecimal accountingQuantity;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Long accountingStatus;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String batchNo;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String serialNo;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String productionDate;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String expiryDate;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String arrivalDate;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String custom1;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String custom2;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String custom3;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String custom4;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String custom5;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String custom6;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String stevedore;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String orderSrc;
/** $column.columnComment */
private String stockinDetailId;
public void setErpDetailId(Long erpDetailId)
{
this.erpDetailId = erpDetailId;
}
public Long getErpDetailId()
{
return erpDetailId;
}
public void setStockinGuid(String stockinGuid)
{
this.stockinGuid = stockinGuid;
}
public String getStockinGuid()
{
return stockinGuid;
}
public void setStockinId(String stockinId)
{
this.stockinId = stockinId;
}
public String getStockinId()
{
return stockinId;
}
public void setProductName(String productName)
{
this.productName = productName;
}
public String getProductName()
{
return productName;
}
public void setProductModel(String productModel)
{
this.productModel = productModel;
}
public String getProductModel()
{
return productModel;
}
public void setUnit(String unit)
{
this.unit = unit;
}
public String getUnit()
{
return unit;
}
public void setUnitPrice(BigDecimal unitPrice)
{
this.unitPrice = unitPrice;
}
public BigDecimal getUnitPrice()
{
return unitPrice;
}
public void setAuxUnit(String auxUnit)
{
this.auxUnit = auxUnit;
}
public String getAuxUnit()
{
return auxUnit;
}
public void setAttr1(String attr1)
{
this.attr1 = attr1;
}
public String getAttr1()
{
return attr1;
}
public void setAttr2(String attr2)
{
this.attr2 = attr2;
}
public String getAttr2()
{
return attr2;
}
public void setQuantity(BigDecimal quantity)
{
this.quantity = quantity;
}
public BigDecimal getQuantity()
{
return quantity;
}
public void setInQuantity(BigDecimal inQuantity)
{
this.inQuantity = inQuantity;
}
public BigDecimal getInQuantity()
{
return inQuantity;
}
public void setAuxQuantity(BigDecimal auxQuantity)
{
this.auxQuantity = auxQuantity;
}
public BigDecimal getAuxQuantity()
{
return auxQuantity;
}
public void setTotalPrice(BigDecimal totalPrice)
{
this.totalPrice = totalPrice;
}
public BigDecimal getTotalPrice()
{
return totalPrice;
}
public void setCostUnitPrice(BigDecimal costUnitPrice)
{
this.costUnitPrice = costUnitPrice;
}
public BigDecimal getCostUnitPrice()
{
return costUnitPrice;
}
public void setCostTotalPrice(BigDecimal costTotalPrice)
{
this.costTotalPrice = costTotalPrice;
}
public BigDecimal getCostTotalPrice()
{
return costTotalPrice;
}
public void setAccountingCostTotal(BigDecimal accountingCostTotal)
{
this.accountingCostTotal = accountingCostTotal;
}
public BigDecimal getAccountingCostTotal()
{
return accountingCostTotal;
}
public void setAccountingQuantity(BigDecimal accountingQuantity)
{
this.accountingQuantity = accountingQuantity;
}
public BigDecimal getAccountingQuantity()
{
return accountingQuantity;
}
public void setAccountingStatus(Long accountingStatus)
{
this.accountingStatus = accountingStatus;
}
public Long getAccountingStatus()
{
return accountingStatus;
}
public void setBatchNo(String batchNo)
{
this.batchNo = batchNo;
}
public String getBatchNo()
{
return batchNo;
}
public void setSerialNo(String serialNo)
{
this.serialNo = serialNo;
}
public String getSerialNo()
{
return serialNo;
}
public void setProductionDate(String productionDate)
{
this.productionDate = productionDate;
}
public String getProductionDate()
{
return productionDate;
}
public void setExpiryDate(String expiryDate)
{
this.expiryDate = expiryDate;
}
public String getExpiryDate()
{
return expiryDate;
}
public void setArrivalDate(String arrivalDate)
{
this.arrivalDate = arrivalDate;
}
public String getArrivalDate()
{
return arrivalDate;
}
public void setCustom1(String custom1)
{
this.custom1 = custom1;
}
public String getCustom1()
{
return custom1;
}
public void setCustom2(String custom2)
{
this.custom2 = custom2;
}
public String getCustom2()
{
return custom2;
}
public void setCustom3(String custom3)
{
this.custom3 = custom3;
}
public String getCustom3()
{
return custom3;
}
public void setCustom4(String custom4)
{
this.custom4 = custom4;
}
public String getCustom4()
{
return custom4;
}
public void setCustom5(String custom5)
{
this.custom5 = custom5;
}
public String getCustom5()
{
return custom5;
}
public void setCustom6(String custom6)
{
this.custom6 = custom6;
}
public String getCustom6()
{
return custom6;
}
public void setStevedore(String stevedore)
{
this.stevedore = stevedore;
}
public String getStevedore()
{
return stevedore;
}
public void setOrderSrc(String orderSrc)
{
this.orderSrc = orderSrc;
}
public String getOrderSrc()
{
return orderSrc;
}
public void setStockinDetailId(String stockinDetailId)
{
this.stockinDetailId = stockinDetailId;
}
public String getStockinDetailId()
{
return stockinDetailId;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("erpDetailId", getErpDetailId())
.append("stockinGuid", getStockinGuid())
.append("stockinId", getStockinId())
.append("productName", getProductName())
.append("productModel", getProductModel())
.append("unit", getUnit())
.append("unitPrice", getUnitPrice())
.append("auxUnit", getAuxUnit())
.append("attr1", getAttr1())
.append("attr2", getAttr2())
.append("quantity", getQuantity())
.append("inQuantity", getInQuantity())
.append("auxQuantity", getAuxQuantity())
.append("totalPrice", getTotalPrice())
.append("costUnitPrice", getCostUnitPrice())
.append("costTotalPrice", getCostTotalPrice())
.append("accountingCostTotal", getAccountingCostTotal())
.append("accountingQuantity", getAccountingQuantity())
.append("accountingStatus", getAccountingStatus())
.append("batchNo", getBatchNo())
.append("serialNo", getSerialNo())
.append("productionDate", getProductionDate())
.append("expiryDate", getExpiryDate())
.append("arrivalDate", getArrivalDate())
.append("remark", getRemark())
.append("custom1", getCustom1())
.append("custom2", getCustom2())
.append("custom3", getCustom3())
.append("custom4", getCustom4())
.append("custom5", getCustom5())
.append("custom6", getCustom6())
.append("stevedore", getStevedore())
.append("orderSrc", getOrderSrc())
.append("createTime", getCreateTime())
.append("updateTime", getUpdateTime())
.append("stockinDetailId", getStockinDetailId())
.toString();
}
}

View File

@@ -0,0 +1,401 @@
package com.ruoyi.system.domain;
import java.math.BigDecimal;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* 入库单历史表对象 in_stockin_n_finish
*
* @author zgw
* @date 2025-12-17
*/
public class InStockinNFinish extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 入库单据编号 */
@Excel(name = "入库单据编号")
private String stockinId;
/** 入库主题 */
@Excel(name = "入库主题")
private String subject;
/** 入库id(内部或外部流水ID) */
@Excel(name = "入库id", readConverterExp = "内=部或外部流水ID")
private String erpStockinId;
/** 入库状态(0-草稿,1-待确认,2-已确认,3-已入库等) */
@Excel(name = "入库状态", readConverterExp = "0=-草稿,1-待确认,2-已确认,3-已入库等")
private int status;
/** 申请人 */
@Excel(name = "申请人")
private String applicant;
/** 申请日期 */
@Excel(name = "申请日期")
private String applyDate;
/** 确认日期 */
@Excel(name = "确认日期")
private String confirmDate;
/** 审批人 */
@Excel(name = "审批人")
private String approver;
/** 审批意见 */
@Excel(name = "审批意见")
private String approvalComment;
/** 关联其他单据id */
@Excel(name = "关联其他单据id")
private String relatedDocId;
/** 添加时间(记录插入时间) */
@Excel(name = "添加时间", readConverterExp = "记=录插入时间")
private String createdAt;
/** 库管id(用户ID或职员ID) */
@Excel(name = "库管id", readConverterExp = "用=户ID或职员ID")
private Long keeperId;
/** 入库类别 */
@Excel(name = "入库类别")
private String category;
/** 入库编号(流水或业务编号) */
@Excel(name = "入库编号", readConverterExp = "流=水或业务编号")
private String entryCode;
/** 审批状态(0-未审批,1-通过,2-驳回) */
@Excel(name = "审批状态", readConverterExp = "0=-未审批,1-通过,2-驳回")
private Long approvalStatus;
/** 产品明细(建议存JSON或文本) */
@Excel(name = "产品明细", readConverterExp = "建=议存JSON或文本")
private String productDetails;
/** 客户名称 */
@Excel(name = "客户名称")
private String customerName;
/** 磅单编号 */
@Excel(name = "磅单编号")
private String weighbillNo;
/** 入库车号 */
@Excel(name = "入库车号")
private String vehicleNo;
/** ERP单据状态 */
@Excel(name = "ERP单据状态")
private String erpStatus;
/** 单据来源 */
@Excel(name = "单据来源")
private String orderSrc;
/** 单据数量 */
@Excel(name = "单据数量")
private BigDecimal orderNum;
/** 完成数量 */
@Excel(name = "完成数量")
private BigDecimal finishNum;
/** guid */
private String stockinGuid;
/** 删除时间 */
@Excel(name = "删除时间")
private String deleteTime;
public void setStockinId(String stockinId)
{
this.stockinId = stockinId;
}
public String getStockinId()
{
return stockinId;
}
public void setSubject(String subject)
{
this.subject = subject;
}
public String getSubject()
{
return subject;
}
public void setErpStockinId(String erpStockinId)
{
this.erpStockinId = erpStockinId;
}
public String getErpStockinId()
{
return erpStockinId;
}
public void setStatus(int status)
{
this.status = status;
}
public int getStatus()
{
return status;
}
public void setApplicant(String applicant)
{
this.applicant = applicant;
}
public String getApplicant()
{
return applicant;
}
public void setApplyDate(String applyDate)
{
this.applyDate = applyDate;
}
public String getApplyDate()
{
return applyDate;
}
public void setConfirmDate(String confirmDate)
{
this.confirmDate = confirmDate;
}
public String getConfirmDate()
{
return confirmDate;
}
public void setApprover(String approver)
{
this.approver = approver;
}
public String getApprover()
{
return approver;
}
public void setApprovalComment(String approvalComment)
{
this.approvalComment = approvalComment;
}
public String getApprovalComment()
{
return approvalComment;
}
public void setRelatedDocId(String relatedDocId)
{
this.relatedDocId = relatedDocId;
}
public String getRelatedDocId()
{
return relatedDocId;
}
public void setCreatedAt(String createdAt)
{
this.createdAt = createdAt;
}
public String getCreatedAt()
{
return createdAt;
}
public void setKeeperId(Long keeperId)
{
this.keeperId = keeperId;
}
public Long getKeeperId()
{
return keeperId;
}
public void setCategory(String category)
{
this.category = category;
}
public String getCategory()
{
return category;
}
public void setEntryCode(String entryCode)
{
this.entryCode = entryCode;
}
public String getEntryCode()
{
return entryCode;
}
public void setApprovalStatus(Long approvalStatus)
{
this.approvalStatus = approvalStatus;
}
public Long getApprovalStatus()
{
return approvalStatus;
}
public void setProductDetails(String productDetails)
{
this.productDetails = productDetails;
}
public String getProductDetails()
{
return productDetails;
}
public void setCustomerName(String customerName)
{
this.customerName = customerName;
}
public String getCustomerName()
{
return customerName;
}
public void setWeighbillNo(String weighbillNo)
{
this.weighbillNo = weighbillNo;
}
public String getWeighbillNo()
{
return weighbillNo;
}
public void setVehicleNo(String vehicleNo)
{
this.vehicleNo = vehicleNo;
}
public String getVehicleNo()
{
return vehicleNo;
}
public void setErpStatus(String erpStatus)
{
this.erpStatus = erpStatus;
}
public String getErpStatus()
{
return erpStatus;
}
public void setOrderSrc(String orderSrc)
{
this.orderSrc = orderSrc;
}
public String getOrderSrc()
{
return orderSrc;
}
public void setOrderNum(BigDecimal orderNum)
{
this.orderNum = orderNum;
}
public BigDecimal getOrderNum()
{
return orderNum;
}
public void setFinishNum(BigDecimal finishNum)
{
this.finishNum = finishNum;
}
public BigDecimal getFinishNum()
{
return finishNum;
}
public void setStockinGuid(String stockinGuid)
{
this.stockinGuid = stockinGuid;
}
public String getStockinGuid()
{
return stockinGuid;
}
public void setDeleteTime(String deleteTime)
{
this.deleteTime = deleteTime;
}
public String getDeleteTime()
{
return deleteTime;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("stockinId", getStockinId())
.append("subject", getSubject())
.append("erpStockinId", getErpStockinId())
.append("status", getStatus())
.append("applicant", getApplicant())
.append("applyDate", getApplyDate())
.append("confirmDate", getConfirmDate())
.append("approver", getApprover())
.append("approvalComment", getApprovalComment())
.append("remark", getRemark())
.append("relatedDocId", getRelatedDocId())
.append("createdAt", getCreatedAt())
.append("keeperId", getKeeperId())
.append("category", getCategory())
.append("entryCode", getEntryCode())
.append("approvalStatus", getApprovalStatus())
.append("productDetails", getProductDetails())
.append("customerName", getCustomerName())
.append("weighbillNo", getWeighbillNo())
.append("vehicleNo", getVehicleNo())
.append("erpStatus", getErpStatus())
.append("orderSrc", getOrderSrc())
.append("createTime", getCreateTime())
.append("updateTime", getUpdateTime())
.append("orderNum", getOrderNum())
.append("finishNum", getFinishNum())
.append("stockinGuid", getStockinGuid())
.append("deleteTime", getDeleteTime())
.toString();
}
}

View File

@@ -0,0 +1,64 @@
package com.ruoyi.system.mapper;
import java.util.List;
import com.ruoyi.system.domain.InStockinDetailNFinish;
import org.apache.ibatis.annotations.Param;
/**
* 入库子表历史Mapper接口
*
* @author zgw
* @date 2025-12-17
*/
public interface InStockinDetailNFinishMapper
{
/**
* 查询入库子表历史
*
* @param stockinDetailId 入库子表历史主键
* @return 入库子表历史
*/
public InStockinDetailNFinish selectInStockinDetailNFinishByStockinDetailId(String stockinDetailId);
/**
* 查询入库子表历史列表
*
* @param inStockinDetailNFinish 入库子表历史
* @return 入库子表历史集合
*/
public List<InStockinDetailNFinish> selectInStockinDetailNFinishList(InStockinDetailNFinish inStockinDetailNFinish);
/**
* 新增入库子表历史
*
* @param inStockinDetailNFinish 入库子表历史
* @return 结果
*/
public int insertInStockinDetailNFinish(InStockinDetailNFinish inStockinDetailNFinish);
/**
* 修改入库子表历史
*
* @param inStockinDetailNFinish 入库子表历史
* @return 结果
*/
public int updateInStockinDetailNFinish(InStockinDetailNFinish inStockinDetailNFinish);
/**
* 删除入库子表历史
*
* @param stockinDetailId 入库子表历史主键
* @return 结果
*/
public int deleteInStockinDetailNFinishByStockinDetailId(String stockinDetailId);
/**
* 批量删除入库子表历史
*
* @param stockinDetailIds 需要删除的数据主键集合
* @return 结果
*/
public int deleteInStockinDetailNFinishByStockinDetailIds(String[] stockinDetailIds);
void insertByStockInId(@Param("stockinId") String stockinId);
}

View File

@@ -0,0 +1,64 @@
package com.ruoyi.system.mapper;
import java.util.List;
import com.ruoyi.system.domain.InStockinDetailN;
import org.apache.ibatis.annotations.Param;
/**
* 入库子单Mapper接口
*
* @author ruoyi
* @date 2025-12-17
*/
public interface InStockinDetailNMapper
{
/**
* 查询入库子单
*
* @param stockinDetailId 入库子单主键
* @return 入库子单
*/
public InStockinDetailN selectInStockinDetailNByStockinDetailId(String stockinDetailId);
/**
* 查询入库子单列表
*
* @param inStockinDetailN 入库子单
* @return 入库子单集合
*/
public List<InStockinDetailN> selectInStockinDetailNList(InStockinDetailN inStockinDetailN);
/**
* 新增入库子单
*
* @param inStockinDetailN 入库子单
* @return 结果
*/
public int insertInStockinDetailN(InStockinDetailN inStockinDetailN);
/**
* 修改入库子单
*
* @param inStockinDetailN 入库子单
* @return 结果
*/
public int updateInStockinDetailN(InStockinDetailN inStockinDetailN);
/**
* 删除入库子单
*
* @param stockinDetailId 入库子单主键
* @return 结果
*/
public int deleteInStockinDetailNByStockinDetailId(String stockinDetailId);
/**
* 批量删除入库子单
*
* @param stockinDetailIds 需要删除的数据主键集合
* @return 结果
*/
public int deleteInStockinDetailNByStockinDetailIds(String[] stockinDetailIds);
void deleteByStockInId(@Param("stockinId") String stockinId);
}

View File

@@ -0,0 +1,63 @@
package com.ruoyi.system.mapper;
import java.util.List;
import com.ruoyi.system.domain.InStockinNFinish;
import org.apache.ibatis.annotations.Param;
/**
* 入库单历史表Mapper接口
*
* @author zgw
* @date 2025-12-17
*/
public interface InStockinNFinishMapper
{
/**
* 查询入库单历史表
*
* @param stockinGuid 入库单历史表主键
* @return 入库单历史表
*/
public InStockinNFinish selectInStockinNFinishByStockinGuid(String stockinGuid);
/**
* 查询入库单历史表列表
*
* @param inStockinNFinish 入库单历史表
* @return 入库单历史表集合
*/
public List<InStockinNFinish> selectInStockinNFinishList(InStockinNFinish inStockinNFinish);
/**
* 新增入库单历史表
*
* @param inStockinNFinish 入库单历史表
* @return 结果
*/
public int insertInStockinNFinish(InStockinNFinish inStockinNFinish);
/**
* 修改入库单历史表
*
* @param inStockinNFinish 入库单历史表
* @return 结果
*/
public int updateInStockinNFinish(InStockinNFinish inStockinNFinish);
/**
* 删除入库单历史表
*
* @param stockinGuid 入库单历史表主键
* @return 结果
*/
public int deleteInStockinNFinishByStockinGuid(String stockinGuid);
/**
* 批量删除入库单历史表
*
* @param stockinGuids 需要删除的数据主键集合
* @return 结果
*/
public int deleteInStockinNFinishByStockinGuids(String[] stockinGuids);
}

View File

@@ -0,0 +1,61 @@
package com.ruoyi.system.service;
import java.util.List;
import com.ruoyi.system.domain.InStockinDetailNFinish;
/**
* 入库子表历史Service接口
*
* @author zgw
* @date 2025-12-17
*/
public interface IInStockinDetailNFinishService
{
/**
* 查询入库子表历史
*
* @param stockinDetailId 入库子表历史主键
* @return 入库子表历史
*/
public InStockinDetailNFinish selectInStockinDetailNFinishByStockinDetailId(String stockinDetailId);
/**
* 查询入库子表历史列表
*
* @param inStockinDetailNFinish 入库子表历史
* @return 入库子表历史集合
*/
public List<InStockinDetailNFinish> selectInStockinDetailNFinishList(InStockinDetailNFinish inStockinDetailNFinish);
/**
* 新增入库子表历史
*
* @param inStockinDetailNFinish 入库子表历史
* @return 结果
*/
public int insertInStockinDetailNFinish(InStockinDetailNFinish inStockinDetailNFinish);
/**
* 修改入库子表历史
*
* @param inStockinDetailNFinish 入库子表历史
* @return 结果
*/
public int updateInStockinDetailNFinish(InStockinDetailNFinish inStockinDetailNFinish);
/**
* 批量删除入库子表历史
*
* @param stockinDetailIds 需要删除的入库子表历史主键集合
* @return 结果
*/
public int deleteInStockinDetailNFinishByStockinDetailIds(String[] stockinDetailIds);
/**
* 删除入库子表历史信息
*
* @param stockinDetailId 入库子表历史主键
* @return 结果
*/
public int deleteInStockinDetailNFinishByStockinDetailId(String stockinDetailId);
}

View File

@@ -0,0 +1,61 @@
package com.ruoyi.system.service;
import java.util.List;
import com.ruoyi.system.domain.InStockinDetailN;
/**
* 入库子单Service接口
*
* @author ruoyi
* @date 2025-12-17
*/
public interface IInStockinDetailNService
{
/**
* 查询入库子单
*
* @param stockinDetailId 入库子单主键
* @return 入库子单
*/
public InStockinDetailN selectInStockinDetailNByStockinDetailId(String stockinDetailId);
/**
* 查询入库子单列表
*
* @param inStockinDetailN 入库子单
* @return 入库子单集合
*/
public List<InStockinDetailN> selectInStockinDetailNList(InStockinDetailN inStockinDetailN);
/**
* 新增入库子单
*
* @param inStockinDetailN 入库子单
* @return 结果
*/
public int insertInStockinDetailN(InStockinDetailN inStockinDetailN);
/**
* 修改入库子单
*
* @param inStockinDetailN 入库子单
* @return 结果
*/
public int updateInStockinDetailN(InStockinDetailN inStockinDetailN);
/**
* 批量删除入库子单
*
* @param stockinDetailIds 需要删除的入库子单主键集合
* @return 结果
*/
public int deleteInStockinDetailNByStockinDetailIds(String[] stockinDetailIds);
/**
* 删除入库子单信息
*
* @param stockinDetailId 入库子单主键
* @return 结果
*/
public int deleteInStockinDetailNByStockinDetailId(String stockinDetailId);
}

View File

@@ -0,0 +1,61 @@
package com.ruoyi.system.service;
import java.util.List;
import com.ruoyi.system.domain.InStockinNFinish;
/**
* 入库单历史表Service接口
*
* @author zgw
* @date 2025-12-17
*/
public interface IInStockinNFinishService
{
/**
* 查询入库单历史表
*
* @param stockinGuid 入库单历史表主键
* @return 入库单历史表
*/
public InStockinNFinish selectInStockinNFinishByStockinGuid(String stockinGuid);
/**
* 查询入库单历史表列表
*
* @param inStockinNFinish 入库单历史表
* @return 入库单历史表集合
*/
public List<InStockinNFinish> selectInStockinNFinishList(InStockinNFinish inStockinNFinish);
/**
* 新增入库单历史表
*
* @param inStockinNFinish 入库单历史表
* @return 结果
*/
public int insertInStockinNFinish(InStockinNFinish inStockinNFinish);
/**
* 修改入库单历史表
*
* @param inStockinNFinish 入库单历史表
* @return 结果
*/
public int updateInStockinNFinish(InStockinNFinish inStockinNFinish);
/**
* 批量删除入库单历史表
*
* @param stockinGuids 需要删除的入库单历史表主键集合
* @return 结果
*/
public int deleteInStockinNFinishByStockinGuids(String[] stockinGuids);
/**
* 删除入库单历史表信息
*
* @param stockinGuid 入库单历史表主键
* @return 结果
*/
public int deleteInStockinNFinishByStockinGuid(String stockinGuid);
}

View File

@@ -0,0 +1,96 @@
package com.ruoyi.system.service.impl;
import java.util.List;
import com.ruoyi.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.InStockinDetailNFinishMapper;
import com.ruoyi.system.domain.InStockinDetailNFinish;
import com.ruoyi.system.service.IInStockinDetailNFinishService;
/**
* 入库子表历史Service业务层处理
*
* @author zgw
* @date 2025-12-17
*/
@Service
public class InStockinDetailNFinishServiceImpl implements IInStockinDetailNFinishService
{
@Autowired
private InStockinDetailNFinishMapper inStockinDetailNFinishMapper;
/**
* 查询入库子表历史
*
* @param stockinDetailId 入库子表历史主键
* @return 入库子表历史
*/
@Override
public InStockinDetailNFinish selectInStockinDetailNFinishByStockinDetailId(String stockinDetailId)
{
return inStockinDetailNFinishMapper.selectInStockinDetailNFinishByStockinDetailId(stockinDetailId);
}
/**
* 查询入库子表历史列表
*
* @param inStockinDetailNFinish 入库子表历史
* @return 入库子表历史
*/
@Override
public List<InStockinDetailNFinish> selectInStockinDetailNFinishList(InStockinDetailNFinish inStockinDetailNFinish)
{
return inStockinDetailNFinishMapper.selectInStockinDetailNFinishList(inStockinDetailNFinish);
}
/**
* 新增入库子表历史
*
* @param inStockinDetailNFinish 入库子表历史
* @return 结果
*/
@Override
public int insertInStockinDetailNFinish(InStockinDetailNFinish inStockinDetailNFinish)
{
inStockinDetailNFinish.setCreateTime(DateUtils.getNowDate());
return inStockinDetailNFinishMapper.insertInStockinDetailNFinish(inStockinDetailNFinish);
}
/**
* 修改入库子表历史
*
* @param inStockinDetailNFinish 入库子表历史
* @return 结果
*/
@Override
public int updateInStockinDetailNFinish(InStockinDetailNFinish inStockinDetailNFinish)
{
inStockinDetailNFinish.setUpdateTime(DateUtils.getNowDate());
return inStockinDetailNFinishMapper.updateInStockinDetailNFinish(inStockinDetailNFinish);
}
/**
* 批量删除入库子表历史
*
* @param stockinDetailIds 需要删除的入库子表历史主键
* @return 结果
*/
@Override
public int deleteInStockinDetailNFinishByStockinDetailIds(String[] stockinDetailIds)
{
return inStockinDetailNFinishMapper.deleteInStockinDetailNFinishByStockinDetailIds(stockinDetailIds);
}
/**
* 删除入库子表历史信息
*
* @param stockinDetailId 入库子表历史主键
* @return 结果
*/
@Override
public int deleteInStockinDetailNFinishByStockinDetailId(String stockinDetailId)
{
return inStockinDetailNFinishMapper.deleteInStockinDetailNFinishByStockinDetailId(stockinDetailId);
}
}

View File

@@ -0,0 +1,96 @@
package com.ruoyi.system.service.impl;
import java.util.List;
import com.ruoyi.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.InStockinDetailNMapper;
import com.ruoyi.system.domain.InStockinDetailN;
import com.ruoyi.system.service.IInStockinDetailNService;
/**
* 入库子单Service业务层处理
*
* @author ruoyi
* @date 2025-12-17
*/
@Service
public class InStockinDetailNServiceImpl implements IInStockinDetailNService
{
@Autowired
private InStockinDetailNMapper inStockinDetailNMapper;
/**
* 查询入库子单
*
* @param stockinDetailId 入库子单主键
* @return 入库子单
*/
@Override
public InStockinDetailN selectInStockinDetailNByStockinDetailId(String stockinDetailId)
{
return inStockinDetailNMapper.selectInStockinDetailNByStockinDetailId(stockinDetailId);
}
/**
* 查询入库子单列表
*
* @param inStockinDetailN 入库子单
* @return 入库子单
*/
@Override
public List<InStockinDetailN> selectInStockinDetailNList(InStockinDetailN inStockinDetailN)
{
return inStockinDetailNMapper.selectInStockinDetailNList(inStockinDetailN);
}
/**
* 新增入库子单
*
* @param inStockinDetailN 入库子单
* @return 结果
*/
@Override
public int insertInStockinDetailN(InStockinDetailN inStockinDetailN)
{
inStockinDetailN.setCreateTime(DateUtils.getNowDate());
return inStockinDetailNMapper.insertInStockinDetailN(inStockinDetailN);
}
/**
* 修改入库子单
*
* @param inStockinDetailN 入库子单
* @return 结果
*/
@Override
public int updateInStockinDetailN(InStockinDetailN inStockinDetailN)
{
inStockinDetailN.setUpdateTime(DateUtils.getNowDate());
return inStockinDetailNMapper.updateInStockinDetailN(inStockinDetailN);
}
/**
* 批量删除入库子单
*
* @param stockinDetailIds 需要删除的入库子单主键
* @return 结果
*/
@Override
public int deleteInStockinDetailNByStockinDetailIds(String[] stockinDetailIds)
{
return inStockinDetailNMapper.deleteInStockinDetailNByStockinDetailIds(stockinDetailIds);
}
/**
* 删除入库子单信息
*
* @param stockinDetailId 入库子单主键
* @return 结果
*/
@Override
public int deleteInStockinDetailNByStockinDetailId(String stockinDetailId)
{
return inStockinDetailNMapper.deleteInStockinDetailNByStockinDetailId(stockinDetailId);
}
}

View File

@@ -0,0 +1,96 @@
package com.ruoyi.system.service.impl;
import java.util.List;
import com.ruoyi.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.InStockinNFinishMapper;
import com.ruoyi.system.domain.InStockinNFinish;
import com.ruoyi.system.service.IInStockinNFinishService;
/**
* 入库单历史表Service业务层处理
*
* @author zgw
* @date 2025-12-17
*/
@Service
public class InStockinNFinishServiceImpl implements IInStockinNFinishService
{
@Autowired
private InStockinNFinishMapper inStockinNFinishMapper;
/**
* 查询入库单历史表
*
* @param stockinGuid 入库单历史表主键
* @return 入库单历史表
*/
@Override
public InStockinNFinish selectInStockinNFinishByStockinGuid(String stockinGuid)
{
return inStockinNFinishMapper.selectInStockinNFinishByStockinGuid(stockinGuid);
}
/**
* 查询入库单历史表列表
*
* @param inStockinNFinish 入库单历史表
* @return 入库单历史表
*/
@Override
public List<InStockinNFinish> selectInStockinNFinishList(InStockinNFinish inStockinNFinish)
{
return inStockinNFinishMapper.selectInStockinNFinishList(inStockinNFinish);
}
/**
* 新增入库单历史表
*
* @param inStockinNFinish 入库单历史表
* @return 结果
*/
@Override
public int insertInStockinNFinish(InStockinNFinish inStockinNFinish)
{
inStockinNFinish.setCreateTime(DateUtils.getNowDate());
return inStockinNFinishMapper.insertInStockinNFinish(inStockinNFinish);
}
/**
* 修改入库单历史表
*
* @param inStockinNFinish 入库单历史表
* @return 结果
*/
@Override
public int updateInStockinNFinish(InStockinNFinish inStockinNFinish)
{
inStockinNFinish.setUpdateTime(DateUtils.getNowDate());
return inStockinNFinishMapper.updateInStockinNFinish(inStockinNFinish);
}
/**
* 批量删除入库单历史表
*
* @param stockinGuids 需要删除的入库单历史表主键
* @return 结果
*/
@Override
public int deleteInStockinNFinishByStockinGuids(String[] stockinGuids)
{
return inStockinNFinishMapper.deleteInStockinNFinishByStockinGuids(stockinGuids);
}
/**
* 删除入库单历史表信息
*
* @param stockinGuid 入库单历史表主键
* @return 结果
*/
@Override
public int deleteInStockinNFinishByStockinGuid(String stockinGuid)
{
return inStockinNFinishMapper.deleteInStockinNFinishByStockinGuid(stockinGuid);
}
}

View File

@@ -66,7 +66,7 @@ spring:
devtools:
restart:
# 热部署开关
enabled: true
enabled: false
data:
# redis 配置
redis:

View File

@@ -0,0 +1,228 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.system.mapper.InStockinDetailNFinishMapper">
<resultMap type="InStockinDetailNFinish" id="InStockinDetailNFinishResult">
<result property="erpDetailId" column="erp_detail_id" />
<result property="stockinGuid" column="stockin_guid" />
<result property="stockinId" column="stockin_id" />
<result property="productName" column="product_name" />
<result property="productModel" column="product_model" />
<result property="unit" column="unit" />
<result property="unitPrice" column="unit_price" />
<result property="auxUnit" column="aux_unit" />
<result property="attr1" column="attr1" />
<result property="attr2" column="attr2" />
<result property="quantity" column="quantity" />
<result property="inQuantity" column="in_quantity" />
<result property="auxQuantity" column="aux_quantity" />
<result property="totalPrice" column="total_price" />
<result property="costUnitPrice" column="cost_unit_price" />
<result property="costTotalPrice" column="cost_total_price" />
<result property="accountingCostTotal" column="accounting_cost_total" />
<result property="accountingQuantity" column="accounting_quantity" />
<result property="accountingStatus" column="accounting_status" />
<result property="batchNo" column="batch_no" />
<result property="serialNo" column="serial_no" />
<result property="productionDate" column="production_date" />
<result property="expiryDate" column="expiry_date" />
<result property="arrivalDate" column="arrival_date" />
<result property="remark" column="remark" />
<result property="custom1" column="custom1" />
<result property="custom2" column="custom2" />
<result property="custom3" column="custom3" />
<result property="custom4" column="custom4" />
<result property="custom5" column="custom5" />
<result property="custom6" column="custom6" />
<result property="stevedore" column="stevedore" />
<result property="orderSrc" column="order_src" />
<result property="createTime" column="create_time" />
<result property="updateTime" column="update_time" />
<result property="stockinDetailId" column="stockin_detail_id" />
</resultMap>
<sql id="selectInStockinDetailNFinishVo">
select erp_detail_id, stockin_guid, stockin_id, product_name, product_model, unit, unit_price, aux_unit, attr1, attr2, quantity, in_quantity, aux_quantity, total_price, cost_unit_price, cost_total_price, accounting_cost_total, accounting_quantity, accounting_status, batch_no, serial_no, production_date, expiry_date, arrival_date, remark, custom1, custom2, custom3, custom4, custom5, custom6, stevedore, order_src, create_time, update_time, stockin_detail_id from in_stockin_detail_n_finish
</sql>
<select id="selectInStockinDetailNFinishList" parameterType="InStockinDetailNFinish" resultMap="InStockinDetailNFinishResult">
<include refid="selectInStockinDetailNFinishVo"/>
<where>
<if test="erpDetailId != null "> and erp_detail_id = #{erpDetailId}</if>
<if test="stockinGuid != null and stockinGuid != ''"> and stockin_guid = #{stockinGuid}</if>
<if test="stockinId != null and stockinId != ''"> and stockin_id = #{stockinId}</if>
<if test="productName != null and productName != ''"> and product_name like concat('%', #{productName}, '%')</if>
<if test="productModel != null and productModel != ''"> and product_model = #{productModel}</if>
<if test="unit != null and unit != ''"> and unit = #{unit}</if>
<if test="unitPrice != null "> and unit_price = #{unitPrice}</if>
<if test="auxUnit != null and auxUnit != ''"> and aux_unit = #{auxUnit}</if>
<if test="attr1 != null and attr1 != ''"> and attr1 = #{attr1}</if>
<if test="attr2 != null and attr2 != ''"> and attr2 = #{attr2}</if>
<if test="quantity != null "> and quantity = #{quantity}</if>
<if test="inQuantity != null "> and in_quantity = #{inQuantity}</if>
<if test="auxQuantity != null "> and aux_quantity = #{auxQuantity}</if>
<if test="totalPrice != null "> and total_price = #{totalPrice}</if>
<if test="costUnitPrice != null "> and cost_unit_price = #{costUnitPrice}</if>
<if test="costTotalPrice != null "> and cost_total_price = #{costTotalPrice}</if>
<if test="accountingCostTotal != null "> and accounting_cost_total = #{accountingCostTotal}</if>
<if test="accountingQuantity != null "> and accounting_quantity = #{accountingQuantity}</if>
<if test="accountingStatus != null "> and accounting_status = #{accountingStatus}</if>
<if test="batchNo != null and batchNo != ''"> and batch_no = #{batchNo}</if>
<if test="serialNo != null and serialNo != ''"> and serial_no = #{serialNo}</if>
<if test="productionDate != null and productionDate != ''"> and production_date = #{productionDate}</if>
<if test="expiryDate != null and expiryDate != ''"> and expiry_date = #{expiryDate}</if>
<if test="arrivalDate != null and arrivalDate != ''"> and arrival_date = #{arrivalDate}</if>
<if test="custom1 != null and custom1 != ''"> and custom1 = #{custom1}</if>
<if test="custom2 != null and custom2 != ''"> and custom2 = #{custom2}</if>
<if test="custom3 != null and custom3 != ''"> and custom3 = #{custom3}</if>
<if test="custom4 != null and custom4 != ''"> and custom4 = #{custom4}</if>
<if test="custom5 != null and custom5 != ''"> and custom5 = #{custom5}</if>
<if test="custom6 != null and custom6 != ''"> and custom6 = #{custom6}</if>
<if test="stevedore != null and stevedore != ''"> and stevedore = #{stevedore}</if>
<if test="orderSrc != null and orderSrc != ''"> and order_src = #{orderSrc}</if>
</where>
</select>
<select id="selectInStockinDetailNFinishByStockinDetailId" parameterType="String" resultMap="InStockinDetailNFinishResult">
<include refid="selectInStockinDetailNFinishVo"/>
where stockin_detail_id = #{stockinDetailId}
</select>
<insert id="insertInStockinDetailNFinish" parameterType="InStockinDetailNFinish">
insert into in_stockin_detail_n_finish
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="erpDetailId != null">erp_detail_id,</if>
<if test="stockinGuid != null">stockin_guid,</if>
<if test="stockinId != null">stockin_id,</if>
<if test="productName != null">product_name,</if>
<if test="productModel != null">product_model,</if>
<if test="unit != null">unit,</if>
<if test="unitPrice != null">unit_price,</if>
<if test="auxUnit != null">aux_unit,</if>
<if test="attr1 != null">attr1,</if>
<if test="attr2 != null">attr2,</if>
<if test="quantity != null">quantity,</if>
<if test="inQuantity != null">in_quantity,</if>
<if test="auxQuantity != null">aux_quantity,</if>
<if test="totalPrice != null">total_price,</if>
<if test="costUnitPrice != null">cost_unit_price,</if>
<if test="costTotalPrice != null">cost_total_price,</if>
<if test="accountingCostTotal != null">accounting_cost_total,</if>
<if test="accountingQuantity != null">accounting_quantity,</if>
<if test="accountingStatus != null">accounting_status,</if>
<if test="batchNo != null">batch_no,</if>
<if test="serialNo != null">serial_no,</if>
<if test="productionDate != null">production_date,</if>
<if test="expiryDate != null">expiry_date,</if>
<if test="arrivalDate != null">arrival_date,</if>
<if test="remark != null">remark,</if>
<if test="custom1 != null">custom1,</if>
<if test="custom2 != null">custom2,</if>
<if test="custom3 != null">custom3,</if>
<if test="custom4 != null">custom4,</if>
<if test="custom5 != null">custom5,</if>
<if test="custom6 != null">custom6,</if>
<if test="stevedore != null">stevedore,</if>
<if test="orderSrc != null">order_src,</if>
<if test="createTime != null and createTime != ''">create_time,</if>
<if test="updateTime != null">update_time,</if>
<if test="stockinDetailId != null">stockin_detail_id,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="erpDetailId != null">#{erpDetailId},</if>
<if test="stockinGuid != null">#{stockinGuid},</if>
<if test="stockinId != null">#{stockinId},</if>
<if test="productName != null">#{productName},</if>
<if test="productModel != null">#{productModel},</if>
<if test="unit != null">#{unit},</if>
<if test="unitPrice != null">#{unitPrice},</if>
<if test="auxUnit != null">#{auxUnit},</if>
<if test="attr1 != null">#{attr1},</if>
<if test="attr2 != null">#{attr2},</if>
<if test="quantity != null">#{quantity},</if>
<if test="inQuantity != null">#{inQuantity},</if>
<if test="auxQuantity != null">#{auxQuantity},</if>
<if test="totalPrice != null">#{totalPrice},</if>
<if test="costUnitPrice != null">#{costUnitPrice},</if>
<if test="costTotalPrice != null">#{costTotalPrice},</if>
<if test="accountingCostTotal != null">#{accountingCostTotal},</if>
<if test="accountingQuantity != null">#{accountingQuantity},</if>
<if test="accountingStatus != null">#{accountingStatus},</if>
<if test="batchNo != null">#{batchNo},</if>
<if test="serialNo != null">#{serialNo},</if>
<if test="productionDate != null">#{productionDate},</if>
<if test="expiryDate != null">#{expiryDate},</if>
<if test="arrivalDate != null">#{arrivalDate},</if>
<if test="remark != null">#{remark},</if>
<if test="custom1 != null">#{custom1},</if>
<if test="custom2 != null">#{custom2},</if>
<if test="custom3 != null">#{custom3},</if>
<if test="custom4 != null">#{custom4},</if>
<if test="custom5 != null">#{custom5},</if>
<if test="custom6 != null">#{custom6},</if>
<if test="stevedore != null">#{stevedore},</if>
<if test="orderSrc != null">#{orderSrc},</if>
<if test="createTime != null and createTime != ''">#{createTime},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="stockinDetailId != null">#{stockinDetailId},</if>
</trim>
</insert>
<insert id="insertByStockInId" parameterType="string">
insert into in_stockin_detail_n_finish select * from in_stockin_detail_n where stockin_id=#{stockinId}
</insert>
<update id="updateInStockinDetailNFinish" parameterType="InStockinDetailNFinish">
update in_stockin_detail_n_finish
<trim prefix="SET" suffixOverrides=",">
<if test="erpDetailId != null">erp_detail_id = #{erpDetailId},</if>
<if test="stockinGuid != null">stockin_guid = #{stockinGuid},</if>
<if test="stockinId != null">stockin_id = #{stockinId},</if>
<if test="productName != null">product_name = #{productName},</if>
<if test="productModel != null">product_model = #{productModel},</if>
<if test="unit != null">unit = #{unit},</if>
<if test="unitPrice != null">unit_price = #{unitPrice},</if>
<if test="auxUnit != null">aux_unit = #{auxUnit},</if>
<if test="attr1 != null">attr1 = #{attr1},</if>
<if test="attr2 != null">attr2 = #{attr2},</if>
<if test="quantity != null">quantity = #{quantity},</if>
<if test="inQuantity != null">in_quantity = #{inQuantity},</if>
<if test="auxQuantity != null">aux_quantity = #{auxQuantity},</if>
<if test="totalPrice != null">total_price = #{totalPrice},</if>
<if test="costUnitPrice != null">cost_unit_price = #{costUnitPrice},</if>
<if test="costTotalPrice != null">cost_total_price = #{costTotalPrice},</if>
<if test="accountingCostTotal != null">accounting_cost_total = #{accountingCostTotal},</if>
<if test="accountingQuantity != null">accounting_quantity = #{accountingQuantity},</if>
<if test="accountingStatus != null">accounting_status = #{accountingStatus},</if>
<if test="batchNo != null">batch_no = #{batchNo},</if>
<if test="serialNo != null">serial_no = #{serialNo},</if>
<if test="productionDate != null">production_date = #{productionDate},</if>
<if test="expiryDate != null">expiry_date = #{expiryDate},</if>
<if test="arrivalDate != null">arrival_date = #{arrivalDate},</if>
<if test="remark != null">remark = #{remark},</if>
<if test="custom1 != null">custom1 = #{custom1},</if>
<if test="custom2 != null">custom2 = #{custom2},</if>
<if test="custom3 != null">custom3 = #{custom3},</if>
<if test="custom4 != null">custom4 = #{custom4},</if>
<if test="custom5 != null">custom5 = #{custom5},</if>
<if test="custom6 != null">custom6 = #{custom6},</if>
<if test="stevedore != null">stevedore = #{stevedore},</if>
<if test="orderSrc != null">order_src = #{orderSrc},</if>
<if test="createTime != null and createTime != ''">create_time = #{createTime},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
</trim>
where stockin_detail_id = #{stockinDetailId}
</update>
<delete id="deleteInStockinDetailNFinishByStockinDetailId" parameterType="String">
delete from in_stockin_detail_n_finish where stockin_detail_id = #{stockinDetailId}
</delete>
<delete id="deleteInStockinDetailNFinishByStockinDetailIds" parameterType="String">
delete from in_stockin_detail_n_finish where stockin_detail_id in
<foreach item="stockinDetailId" collection="array" open="(" separator="," close=")">
#{stockinDetailId}
</foreach>
</delete>
</mapper>

View File

@@ -0,0 +1,236 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.system.mapper.InStockinDetailNMapper">
<resultMap type="InStockinDetailN" id="InStockinDetailNResult">
<result property="erpDetailId" column="erp_detail_id" />
<result property="stockinGuid" column="stockin_guid" />
<result property="stockinId" column="stockin_id" />
<result property="productName" column="product_name" />
<result property="productModel" column="product_model" />
<result property="unit" column="unit" />
<result property="unitPrice" column="unit_price" />
<result property="auxUnit" column="aux_unit" />
<result property="attr1" column="attr1" />
<result property="attr2" column="attr2" />
<result property="quantity" column="quantity" />
<result property="inQuantity" column="in_quantity" />
<result property="auxQuantity" column="aux_quantity" />
<result property="totalPrice" column="total_price" />
<result property="costUnitPrice" column="cost_unit_price" />
<result property="costTotalPrice" column="cost_total_price" />
<result property="accountingCostTotal" column="accounting_cost_total" />
<result property="accountingQuantity" column="accounting_quantity" />
<result property="accountingStatus" column="accounting_status" />
<result property="batchNo" column="batch_no" />
<result property="serialNo" column="serial_no" />
<result property="productionDate" column="production_date" />
<result property="expiryDate" column="expiry_date" />
<result property="arrivalDate" column="arrival_date" />
<result property="remark" column="remark" />
<result property="custom1" column="custom1" />
<result property="custom2" column="custom2" />
<result property="custom3" column="custom3" />
<result property="custom4" column="custom4" />
<result property="custom5" column="custom5" />
<result property="custom6" column="custom6" />
<result property="stevedore" column="stevedore" />
<result property="orderSrc" column="order_src" />
<result property="createTime" column="create_time" />
<result property="updateTime" column="update_time" />
<result property="stockinDetailId" column="stockin_detail_id" />
<result property="smNum" column="sm_num" />
<result property="finishNum" column="finish_num" />
</resultMap>
<sql id="selectInStockinDetailNVo">
select erp_detail_id, stockin_guid, stockin_id, product_name, product_model, unit, unit_price, aux_unit, attr1, attr2, quantity, in_quantity, aux_quantity, total_price, cost_unit_price, cost_total_price, accounting_cost_total, accounting_quantity, accounting_status, batch_no, serial_no, production_date, expiry_date, arrival_date, remark, custom1, custom2, custom3, custom4, custom5, custom6, sm_num, finish_num, stevedore, order_src, create_time, update_time, stockin_detail_id from in_stockin_detail_n
</sql>
<select id="selectInStockinDetailNList" parameterType="InStockinDetailN" resultMap="InStockinDetailNResult">
<include refid="selectInStockinDetailNVo"/>
<where>
<if test="erpDetailId != null "> and erp_detail_id = #{erpDetailId}</if>
<if test="stockinGuid != null and stockinGuid != ''"> and stockin_guid = #{stockinGuid}</if>
<if test="stockinId != null and stockinId != ''"> and stockin_id = #{stockinId}</if>
<if test="productName != null and productName != ''"> and product_name like concat('%', #{productName}, '%')</if>
<if test="productModel != null and productModel != ''"> and product_model = #{productModel}</if>
<if test="unit != null and unit != ''"> and unit = #{unit}</if>
<if test="unitPrice != null "> and unit_price = #{unitPrice}</if>
<if test="auxUnit != null and auxUnit != ''"> and aux_unit = #{auxUnit}</if>
<if test="attr1 != null and attr1 != ''"> and attr1 = #{attr1}</if>
<if test="attr2 != null and attr2 != ''"> and attr2 = #{attr2}</if>
<if test="quantity != null "> and quantity = #{quantity}</if>
<if test="inQuantity != null "> and in_quantity = #{inQuantity}</if>
<if test="auxQuantity != null "> and aux_quantity = #{auxQuantity}</if>
<if test="totalPrice != null "> and total_price = #{totalPrice}</if>
<if test="costUnitPrice != null "> and cost_unit_price = #{costUnitPrice}</if>
<if test="costTotalPrice != null "> and cost_total_price = #{costTotalPrice}</if>
<if test="accountingCostTotal != null "> and accounting_cost_total = #{accountingCostTotal}</if>
<if test="accountingQuantity != null "> and accounting_quantity = #{accountingQuantity}</if>
<if test="accountingStatus != null "> and accounting_status = #{accountingStatus}</if>
<if test="batchNo != null and batchNo != ''"> and batch_no = #{batchNo}</if>
<if test="serialNo != null and serialNo != ''"> and serial_no = #{serialNo}</if>
<if test="productionDate != null and productionDate != ''"> and production_date = #{productionDate}</if>
<if test="expiryDate != null and expiryDate != ''"> and expiry_date = #{expiryDate}</if>
<if test="arrivalDate != null and arrivalDate != ''"> and arrival_date = #{arrivalDate}</if>
<if test="custom1 != null and custom1 != ''"> and custom1 = #{custom1}</if>
<if test="custom2 != null and custom2 != ''"> and custom2 = #{custom2}</if>
<if test="custom3 != null and custom3 != ''"> and custom3 = #{custom3}</if>
<if test="custom4 != null and custom4 != ''"> and custom4 = #{custom4}</if>
<if test="custom5 != null and custom5 != ''"> and custom5 = #{custom5}</if>
<if test="custom6 != null and custom6 != ''"> and custom6 = #{custom6}</if>
<if test="smNum != null "> and sm_num = #{smNum}</if>
<if test="finishNum != null "> and finish_num = #{finishNum}</if>
<if test="stevedore != null and stevedore != ''"> and stevedore = #{stevedore}</if>
<if test="orderSrc != null and orderSrc != ''"> and order_src = #{orderSrc}</if>
</where>
</select>
<select id="selectInStockinDetailNByStockinDetailId" parameterType="String" resultMap="InStockinDetailNResult">
<include refid="selectInStockinDetailNVo"/>
where stockin_detail_id = #{stockinDetailId}
</select>
<insert id="insertInStockinDetailN" parameterType="InStockinDetailN">
insert into in_stockin_detail_n
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="erpDetailId != null">erp_detail_id,</if>
<if test="stockinGuid != null">stockin_guid,</if>
<if test="stockinId != null">stockin_id,</if>
<if test="productName != null">product_name,</if>
<if test="productModel != null">product_model,</if>
<if test="unit != null">unit,</if>
<if test="unitPrice != null">unit_price,</if>
<if test="auxUnit != null">aux_unit,</if>
<if test="attr1 != null">attr1,</if>
<if test="attr2 != null">attr2,</if>
<if test="quantity != null">quantity,</if>
<if test="inQuantity != null">in_quantity,</if>
<if test="auxQuantity != null">aux_quantity,</if>
<if test="totalPrice != null">total_price,</if>
<if test="costUnitPrice != null">cost_unit_price,</if>
<if test="costTotalPrice != null">cost_total_price,</if>
<if test="accountingCostTotal != null">accounting_cost_total,</if>
<if test="accountingQuantity != null">accounting_quantity,</if>
<if test="accountingStatus != null">accounting_status,</if>
<if test="batchNo != null">batch_no,</if>
<if test="serialNo != null">serial_no,</if>
<if test="productionDate != null">production_date,</if>
<if test="expiryDate != null">expiry_date,</if>
<if test="arrivalDate != null">arrival_date,</if>
<if test="remark != null">remark,</if>
<if test="custom1 != null">custom1,</if>
<if test="custom2 != null">custom2,</if>
<if test="custom3 != null">custom3,</if>
<if test="custom4 != null">custom4,</if>
<if test="custom5 != null">custom5,</if>
<if test="custom6 != null">custom6,</if>
<if test="stevedore != null">stevedore,</if>
<if test="orderSrc != null">order_src,</if>
<if test="createTime != null">create_time,</if>
<if test="updateTime != null">update_time,</if>
<if test="stockinDetailId != null">stockin_detail_id,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="erpDetailId != null">#{erpDetailId},</if>
<if test="stockinGuid != null">#{stockinGuid},</if>
<if test="stockinId != null">#{stockinId},</if>
<if test="productName != null">#{productName},</if>
<if test="productModel != null">#{productModel},</if>
<if test="unit != null">#{unit},</if>
<if test="unitPrice != null">#{unitPrice},</if>
<if test="auxUnit != null">#{auxUnit},</if>
<if test="attr1 != null">#{attr1},</if>
<if test="attr2 != null">#{attr2},</if>
<if test="quantity != null">#{quantity},</if>
<if test="inQuantity != null">#{inQuantity},</if>
<if test="auxQuantity != null">#{auxQuantity},</if>
<if test="totalPrice != null">#{totalPrice},</if>
<if test="costUnitPrice != null">#{costUnitPrice},</if>
<if test="costTotalPrice != null">#{costTotalPrice},</if>
<if test="accountingCostTotal != null">#{accountingCostTotal},</if>
<if test="accountingQuantity != null">#{accountingQuantity},</if>
<if test="accountingStatus != null">#{accountingStatus},</if>
<if test="batchNo != null">#{batchNo},</if>
<if test="serialNo != null">#{serialNo},</if>
<if test="productionDate != null">#{productionDate},</if>
<if test="expiryDate != null">#{expiryDate},</if>
<if test="arrivalDate != null">#{arrivalDate},</if>
<if test="remark != null">#{remark},</if>
<if test="custom1 != null">#{custom1},</if>
<if test="custom2 != null">#{custom2},</if>
<if test="custom3 != null">#{custom3},</if>
<if test="custom4 != null">#{custom4},</if>
<if test="custom5 != null">#{custom5},</if>
<if test="custom6 != null">#{custom6},</if>
<if test="smNum != null">#{smNum},</if>
<if test="finishNum != null">#{finishNum},</if>
<if test="stevedore != null">#{stevedore},</if>
<if test="orderSrc != null">#{orderSrc},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="stockinDetailId != null">#{stockinDetailId},</if>
</trim>
</insert>
<update id="updateInStockinDetailN" parameterType="InStockinDetailN">
update in_stockin_detail_n
<trim prefix="SET" suffixOverrides=",">
<if test="erpDetailId != null">erp_detail_id = #{erpDetailId},</if>
<if test="stockinGuid != null">stockin_guid = #{stockinGuid},</if>
<if test="stockinId != null">stockin_id = #{stockinId},</if>
<if test="productName != null">product_name = #{productName},</if>
<if test="productModel != null">product_model = #{productModel},</if>
<if test="unit != null">unit = #{unit},</if>
<if test="unitPrice != null">unit_price = #{unitPrice},</if>
<if test="auxUnit != null">aux_unit = #{auxUnit},</if>
<if test="attr1 != null">attr1 = #{attr1},</if>
<if test="attr2 != null">attr2 = #{attr2},</if>
<if test="quantity != null">quantity = #{quantity},</if>
<if test="inQuantity != null">in_quantity = #{inQuantity},</if>
<if test="auxQuantity != null">aux_quantity = #{auxQuantity},</if>
<if test="totalPrice != null">total_price = #{totalPrice},</if>
<if test="costUnitPrice != null">cost_unit_price = #{costUnitPrice},</if>
<if test="costTotalPrice != null">cost_total_price = #{costTotalPrice},</if>
<if test="accountingCostTotal != null">accounting_cost_total = #{accountingCostTotal},</if>
<if test="accountingQuantity != null">accounting_quantity = #{accountingQuantity},</if>
<if test="accountingStatus != null">accounting_status = #{accountingStatus},</if>
<if test="batchNo != null">batch_no = #{batchNo},</if>
<if test="serialNo != null">serial_no = #{serialNo},</if>
<if test="productionDate != null">production_date = #{productionDate},</if>
<if test="expiryDate != null">expiry_date = #{expiryDate},</if>
<if test="arrivalDate != null">arrival_date = #{arrivalDate},</if>
<if test="remark != null">remark = #{remark},</if>
<if test="custom1 != null">custom1 = #{custom1},</if>
<if test="custom2 != null">custom2 = #{custom2},</if>
<if test="custom3 != null">custom3 = #{custom3},</if>
<if test="custom4 != null">custom4 = #{custom4},</if>
<if test="custom5 != null">custom5 = #{custom5},</if>
<if test="custom6 != null">custom6 = #{custom6},</if>
<if test="smNum != null">sm_num = #{smNum},</if>
<if test="finishNum != null">finish_num = #{finishNum},</if>
<if test="stevedore != null">stevedore = #{stevedore},</if>
<if test="orderSrc != null">order_src = #{orderSrc},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
</trim>
where stockin_detail_id = #{stockinDetailId}
</update>
<delete id="deleteInStockinDetailNByStockinDetailId" parameterType="String">
delete from in_stockin_detail_n where stockin_detail_id = #{stockinDetailId}
</delete>
<delete id="deleteInStockinDetailNByStockinDetailIds" parameterType="String">
delete from in_stockin_detail_n where stockin_detail_id in
<foreach item="stockinDetailId" collection="array" open="(" separator="," close=")">
#{stockinDetailId}
</foreach>
</delete>
<delete id="deleteByStockInId" parameterType="String">
delete from in_stockin_detail_n where stockin_id = #{stockinId}
</delete>
</mapper>

View File

@@ -0,0 +1,188 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.system.mapper.InStockinNFinishMapper">
<resultMap type="InStockinNFinish" id="InStockinNFinishResult">
<result property="stockinId" column="stockin_id" />
<result property="subject" column="subject" />
<result property="erpStockinId" column="erp_stockin_id" />
<result property="status" column="status" />
<result property="applicant" column="applicant" />
<result property="applyDate" column="apply_date" />
<result property="confirmDate" column="confirm_date" />
<result property="approver" column="approver" />
<result property="approvalComment" column="approval_comment" />
<result property="remark" column="remark" />
<result property="relatedDocId" column="related_doc_id" />
<result property="createdAt" column="created_at" />
<result property="keeperId" column="keeper_id" />
<result property="category" column="category" />
<result property="entryCode" column="entry_code" />
<result property="approvalStatus" column="approval_status" />
<result property="productDetails" column="product_details" />
<result property="customerName" column="customer_name" />
<result property="weighbillNo" column="weighbill_no" />
<result property="vehicleNo" column="vehicle_no" />
<result property="erpStatus" column="erp_status" />
<result property="orderSrc" column="order_src" />
<result property="createTime" column="create_time" />
<result property="updateTime" column="update_time" />
<result property="orderNum" column="order_num" />
<result property="finishNum" column="finish_num" />
<result property="stockinGuid" column="stockin_guid" />
<result property="deleteTime" column="delete_time" />
</resultMap>
<sql id="selectInStockinNFinishVo">
select stockin_id, subject, erp_stockin_id, status, applicant, apply_date, confirm_date, approver, approval_comment, remark, related_doc_id, created_at, keeper_id, category, entry_code, approval_status, product_details, customer_name, weighbill_no, vehicle_no, erp_status, order_src, create_time, update_time, order_num, finish_num, stockin_guid, delete_time from in_stockin_n_finish
</sql>
<select id="selectInStockinNFinishList" parameterType="InStockinNFinish" resultMap="InStockinNFinishResult">
<include refid="selectInStockinNFinishVo"/>
<where>
<if test="stockinId != null and stockinId != ''"> and stockin_id = #{stockinId}</if>
<if test="subject != null and subject != ''"> and subject = #{subject}</if>
<if test="erpStockinId != null and erpStockinId != ''"> and erp_stockin_id = #{erpStockinId}</if>
<if test="status != null "> and status = #{status}</if>
<if test="applicant != null and applicant != ''"> and applicant = #{applicant}</if>
<if test="applyDate != null and applyDate != ''"> and apply_date = #{applyDate}</if>
<if test="confirmDate != null and confirmDate != ''"> and confirm_date = #{confirmDate}</if>
<if test="approver != null and approver != ''"> and approver = #{approver}</if>
<if test="approvalComment != null and approvalComment != ''"> and approval_comment = #{approvalComment}</if>
<if test="relatedDocId != null and relatedDocId != ''"> and related_doc_id = #{relatedDocId}</if>
<if test="createdAt != null and createdAt != ''"> and created_at = #{createdAt}</if>
<if test="keeperId != null "> and keeper_id = #{keeperId}</if>
<if test="category != null and category != ''"> and category = #{category}</if>
<if test="entryCode != null and entryCode != ''"> and entry_code = #{entryCode}</if>
<if test="approvalStatus != null "> and approval_status = #{approvalStatus}</if>
<if test="productDetails != null and productDetails != ''"> and product_details = #{productDetails}</if>
<if test="customerName != null and customerName != ''"> and customer_name like concat('%', #{customerName}, '%')</if>
<if test="weighbillNo != null and weighbillNo != ''"> and weighbill_no = #{weighbillNo}</if>
<if test="vehicleNo != null and vehicleNo != ''"> and vehicle_no = #{vehicleNo}</if>
<if test="erpStatus != null and erpStatus != ''"> and erp_status = #{erpStatus}</if>
<if test="orderSrc != null and orderSrc != ''"> and order_src = #{orderSrc}</if>
<if test="orderNum != null "> and order_num = #{orderNum}</if>
<if test="finishNum != null "> and finish_num = #{finishNum}</if>
<if test="deleteTime != null and deleteTime != ''"> and delete_time = #{deleteTime}</if>
</where>
</select>
<select id="selectInStockinNFinishByStockinGuid" parameterType="String" resultMap="InStockinNFinishResult">
<include refid="selectInStockinNFinishVo"/>
where stockin_guid = #{stockinGuid}
</select>
<insert id="insertInStockinNFinish" parameterType="InStockinNFinish">
insert into in_stockin_n_finish
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="stockinId != null and stockinId != ''">stockin_id,</if>
<if test="subject != null">subject,</if>
<if test="erpStockinId != null">erp_stockin_id,</if>
<if test="status != null">status,</if>
<if test="applicant != null">applicant,</if>
<if test="applyDate != null">apply_date,</if>
<if test="confirmDate != null">confirm_date,</if>
<if test="approver != null">approver,</if>
<if test="approvalComment != null">approval_comment,</if>
<if test="remark != null">remark,</if>
<if test="relatedDocId != null">related_doc_id,</if>
<if test="createdAt != null and createdAt != ''">created_at,</if>
<if test="keeperId != null">keeper_id,</if>
<if test="category != null">category,</if>
<if test="entryCode != null">entry_code,</if>
<if test="approvalStatus != null">approval_status,</if>
<if test="productDetails != null">product_details,</if>
<if test="customerName != null">customer_name,</if>
<if test="weighbillNo != null">weighbill_no,</if>
<if test="vehicleNo != null">vehicle_no,</if>
<if test="erpStatus != null">erp_status,</if>
<if test="orderSrc != null">order_src,</if>
<if test="createTime != null">create_time,</if>
<if test="updateTime != null">update_time,</if>
<if test="orderNum != null">order_num,</if>
<if test="finishNum != null">finish_num,</if>
<if test="stockinGuid != null">stockin_guid,</if>
<if test="deleteTime != null">delete_time,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="stockinId != null and stockinId != ''">#{stockinId},</if>
<if test="subject != null">#{subject},</if>
<if test="erpStockinId != null">#{erpStockinId},</if>
<if test="status != null">#{status},</if>
<if test="applicant != null">#{applicant},</if>
<if test="applyDate != null">#{applyDate},</if>
<if test="confirmDate != null">#{confirmDate},</if>
<if test="approver != null">#{approver},</if>
<if test="approvalComment != null">#{approvalComment},</if>
<if test="remark != null">#{remark},</if>
<if test="relatedDocId != null">#{relatedDocId},</if>
<if test="createdAt != null and createdAt != ''">#{createdAt},</if>
<if test="keeperId != null">#{keeperId},</if>
<if test="category != null">#{category},</if>
<if test="entryCode != null">#{entryCode},</if>
<if test="approvalStatus != null">#{approvalStatus},</if>
<if test="productDetails != null">#{productDetails},</if>
<if test="customerName != null">#{customerName},</if>
<if test="weighbillNo != null">#{weighbillNo},</if>
<if test="vehicleNo != null">#{vehicleNo},</if>
<if test="erpStatus != null">#{erpStatus},</if>
<if test="orderSrc != null">#{orderSrc},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="orderNum != null">#{orderNum},</if>
<if test="finishNum != null">#{finishNum},</if>
<if test="stockinGuid != null">#{stockinGuid},</if>
<if test="deleteTime != null">#{deleteTime},</if>
</trim>
</insert>
<insert id="insertByStockInId" parameterType="string">
insert into in_stockin_detail_n_finish select * from in_stockin_detail_n where stockin_id=#{stockinId}
</insert>
<update id="updateInStockinNFinish" parameterType="InStockinNFinish">
update in_stockin_n_finish
<trim prefix="SET" suffixOverrides=",">
<if test="stockinId != null and stockinId != ''">stockin_id = #{stockinId},</if>
<if test="subject != null">subject = #{subject},</if>
<if test="erpStockinId != null">erp_stockin_id = #{erpStockinId},</if>
<if test="status != null">status = #{status},</if>
<if test="applicant != null">applicant = #{applicant},</if>
<if test="applyDate != null">apply_date = #{applyDate},</if>
<if test="confirmDate != null">confirm_date = #{confirmDate},</if>
<if test="approver != null">approver = #{approver},</if>
<if test="approvalComment != null">approval_comment = #{approvalComment},</if>
<if test="remark != null">remark = #{remark},</if>
<if test="relatedDocId != null">related_doc_id = #{relatedDocId},</if>
<if test="createdAt != null and createdAt != ''">created_at = #{createdAt},</if>
<if test="keeperId != null">keeper_id = #{keeperId},</if>
<if test="category != null">category = #{category},</if>
<if test="entryCode != null">entry_code = #{entryCode},</if>
<if test="approvalStatus != null">approval_status = #{approvalStatus},</if>
<if test="productDetails != null">product_details = #{productDetails},</if>
<if test="customerName != null">customer_name = #{customerName},</if>
<if test="weighbillNo != null">weighbill_no = #{weighbillNo},</if>
<if test="vehicleNo != null">vehicle_no = #{vehicleNo},</if>
<if test="erpStatus != null">erp_status = #{erpStatus},</if>
<if test="orderSrc != null">order_src = #{orderSrc},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="orderNum != null">order_num = #{orderNum},</if>
<if test="finishNum != null">finish_num = #{finishNum},</if>
<if test="deleteTime != null">delete_time = #{deleteTime},</if>
</trim>
where stockin_guid = #{stockinGuid}
</update>
<delete id="deleteInStockinNFinishByStockinGuid" parameterType="String">
delete from in_stockin_n_finish where stockin_guid = #{stockinGuid}
</delete>
<delete id="deleteInStockinNFinishByStockinGuids" parameterType="String">
delete from in_stockin_n_finish where stockin_guid in
<foreach item="stockinGuid" collection="array" open="(" separator="," close=")">
#{stockinGuid}
</foreach>
</delete>
</mapper>

View File

@@ -0,0 +1,40 @@
-- SQL Server 建表:in_stockin_detail_n
CREATE TABLE dbo.in_stockin_detail_n (
stockin_detail_id NVARCHAR(64) NOT NULL,
erp_detail_id BIGINT NULL,
stockin_guid NVARCHAR(64) NULL,
stockin_id NVARCHAR(64) NULL,
product_name NVARCHAR(200) NULL,
product_model NVARCHAR(200) NULL,
unit NVARCHAR(50) NULL,
unit_price DECIMAL(18,6) NULL,
aux_unit NVARCHAR(50) NULL,
attr1 NVARCHAR(100) NULL,
attr2 NVARCHAR(100) NULL,
quantity DECIMAL(18,6) NULL,
in_quantity DECIMAL(18,6) NULL,
aux_quantity DECIMAL(18,6) NULL,
total_price DECIMAL(18,6) NULL,
cost_unit_price DECIMAL(18,6) NULL,
cost_total_price DECIMAL(18,6) NULL,
accounting_cost_total DECIMAL(18,6) NULL,
accounting_quantity DECIMAL(18,6) NULL,
accounting_status INT NULL,
batch_no NVARCHAR(100) NULL,
serial_no NVARCHAR(100) NULL,
production_date DATETIME2(3) NULL,
expiry_date DATETIME2(3) NULL,
arrival_date DATETIME2(3) NULL,
remark NVARCHAR(255) NULL,
custom1 NVARCHAR(255) NULL,
custom2 NVARCHAR(255) NULL,
custom3 NVARCHAR(255) NULL,
custom4 NVARCHAR(255) NULL,
custom5 NVARCHAR(255) NULL,
custom6 NVARCHAR(255) NULL,
stevedore NVARCHAR(100) NULL,
order_src NVARCHAR(50) NULL,
create_time DATETIME2(3) NOT NULL DEFAULT SYSDATETIME(),
update_time DATETIME2(3) NULL,
CONSTRAINT PK_in_stockin_detail_n PRIMARY KEY (stockin_detail_id)
);

View File

@@ -0,0 +1,31 @@
package com.ruoyi.common.enums;
/**
* 入库单据完成状态
*
* @author ruoyi
*/
public enum StockInCompleteStatus
{
UNEXECUTED(1, "未执行"),
EXECUTED(3, "已执行"); // Based on previous JSON example where Complete1 was 3, adding it proactively or just stick to what user asked. User asked for 1.
private final Integer code;
private final String info;
StockInCompleteStatus(Integer code, String info)
{
this.code = code;
this.info = info;
}
public Integer getCode()
{
return code;
}
public String getInfo()
{
return info;
}
}

View File

@@ -3,7 +3,7 @@ import request from '@/utils/request'
// 查询入库单据列表
export function listStockIn(query) {
return request({
url: '/in/stockIn/list',
url: '/in/stockIn/listAll',
method: 'get',
params: query
})

View File

@@ -0,0 +1,41 @@
// 说明:入库子单(N版)相关接口封装
// 理由:后端已提供 /system/inStockinDetailN/list 与 /{stockinDetailId},
// 前端统一通过模块化方式调用,便于维护与复用
import request from '@/utils/request'
/**
* 查询入库子单(N版)列表
* @param {Object} query 查询参数
* @param {number} query.pageNum 页码
* @param {number} query.pageSize 每页条数
* @param {string} [query.stockinId] 主单号(通过主单过滤子单)
* 设计说明:后端 Mapper.xml 支持按 stockinId 过滤,故通过 params 传递即可
*/
export function listInStockinDetailN(query) {
return request({
url: '/system/inStockinDetailN/list',
method: 'get',
params: query
})
}
export function listInStockinDetailNFinish(query) {
return request({
url: '/system/stockindetailNfinish/list',
method: 'get',
params: query
})
}
/**
* 查询入库子单(N版)详情
* @param {string|number} stockinDetailId 子单主键ID
* 设计说明:后端提供 REST 风格详情接口,便于前端查看单条明细
*/
export function getInStockinDetailN(stockinDetailId) {
return request({
url: '/system/inStockinDetailN/' + stockinDetailId,
method: 'get'
})
}

View File

@@ -13,7 +13,7 @@
</el-col>
<el-col :span="4">
<el-form-item label="单据类型" prop="inType"><!--单据类型-->
<el-select v-model="form.inType" placeholder="请选择单据类型" >
<el-select v-model="form.inType" placeholder="请选择单据类型">
<el-option
v-for="dict in dict.type.in_bill_type"
:key="dict.value"
@@ -40,20 +40,22 @@
<span>入库物料</span>
<el-row>
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-download" size="mini" @click="handleAddProduct" v-hasPermi="['receive:stockin:add']">
添加物料</el-button>
<el-button type="primary" plain icon="el-icon-download" size="mini" @click="handleAddProduct"
v-hasPermi="['receive:stockin:add']">
添加物料
</el-button>
</el-col>
<!-- <el-col :span="1.5">
<el-button type="success" plain icon="el-icon-download" size="mini" @click="handleImport" v-hasPermi="['receive:stockin:import']">
导入物料</el-button>
</el-col>-->
<!-- <el-col :span="1.5">
<el-button type="success" plain icon="el-icon-download" size="mini" @click="handleImport" v-hasPermi="['receive:stockin:import']">
导入物料</el-button>
</el-col>-->
</el-row>
</div>
<el-table :data="productList" border style="width: 100%">
<el-table-column type="index" label="序号" align="center"/>
<el-table-column fixed label="物料编码" align="left" prop="productId" />
<el-table-column fixed label="物料名称" align="left" prop="productName" />
<el-table-column fixed label="物料编码" align="left" prop="productId"/>
<el-table-column fixed label="物料名称" align="left" prop="productName"/>
<el-table-column label="供应商" align="left" prop="supplierId">
<template slot-scope="scope">
<el-input
@@ -64,9 +66,9 @@
/>
</template>
</el-table-column>
<el-table-column label="规格型号" align="left" prop="spec" />
<el-table-column label="生产图号" align="left" prop="cargoNo" />
<el-table-column label="单位" align="left" prop="unit" />
<el-table-column label="规格型号" align="left" prop="spec"/>
<el-table-column label="生产图号" align="left" prop="cargoNo"/>
<el-table-column label="单位" align="left" prop="unit"/>
<!-- <el-table-column label="单价" align="left" prop="price" /> -->
<!-- <el-table-column label="来源" align="left" prop="spare1" >
<template slot-scope="scope">
@@ -74,7 +76,7 @@
<el-option
v-for="dict in dict.type.origin_type"
:key="dict.value"
:label="dict.label"
:label="dict.label"
:value="dict.value"
/>
</el-select>
@@ -136,31 +138,31 @@
<el-input v-model="scope.row.lotNo" placeholder="请输入批次"></el-input>
</template>
</el-table-column> -->
<el-table-column label="单价" align="left" prop="price" >
<el-table-column label="单价" align="left" prop="price">
<template slot-scope="scope">
<el-input v-model="scope.row.price" placeholder="请输入单价"></el-input>
</template>
</el-table-column>
<el-table-column label="管理号" align="left" prop="spare9" >
<el-table-column label="管理号" align="left" prop="spare9">
<template slot-scope="scope">
<el-input v-model="scope.row.spare9" placeholder="请输入管理号"></el-input>
</template>
</el-table-column>
<el-table-column label="数量" align="left" prop="quantity" >
<el-table-column label="数量" align="left" prop="quantity">
<template slot-scope="scope">
<el-input v-model="scope.row.quantity" placeholder="请输入数量"></el-input>
</template>
</el-table-column>
<el-table-column label="质量" align="left" prop="spare8">
<template slot-scope="scope">
<el-select v-model="scope.row.spare8" placeholder="请选择质量" >
<el-option
v-for="dict in dict.type.quality_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
<el-select v-model="scope.row.spare8" placeholder="请选择质量">
<el-option
v-for="dict in dict.type.quality_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</template>
</el-table-column>
<el-table-column label="操作" width="100" align="center">
@@ -170,7 +172,8 @@
type="text"
icon="el-icon-delete"
@click="handleDeleteProduct(scope.$index)"
>删除</el-button>
>删除
</el-button>
</template>
</el-table-column>
</el-table>
@@ -185,7 +188,7 @@
<el-dialog title="选择物料" :visible.sync="productSelectVisible" width="1300px" append-to-body>
<el-form ref="productForm" :model="queryProductParams" size="small">
<el-row>
<el-col :span="6" >
<el-col :span="6">
<el-form-item label="物料名称" prop="productName" label-width="90px">
<el-input
v-model="queryProductParams.productName"
@@ -207,7 +210,7 @@
</el-form-item>
</el-col>
<el-col :span="6" >
<el-col :span="6">
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="getProductList">{{ '搜索' }}
<!--搜索--></el-button>
@@ -225,19 +228,19 @@
<el-table :data="productOptions" border @selection-change="handleProductSelectionChange">
<el-table-column type="selection" width="55"/>
<!-- <el-table-column label="主键" align="center" prop="productGuid" />-->
<el-table-column label="物料编码" align="center" prop="productId" />
<el-table-column label="物料名称" align="center" prop="productName" />
<el-table-column label="规格型号" align="center" prop="spec" />
<el-table-column label="图号" align="center" prop="cargoNo" />
<el-table-column label="产品分类" align="center" prop="parentId" />
<el-table-column label="物料状态" align="center" prop="spare1" />
<el-table-column label="单位" align="center" prop="unit" />
<el-table-column label="启用标识" align="center" prop="spare7" >
<el-table-column label="物料编码" align="center" prop="productId"/>
<el-table-column label="物料名称" align="center" prop="productName"/>
<el-table-column label="规格型号" align="center" prop="spec"/>
<el-table-column label="图号" align="center" prop="cargoNo"/>
<el-table-column label="产品分类" align="center" prop="parentId"/>
<el-table-column label="物料状态" align="center" prop="spare1"/>
<el-table-column label="单位" align="center" prop="unit"/>
<el-table-column label="启用标识" align="center" prop="spare7">
<template slot-scope="scope">
<dict-tag :options="dict.type.sys_yes_no" :value="scope.row.spare7"/>
</template>
</el-table-column>
<el-table-column label="是否系统项" align="center" prop="spare2" >
<el-table-column label="是否系统项" align="center" prop="spare2">
<template slot-scope="scope">
<dict-tag :options="dict.type.sys_yes_no" :value="scope.row.spare2"/>
</template>
@@ -246,8 +249,8 @@
<el-table-column label="创建用户" align="center" prop="spare4" />
<el-table-column label="库存上限" align="center" prop="spare5" />
<el-table-column label="库存下限" align="center" prop="spare6" /> -->
<el-table-column label="单价" align="center" prop="price" />
<el-table-column label="备注" align="center" prop="remak" />
<el-table-column label="单价" align="center" prop="price"/>
<el-table-column label="备注" align="center" prop="remak"/>
</el-table>
<pagination
v-show="productTotal>0"
@@ -265,12 +268,16 @@
<!-- 物料导入对话框 -->
<el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
<el-upload ref="upload" :limit="1" accept=".xlsx, .xls" :headers="upload.headers" :action="upload.url" :disabled="upload.isUploading" :on-progress="handleFileUploadProgress" :on-success="handleFileSuccess" :auto-upload="false" drag>
<el-upload ref="upload" :limit="1" accept=".xlsx, .xls" :headers="upload.headers" :action="upload.url"
:disabled="upload.isUploading" :on-progress="handleFileUploadProgress" :on-success="handleFileSuccess"
:auto-upload="false" drag>
<i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
<div class="el-upload__tip text-center" slot="tip">
<span>仅允许导入xls、xlsx格式文件。</span>
<el-link type="primary" :underline="false" style="font-size: 12px; vertical-align: baseline" @click="importTemplate">下载模板</el-link>
<el-link type="primary" :underline="false" style="font-size: 12px; vertical-align: baseline"
@click="importTemplate">下载模板
</el-link>
</div>
</el-upload>
<div slot="footer" class="dialog-footer">
@@ -316,10 +323,10 @@
highlight-current-row
style="width: 100%"
>
<el-table-column type="index" label="序号" width="50" align="center" />
<el-table-column label="供应商编号" align="center" prop="supplierNo" />
<el-table-column label="供应商名称" align="center" prop="supplierName" />
<el-table-column label="简称" align="center" prop="simpleName" />
<el-table-column type="index" label="序号" width="50" align="center"/>
<el-table-column label="供应商编号" align="center" prop="supplierNo"/>
<el-table-column label="供应商名称" align="center" prop="supplierName"/>
<el-table-column label="简称" align="center" prop="simpleName"/>
<el-table-column label="是否可用" align="center" prop="useable">
<template slot-scope="scope">
<dict-tag :options="dict.type.is_available" :value="scope.row.useable"/>
@@ -353,7 +360,7 @@ import {listWarehouse} from "@/api/bas/warehouse"
export default {
name: "InAdd",
dicts: ['sys_normal_disable', 'is_active', 'storage_cond', 'is_available','in_bill_type','product_type','origin_type','account_type','turnover_type','purpose_type','quality_type'],
dicts: ['sys_normal_disable', 'is_active', 'storage_cond', 'is_available', 'in_bill_type', 'product_type', 'origin_type', 'account_type', 'turnover_type', 'purpose_type', 'quality_type'],
data() {
return {
// 表单参数
@@ -362,15 +369,15 @@ export default {
supplierId: undefined,
supplierName: undefined,
remark: undefined,
erpBill:undefined,
inType:undefined,
erpBill: undefined,
inType: undefined,
totalQuantity: 0,
// totalAmount: 0,
totalNetWeight:0,
netWeight:0,
grossWeight:0,
totalNetWeight: 0,
netWeight: 0,
grossWeight: 0,
file: undefined,
productTpe:undefined,
productTpe: undefined,
},
// 表单校验
rules: {
@@ -380,7 +387,7 @@ export default {
supplierId: [
{required: true, message: "请选择供应商", trigger: "change"}
],
inType:[
inType: [
{required: true, message: "请选择形态类型", trigger: "change"}
]
},
@@ -422,9 +429,9 @@ export default {
totalQuantity: 0,
// 总金额
// totalAmount: 0,
totalNetWeight:0,
netWeight:0,
grossWeight:0,
totalNetWeight: 0,
netWeight: 0,
grossWeight: 0,
//物料总数
productTotal: 0,
//物料查询参数
@@ -432,7 +439,7 @@ export default {
pageNum: 1,
pageSize: 10
},
//仓库查询参数
//仓库查询参数
queryWarehouseParams: {
pageNum: 1,
pageSize: 99
@@ -450,7 +457,7 @@ export default {
// 是否更新已经存在的用户数据
updateSupport: 0,
// 设置上传的请求头部
headers: { Authorization: "Bearer " + getToken() },
headers: {Authorization: "Bearer " + getToken()},
// 上传的地址
url: process.env.VUE_APP_BASE_API + "/receive/stockin/analyseExportFile",
}
@@ -595,8 +602,8 @@ export default {
// remark: item.remark,
productName: item.productName,
quantity: 1,
spare9:"",
lotNo:"",
spare9: "",
lotNo: "",
totalNetWeight: 0,
netWeight: 0,
grossWeight: 0
@@ -608,7 +615,7 @@ export default {
handleDeleteProduct(index) {
this.productList.splice(index, 1);
},
cancelPri(){
cancelPri() {
// 重置表单数据
this.form = {
warehouseId: undefined,
@@ -644,9 +651,9 @@ export default {
warehouseId: "01",
supplierId: this.form.supplierId,
remark: this.form.remark,
inType:this.form.inType,
erpBill:this.form.erpBill,
productType:this.form.productType,
inType: this.form.inType,
erpBill: this.form.erpBill,
productType: this.form.productType,
productVoList: this.productList.map(item => ({
productId: item.productId,
quantity: item.quantity,
@@ -661,10 +668,10 @@ export default {
spare7: item.spare7,
spare8: item.spare8,
spare9: item.spare9,
unit:item.unit,
unit: item.unit,
productName: item.productName,
price: item.price,
spec : item.spec,
spec: item.spec,
cargoNo: item.cargoNo,
supplierId: item.supplierId,
}))
@@ -688,8 +695,7 @@ export default {
},
/** 下载模板操作 */
importTemplate() {
this.download('/receive/stockin/importTemplate', {
}, `product_template_${new Date().getTime()}.xlsx`)
this.download('/receive/stockin/importTemplate', {}, `product_template_${new Date().getTime()}.xlsx`)
},// 文件上传中处理
handleFileUploadProgress(event, file, fileList) {
this.upload.isUploading = true

View File

@@ -0,0 +1,10 @@
-- 修改 erp_stockin_id 类型
ALTER TABLE in_stockin_n ALTER COLUMN erp_stockin_id nvarchar(80);
-- 添加 order_num 字段
ALTER TABLE in_stockin_n ADD order_num int;
EXEC sp_addextendedproperty @name = N'MS_Description', @value = N'单据数量', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'in_stockin_n', @level2type = N'COLUMN', @level2name = N'order_num';
-- 添加 finish_num 字段
ALTER TABLE in_stockin_n ADD finish_num int;
EXEC sp_addextendedproperty @name = N'MS_Description', @value = N'完成数量', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'in_stockin_n', @level2type = N'COLUMN', @level2name = N'finish_num';