diff --git a/klp-ui/src/utils/request.js b/klp-ui/src/utils/request.js
index fa9692c1..b1b7139e 100644
--- a/klp-ui/src/utils/request.js
+++ b/klp-ui/src/utils/request.js
@@ -19,7 +19,7 @@ const service = axios.create({
// axios中请求配置有baseURL选项,表示请求URL公共部分
baseURL: process.env.VUE_APP_BASE_API,
// 超时
- timeout: 30000
+ timeout: 300000
})
// request拦截器
diff --git a/klp-ui/src/views/wms/coil/panels/base.vue b/klp-ui/src/views/wms/coil/panels/base.vue
index c37e979b..63fc0641 100644
--- a/klp-ui/src/views/wms/coil/panels/base.vue
+++ b/klp-ui/src/views/wms/coil/panels/base.vue
@@ -96,8 +96,7 @@
搜索
重置
- 导出当前
- 导出全部
+ 导出
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 查询
+ 导出产出钢卷
+ 导出消耗钢卷
+ 列设置
+ 保存产出报表
+ 保存消耗报表
+
+
+
+
+
+
+ {{ outSummary.totalCount }}
+ {{ outSummary.totalWeight }}t
+ {{ outSummary.avgWeight }}t
+
+
+
+
+ {{ lossSummary.totalCount }}
+ {{ lossSummary.totalWeight }}t
+ {{ lossSummary.avgWeight }}t
+
+
+
+
+
+ {{ summary.outCount }}
+ {{ summary.outTotalWeight }}t
+ {{ summary.outAvgWeight }}t
+
+ {{ summary.lossCount }}
+ {{ summary.lossTotalWeight }}t
+ {{ summary.lossAvgWeight }}t
+
+ {{ summary.countDiff }}
+ {{ summary.weightDiff }}
+ {{ summary.avgWeightDiff }}t
+
+
+ {{ summary.passRate }}
+ {{ summary.lossRate }}
+
+ {{ summary.abRate }}
+
+ {{ summary.passRate2 }}
+
+
+
+
+ {{ mSummary.outCount }}
+ {{ mSummary.outTotalWeight }}t
+ {{ mSummary.outAvgWeight }}t
+
+ {{ mSummary.lossCount }}
+ {{ mSummary.lossTotalWeight }}t
+ {{ mSummary.lossAvgWeight }}t
+
+ {{ mSummary.countDiff }}
+ {{ mSummary.weightDiff }}
+ {{ mSummary.avgWeightDiff }}t
+
+ {{ mSummary.passRate }}
+ {{ mSummary.lossRate }}
+
+ {{ mSummary.abRate }}
+
+ {{ mSummary.passRate2 }}
+
+
+
+
+ {{ item.value
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 投入明细配置
+ 产出明细配置
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/klp-wms/src/main/java/com/klp/controller/WmsBonusConfigController.java b/klp-wms/src/main/java/com/klp/controller/WmsBonusConfigController.java
new file mode 100644
index 00000000..c0f200a7
--- /dev/null
+++ b/klp-wms/src/main/java/com/klp/controller/WmsBonusConfigController.java
@@ -0,0 +1,99 @@
+package com.klp.controller;
+
+import java.util.List;
+import java.util.Arrays;
+
+import lombok.RequiredArgsConstructor;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.constraints.*;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import com.klp.common.annotation.RepeatSubmit;
+import com.klp.common.annotation.Log;
+import com.klp.common.core.controller.BaseController;
+import com.klp.common.core.domain.PageQuery;
+import com.klp.common.core.domain.R;
+import com.klp.common.core.validate.AddGroup;
+import com.klp.common.core.validate.EditGroup;
+import com.klp.common.enums.BusinessType;
+import com.klp.common.utils.poi.ExcelUtil;
+import com.klp.domain.vo.WmsBonusConfigVo;
+import com.klp.domain.bo.WmsBonusConfigBo;
+import com.klp.service.IWmsBonusConfigService;
+import com.klp.common.core.page.TableDataInfo;
+
+/**
+ * 奖金分配
+ *
+ * @author klp
+ * @date 2026-05-07
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/wms/bonusConfig")
+public class WmsBonusConfigController extends BaseController {
+
+ private final IWmsBonusConfigService iWmsBonusConfigService;
+
+ /**
+ * 查询奖金分配列表
+ */
+ @GetMapping("/list")
+ public TableDataInfo list(WmsBonusConfigBo bo, PageQuery pageQuery) {
+ return iWmsBonusConfigService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 导出奖金分配列表
+ */
+ @Log(title = "奖金分配", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(WmsBonusConfigBo bo, HttpServletResponse response) {
+ List list = iWmsBonusConfigService.queryList(bo);
+ ExcelUtil.exportExcel(list, "奖金分配", WmsBonusConfigVo.class, response);
+ }
+
+ /**
+ * 获取奖金分配详细信息
+ *
+ * @param configId 主键
+ */
+ @GetMapping("/{configId}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long configId) {
+ return R.ok(iWmsBonusConfigService.queryById(configId));
+ }
+
+ /**
+ * 新增奖金分配
+ */
+ @Log(title = "奖金分配", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody WmsBonusConfigBo bo) {
+ return toAjax(iWmsBonusConfigService.insertByBo(bo));
+ }
+
+ /**
+ * 修改奖金分配
+ */
+ @Log(title = "奖金分配", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody WmsBonusConfigBo bo) {
+ return toAjax(iWmsBonusConfigService.updateByBo(bo));
+ }
+
+ /**
+ * 删除奖金分配
+ *
+ * @param configIds 主键串
+ */
+ @Log(title = "奖金分配", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{configIds}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] configIds) {
+ return toAjax(iWmsBonusConfigService.deleteWithValidByIds(Arrays.asList(configIds), true));
+ }
+}
diff --git a/klp-wms/src/main/java/com/klp/controller/WmsBonusPoolController.java b/klp-wms/src/main/java/com/klp/controller/WmsBonusPoolController.java
new file mode 100644
index 00000000..2a76d4ec
--- /dev/null
+++ b/klp-wms/src/main/java/com/klp/controller/WmsBonusPoolController.java
@@ -0,0 +1,99 @@
+package com.klp.controller;
+
+import java.util.List;
+import java.util.Arrays;
+
+import lombok.RequiredArgsConstructor;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.constraints.*;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import com.klp.common.annotation.RepeatSubmit;
+import com.klp.common.annotation.Log;
+import com.klp.common.core.controller.BaseController;
+import com.klp.common.core.domain.PageQuery;
+import com.klp.common.core.domain.R;
+import com.klp.common.core.validate.AddGroup;
+import com.klp.common.core.validate.EditGroup;
+import com.klp.common.enums.BusinessType;
+import com.klp.common.utils.poi.ExcelUtil;
+import com.klp.domain.vo.WmsBonusPoolVo;
+import com.klp.domain.bo.WmsBonusPoolBo;
+import com.klp.service.IWmsBonusPoolService;
+import com.klp.common.core.page.TableDataInfo;
+
+/**
+ * 奖金池
+ *
+ * @author klp
+ * @date 2026-05-07
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/wms/bonusPool")
+public class WmsBonusPoolController extends BaseController {
+
+ private final IWmsBonusPoolService iWmsBonusPoolService;
+
+ /**
+ * 查询奖金池列表
+ */
+ @GetMapping("/list")
+ public TableDataInfo list(WmsBonusPoolBo bo, PageQuery pageQuery) {
+ return iWmsBonusPoolService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 导出奖金池列表
+ */
+ @Log(title = "奖金池", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(WmsBonusPoolBo bo, HttpServletResponse response) {
+ List list = iWmsBonusPoolService.queryList(bo);
+ ExcelUtil.exportExcel(list, "奖金池", WmsBonusPoolVo.class, response);
+ }
+
+ /**
+ * 获取奖金池详细信息
+ *
+ * @param poolId 主键
+ */
+ @GetMapping("/{poolId}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long poolId) {
+ return R.ok(iWmsBonusPoolService.queryById(poolId));
+ }
+
+ /**
+ * 新增奖金池
+ */
+ @Log(title = "奖金池", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody WmsBonusPoolBo bo) {
+ return toAjax(iWmsBonusPoolService.insertByBo(bo));
+ }
+
+ /**
+ * 修改奖金池
+ */
+ @Log(title = "奖金池", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody WmsBonusPoolBo bo) {
+ return toAjax(iWmsBonusPoolService.updateByBo(bo));
+ }
+
+ /**
+ * 删除奖金池
+ *
+ * @param poolIds 主键串
+ */
+ @Log(title = "奖金池", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{poolIds}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] poolIds) {
+ return toAjax(iWmsBonusPoolService.deleteWithValidByIds(Arrays.asList(poolIds), true));
+ }
+}
diff --git a/klp-wms/src/main/java/com/klp/controller/WmsPostCoeffConfigController.java b/klp-wms/src/main/java/com/klp/controller/WmsPostCoeffConfigController.java
new file mode 100644
index 00000000..84cccf88
--- /dev/null
+++ b/klp-wms/src/main/java/com/klp/controller/WmsPostCoeffConfigController.java
@@ -0,0 +1,99 @@
+package com.klp.controller;
+
+import java.util.List;
+import java.util.Arrays;
+
+import lombok.RequiredArgsConstructor;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.constraints.*;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import com.klp.common.annotation.RepeatSubmit;
+import com.klp.common.annotation.Log;
+import com.klp.common.core.controller.BaseController;
+import com.klp.common.core.domain.PageQuery;
+import com.klp.common.core.domain.R;
+import com.klp.common.core.validate.AddGroup;
+import com.klp.common.core.validate.EditGroup;
+import com.klp.common.enums.BusinessType;
+import com.klp.common.utils.poi.ExcelUtil;
+import com.klp.domain.vo.WmsPostCoeffConfigVo;
+import com.klp.domain.bo.WmsPostCoeffConfigBo;
+import com.klp.service.IWmsPostCoeffConfigService;
+import com.klp.common.core.page.TableDataInfo;
+
+/**
+ * 岗位系数配置
+ *
+ * @author klp
+ * @date 2026-05-07
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/wms/postCoeffConfig")
+public class WmsPostCoeffConfigController extends BaseController {
+
+ private final IWmsPostCoeffConfigService iWmsPostCoeffConfigService;
+
+ /**
+ * 查询岗位系数配置列表
+ */
+ @GetMapping("/list")
+ public TableDataInfo list(WmsPostCoeffConfigBo bo, PageQuery pageQuery) {
+ return iWmsPostCoeffConfigService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 导出岗位系数配置列表
+ */
+ @Log(title = "岗位系数配置", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(WmsPostCoeffConfigBo bo, HttpServletResponse response) {
+ List list = iWmsPostCoeffConfigService.queryList(bo);
+ ExcelUtil.exportExcel(list, "岗位系数配置", WmsPostCoeffConfigVo.class, response);
+ }
+
+ /**
+ * 获取岗位系数配置详细信息
+ *
+ * @param configId 主键
+ */
+ @GetMapping("/{configId}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long configId) {
+ return R.ok(iWmsPostCoeffConfigService.queryById(configId));
+ }
+
+ /**
+ * 新增岗位系数配置
+ */
+ @Log(title = "岗位系数配置", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody WmsPostCoeffConfigBo bo) {
+ return toAjax(iWmsPostCoeffConfigService.insertByBo(bo));
+ }
+
+ /**
+ * 修改岗位系数配置
+ */
+ @Log(title = "岗位系数配置", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody WmsPostCoeffConfigBo bo) {
+ return toAjax(iWmsPostCoeffConfigService.updateByBo(bo));
+ }
+
+ /**
+ * 删除岗位系数配置
+ *
+ * @param configIds 主键串
+ */
+ @Log(title = "岗位系数配置", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{configIds}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] configIds) {
+ return toAjax(iWmsPostCoeffConfigService.deleteWithValidByIds(Arrays.asList(configIds), true));
+ }
+}
diff --git a/klp-wms/src/main/java/com/klp/domain/WmsBonusConfig.java b/klp-wms/src/main/java/com/klp/domain/WmsBonusConfig.java
new file mode 100644
index 00000000..e3add225
--- /dev/null
+++ b/klp-wms/src/main/java/com/klp/domain/WmsBonusConfig.java
@@ -0,0 +1,74 @@
+package com.klp.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.klp.common.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.math.BigDecimal;
+
+/**
+ * 奖金分配对象 wms_bonus_config
+ *
+ * @author klp
+ * @date 2026-05-07
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("wms_bonus_config")
+public class WmsBonusConfig extends BaseEntity {
+
+ private static final long serialVersionUID=1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId(value = "config_id")
+ private Long configId;
+ /**
+ * 奖金池ID(关联bonus_pool.id)
+ */
+ private Long poolId;
+ /**
+ * 员工ID
+ */
+ private Long empId;
+ /**
+ * 员工姓名
+ */
+ private String empName;
+ /**
+ * 岗位
+ */
+ private String postName;
+ /**
+ * 职务系数
+ */
+ private BigDecimal dutyCoeff;
+ /**
+ * 基本系数
+ */
+ private BigDecimal baseCoeff;
+ /**
+ * 主任加减系数
+ */
+ private BigDecimal adjustCoeff;
+ /**
+ * 分配基数(底薪/元)
+ */
+ private BigDecimal allocBase;
+ /**
+ * 分配奖金金额
+ */
+ private BigDecimal bonusAmount;
+ /**
+ * 备注
+ */
+ private String remark;
+ /**
+ * 删除标识 0正常 2删除
+ */
+ @TableLogic
+ private Long delFlag;
+
+}
diff --git a/klp-wms/src/main/java/com/klp/domain/WmsBonusPool.java b/klp-wms/src/main/java/com/klp/domain/WmsBonusPool.java
new file mode 100644
index 00000000..aafd4b6c
--- /dev/null
+++ b/klp-wms/src/main/java/com/klp/domain/WmsBonusPool.java
@@ -0,0 +1,52 @@
+package com.klp.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.klp.common.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+/**
+ * 奖金池对象 wms_bonus_pool
+ *
+ * @author klp
+ * @date 2026-05-07
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("wms_bonus_pool")
+public class WmsBonusPool extends BaseEntity {
+
+ private static final long serialVersionUID=1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId(value = "pool_id")
+ private Long poolId;
+ /**
+ * 产线
+ */
+ private String productionLine;
+ /**
+ * 奖金时间/统计时间
+ */
+ private Date bonusTime;
+ /**
+ * 奖金池总金额
+ */
+ private BigDecimal totalBonus;
+ /**
+ * 备注
+ */
+ private String remark;
+ /**
+ * 删除标识 0正常 2删除
+ */
+ @TableLogic
+ private Long delFlag;
+
+}
diff --git a/klp-wms/src/main/java/com/klp/domain/WmsPostCoeffConfig.java b/klp-wms/src/main/java/com/klp/domain/WmsPostCoeffConfig.java
new file mode 100644
index 00000000..1f2556da
--- /dev/null
+++ b/klp-wms/src/main/java/com/klp/domain/WmsPostCoeffConfig.java
@@ -0,0 +1,50 @@
+package com.klp.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.klp.common.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.math.BigDecimal;
+
+/**
+ * 岗位系数配置对象 wms_post_coeff_config
+ *
+ * @author klp
+ * @date 2026-05-07
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("wms_post_coeff_config")
+public class WmsPostCoeffConfig extends BaseEntity {
+
+ private static final long serialVersionUID=1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId(value = "config_id")
+ private Long configId;
+ /**
+ * 岗位名称
+ */
+ private String postName;
+ /**
+ * 职务系数
+ */
+ private BigDecimal dutyCoeff;
+ /**
+ * 基本系数
+ */
+ private BigDecimal baseCoeff;
+ /**
+ * 备注
+ */
+ private String remark;
+ /**
+ * 删除标识 0正常 2删除
+ */
+ @TableLogic
+ private Long delFlag;
+
+}
diff --git a/klp-wms/src/main/java/com/klp/domain/bo/WmsBonusConfigBo.java b/klp-wms/src/main/java/com/klp/domain/bo/WmsBonusConfigBo.java
new file mode 100644
index 00000000..ea3eb73b
--- /dev/null
+++ b/klp-wms/src/main/java/com/klp/domain/bo/WmsBonusConfigBo.java
@@ -0,0 +1,77 @@
+package com.klp.domain.bo;
+
+import com.klp.common.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import javax.validation.constraints.*;
+
+import java.math.BigDecimal;
+
+/**
+ * 奖金分配业务对象 wms_bonus_config
+ *
+ * @author klp
+ * @date 2026-05-07
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class WmsBonusConfigBo extends BaseEntity {
+
+ /**
+ * 主键ID
+ */
+ private Long configId;
+
+ /**
+ * 奖金池ID(关联bonus_pool.id)
+ */
+ private Long poolId;
+
+ /**
+ * 员工ID
+ */
+ private Long empId;
+
+ /**
+ * 员工姓名
+ */
+ private String empName;
+
+ /**
+ * 岗位
+ */
+ private String postName;
+
+ /**
+ * 职务系数
+ */
+ private BigDecimal dutyCoeff;
+
+ /**
+ * 基本系数
+ */
+ private BigDecimal baseCoeff;
+
+ /**
+ * 主任加减系数
+ */
+ private BigDecimal adjustCoeff;
+
+ /**
+ * 分配基数(底薪/元)
+ */
+ private BigDecimal allocBase;
+
+ /**
+ * 分配奖金金额
+ */
+ private BigDecimal bonusAmount;
+
+ /**
+ * 备注
+ */
+ private String remark;
+
+
+}
diff --git a/klp-wms/src/main/java/com/klp/domain/bo/WmsBonusPoolBo.java b/klp-wms/src/main/java/com/klp/domain/bo/WmsBonusPoolBo.java
new file mode 100644
index 00000000..e4fc398a
--- /dev/null
+++ b/klp-wms/src/main/java/com/klp/domain/bo/WmsBonusPoolBo.java
@@ -0,0 +1,49 @@
+package com.klp.domain.bo;
+
+import com.klp.common.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import javax.validation.constraints.*;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+/**
+ * 奖金池业务对象 wms_bonus_pool
+ *
+ * @author klp
+ * @date 2026-05-07
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class WmsBonusPoolBo extends BaseEntity {
+
+ /**
+ * 主键ID
+ */
+ private Long poolId;
+
+ /**
+ * 产线
+ */
+ private String productionLine;
+
+ /**
+ * 奖金时间/统计时间
+ */
+ private Date bonusTime;
+
+ /**
+ * 奖金池总金额
+ */
+ private BigDecimal totalBonus;
+
+ /**
+ * 备注
+ */
+ private String remark;
+
+
+}
diff --git a/klp-wms/src/main/java/com/klp/domain/bo/WmsPostCoeffConfigBo.java b/klp-wms/src/main/java/com/klp/domain/bo/WmsPostCoeffConfigBo.java
new file mode 100644
index 00000000..9237cc81
--- /dev/null
+++ b/klp-wms/src/main/java/com/klp/domain/bo/WmsPostCoeffConfigBo.java
@@ -0,0 +1,47 @@
+package com.klp.domain.bo;
+
+import com.klp.common.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import javax.validation.constraints.*;
+
+import java.math.BigDecimal;
+
+/**
+ * 岗位系数配置业务对象 wms_post_coeff_config
+ *
+ * @author klp
+ * @date 2026-05-07
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class WmsPostCoeffConfigBo extends BaseEntity {
+
+ /**
+ * 主键ID
+ */
+ private Long configId;
+
+ /**
+ * 岗位名称
+ */
+ private String postName;
+
+ /**
+ * 职务系数
+ */
+ private BigDecimal dutyCoeff;
+
+ /**
+ * 基本系数
+ */
+ private BigDecimal baseCoeff;
+
+ /**
+ * 备注
+ */
+ private String remark;
+
+
+}
diff --git a/klp-wms/src/main/java/com/klp/domain/vo/WmsBonusConfigVo.java b/klp-wms/src/main/java/com/klp/domain/vo/WmsBonusConfigVo.java
new file mode 100644
index 00000000..88980d39
--- /dev/null
+++ b/klp-wms/src/main/java/com/klp/domain/vo/WmsBonusConfigVo.java
@@ -0,0 +1,91 @@
+package com.klp.domain.vo;
+
+import java.math.BigDecimal;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.klp.common.annotation.ExcelDictFormat;
+import com.klp.common.convert.ExcelDictConvert;
+import lombok.Data;
+
+
+/**
+ * 奖金分配视图对象 wms_bonus_config
+ *
+ * @author klp
+ * @date 2026-05-07
+ */
+@Data
+@ExcelIgnoreUnannotated
+public class WmsBonusConfigVo {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @ExcelProperty(value = "主键ID")
+ private Long configId;
+
+ /**
+ * 奖金池ID(关联bonus_pool.id)
+ */
+ @ExcelProperty(value = "奖金池ID", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(readConverterExp = "关=联bonus_pool.id")
+ private Long poolId;
+
+ /**
+ * 员工ID
+ */
+ @ExcelProperty(value = "员工ID")
+ private Long empId;
+
+ /**
+ * 员工姓名
+ */
+ @ExcelProperty(value = "员工姓名")
+ private String empName;
+
+ /**
+ * 岗位
+ */
+ @ExcelProperty(value = "岗位")
+ private String postName;
+
+ /**
+ * 职务系数
+ */
+ @ExcelProperty(value = "职务系数")
+ private BigDecimal dutyCoeff;
+
+ /**
+ * 基本系数
+ */
+ @ExcelProperty(value = "基本系数")
+ private BigDecimal baseCoeff;
+
+ /**
+ * 主任加减系数
+ */
+ @ExcelProperty(value = "主任加减系数")
+ private BigDecimal adjustCoeff;
+
+ /**
+ * 分配基数(底薪/元)
+ */
+ @ExcelProperty(value = "分配基数(底薪/元)")
+ private BigDecimal allocBase;
+
+ /**
+ * 分配奖金金额
+ */
+ @ExcelProperty(value = "分配奖金金额")
+ private BigDecimal bonusAmount;
+
+ /**
+ * 备注
+ */
+ @ExcelProperty(value = "备注")
+ private String remark;
+
+
+}
diff --git a/klp-wms/src/main/java/com/klp/domain/vo/WmsBonusPoolVo.java b/klp-wms/src/main/java/com/klp/domain/vo/WmsBonusPoolVo.java
new file mode 100644
index 00000000..935bec95
--- /dev/null
+++ b/klp-wms/src/main/java/com/klp/domain/vo/WmsBonusPoolVo.java
@@ -0,0 +1,56 @@
+package com.klp.domain.vo;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.klp.common.annotation.ExcelDictFormat;
+import com.klp.common.convert.ExcelDictConvert;
+import lombok.Data;
+
+
+/**
+ * 奖金池视图对象 wms_bonus_pool
+ *
+ * @author klp
+ * @date 2026-05-07
+ */
+@Data
+@ExcelIgnoreUnannotated
+public class WmsBonusPoolVo {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @ExcelProperty(value = "主键ID")
+ private Long poolId;
+
+ /**
+ * 产线
+ */
+ @ExcelProperty(value = "产线")
+ private String productionLine;
+
+ /**
+ * 奖金时间/统计时间
+ */
+ @ExcelProperty(value = "奖金时间/统计时间")
+ private Date bonusTime;
+
+ /**
+ * 奖金池总金额
+ */
+ @ExcelProperty(value = "奖金池总金额")
+ private BigDecimal totalBonus;
+
+ /**
+ * 备注
+ */
+ @ExcelProperty(value = "备注")
+ private String remark;
+
+
+}
diff --git a/klp-wms/src/main/java/com/klp/domain/vo/WmsCoilAbnormalExportVo.java b/klp-wms/src/main/java/com/klp/domain/vo/WmsCoilAbnormalExportVo.java
new file mode 100644
index 00000000..426334b5
--- /dev/null
+++ b/klp-wms/src/main/java/com/klp/domain/vo/WmsCoilAbnormalExportVo.java
@@ -0,0 +1,203 @@
+package com.klp.domain.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import lombok.Data;
+
+/**
+ * 钢卷异常报表导出DTO - EasyExcel版本
+ * 使用EasyExcel注解实现O(n)复杂度的单元格合并
+ *
+ * @author Joshi
+ * @date 2026-05-07
+ */
+@Data
+@ContentRowHeight(20)
+@HeadRowHeight(24)
+@ColumnWidth(15)
+public class WmsCoilAbnormalExportVo {
+
+ // 钢卷基本信息(前25列)
+ @ExcelProperty("类型")
+ @ColumnWidth(12)
+ private String itemType;
+
+ @ExcelProperty("逻辑库区")
+ @ColumnWidth(12)
+ private String warehouseName;
+
+ @ExcelProperty("实际库区")
+ @ColumnWidth(12)
+ private String actualWarehouseName;
+
+ @ExcelProperty("入场卷号")
+ @ColumnWidth(15)
+ private String enterCoilNo;
+
+ @ExcelProperty("厂家卷号")
+ @ColumnWidth(15)
+ private String supplierCoilNo;
+
+ @ExcelProperty("成品卷号")
+ @ColumnWidth(15)
+ private String currentCoilNo;
+
+ @ExcelProperty("日期")
+ @ColumnWidth(20)
+ private String createTime;
+
+ @ExcelProperty("重量")
+ @ColumnWidth(12)
+ private String netWeight;
+
+ @ExcelProperty("用途")
+ @ColumnWidth(12)
+ private String businessPurpose;
+
+ @ExcelProperty("切边要求")
+ @ColumnWidth(12)
+ private String trimmingRequirement;
+
+ @ExcelProperty("包装种类")
+ @ColumnWidth(12)
+ private String packagingRequirement;
+
+ @ExcelProperty("产品质量")
+ @ColumnWidth(12)
+ private String qualityStatus;
+
+ @ExcelProperty("原料材质")
+ @ColumnWidth(12)
+ private String packingStatus;
+
+ @ExcelProperty("库存状态")
+ @ColumnWidth(12)
+ private String status;
+
+ @ExcelProperty("备注")
+ @ColumnWidth(20)
+ private String remark;
+
+ @ExcelProperty("名称")
+ @ColumnWidth(15)
+ private String itemName;
+
+ @ExcelProperty("规格")
+ @ColumnWidth(20)
+ private String specification;
+
+ @ExcelProperty("长度")
+ @ColumnWidth(12)
+ private String length;
+
+ @ExcelProperty("材质")
+ @ColumnWidth(12)
+ private String material;
+
+ @ExcelProperty("厂家")
+ @ColumnWidth(15)
+ private String manufacturer;
+
+ @ExcelProperty("表面处理")
+ @ColumnWidth(12)
+ private String surfaceTreatmentDesc;
+
+ @ExcelProperty("锌层")
+ @ColumnWidth(12)
+ private String zincLayer;
+
+ @ExcelProperty("物品ID")
+ @ColumnWidth(12)
+ private String itemId;
+
+ @ExcelProperty("操作完成时间")
+ @ColumnWidth(20)
+ private String actionCompleteTime;
+
+ @ExcelProperty("调拨类型")
+ @ColumnWidth(12)
+ private String transferType;
+
+ // 改判原因(第26列)
+ @ExcelProperty("改判原因")
+ @ColumnWidth(25)
+ private String rejudgeReason;
+
+ // 异常信息(后17列)
+ @ExcelProperty("产线")
+ @ColumnWidth(12)
+ private String productionLine;
+
+ @ExcelProperty("位置")
+ @ColumnWidth(12)
+ private String position;
+
+ @ExcelProperty("长度坐标")
+ @ColumnWidth(12)
+ private String abnormalLength;
+
+ @ExcelProperty("缺陷开始位置")
+ @ColumnWidth(15)
+ private String startPosition;
+
+ @ExcelProperty("缺陷结束位置")
+ @ColumnWidth(15)
+ private String endPosition;
+
+ @ExcelProperty("缺陷代码")
+ @ColumnWidth(12)
+ private String defectCode;
+
+ @ExcelProperty("缺陷类型")
+ @ColumnWidth(12)
+ private String defectType;
+
+ @ExcelProperty("缺陷率")
+ @ColumnWidth(12)
+ private String defectRate;
+
+ @ExcelProperty("缺陷重量")
+ @ColumnWidth(12)
+ private String defectWeight;
+
+ @ExcelProperty("程度")
+ @ColumnWidth(10)
+ private String degree;
+
+ @ExcelProperty("判级")
+ @ColumnWidth(10)
+ private String judgeLevel;
+
+ @ExcelProperty("判级人")
+ @ColumnWidth(12)
+ private String judgeBy;
+
+ @ExcelProperty("判级时间")
+ @ColumnWidth(20)
+ private String judgeTime;
+
+ @ExcelProperty("主标记")
+ @ColumnWidth(12)
+ private String mainMark;
+
+ @ExcelProperty("整卷标记")
+ @ColumnWidth(12)
+ private String wholeCoilMark;
+
+ @ExcelProperty("异常备注")
+ @ColumnWidth(20)
+ private String abnormalRemark;
+
+ @ExcelProperty("板面")
+ @ColumnWidth(10)
+ private String plateSurface;
+
+ /**
+ * 钢卷ID,用于合并单元格的标识(隐藏列)
+ */
+ @ExcelIgnore
+ private Long coilId;
+}
diff --git a/klp-wms/src/main/java/com/klp/domain/vo/WmsPostCoeffConfigVo.java b/klp-wms/src/main/java/com/klp/domain/vo/WmsPostCoeffConfigVo.java
new file mode 100644
index 00000000..3b780a73
--- /dev/null
+++ b/klp-wms/src/main/java/com/klp/domain/vo/WmsPostCoeffConfigVo.java
@@ -0,0 +1,54 @@
+package com.klp.domain.vo;
+
+import java.math.BigDecimal;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.klp.common.annotation.ExcelDictFormat;
+import com.klp.common.convert.ExcelDictConvert;
+import lombok.Data;
+
+
+/**
+ * 岗位系数配置视图对象 wms_post_coeff_config
+ *
+ * @author klp
+ * @date 2026-05-07
+ */
+@Data
+@ExcelIgnoreUnannotated
+public class WmsPostCoeffConfigVo {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @ExcelProperty(value = "主键ID")
+ private Long configId;
+
+ /**
+ * 岗位名称
+ */
+ @ExcelProperty(value = "岗位名称")
+ private String postName;
+
+ /**
+ * 职务系数
+ */
+ @ExcelProperty(value = "职务系数")
+ private BigDecimal dutyCoeff;
+
+ /**
+ * 基本系数
+ */
+ @ExcelProperty(value = "基本系数")
+ private BigDecimal baseCoeff;
+
+ /**
+ * 备注
+ */
+ @ExcelProperty(value = "备注")
+ private String remark;
+
+
+}
diff --git a/klp-wms/src/main/java/com/klp/mapper/WmsBonusConfigMapper.java b/klp-wms/src/main/java/com/klp/mapper/WmsBonusConfigMapper.java
new file mode 100644
index 00000000..7915aeb3
--- /dev/null
+++ b/klp-wms/src/main/java/com/klp/mapper/WmsBonusConfigMapper.java
@@ -0,0 +1,15 @@
+package com.klp.mapper;
+
+import com.klp.domain.WmsBonusConfig;
+import com.klp.domain.vo.WmsBonusConfigVo;
+import com.klp.common.core.mapper.BaseMapperPlus;
+
+/**
+ * 奖金分配Mapper接口
+ *
+ * @author klp
+ * @date 2026-05-07
+ */
+public interface WmsBonusConfigMapper extends BaseMapperPlus {
+
+}
diff --git a/klp-wms/src/main/java/com/klp/mapper/WmsBonusPoolMapper.java b/klp-wms/src/main/java/com/klp/mapper/WmsBonusPoolMapper.java
new file mode 100644
index 00000000..abff0037
--- /dev/null
+++ b/klp-wms/src/main/java/com/klp/mapper/WmsBonusPoolMapper.java
@@ -0,0 +1,15 @@
+package com.klp.mapper;
+
+import com.klp.domain.WmsBonusPool;
+import com.klp.domain.vo.WmsBonusPoolVo;
+import com.klp.common.core.mapper.BaseMapperPlus;
+
+/**
+ * 奖金池Mapper接口
+ *
+ * @author klp
+ * @date 2026-05-07
+ */
+public interface WmsBonusPoolMapper extends BaseMapperPlus {
+
+}
diff --git a/klp-wms/src/main/java/com/klp/mapper/WmsPostCoeffConfigMapper.java b/klp-wms/src/main/java/com/klp/mapper/WmsPostCoeffConfigMapper.java
new file mode 100644
index 00000000..93e92bbb
--- /dev/null
+++ b/klp-wms/src/main/java/com/klp/mapper/WmsPostCoeffConfigMapper.java
@@ -0,0 +1,15 @@
+package com.klp.mapper;
+
+import com.klp.domain.WmsPostCoeffConfig;
+import com.klp.domain.vo.WmsPostCoeffConfigVo;
+import com.klp.common.core.mapper.BaseMapperPlus;
+
+/**
+ * 岗位系数配置Mapper接口
+ *
+ * @author klp
+ * @date 2026-05-07
+ */
+public interface WmsPostCoeffConfigMapper extends BaseMapperPlus {
+
+}
diff --git a/klp-wms/src/main/java/com/klp/service/IWmsBonusConfigService.java b/klp-wms/src/main/java/com/klp/service/IWmsBonusConfigService.java
new file mode 100644
index 00000000..9d456856
--- /dev/null
+++ b/klp-wms/src/main/java/com/klp/service/IWmsBonusConfigService.java
@@ -0,0 +1,49 @@
+package com.klp.service;
+
+import com.klp.domain.WmsBonusConfig;
+import com.klp.domain.vo.WmsBonusConfigVo;
+import com.klp.domain.bo.WmsBonusConfigBo;
+import com.klp.common.core.page.TableDataInfo;
+import com.klp.common.core.domain.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 奖金分配Service接口
+ *
+ * @author klp
+ * @date 2026-05-07
+ */
+public interface IWmsBonusConfigService {
+
+ /**
+ * 查询奖金分配
+ */
+ WmsBonusConfigVo queryById(Long configId);
+
+ /**
+ * 查询奖金分配列表
+ */
+ TableDataInfo queryPageList(WmsBonusConfigBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询奖金分配列表
+ */
+ List queryList(WmsBonusConfigBo bo);
+
+ /**
+ * 新增奖金分配
+ */
+ Boolean insertByBo(WmsBonusConfigBo bo);
+
+ /**
+ * 修改奖金分配
+ */
+ Boolean updateByBo(WmsBonusConfigBo bo);
+
+ /**
+ * 校验并批量删除奖金分配信息
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
diff --git a/klp-wms/src/main/java/com/klp/service/IWmsBonusPoolService.java b/klp-wms/src/main/java/com/klp/service/IWmsBonusPoolService.java
new file mode 100644
index 00000000..bb89243c
--- /dev/null
+++ b/klp-wms/src/main/java/com/klp/service/IWmsBonusPoolService.java
@@ -0,0 +1,49 @@
+package com.klp.service;
+
+import com.klp.domain.WmsBonusPool;
+import com.klp.domain.vo.WmsBonusPoolVo;
+import com.klp.domain.bo.WmsBonusPoolBo;
+import com.klp.common.core.page.TableDataInfo;
+import com.klp.common.core.domain.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 奖金池Service接口
+ *
+ * @author klp
+ * @date 2026-05-07
+ */
+public interface IWmsBonusPoolService {
+
+ /**
+ * 查询奖金池
+ */
+ WmsBonusPoolVo queryById(Long poolId);
+
+ /**
+ * 查询奖金池列表
+ */
+ TableDataInfo queryPageList(WmsBonusPoolBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询奖金池列表
+ */
+ List queryList(WmsBonusPoolBo bo);
+
+ /**
+ * 新增奖金池
+ */
+ Boolean insertByBo(WmsBonusPoolBo bo);
+
+ /**
+ * 修改奖金池
+ */
+ Boolean updateByBo(WmsBonusPoolBo bo);
+
+ /**
+ * 校验并批量删除奖金池信息
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
diff --git a/klp-wms/src/main/java/com/klp/service/IWmsPostCoeffConfigService.java b/klp-wms/src/main/java/com/klp/service/IWmsPostCoeffConfigService.java
new file mode 100644
index 00000000..23614d9e
--- /dev/null
+++ b/klp-wms/src/main/java/com/klp/service/IWmsPostCoeffConfigService.java
@@ -0,0 +1,49 @@
+package com.klp.service;
+
+import com.klp.domain.WmsPostCoeffConfig;
+import com.klp.domain.vo.WmsPostCoeffConfigVo;
+import com.klp.domain.bo.WmsPostCoeffConfigBo;
+import com.klp.common.core.page.TableDataInfo;
+import com.klp.common.core.domain.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 岗位系数配置Service接口
+ *
+ * @author klp
+ * @date 2026-05-07
+ */
+public interface IWmsPostCoeffConfigService {
+
+ /**
+ * 查询岗位系数配置
+ */
+ WmsPostCoeffConfigVo queryById(Long configId);
+
+ /**
+ * 查询岗位系数配置列表
+ */
+ TableDataInfo queryPageList(WmsPostCoeffConfigBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询岗位系数配置列表
+ */
+ List queryList(WmsPostCoeffConfigBo bo);
+
+ /**
+ * 新增岗位系数配置
+ */
+ Boolean insertByBo(WmsPostCoeffConfigBo bo);
+
+ /**
+ * 修改岗位系数配置
+ */
+ Boolean updateByBo(WmsPostCoeffConfigBo bo);
+
+ /**
+ * 校验并批量删除岗位系数配置信息
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsBonusConfigServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsBonusConfigServiceImpl.java
new file mode 100644
index 00000000..ec575242
--- /dev/null
+++ b/klp-wms/src/main/java/com/klp/service/impl/WmsBonusConfigServiceImpl.java
@@ -0,0 +1,117 @@
+package com.klp.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.klp.common.core.page.TableDataInfo;
+import com.klp.common.core.domain.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.klp.common.utils.StringUtils;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import com.klp.domain.bo.WmsBonusConfigBo;
+import com.klp.domain.vo.WmsBonusConfigVo;
+import com.klp.domain.WmsBonusConfig;
+import com.klp.mapper.WmsBonusConfigMapper;
+import com.klp.service.IWmsBonusConfigService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 奖金分配Service业务层处理
+ *
+ * @author klp
+ * @date 2026-05-07
+ */
+@RequiredArgsConstructor
+@Service
+public class WmsBonusConfigServiceImpl implements IWmsBonusConfigService {
+
+ private final WmsBonusConfigMapper baseMapper;
+
+ /**
+ * 查询奖金分配
+ */
+ @Override
+ public WmsBonusConfigVo queryById(Long configId){
+ return baseMapper.selectVoById(configId);
+ }
+
+ /**
+ * 查询奖金分配列表
+ */
+ @Override
+ public TableDataInfo queryPageList(WmsBonusConfigBo bo, PageQuery pageQuery) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ Page result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+ return TableDataInfo.build(result);
+ }
+
+ /**
+ * 查询奖金分配列表
+ */
+ @Override
+ public List queryList(WmsBonusConfigBo bo) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ return baseMapper.selectVoList(lqw);
+ }
+
+ private LambdaQueryWrapper buildQueryWrapper(WmsBonusConfigBo bo) {
+ Map params = bo.getParams();
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.eq(bo.getPoolId() != null, WmsBonusConfig::getPoolId, bo.getPoolId());
+ lqw.eq(bo.getEmpId() != null, WmsBonusConfig::getEmpId, bo.getEmpId());
+ lqw.like(StringUtils.isNotBlank(bo.getEmpName()), WmsBonusConfig::getEmpName, bo.getEmpName());
+ lqw.like(StringUtils.isNotBlank(bo.getPostName()), WmsBonusConfig::getPostName, bo.getPostName());
+ lqw.eq(bo.getDutyCoeff() != null, WmsBonusConfig::getDutyCoeff, bo.getDutyCoeff());
+ lqw.eq(bo.getBaseCoeff() != null, WmsBonusConfig::getBaseCoeff, bo.getBaseCoeff());
+ lqw.eq(bo.getAdjustCoeff() != null, WmsBonusConfig::getAdjustCoeff, bo.getAdjustCoeff());
+ lqw.eq(bo.getAllocBase() != null, WmsBonusConfig::getAllocBase, bo.getAllocBase());
+ lqw.eq(bo.getBonusAmount() != null, WmsBonusConfig::getBonusAmount, bo.getBonusAmount());
+ return lqw;
+ }
+
+ /**
+ * 新增奖金分配
+ */
+ @Override
+ public Boolean insertByBo(WmsBonusConfigBo bo) {
+ WmsBonusConfig add = BeanUtil.toBean(bo, WmsBonusConfig.class);
+ validEntityBeforeSave(add);
+ boolean flag = baseMapper.insert(add) > 0;
+ if (flag) {
+ bo.setConfigId(add.getConfigId());
+ }
+ return flag;
+ }
+
+ /**
+ * 修改奖金分配
+ */
+ @Override
+ public Boolean updateByBo(WmsBonusConfigBo bo) {
+ WmsBonusConfig update = BeanUtil.toBean(bo, WmsBonusConfig.class);
+ validEntityBeforeSave(update);
+ return baseMapper.updateById(update) > 0;
+ }
+
+ /**
+ * 保存前的数据校验
+ */
+ private void validEntityBeforeSave(WmsBonusConfig entity){
+ //TODO 做一些数据校验,如唯一约束
+ }
+
+ /**
+ * 批量删除奖金分配
+ */
+ @Override
+ public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) {
+ if(isValid){
+ //TODO 做一些业务上的校验,判断是否需要校验
+ }
+ return baseMapper.deleteBatchIds(ids) > 0;
+ }
+}
diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsBonusPoolServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsBonusPoolServiceImpl.java
new file mode 100644
index 00000000..3e45b800
--- /dev/null
+++ b/klp-wms/src/main/java/com/klp/service/impl/WmsBonusPoolServiceImpl.java
@@ -0,0 +1,111 @@
+package com.klp.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.klp.common.core.page.TableDataInfo;
+import com.klp.common.core.domain.PageQuery;
+import com.klp.common.utils.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import com.klp.domain.bo.WmsBonusPoolBo;
+import com.klp.domain.vo.WmsBonusPoolVo;
+import com.klp.domain.WmsBonusPool;
+import com.klp.mapper.WmsBonusPoolMapper;
+import com.klp.service.IWmsBonusPoolService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 奖金池Service业务层处理
+ *
+ * @author klp
+ * @date 2026-05-07
+ */
+@RequiredArgsConstructor
+@Service
+public class WmsBonusPoolServiceImpl implements IWmsBonusPoolService {
+
+ private final WmsBonusPoolMapper baseMapper;
+
+ /**
+ * 查询奖金池
+ */
+ @Override
+ public WmsBonusPoolVo queryById(Long poolId){
+ return baseMapper.selectVoById(poolId);
+ }
+
+ /**
+ * 查询奖金池列表
+ */
+ @Override
+ public TableDataInfo queryPageList(WmsBonusPoolBo bo, PageQuery pageQuery) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ Page result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+ return TableDataInfo.build(result);
+ }
+
+ /**
+ * 查询奖金池列表
+ */
+ @Override
+ public List queryList(WmsBonusPoolBo bo) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ return baseMapper.selectVoList(lqw);
+ }
+
+ private LambdaQueryWrapper buildQueryWrapper(WmsBonusPoolBo bo) {
+ Map params = bo.getParams();
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.eq(StringUtils.isNotBlank(bo.getProductionLine()), WmsBonusPool::getProductionLine, bo.getProductionLine());
+ lqw.eq(bo.getBonusTime() != null, WmsBonusPool::getBonusTime, bo.getBonusTime());
+ lqw.eq(bo.getTotalBonus() != null, WmsBonusPool::getTotalBonus, bo.getTotalBonus());
+ return lqw;
+ }
+
+ /**
+ * 新增奖金池
+ */
+ @Override
+ public Boolean insertByBo(WmsBonusPoolBo bo) {
+ WmsBonusPool add = BeanUtil.toBean(bo, WmsBonusPool.class);
+ validEntityBeforeSave(add);
+ boolean flag = baseMapper.insert(add) > 0;
+ if (flag) {
+ bo.setPoolId(add.getPoolId());
+ }
+ return flag;
+ }
+
+ /**
+ * 修改奖金池
+ */
+ @Override
+ public Boolean updateByBo(WmsBonusPoolBo bo) {
+ WmsBonusPool update = BeanUtil.toBean(bo, WmsBonusPool.class);
+ validEntityBeforeSave(update);
+ return baseMapper.updateById(update) > 0;
+ }
+
+ /**
+ * 保存前的数据校验
+ */
+ private void validEntityBeforeSave(WmsBonusPool entity){
+ //TODO 做一些数据校验,如唯一约束
+ }
+
+ /**
+ * 批量删除奖金池
+ */
+ @Override
+ public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) {
+ if(isValid){
+ //TODO 做一些业务上的校验,判断是否需要校验
+ }
+ return baseMapper.deleteBatchIds(ids) > 0;
+ }
+}
diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java
index 8bcb3f4c..758bfbc0 100644
--- a/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java
+++ b/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java
@@ -45,11 +45,9 @@ import java.io.IOException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.text.SimpleDateFormat;
-import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
-import org.apache.poi.ss.usermodel.*;
-import org.apache.poi.ss.util.CellRangeAddress;
-import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+
+import com.alibaba.excel.EasyExcel;
/**
* 钢卷物料表Service业务层处理
@@ -5333,7 +5331,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
" GROUP BY coil_id" +
") t2 ON t1.coil_id = t2.coil_id AND t1.create_time = t2.max_time " +
"WHERE t1.del_flag = '0' AND t1.rejudge_reason IS NOT NULL";
-
+
List