diff --git a/.gitignore b/.gitignore index 879446a..20f811a 100644 --- a/.gitignore +++ b/.gitignore @@ -28,3 +28,4 @@ hs_err_pid* /log/ .vscode/ +/docs/ diff --git a/.trae/documents/WMS 操作手册模板输出与对齐.md b/.trae/documents/WMS 操作手册模板输出与对齐.md new file mode 100644 index 0000000..f2ba004 --- /dev/null +++ b/.trae/documents/WMS 操作手册模板输出与对齐.md @@ -0,0 +1,258 @@ +# WMS 操作手册模板输出与对齐 + +## 模板目标 +- 提供一份通用、可填充的 WMS 操作手册中文模板,适用于培训与上线交付。 +- 与现有 `docs/WMS_Operation_Manual.md` 风格对齐:编号结构、三级标题、"路径/关键字段/操作步骤"固定段落、截图占位。 +- 便于后续按模块逐步充实细节,不依赖生成文件。 + +## 模板结构 +- 1. 文档信息与综述 +- 2. 系统登录与导航 +- 3. 入库管理(3.1 入库单管理,3.2 入库作业) +- 4. 出库管理(4.1 出库单管理,4.2 出库作业) +- 5. 库存管理(5.1 库存查询,5.2 盘点管理,5.3 盘点差异,5.4 库存记录,5.5 库存冻结记录) +- 6. 基础信息(6.1 仓库,6.2 库位,6.3 托盘,6.4 供应商,6.5 客户,6.6 托盘格式,6.8 产品编码,6.9 物料,6.10 容器,6.11 巷道,6.12 站台,6.13 模型) +- 7. 仓库管理(7.1 仓库设置,7.2 货位管理) +- 8. 统计分析(8.1 入库分析,8.2 出库分析,…) +- 9. 系统管理(用户、角色、权限、审计、字典) +- 10. 集成接口(ERP/MES/TMS,对接与字段映射,条码打印与PDA) +- 11. 异常与故障处理(任务卡顿、锁定、回滚、人工干预) +- 12. 常见问题(FAQ) +- 13. 术语与缩写(SKU、FIFO、AGV 等) +- 14. 版本与修订记录 +- 15. 附录(截图命名规范、表格模板) + +## 模块模板片段规范 +- 每个模块固定包含:路径、目的、适用角色、前置条件、关键字段说明、操作步骤(编号)、注意事项、常见问题、截图占位、权限说明(可选)。 +- 截图占位统一:`images/_placeholder.png`,上线后替换。 +- 术语统一:遵循系统字典与现有文档用词。 + +## 交付方式 +- 先在会话内输出完整模板正文,便于复制到现有文档。 +- 如需保存为文件,后续可新增 `docs/WMS_Operation_Manual_Template.md` 或合并到现有文档指定章节。 + +--- + +# 模板正文(可直接复制到文档) + +# WMS 系统操作手册(模板) + +## 1. 文档信息与综述 +- 文档目标:规范 WMS 使用流程,支持培训与上线。 +- 读者对象:仓管员、质检员、计划员、系统管理员、实施顾问。 +- 版本信息:版本号、发布日期、维护人。 +- 系统简介:系统定位、覆盖模块、核心能力(入/出库、库存、基础信息、统计分析、接口)。 +- 术语约定:SKU、托盘、货位、库位、FIFO、AGV、PDA。 + +## 2. 系统登录与导航 +- 访问地址:【填写】(示例:`http://:`) +- 默认账号:由管理员分配;首次登录需修改密码。 +- 操作步骤: + 1. 打开浏览器,输入访问地址。 + 2. 输入用户名与密码,点击“登录”。 + 3. 进入系统首页(Dashboard)。 +- 首页概览:数据统计面板、快捷入口、折线图切换说明。 +- 截图占位:`images/login_page_placeholder.png`、`images/dashboard_placeholder.png` + +## 3. 入库管理 +### 3.1 入库单管理 +- 路径:`入库管理 -> 入库单管理` +- 目的:创建、审核入库单据,准备入库作业。 +- 适用角色:仓管员、计划员。 +- 前置条件:基础信息已建(仓库、物料、客户/供应商),权限已分配。 +- 关键字段说明:订单号/ERP单号、入库主题、入库类型、单据状态、单据来源。 +- 操作步骤: + 1. 查询:按订单号/物料/状态/类型筛选。 + 2. 新增:填写主题、客户/供应商;添加物料与计划数量;保存。 + 3. 审核:新建单据点击“单据审核”。 + 4. 作废:不再执行的单据点击“单据作废”。 + 5. 打印条码:生成入库标签。 + 6. 详情:查看物料明细与进度。 +- 注意事项:来源区分手工/接口;作废与权限校验。 +- 常见问题:审核失败、物料不存在、数量异常。 +- 截图占位:`images/inbound_order_placeholder.png` + +### 3.2 入库作业 +- 路径:`入库管理 -> 入库作业` +- 目的:执行入库任务,上架到指定库位。 +- 适用角色:仓管员(含PDA)。 +- 前置条件:入库单已审核,任务已下发。 +- 关键字段说明:任务号、任务状态、托盘条码、开始/结束时间。 +- 操作步骤: + 1. 任务监控:任务号/托盘条码查询。 + 2. 异常处理:手动完成/手动作废。 + 3. 作业绑定:扫描托盘、确认物料、上架库位。 +- 注意事项:锁定规则、库位占用校验。 +- 常见问题:PDA扫描失败、库位锁定。 +- 截图占位:`images/inbound_task_placeholder.png` + +## 4. 出库管理 +### 4.1 出库单管理 +- 路径:`出库管理 -> 出库单管理` +- 目的:创建、审核、确认出库单。 +- 适用角色:仓管员、销售/领料。 +- 前置条件:库存充足,客户信息完整。 +- 关键字段说明:出库单编号、单据状态(新建/已审核/已确认/已作废)、出库类型。 +- 操作步骤:新增、审核、确认、作废、查询。 +- 注意事项:先进先出策略、批次/序列追踪。 +- 常见问题:可用量不足、状态不一致。 +- 截图占位:`images/outbound_order_placeholder.png` + +### 4.2 出库作业 +- 路径:`出库管理 -> 出库作业` +- 目的:执行拣选、出库任务。 +- 适用角色:仓管员(含PDA)。 +- 前置条件:出库单已确认,任务已下发。 +- 关键字段说明:任务号、状态、托盘条码。 +- 操作步骤:任务监控、异常干预(手动完成/作废)。 +- 注意事项:波次/拣选路径优化(如适用)。 +- 常见问题:拣选库位无货、任务卡顿。 +- 截图占位:`images/outbound_task_placeholder.png` + +## 5. 库存管理 +### 5.1 库存查询 +- 路径:`库存管理 -> 库存查询` +- 目的:查询与维护库存状态。 +- 关键字段说明:库存编码、库存状态(良品/待检/不良/冻结)、托盘号、数量、物料信息、入库时间。 +- 操作步骤:综合查询、库存维护(修改/删除)、冻结/解冻、导出。 +- 截图占位:`images/stock_query_placeholder.png` + +### 5.2 盘点管理 +- 路径:`库存管理 -> 盘点管理` +- 目的:全库/动碰/抽样盘点,保证账实一致。 +- 操作步骤:新增盘点单、审核、自动分配、录入实盘、确认、作废。 +- 截图占位:`images/inventory_count_placeholder.png` + +### 5.3 盘点差异 +- 路径:`库存管理 -> 盘点差异` +- 目的:审核差异并自动调整库存。 +- 操作步骤:生成差异、差异审核、库存调整。 +- 截图占位:`images/inventory_diff_placeholder.png` + +### 5.4 库存记录 +- 路径:`库存管理 -> 库存记录` +- 目的:审计与追溯库存变动。 +- 操作步骤:查询流水、导出记录。 +- 截图占位:`images/stock_history_placeholder.png` + +### 5.5 库存冻结记录 +- 路径:`库存管理 -> 库存冻结记录` +- 目的:查询冻结/解冻历史,支持导出。 +- 操作步骤:查询、导出、删除(权限控制)。 +- 截图占位:`images/stock_freeze_history_placeholder.png` + +## 6. 基础信息 +### 6.1 仓库管理 +- 路径:`基础信息 -> 仓库管理` +- 操作说明:查询、新增、修改、删除(含限制)。 +- 截图占位:`images/base_warehouse_placeholder.png` + +### 6.2 库位管理 +- 路径:`基础信息 -> 库位管理` +- 操作说明:状态维护、锁定/解锁、托盘编号修正。 +- 截图占位:`images/base_location_placeholder.png` + +### 6.3 托盘管理 +- 路径:`基础信息 -> 托盘管理` +- 操作说明:新增、打印(单个/批量)、状态维护。 +- 截图占位:`images/base_pallet_placeholder.png` + +### 6.4 供应商管理 +- 路径:`基础信息 -> 供应商管理` +- 操作说明:查询、新增、导出。 +- 截图占位:`images/base_supplier_placeholder.png` + +### 6.5 客户管理 +- 路径:`基础信息 -> 客户管理` +- 操作说明:查询、新增、维护。 +- 截图占位:`images/base_customer_placeholder.png` + +### 6.6 托盘格式管理 +- 路径:`基础信息 -> 托盘格式管理` +- 操作说明:新增格式、生成数据/打印、最大值校验、流水号更新。 +- 截图占位:`images/base_pallet_format_placeholder.png` + +### 6.8 产品编码管理 +- 路径:`基础信息 -> 产品编码管理` +- 操作说明:新增编码、预览与打印、二维码生成规则。 +- 截图占位:`images/base_product_code_placeholder.png` + +### 6.9 物料管理 +- 路径:`基础信息 -> 物料管理` +- 操作说明:查询、新增、修改/删除、导出;字段:编码/名称/分类/价格/单位/规格/库存上下限/是否可用。 +- 截图占位:`images/base_material_placeholder.png` + +### 6.10 容器管理 +- 路径:`基础信息 -> 容器管理` +- 操作说明:查询、维护(状态/位置)、删除。 +- 截图占位:`images/base_container_placeholder.png` + +### 6.11 巷道管理 +- 路径:`基础信息 -> 巷道管理` +- 操作说明:查询、锁定/解锁(入库/出库锁)。 +- 截图占位:`images/base_lane_placeholder.png` + +### 6.12 站台管理 +- 路径:`基础信息 -> 站台管理` +- 操作说明:监控站台状态、呼叫货架、交付容器、容器详情。 +- 截图占位:`images/base_station_placeholder.png` + +### 6.13 模型管理 +- 路径:`基础信息 -> 模型管理` +- 操作说明:新增/修改、优先级设置、API配置。 +- 截图占位:`images/base_model_placeholder.png` + +## 7. 仓库管理 +### 7.1 仓库设置 +- 路径:`仓库管理 -> 仓库设置` +- 操作说明:新增仓库、状态管理(停用/启用)。 +- 截图占位:`images/warehouse_warehouse_placeholder.png` + +### 7.2 货位管理 +- 路径:`仓库管理 -> 货位管理` +- 操作说明:查询、新增/修改、删除、导出;字段:排/列/层、状态、托盘编号、锁定状态。 +- 截图占位:`images/warehouse_bin_placeholder.png` + +## 8. 统计分析 +### 8.1 入库分析 +- 路径:`统计分析 -> 入库分析` +- 说明:筛选仓库与年月,图表展示趋势(柱状/折线)。 +- 截图占位:`images/analysis_inbound_placeholder.png` + +### 8.2 出库分析 +- 路径:`统计分析 -> 出库分析` +- 说明:筛选仓库与年月,展示出库趋势。 +- 截图占位:`images/analysis_outbound_placeholder.png` + +## 9. 系统管理 +- 用户与角色:用户新增/禁用;角色授权;权限矩阵。 +- 审计与操作日志:登录日志、业务操作记录。 +- 数据字典:状态/类型统一维护。 +- 截图占位:`images/sys_admin_placeholder.png` + +## 10. 集成接口 +- ERP/MES/TMS:对接方式、映射字段、同步策略(定时/事件)。 +- 条码打印:模板与变量;打印机配置。 +- PDA/移动端:登录、扫码、任务执行流程。 +- 截图占位:`images/integration_placeholder.png` + +## 11. 异常与故障处理 +- 任务卡顿:手动完成/作废策略;重试规则。 +- 库位锁定:解锁流程与风险提示。 +- 接口失败:重试、补偿、告警通知。 +- 截图占位:`images/exception_placeholder.png` + +## 12. 常见问题(FAQ) +- 登录失败:网络/权限;密码重置流程。 +- 打印不出:驱动/权限;模板变量错误。 +- 可用量不符:冻结、待检、占用量说明。 + +## 13. 术语与缩写 +- SKU、FIFO、AGV、PDA、ASN、SO、PO、WIP 等。 + +## 14. 版本与修订记录 +- 表格:日期、版本、编辑人、变更说明。 + +## 15. 附录 +- 截图命名规范:`images/<模块>_<功能>_<序号>.png` +- 表格模板:关键字段与预期结果记录表。 diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/controller/ToErpApiController.java b/ruoyi-admin/src/main/java/com/ruoyi/api/controller/ToErpApiController.java index 4e531a5..4944cdb 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/controller/ToErpApiController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/controller/ToErpApiController.java @@ -66,4 +66,9 @@ public class ToErpApiController { public AjaxResult getInStock(){ return toErpService.getInStock(); } + + @RequestMapping("/inStockConfirm/{stockinGuids}") + public AjaxResult inStockConfirm( @PathVariable String[] stockinGuids){ + return toErpService.inStockConfirm(stockinGuids); + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/domain/PostReturn.java b/ruoyi-admin/src/main/java/com/ruoyi/api/domain/PostReturn.java new file mode 100644 index 0000000..8e93d71 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/domain/PostReturn.java @@ -0,0 +1,9 @@ +package com.ruoyi.api.domain; + +import lombok.Data; + +@Data +public class PostReturn { + Boolean success; + String body; +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/domain/erp/ErpInStockinConfirmRequest.java b/ruoyi-admin/src/main/java/com/ruoyi/api/domain/erp/ErpInStockinConfirmRequest.java new file mode 100644 index 0000000..59bb7da --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/domain/erp/ErpInStockinConfirmRequest.java @@ -0,0 +1,62 @@ +package com.ruoyi.api.domain.erp; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * ERP入库回传请求参数 + */ +@Data +public class ErpInStockinConfirmRequest { + + /** + * 单据ID (ERP端的入库ID) + */ + @JsonProperty("ord") + private String ord; + + /** + * 确认时间 (接口要求日期格式为:yyyy-MM-dd HH:mm:ss) + */ + @JsonProperty("Date5") + private String date5; + + /** + * 入库状态 + */ + @JsonProperty("Complete1") + private Integer complete1; + + /** + * 库管意见 + */ + @JsonProperty("Intro2") + private String intro2; + + /** + * 入库明细 + */ + @JsonProperty("KuinList") + private List kuinList; + + /** + * 客户名称 + */ + @JsonProperty("!B__SysCusmf_0_61001_413_0") + private String customerName; + + /** + * 磅单编号 + */ + @JsonProperty("!B__SysCusmf_0_61001_414_0") + private String weighbillNo; + + /** + * 入库车号 + */ + @JsonProperty("!B__SysCusmf_0_61001_415_0") + private String vehicleNo; +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/domain/erp/ErpInStockinDetailConfirmRequest.java b/ruoyi-admin/src/main/java/com/ruoyi/api/domain/erp/ErpInStockinDetailConfirmRequest.java new file mode 100644 index 0000000..8890279 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/domain/erp/ErpInStockinDetailConfirmRequest.java @@ -0,0 +1,85 @@ +package com.ruoyi.api.domain.erp; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * ERP入库回传明细请求参数 + */ +@Data +public class ErpInStockinDetailConfirmRequest { + + /** + * 明细ID + */ + @JsonProperty("id") + private String id; + + /** + * 数量 + */ + @JsonProperty("Num1") + private BigDecimal num1; + + /** + * 辅助单位 + */ + @JsonProperty("AssistUnit") + private String assistUnit; + + /** + * 辅助数量 + */ + @JsonProperty("AssistNum") + private BigDecimal assistNum; + + /** + * 仓库 + */ + @JsonProperty("Ku") + private String ku; + + /** + * 货位ID + */ + @JsonProperty("WareHousePositionID") + private String wareHousePositionID; + + /** + * 批号 + */ + @JsonProperty("Ph") + private String ph; + + /** + * 序列号 + */ + @JsonProperty("Xlh") + private String xlh; + + /** + * 生产日期 + */ + @JsonProperty("Datesc") + private String datesc; + + /** + * 有效期 + */ + @JsonProperty("Dateyx") + private String dateyx; + + /** + * 到货日期 + */ + @JsonProperty("Date2") + private String date2; + + /** + * 客户ID + */ + @JsonProperty("sysIcusIInheritIdIidI1") + private String sysIcusIInheritIdIidI1; +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/service/IToErpService.java b/ruoyi-admin/src/main/java/com/ruoyi/api/service/IToErpService.java index f168a0b..f481547 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/service/IToErpService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/service/IToErpService.java @@ -41,4 +41,6 @@ public interface IToErpService { void AddStockinDetailByErpStockinDetail(ErpInStockinDetail erpInStockinetail); AjaxResult getInStock(); + + AjaxResult inStockConfirm(String[] stockInId); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToErpServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToErpServiceImpl.java index 0950239..0d48495 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToErpServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToErpServiceImpl.java @@ -1,16 +1,20 @@ package com.ruoyi.api.service.impl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateField; +import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjUtil; import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpResponse; import cn.hutool.http.HttpUtil; import cn.hutool.json.JSONArray; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; +import com.ruoyi.api.domain.PostReturn; import com.ruoyi.api.domain.erp.*; import com.ruoyi.api.service.IToErpService; import com.ruoyi.bas.BasCustomer.domain.BasCustomer; @@ -48,14 +52,19 @@ 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.InStockinNFinish; import com.ruoyi.system.domain.InStockinNQueryRequest; import com.fasterxml.jackson.databind.ObjectMapper; import com.ruoyi.common.enums.StockInCompleteStatus; +import com.ruoyi.system.service.IInStockinDetailNFinishService; +import com.ruoyi.system.service.IInStockinDetailNService; +import com.ruoyi.system.service.IInStockinNFinishService; import com.ruoyi.system.service.IInStockinNService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.text.SimpleDateFormat; @@ -440,19 +449,11 @@ public class ToErpServiceImpl implements IToErpService { @Override public AjaxResult callErp(ReceiveOutStockConfirm receiveOutStockConfirm) { - String body=HttpRequest.post(outStockConfirmUrl).header("ZBAPI-Token", login()).body(JSONUtil.toJsonStr(receiveOutStockConfirm)).execute().body(); - CallErpResponse callErpResponse = JSONUtil.toBean(body, CallErpResponse.class); - if (callErpResponse.getCode()==200){ + Boolean success=post(outStockConfirmUrl,JSONUtil.toJsonStr(receiveOutStockConfirm),"出库单回传").getSuccess(); + if (success){ return AjaxResult.success(); }else { - if (callErpResponse.getCode()==300){ - return AjaxResult.error("请求失败"); - }else if (callErpResponse.getCode()==400){ - return AjaxResult.error("token验证失败"); - }else if (callErpResponse.getCode()==500){ - return AjaxResult.error("服务器内部错误"); - } - return AjaxResult.error(callErpResponse.getMsg()); + return AjaxResult.error(); } } @@ -666,43 +667,20 @@ public class ToErpServiceImpl implements IToErpService { } - /** - * 生成入库单据 -> 根据erp入库子单更新wms入库子单明细 - * @param erpInStockinetail - */ - public void AddStockinDetailByErpStockinDetail(ErpInStockinDetail erpInStockinetail) { - InStockinDetail inStockinDetail = new InStockinDetail(); - try { - //向wms入库单据表同步erp主单信息 - inStockinDetail.setStockinDetailId(erpInStockinetail.getId().toString());//明细id - inStockinDetail.setStockinGuid(erpInStockinetail.getSpare3());//入库主单guid - inStockinDetail.setStockinId(erpInStockinetail.getKuin());//主单id - inStockinDetail.setLotNo(erpInStockinetail.getPh());//批次 - inStockinDetail.setProductId(erpInStockinetail.getSpare2());//物料编号 - inStockinDetail.setAssignNum(erpInStockinetail.getQuantity().toString());//入库数量 - inStockinDetail.setWarehouseId("0");//库区 - inStockinDetail.setPrintDate(DateUtil.now());//库区 - inStockinDetail.setStatus("");//单据状态 - inStockinDetail.setRemark("");//入库备注 - - //更新/新增wms入库明细 - if (ObjUtil.isNotNull(inStockinDetailService.selectInStockinDetailByStockinGuid(inStockinDetail.getStockinGuid()))) { - inStockinDetailService.updateInStockinDetail(inStockinDetail); - }else{ - inStockinDetailService.insertInStockinDetail(inStockinDetail); - } - }catch(Exception e){ - log.error("生成/更新单据明细失败,主单据号:" + inStockinDetail.getStockinId() + ",异常信息:" + e.getMessage()); - } - - } @Autowired private IInStockinNService inStockinNService; @Autowired - private com.ruoyi.system.service.IInStockinDetailNService inStockinDetailNService; + private IInStockinNFinishService inStockinNFinishService; + + @Autowired + private IInStockinDetailNService inStockinDetailNService; + + @Autowired + private IInStockinDetailNFinishService inStockinDetailNFinishService; + @Autowired private ObjectMapper objectMapper; @@ -732,9 +710,13 @@ public class ToErpServiceImpl implements IToErpService { } catch (Exception e) { log.error("JSON序列化失败", e); return AjaxResult.error("JSON序列化失败"); + } + PostReturn result = post(getStockinListUrl, jsonStr, "获取入库单"); + if (!result.getSuccess()){ + return AjaxResult.error("接口调用失败"); } // 获取ERP数据 - String body = HttpRequest.post(getStockinListUrl).header(TOKEN_KEY, login()).body(jsonStr).execute().body(); + String body = result.getBody(); // 解析响应 ErpInStockinNResponse response = JSONUtil.toBean(body, ErpInStockinNResponse.class); if (response != null && response.getRows() != null) { @@ -844,5 +826,163 @@ public class ToErpServiceImpl implements IToErpService { return AjaxResult.success(body); } + @Override + @Transactional(rollbackFor = Exception.class) + public AjaxResult inStockConfirm(String[] stockInGuids) { + for (String stockinGuid : stockInGuids) { + InStockinN inStockinN =inStockinNService.selectInStockinNByStockinGuid(stockinGuid); + if (inStockinN==null) { + throw new RuntimeException("未找到对应单据,请检查"); + } + if (inStockinN.getStatus()!= 3) { + throw new RuntimeException("单据["+inStockinN.getStockinId()+"]状态不是正执行,请检查"); + } + InStockinDetailN inStockinDetailN =new InStockinDetailN(); + inStockinDetailN.setStockinId(inStockinN.getStockinId()); + List stockinDetailNs = inStockinDetailNService.selectInStockinDetailNList(inStockinDetailN); + if (CollUtil.isNotEmpty(stockinDetailNs)){ + boolean b = stockinDetailNs.stream().allMatch(x -> x.getFinishNum().equals(x.getSmNum())); + if (!b){ + throw new RuntimeException("单据["+inStockinN.getStockinId()+"]扫码数量与实际入库数量不一致!"); + } + } + if (!inStockinN.getOrderSrc().equals("自建单")){ + //回传ERP + try { + ErpInStockinConfirmRequest request = new ErpInStockinConfirmRequest(); + request.setOrd(inStockinN.getErpStockinId()); + request.setDate5(DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss")); + request.setComplete1(1); + request.setIntro2(inStockinN.getRemark()); + request.setCustomerName(inStockinN.getCustomerName()); + request.setWeighbillNo(inStockinN.getWeighbillNo()); + request.setVehicleNo(inStockinN.getVehicleNo()); + List detailList = getErp(stockinDetailNs); + request.setKuinList(detailList); + String json = objectMapper.writeValueAsString(request); + if (!post(stockinConfirmUrl,json,"入库确认").getSuccess()) { + throw new RuntimeException("回传ERP失败"); + } + } catch (Exception e) { + log.error("回传ERP失败: {}", e.getMessage()); + throw new RuntimeException("回传ERP失败" ); + } + } + //处理单据 插入历史表 + inStockinN.setStatus(4); + InStockinNFinish inStockinNFinish = new InStockinNFinish(); + BeanUtil.copyProperties(inStockinN, inStockinNFinish); + inStockinNFinishService.insertInStockinNFinish(inStockinNFinish); + inStockinDetailNFinishService.insertByStockInId(inStockinN.getStockinId()); + inStockinNService.deleteInStockinNByStockinGuid(inStockinN.getStockinGuid()); + inStockinDetailNService.deleteByStockInId(inStockinN.getStockinId()); + } + return AjaxResult.success(); + } + private static List getErp(List stockinDetailNs) { + List detailList = new ArrayList<>(); + for (InStockinDetailN detailN : stockinDetailNs) { + ErpInStockinDetailConfirmRequest detailRequest = new ErpInStockinDetailConfirmRequest(); + detailRequest.setId(String.valueOf(detailN.getErpDetailId())); + detailRequest.setNum1(detailN.getFinishNum()); + detailRequest.setAssistUnit(detailN.getAuxUnit()); + detailRequest.setAssistNum(detailN.getAuxQuantity()); + detailRequest.setKu("50"); // 仓库默认空 + detailRequest.setWareHousePositionID(""); // 货位默认空 + detailRequest.setPh(detailN.getBatchNo()); + detailRequest.setXlh(detailN.getSerialNo()); + detailRequest.setDatesc(detailN.getProductionDate()); + detailRequest.setDateyx(detailN.getExpiryDate()); + detailRequest.setDate2(detailN.getArrivalDate()); + detailRequest.setSysIcusIInheritIdIidI1(""); // 客户ID默认空 + detailList.add(detailRequest); + } + return detailList; + } + + public PostReturn post(String url, String jsonStr, String endpoint){ + PostReturn postReturn =new PostReturn(); + RequestLog requestLog = new RequestLog(); + DateTime startTime = DateUtil.date(); + requestLog.setRequestTime(DateUtil.format(startTime, "yyyy-MM-dd HH:mm:ss.SSS")); + HttpResponse response = HttpRequest.post(url).header(TOKEN_KEY, login()).body(jsonStr).execute(); + String body = response.body(); + DateTime endTime = DateUtil.date(); + requestLog.setResponseTime(DateUtil.format(endTime, "yyyy-MM-dd HH:mm:ss.SSS")); + requestLog.setRequestHeaders(JSONUtil.toJsonStr(response.headers())); + requestLog.setResponseStatus(String.valueOf(response.getStatus())); + requestLog.setDuration(String.valueOf(DateUtil.between(startTime, endTime, DateUnit.MS))); + requestLog.setSourceSystem("wms"); + requestLog.setTargetSystem("erp"); + requestLog.setRequestUrl(url); + requestLog.setRequestMethod("POST"); + requestLog.setRequestBody(jsonStr); + requestLog.setResponseBody(body); + requestLog.setEndpoint(endpoint); + + boolean isSuccess = false; + try { + if (JSONUtil.isTypeJSON(body)) { + JSONObject jsonObject = JSONUtil.parseObj(body); + if (jsonObject.containsKey("Code")) { + int code = jsonObject.getInt("Code"); + if (code == 200) { + isSuccess = true; + } else { + log.error("ERP请求失败,Code: {}, Msg: {}", code, jsonObject.getStr("Msg")); + } + } else { + log.error("ERP返回格式错误,未包含Code字段: {}", body); + } + } else { + log.error("ERP返回非JSON格式: {}", body); + } + } catch (Exception e) { + log.error("解析ERP响应异常: {}", e.getMessage()); + } + + requestLog.setIsSuccessful(isSuccess ? "1" : "0"); + requestLogService.insertRequestLog(requestLog); + postReturn.setSuccess(isSuccess); + postReturn.setBody(body); + return postReturn; + } + + + + /** + * 生成入库单据 -> 根据erp入库子单更新wms入库子单明细 + * @param erpInStockinetail + */ + public void AddStockinDetailByErpStockinDetail(ErpInStockinDetail erpInStockinetail) { + + InStockinDetail inStockinDetail = new InStockinDetail(); + try { + //向wms入库单据表同步erp主单信息 + inStockinDetail.setStockinDetailId(erpInStockinetail.getId().toString());//明细id + inStockinDetail.setStockinGuid(erpInStockinetail.getSpare3());//入库主单guid + inStockinDetail.setStockinId(erpInStockinetail.getKuin());//主单id + inStockinDetail.setLotNo(erpInStockinetail.getPh());//批次 + inStockinDetail.setProductId(erpInStockinetail.getSpare2());//物料编号 + inStockinDetail.setAssignNum(erpInStockinetail.getQuantity().toString());//入库数量 + inStockinDetail.setWarehouseId("0");//库区 + inStockinDetail.setPrintDate(DateUtil.now());//库区 + inStockinDetail.setStatus("");//单据状态 + inStockinDetail.setRemark("");//入库备注 + + //更新/新增wms入库明细 + if (ObjUtil.isNotNull(inStockinDetailService.selectInStockinDetailByStockinGuid(inStockinDetail.getStockinGuid()))) { + inStockinDetailService.updateInStockinDetail(inStockinDetail); + }else{ + inStockinDetailService.insertInStockinDetail(inStockinDetail); + } + }catch(Exception e){ + log.error("生成/更新单据明细失败,主单据号:" + inStockinDetail.getStockinId() + ",异常信息:" + e.getMessage()); + } + + } } + + + diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToWcsServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToWcsServiceImpl.java index 4ffc9fd..edada2a 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToWcsServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToWcsServiceImpl.java @@ -40,14 +40,16 @@ public class ToWcsServiceImpl implements IToWcsService { @Override - @Scheduled(fixedDelay=1500) +// @Scheduled(fixedDelay=1500) public void pushOutMydoJob() { //查询所有未推送的料箱出库作业 MydoJob mydoJobParam = new MydoJob(); mydoJobParam.setStatus("1"); List list = new ArrayList<>(); - list.add("21"); + list.add("21");//自动分配出库 list.add("26"); + list.add("23");//指定货位出库 + list.add("22");//空托盘出库 mydoJobParam.setInOutIds(list); List outMydoJobs = mydoJobService.selectMydoJobListApi(mydoJobParam); for (MydoJob outMydoJob : outMydoJobs) { diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToWmsServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToWmsServiceImpl.java index 331458d..9bb9f8d 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToWmsServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToWmsServiceImpl.java @@ -298,6 +298,9 @@ public class ToWmsServiceImpl implements IToWmsService { MydoJob outJob = outMydoJobs.get(0); outJob.setExecutionPhase("2"); mydoJobService.updateMydoJob(outJob); + BasCargoSpace basCargoSpace =basCargoSpaceService.selectBasCargoSpaceByCargoSpaceId(outJob.getCargoSpaceId()); + basCargoSpace.setStatus("1"); + basCargoSpaceService.updateBasCargoSpace(basCargoSpace); break; default: diff --git a/ruoyi-admin/src/main/java/com/ruoyi/job/mydojob/controller/OutMydoJobController.java b/ruoyi-admin/src/main/java/com/ruoyi/job/mydojob/controller/OutMydoJobController.java index 14ec3e9..2617b9c 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/job/mydojob/controller/OutMydoJobController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/job/mydojob/controller/OutMydoJobController.java @@ -67,7 +67,7 @@ public class OutMydoJobController extends BaseController { return mydoJobService.OuthandInvalidation(jobIds); } - @PreAuthorize("@ss.hasPermi('job:outmydoJob:pointOut')") +// @PreAuthorize("@ss.hasPermi('job:outmydoJob:pointOut')") @Log(title = "指定货位出库", businessType = BusinessType.INSERT) @RequestMapping("/pointOut") public AjaxResult pointOut(@RequestParam("groupCodingNo")String groupCodingNo, @RequestParam("outQuantity")String quantity) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/job/mydojob/domain/MydoJob.java b/ruoyi-admin/src/main/java/com/ruoyi/job/mydojob/domain/MydoJob.java index d91aa46..5344271 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/job/mydojob/domain/MydoJob.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/job/mydojob/domain/MydoJob.java @@ -2,6 +2,7 @@ package com.ruoyi.job.mydojob.domain; import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.core.domain.BaseEntity; +import lombok.Data; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; @@ -13,6 +14,7 @@ import java.util.List; * @author ruoyi * @date 2025-05-23 */ +@Data public class MydoJob extends BaseEntity { private static final long serialVersionUID = 1L; @@ -131,11 +133,15 @@ public class MydoJob extends BaseEntity private List inOutIds; + private String isAsc; + private String createLeftTime; private String createRightTime; private String productId; + private String orderByColumn; + public String getProductId() { return productId; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/job/mydojobfinish/domain/MydoJobFinish.java b/ruoyi-admin/src/main/java/com/ruoyi/job/mydojobfinish/domain/MydoJobFinish.java index 04f9623..798a7c7 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/job/mydojobfinish/domain/MydoJobFinish.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/job/mydojobfinish/domain/MydoJobFinish.java @@ -2,6 +2,7 @@ package com.ruoyi.job.mydojobfinish.domain; import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.core.domain.BaseEntity; +import lombok.Data; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; @@ -11,6 +12,7 @@ import org.apache.commons.lang3.builder.ToStringStyle; * @author ruoyi * @date 2025-05-23 */ +@Data public class MydoJobFinish extends BaseEntity { private static final long serialVersionUID = 1L; @@ -111,6 +113,8 @@ public class MydoJobFinish extends BaseEntity @Excel(name = "重分标记") private String faultFlag; + private String orderByColumn; + public void setJobId(String jobId) { this.jobId = jobId; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/log/service/impl/RequestLogServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/log/service/impl/RequestLogServiceImpl.java index 6ce8db7..ab55920 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/log/service/impl/RequestLogServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/log/service/impl/RequestLogServiceImpl.java @@ -13,6 +13,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + import java.util.Date; import java.util.List; @@ -60,13 +63,10 @@ public class RequestLogServiceImpl implements IRequestLogService * @return 结果 */ @Override + @Transactional(propagation = Propagation.REQUIRES_NEW) public int insertRequestLog(RequestLog requestLog) { - if (requestLog.getIsSuccessful().equals("1")){ - return requestLogMapper.insertRequestLog(requestLog); - }else { - return 0; - } + return requestLogMapper.insertRequestLog(requestLog); } /** diff --git a/ruoyi-admin/src/main/java/com/ruoyi/pda/service/PdaServiceImp.java b/ruoyi-admin/src/main/java/com/ruoyi/pda/service/PdaServiceImp.java index 15e8ac4..017b042 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/pda/service/PdaServiceImp.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/pda/service/PdaServiceImp.java @@ -100,15 +100,15 @@ public class PdaServiceImp implements PdaService { mydoJobParam.setTrayCode(trayCodeMakeSure.getTrayCode()); mydoJobParam.setStatus("3"); List mydoJobDetails = mydoJobDetailService.selectMydoJobDetailListByExit(mydoJobParam); - BasWarehouse basWarehouse = basWarehouseMapper.selectBasWarehouseByWarehouseId(mydoJobDetails.get(0).getWarehouseId()); - if("2".equals(basWarehouse.getWarehouseType()) && mydoJobDetails.isEmpty()){ - BasStock basStock = new BasStock(); - basStock.setTrayCode(trayCodeMakeSure.getTrayCode()); - List basStocks = basStockMapper.selectBasStockList(basStock); - basStockMapper.deleteBasStockByStockIds((String[]) basStocks.stream().map(BasStock::getStockId).toArray()); - - } - if(mydoJobDetails.isEmpty() && "1".equals(basWarehouse.getWarehouseType())){ +// BasWarehouse basWarehouse = basWarehouseMapper.selectBasWarehouseByWarehouseId(mydoJobDetails.get(0).getWarehouseId()); +// if("2".equals(basWarehouse.getWarehouseType()) && mydoJobDetails.isEmpty()){ +// BasStock basStock = new BasStock(); +// basStock.setTrayCode(trayCodeMakeSure.getTrayCode()); +// List basStocks = basStockMapper.selectBasStockList(basStock); +// basStockMapper.deleteBasStockByStockIds((String[]) basStocks.stream().map(BasStock::getStockId).toArray()); +// +// } + if(mydoJobDetails.isEmpty() ){ return AjaxResult.error("该物料没有出库作业,请检查"); } HashMap map = new HashMap<>(); @@ -120,8 +120,6 @@ public class PdaServiceImp implements PdaService { } else { return AjaxResult.error( map.get("v_resultmsg").toString()); } - - } @@ -246,8 +244,7 @@ public class PdaServiceImp implements PdaService { @Override public AjaxResult ktpout(TrayCodeMsg trayCodeMsg) { HashMap map = new HashMap<>(); - map.put("v_warehouse_id", trayCodeMsg.getWarehouseId()); - map.put("v_exit_id", trayCodeMsg.getExitId()); + map.put("v_num", trayCodeMsg.getInQuantity()); pdaMapper.ktpout(map); String result = map.get("v_result").toString(); if ("10".equals(result)){ diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/controller/InStockinDetailNController.java b/ruoyi-admin/src/main/java/com/ruoyi/system/controller/InStockinDetailNController.java index a9f8df2..41b9a12 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/controller/InStockinDetailNController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/controller/InStockinDetailNController.java @@ -37,7 +37,6 @@ public class InStockinDetailNController extends BaseController /** * 查询入库子单列表 */ - @PreAuthorize("@ss.hasPermi('system:inStockinDetailN:list')") @GetMapping("/list") public TableDataInfo list(InStockinDetailN inStockinDetailN) { @@ -49,7 +48,6 @@ public class InStockinDetailNController extends BaseController /** * 导出入库子单列表 */ - @PreAuthorize("@ss.hasPermi('system:inStockinDetailN:export')") @Log(title = "入库子单", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, InStockinDetailN inStockinDetailN) @@ -62,7 +60,6 @@ public class InStockinDetailNController extends BaseController /** * 获取入库子单详细信息 */ - @PreAuthorize("@ss.hasPermi('system:inStockinDetailN:query')") @GetMapping(value = "/{stockinDetailId}") public AjaxResult getInfo(@PathVariable("stockinDetailId") String stockinDetailId) { @@ -72,7 +69,6 @@ public class InStockinDetailNController extends BaseController /** * 新增入库子单 */ - @PreAuthorize("@ss.hasPermi('system:inStockinDetailN:add')") @Log(title = "入库子单", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody InStockinDetailN inStockinDetailN) @@ -83,7 +79,6 @@ public class InStockinDetailNController extends BaseController /** * 修改入库子单 */ - @PreAuthorize("@ss.hasPermi('system:inStockinDetailN:edit')") @Log(title = "入库子单", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody InStockinDetailN inStockinDetailN) @@ -94,7 +89,6 @@ public class InStockinDetailNController extends BaseController /** * 删除入库子单 */ - @PreAuthorize("@ss.hasPermi('system:inStockinDetailN:remove')") @Log(title = "入库子单", businessType = BusinessType.DELETE) @DeleteMapping("/{stockinDetailIds}") public AjaxResult remove(@PathVariable String[] stockinDetailIds) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/domain/InStockinDetailNFinish.java b/ruoyi-admin/src/main/java/com/ruoyi/system/domain/InStockinDetailNFinish.java index 5a4f352..f1a44cf 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/domain/InStockinDetailNFinish.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/domain/InStockinDetailNFinish.java @@ -1,6 +1,8 @@ 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; @@ -12,6 +14,7 @@ import com.ruoyi.common.core.domain.BaseEntity; * @author zgw * @date 2025-12-17 */ +@Data public class InStockinDetailNFinish extends BaseEntity { private static final long serialVersionUID = 1L; @@ -147,6 +150,11 @@ public class InStockinDetailNFinish extends BaseEntity /** $column.columnComment */ private String stockinDetailId; + + private BigDecimal smNum; + + private BigDecimal finishNum; + public void setErpDetailId(Long erpDetailId) { this.erpDetailId = erpDetailId; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/service/IInStockinDetailNFinishService.java b/ruoyi-admin/src/main/java/com/ruoyi/system/service/IInStockinDetailNFinishService.java index 0ec7ea8..d9dd168 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/service/IInStockinDetailNFinishService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/service/IInStockinDetailNFinishService.java @@ -58,4 +58,6 @@ public interface IInStockinDetailNFinishService * @return 结果 */ public int deleteInStockinDetailNFinishByStockinDetailId(String stockinDetailId); + + void insertByStockInId(String stockinId); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/service/IInStockinDetailNService.java b/ruoyi-admin/src/main/java/com/ruoyi/system/service/IInStockinDetailNService.java index 3982b20..74ef6fe 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/service/IInStockinDetailNService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/service/IInStockinDetailNService.java @@ -59,4 +59,5 @@ public interface IInStockinDetailNService */ public int deleteInStockinDetailNByStockinDetailId(String stockinDetailId); + void deleteByStockInId(String stockinId); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/InStockinDetailNFinishServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/InStockinDetailNFinishServiceImpl.java index 7b09647..9de2a06 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/InStockinDetailNFinishServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/InStockinDetailNFinishServiceImpl.java @@ -93,4 +93,9 @@ public class InStockinDetailNFinishServiceImpl implements IInStockinDetailNFinis { return inStockinDetailNFinishMapper.deleteInStockinDetailNFinishByStockinDetailId(stockinDetailId); } + + @Override + public void insertByStockInId(String stockinId) { + inStockinDetailNFinishMapper.insertByStockInId(stockinId); + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/InStockinDetailNServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/InStockinDetailNServiceImpl.java index 502d36a..077aa9b 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/InStockinDetailNServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/InStockinDetailNServiceImpl.java @@ -94,5 +94,8 @@ public class InStockinDetailNServiceImpl implements IInStockinDetailNService return inStockinDetailNMapper.deleteInStockinDetailNByStockinDetailId(stockinDetailId); } - + @Override + public void deleteByStockInId(String stockinId) { + inStockinDetailNMapper.deleteByStockInId(stockinId); + } } diff --git a/ruoyi-admin/src/main/resources/mapper/bas/warehouse/BasWarehouseMapper.xml b/ruoyi-admin/src/main/resources/mapper/bas/warehouse/BasWarehouseMapper.xml index cbec2eb..1696467 100644 --- a/ruoyi-admin/src/main/resources/mapper/bas/warehouse/BasWarehouseMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/bas/warehouse/BasWarehouseMapper.xml @@ -46,9 +46,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{item} - - ${params.warehouseDataScope} - and warehouse_id != #{updateId} diff --git a/ruoyi-admin/src/main/resources/mapper/index/BillStatusCountMapper.xml b/ruoyi-admin/src/main/resources/mapper/index/BillStatusCountMapper.xml index 74cf270..0344afe 100644 --- a/ruoyi-admin/src/main/resources/mapper/index/BillStatusCountMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/index/BillStatusCountMapper.xml @@ -14,21 +14,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select stockin_id as id, status, '1' as type from in_stockin where status in ('1', '2', '3') - ${params.warehouseDataScope} \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/mapper/index/CargoSpaceCountMapper.xml b/ruoyi-admin/src/main/resources/mapper/index/CargoSpaceCountMapper.xml index 5263856..bf1ef20 100644 --- a/ruoyi-admin/src/main/resources/mapper/index/CargoSpaceCountMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/index/CargoSpaceCountMapper.xml @@ -8,7 +8,6 @@ SELECT status, COUNT(*) as count FROM bas_cargo_space WHERE status IN ('1', '2', '3', '4', '5', '6') - ${params.warehouseDataScope} GROUP BY status ORDER BY status diff --git a/ruoyi-admin/src/main/resources/mapper/index/IndexCountMapper.xml b/ruoyi-admin/src/main/resources/mapper/index/IndexCountMapper.xml index 78a4fe9..44d65cb 100644 --- a/ruoyi-admin/src/main/resources/mapper/index/IndexCountMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/index/IndexCountMapper.xml @@ -8,21 +8,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/mapper/job/MydoJobDetailMapper.xml b/ruoyi-admin/src/main/resources/mapper/job/MydoJobDetailMapper.xml index 9b1a89b..21ab624 100644 --- a/ruoyi-admin/src/main/resources/mapper/job/MydoJobDetailMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/job/MydoJobDetailMapper.xml @@ -369,9 +369,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" mjd.spare9, mjd.spec, mjd.unit, - mj.tray_code, - mj.warehosue_id - + mj.tray_code +-- mj.warehosue_id from mydo_job_detail mjd left join bas_product bp on mjd.product_id = bp.product_id left join mydo_job mj on mjd.job_id = mj.job_id diff --git a/ruoyi-admin/src/main/resources/mapper/job/MydoJobFinishMapper.xml b/ruoyi-admin/src/main/resources/mapper/job/MydoJobFinishMapper.xml index a18cc5d..1a6bdcf 100644 --- a/ruoyi-admin/src/main/resources/mapper/job/MydoJobFinishMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/job/MydoJobFinishMapper.xml @@ -100,7 +100,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ${params.warehouseDataScope} - order by mj.create_time desc + + order by ${orderByColumn} ${isAsc} + + + order by mj.create_time desc + {call proc_tp_out( - #{v_warehouse_id,mode=IN,jdbcType=VARCHAR}, - #{v_exit_id,mode=IN,jdbcType=VARCHAR}, + #{v_num,mode=IN,jdbcType=VARCHAR}, #{v_result,mode=OUT,jdbcType=INTEGER}, #{v_resultmsg,mode=OUT,jdbcType=VARCHAR} )} diff --git a/ruoyi-admin/src/main/resources/mapper/system/InStockinDetailNFinishMapper.xml b/ruoyi-admin/src/main/resources/mapper/system/InStockinDetailNFinishMapper.xml index 18de09b..7249901 100644 --- a/ruoyi-admin/src/main/resources/mapper/system/InStockinDetailNFinishMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/system/InStockinDetailNFinishMapper.xml @@ -41,10 +41,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + - 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 + 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 ,sm_num , finish_num from in_stockin_detail_n_finish