diff --git a/klp-admin/pom.xml b/klp-admin/pom.xml index 08c5aa7c2..676b77b58 100644 --- a/klp-admin/pom.xml +++ b/klp-admin/pom.xml @@ -146,6 +146,12 @@ klp-pltcm + + + com.klp + klp-perf + + org.springframework.boot spring-boot-starter-test diff --git a/klp-crm/src/main/java/com/klp/crm/controller/CrmOrderController.java b/klp-crm/src/main/java/com/klp/crm/controller/CrmOrderController.java index 0630ab031..002a2e3ec 100644 --- a/klp-crm/src/main/java/com/klp/crm/controller/CrmOrderController.java +++ b/klp-crm/src/main/java/com/klp/crm/controller/CrmOrderController.java @@ -1,10 +1,13 @@ package com.klp.crm.controller; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; import java.util.Arrays; import java.util.Date; +import java.util.stream.Collectors; +import cn.hutool.core.bean.BeanUtil; import com.klp.aps.domain.bo.ApsPlanDetailBo; import com.klp.aps.domain.bo.ApsPlanSheetBo; import lombok.RequiredArgsConstructor; @@ -23,6 +26,7 @@ import com.klp.common.core.validate.EditGroup; import com.klp.common.enums.BusinessType; import com.klp.common.utils.poi.ExcelUtil; import com.klp.crm.domain.vo.CrmOrderVo; +import com.klp.crm.domain.vo.CrmOrderExportVo; import com.klp.crm.domain.bo.CrmOrderBo; import com.klp.crm.service.ICrmOrderService; import com.klp.common.core.page.TableDataInfo; @@ -65,6 +69,35 @@ public class CrmOrderController extends BaseController { ExcelUtil.exportExcel(list, "正式订单主", CrmOrderVo.class, response); } + /** + * 导出正式订单主列表(业务精简字段,用于合同编辑详情页导出) + */ + @Log(title = "正式订单主", businessType = BusinessType.EXPORT) + @PostMapping("/exportDetail") + public void exportDetail(@RequestBody CrmOrderBo bo, HttpServletResponse response) { + List list = iCrmOrderService.queryList(bo); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + List exportList = list.stream().map(vo -> { + CrmOrderExportVo export = new CrmOrderExportVo(); + BeanUtil.copyProperties(vo, export); + // 日期格式化 + export.setSignTime(vo.getSignTime() != null ? sdf.format(vo.getSignTime()) : null); + export.setDeliveryDate(vo.getDeliveryDate() != null ? sdf.format(vo.getDeliveryDate()) : null); + // 状态转文本 + if (vo.getStatus() != null) { + switch (vo.getStatus().intValue()) { + case 0: export.setStatus("草稿"); break; + case 1: export.setStatus("已生效"); break; + case 2: export.setStatus("已作废"); break; + case 3: export.setStatus("已完成"); break; + default: export.setStatus(String.valueOf(vo.getStatus())); break; + } + } + return export; + }).collect(Collectors.toList()); + ExcelUtil.exportExcel(exportList, "合同编辑详情", CrmOrderExportVo.class, response); + } + /** * 获取正式订单主详细信息 * diff --git a/klp-crm/src/main/java/com/klp/crm/controller/CrmOrderItemController.java b/klp-crm/src/main/java/com/klp/crm/controller/CrmOrderItemController.java index e18d2f75b..610aaedbd 100644 --- a/klp-crm/src/main/java/com/klp/crm/controller/CrmOrderItemController.java +++ b/klp-crm/src/main/java/com/klp/crm/controller/CrmOrderItemController.java @@ -1,7 +1,11 @@ package com.klp.crm.controller; +import java.text.SimpleDateFormat; import java.util.List; import java.util.Arrays; +import java.util.stream.Collectors; + +import cn.hutool.core.bean.BeanUtil; import lombok.RequiredArgsConstructor; import javax.servlet.http.HttpServletResponse; @@ -18,6 +22,7 @@ import com.klp.common.core.validate.EditGroup; import com.klp.common.enums.BusinessType; import com.klp.common.utils.poi.ExcelUtil; import com.klp.crm.domain.vo.CrmOrderItemVo; +import com.klp.crm.domain.vo.CrmOrderItemExportVo; import com.klp.crm.domain.vo.CrmContractOrderFinanceVo; import com.klp.crm.domain.bo.CrmOrderItemBo; import com.klp.crm.service.ICrmOrderItemService; @@ -56,6 +61,30 @@ public class CrmOrderItemController extends BaseController { ExcelUtil.exportExcel(list, "正式订单明细", CrmOrderItemVo.class, response); } + /** + * 导出正式订单明细列表(业务精简字段,用于订单明细列表页导出) + */ + @Log(title = "正式订单明细", businessType = BusinessType.EXPORT) + @PostMapping("/exportDetail") + public void exportDetail(@RequestBody CrmOrderItemBo bo, HttpServletResponse response) { + List list = iCrmOrderItemService.queryList(bo); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + List exportList = list.stream().map(vo -> { + CrmOrderItemExportVo export = new CrmOrderItemExportVo(); + BeanUtil.copyProperties(vo, export); + // 日期格式化 + export.setSignTime(vo.getSignTime() != null ? sdf.format(vo.getSignTime()) : null); + // 展平 orderInfo 中的 salesman、orderCode、contractName + if (vo.getOrderInfo() != null) { + export.setSalesman(vo.getOrderInfo().getSalesman()); + export.setOrderCode(vo.getOrderInfo().getOrderCode()); + export.setContractName(vo.getOrderInfo().getContractName()); + } + return export; + }).collect(Collectors.toList()); + ExcelUtil.exportExcel(exportList, "订单明细列表", CrmOrderItemExportVo.class, response); + } + /** * 获取正式订单明细详细信息 * diff --git a/klp-crm/src/main/java/com/klp/crm/domain/vo/CrmOrderExportVo.java b/klp-crm/src/main/java/com/klp/crm/domain/vo/CrmOrderExportVo.java new file mode 100644 index 000000000..5fe801d0d --- /dev/null +++ b/klp-crm/src/main/java/com/klp/crm/domain/vo/CrmOrderExportVo.java @@ -0,0 +1,76 @@ +package com.klp.crm.domain.vo; + +import java.math.BigDecimal; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +/** + * 合同编辑详情导出视图对象 + * 仅包含页面表格展示的业务字段(19列) + * + * @author klp + * @date 2026-07-06 + */ +@Data +@ExcelIgnoreUnannotated +public class CrmOrderExportVo { + + @ExcelProperty(value = "合同号") + private String contractCode; + + @ExcelProperty(value = "供方") + private String supplier; + + @ExcelProperty(value = "需方") + private String customer; + + @ExcelProperty(value = "业务员") + private String salesman; + + @ExcelProperty(value = "签订日期") + private String signTime; + + @ExcelProperty(value = "交货日期") + private String deliveryDate; + + @ExcelProperty(value = "签订地点") + private String signLocation; + + @ExcelProperty(value = "供方地址") + private String supplierAddress; + + @ExcelProperty(value = "供方电话") + private String supplierPhone; + + @ExcelProperty(value = "供方开户行") + private String supplierBank; + + @ExcelProperty(value = "供方账号") + private String supplierAccount; + + @ExcelProperty(value = "需方地址") + private String customerAddress; + + @ExcelProperty(value = "需方电话") + private String customerPhone; + + @ExcelProperty(value = "需方开户行") + private String customerBank; + + @ExcelProperty(value = "需方账号") + private String customerAccount; + + @ExcelProperty(value = "订单金额") + private BigDecimal orderAmount; + + @ExcelProperty(value = "已收款") + private BigDecimal receivedAmount; + + @ExcelProperty(value = "状态") + private String status; + + @ExcelProperty(value = "备注") + private String remark; +} diff --git a/klp-crm/src/main/java/com/klp/crm/domain/vo/CrmOrderItemExportVo.java b/klp-crm/src/main/java/com/klp/crm/domain/vo/CrmOrderItemExportVo.java new file mode 100644 index 000000000..82c1248c3 --- /dev/null +++ b/klp-crm/src/main/java/com/klp/crm/domain/vo/CrmOrderItemExportVo.java @@ -0,0 +1,127 @@ +package com.klp.crm.domain.vo; + +import java.math.BigDecimal; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +/** + * 订单明细列表导出视图对象 + * 仅包含页面表格展示的业务字段(32列) + * + * @author klp + * @date 2026-07-06 + */ +@Data +@ExcelIgnoreUnannotated +public class CrmOrderItemExportVo { + + // ========== 合同信息(联表) ========== + + @ExcelProperty(value = "合同号") + private String contractCode; + + @ExcelProperty(value = "合同名称") + private String contractName; + + @ExcelProperty(value = "需方") + private String customer; + + @ExcelProperty(value = "供方") + private String supplier; + + @ExcelProperty(value = "业务员") + private String salesman; + + @ExcelProperty(value = "签订时间") + private String signTime; + + @ExcelProperty(value = "订单编号") + private String orderCode; + + // ========== 明细标识 ========== + + @ExcelProperty(value = "明细ID") + private Long itemId; + + @ExcelProperty(value = "订单ID") + private Long orderId; + + // ========== 产品规格 ========== + + @ExcelProperty(value = "产品类型") + private String productType; + + @ExcelProperty(value = "原料规格") + private String rawMaterialSpec; + + @ExcelProperty(value = "成品规格") + private String finishedProductSpec; + + @ExcelProperty(value = "数量") + private Long productNum; + + @ExcelProperty(value = "材质") + private String material; + + @ExcelProperty(value = "等级") + private String grade; + + @ExcelProperty(value = "宽度") + private String width; + + @ExcelProperty(value = "厚度") + private String thickness; + + @ExcelProperty(value = "宽度公差") + private String widthTolerance; + + @ExcelProperty(value = "厚度公差") + private String thicknessTolerance; + + @ExcelProperty(value = "重量") + private BigDecimal weight; + + // ========== 价格 ========== + + @ExcelProperty(value = "合同定价") + private BigDecimal contractPrice; + + @ExcelProperty(value = "明细金额") + private BigDecimal itemAmount; + + // ========== 加工要求 ========== + + @ExcelProperty(value = "表面处理") + private String surfaceTreatment; + + @ExcelProperty(value = "包装要求") + private String packagingReq; + + @ExcelProperty(value = "切边要求") + private String edgeCuttingReq; + + @ExcelProperty(value = "表面质量") + private String surfaceQuality; + + // ========== 其他 ========== + + @ExcelProperty(value = "特殊要求") + private String specialRequire; + + @ExcelProperty(value = "用途") + private String purpose; + + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty(value = "定制人") + private String customizer; + + @ExcelProperty(value = "发货人") + private String shipper; + + @ExcelProperty(value = "排产批次") + private String productionBatch; +} diff --git a/klp-crm/src/main/java/com/klp/crm/domain/vo/CrmOrderItemVo.java b/klp-crm/src/main/java/com/klp/crm/domain/vo/CrmOrderItemVo.java index d0a5da630..06900d0e9 100644 --- a/klp-crm/src/main/java/com/klp/crm/domain/vo/CrmOrderItemVo.java +++ b/klp-crm/src/main/java/com/klp/crm/domain/vo/CrmOrderItemVo.java @@ -234,6 +234,12 @@ public class CrmOrderItemVo { @ExcelProperty(value = "交货日期") private Date deliveryDate; + /** + * 销售员(联表查询直接映射) + */ + @ExcelProperty(value = "销售员") + private String salesman; + /** * 订单信息 */ diff --git a/klp-crm/src/main/java/com/klp/crm/service/impl/CrmOrderItemServiceImpl.java b/klp-crm/src/main/java/com/klp/crm/service/impl/CrmOrderItemServiceImpl.java index 9a493a3d2..d6a6d6346 100644 --- a/klp-crm/src/main/java/com/klp/crm/service/impl/CrmOrderItemServiceImpl.java +++ b/klp-crm/src/main/java/com/klp/crm/service/impl/CrmOrderItemServiceImpl.java @@ -168,7 +168,11 @@ public class CrmOrderItemServiceImpl implements ICrmOrderItemService { Map orderMap = orderList.stream() .collect(Collectors.toMap(CrmOrderVo::getOrderId, o -> o, (a, b) -> a)); for (CrmOrderItemVo item : records) { - item.setOrderInfo(orderMap.get(item.getOrderId())); + CrmOrderVo order = orderMap.get(item.getOrderId()); + item.setOrderInfo(order); + if (order != null) { + item.setSalesman(order.getSalesman()); + } } } diff --git a/klp-crm/src/main/resources/mapper/CrmOrderItemMapper.xml b/klp-crm/src/main/resources/mapper/CrmOrderItemMapper.xml index 040882f6a..0c8e425d4 100644 --- a/klp-crm/src/main/resources/mapper/CrmOrderItemMapper.xml +++ b/klp-crm/src/main/resources/mapper/CrmOrderItemMapper.xml @@ -74,6 +74,7 @@ + @@ -155,7 +156,8 @@ o.supplier, o.customer, o.sign_time, - o.delivery_date + o.delivery_date, + o.salesman FROM crm_order_item i LEFT JOIN crm_order o ON i.order_id = o.order_id AND o.del_flag = 0 diff --git a/klp-perf/pom.xml b/klp-perf/pom.xml new file mode 100644 index 000000000..383f73a92 --- /dev/null +++ b/klp-perf/pom.xml @@ -0,0 +1,28 @@ + + + + klp-oa + com.klp + 0.8.3 + + 4.0.0 + + klp-perf + + + 性能管理模块 + + + + + + + com.klp + klp-common + + + + + diff --git a/klp-perf/src/main/java/com/klp/perf/controller/PerfAppraisalController.java b/klp-perf/src/main/java/com/klp/perf/controller/PerfAppraisalController.java new file mode 100644 index 000000000..6904fc9e3 --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/controller/PerfAppraisalController.java @@ -0,0 +1,99 @@ +package com.klp.perf.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.perf.domain.vo.PerfAppraisalVo; +import com.klp.perf.domain.bo.PerfAppraisalBo; +import com.klp.perf.service.IPerfAppraisalService; +import com.klp.common.core.page.TableDataInfo; + +/** + * 月度绩效考核记录 + * + * @author klp + * @date 2026-07-07 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/perf/appraisal") +public class PerfAppraisalController extends BaseController { + + private final IPerfAppraisalService iPerfAppraisalService; + + /** + * 查询月度绩效考核记录列表 + */ + @GetMapping("/list") + public TableDataInfo list(PerfAppraisalBo bo, PageQuery pageQuery) { + return iPerfAppraisalService.queryPageList(bo, pageQuery); + } + + /** + * 导出月度绩效考核记录列表 + */ + @Log(title = "月度绩效考核记录", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(PerfAppraisalBo bo, HttpServletResponse response) { + List list = iPerfAppraisalService.queryList(bo); + ExcelUtil.exportExcel(list, "月度绩效考核记录", PerfAppraisalVo.class, response); + } + + /** + * 获取月度绩效考核记录详细信息 + * + * @param id 主键 + */ + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(iPerfAppraisalService.queryById(id)); + } + + /** + * 新增月度绩效考核记录 + */ + @Log(title = "月度绩效考核记录", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody PerfAppraisalBo bo) { + return toAjax(iPerfAppraisalService.insertByBo(bo)); + } + + /** + * 修改月度绩效考核记录 + */ + @Log(title = "月度绩效考核记录", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody PerfAppraisalBo bo) { + return toAjax(iPerfAppraisalService.updateByBo(bo)); + } + + /** + * 删除月度绩效考核记录 + * + * @param ids 主键串 + */ + @Log(title = "月度绩效考核记录", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(iPerfAppraisalService.deleteWithValidByIds(Arrays.asList(ids), true)); + } +} diff --git a/klp-perf/src/main/java/com/klp/perf/controller/PerfAppraisalDetailController.java b/klp-perf/src/main/java/com/klp/perf/controller/PerfAppraisalDetailController.java new file mode 100644 index 000000000..d35b90601 --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/controller/PerfAppraisalDetailController.java @@ -0,0 +1,99 @@ +package com.klp.perf.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.perf.domain.vo.PerfAppraisalDetailVo; +import com.klp.perf.domain.bo.PerfAppraisalDetailBo; +import com.klp.perf.service.IPerfAppraisalDetailService; +import com.klp.common.core.page.TableDataInfo; + +/** + * 考核维度评分明细 + * + * @author klp + * @date 2026-07-07 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/perf/appraisalDetail") +public class PerfAppraisalDetailController extends BaseController { + + private final IPerfAppraisalDetailService iPerfAppraisalDetailService; + + /** + * 查询考核维度评分明细列表 + */ + @GetMapping("/list") + public TableDataInfo list(PerfAppraisalDetailBo bo, PageQuery pageQuery) { + return iPerfAppraisalDetailService.queryPageList(bo, pageQuery); + } + + /** + * 导出考核维度评分明细列表 + */ + @Log(title = "考核维度评分明细", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(PerfAppraisalDetailBo bo, HttpServletResponse response) { + List list = iPerfAppraisalDetailService.queryList(bo); + ExcelUtil.exportExcel(list, "考核维度评分明细", PerfAppraisalDetailVo.class, response); + } + + /** + * 获取考核维度评分明细详细信息 + * + * @param id 主键 + */ + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(iPerfAppraisalDetailService.queryById(id)); + } + + /** + * 新增考核维度评分明细 + */ + @Log(title = "考核维度评分明细", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody PerfAppraisalDetailBo bo) { + return toAjax(iPerfAppraisalDetailService.insertByBo(bo)); + } + + /** + * 修改考核维度评分明细 + */ + @Log(title = "考核维度评分明细", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody PerfAppraisalDetailBo bo) { + return toAjax(iPerfAppraisalDetailService.updateByBo(bo)); + } + + /** + * 删除考核维度评分明细 + * + * @param ids 主键串 + */ + @Log(title = "考核维度评分明细", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(iPerfAppraisalDetailService.deleteWithValidByIds(Arrays.asList(ids), true)); + } +} diff --git a/klp-perf/src/main/java/com/klp/perf/controller/PerfCoeffRangeController.java b/klp-perf/src/main/java/com/klp/perf/controller/PerfCoeffRangeController.java new file mode 100644 index 000000000..1cc520bc8 --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/controller/PerfCoeffRangeController.java @@ -0,0 +1,99 @@ +package com.klp.perf.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.perf.domain.vo.PerfCoeffRangeVo; +import com.klp.perf.domain.bo.PerfCoeffRangeBo; +import com.klp.perf.service.IPerfCoeffRangeService; +import com.klp.common.core.page.TableDataInfo; + +/** + * 绩效系数换算 + * + * @author klp + * @date 2026-07-07 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/perf/coeffRange") +public class PerfCoeffRangeController extends BaseController { + + private final IPerfCoeffRangeService iPerfCoeffRangeService; + + /** + * 查询绩效系数换算列表 + */ + @GetMapping("/list") + public TableDataInfo list(PerfCoeffRangeBo bo, PageQuery pageQuery) { + return iPerfCoeffRangeService.queryPageList(bo, pageQuery); + } + + /** + * 导出绩效系数换算列表 + */ + @Log(title = "绩效系数换算", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(PerfCoeffRangeBo bo, HttpServletResponse response) { + List list = iPerfCoeffRangeService.queryList(bo); + ExcelUtil.exportExcel(list, "绩效系数换算", PerfCoeffRangeVo.class, response); + } + + /** + * 获取绩效系数换算详细信息 + * + * @param id 主键 + */ + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(iPerfCoeffRangeService.queryById(id)); + } + + /** + * 新增绩效系数换算 + */ + @Log(title = "绩效系数换算", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody PerfCoeffRangeBo bo) { + return toAjax(iPerfCoeffRangeService.insertByBo(bo)); + } + + /** + * 修改绩效系数换算 + */ + @Log(title = "绩效系数换算", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody PerfCoeffRangeBo bo) { + return toAjax(iPerfCoeffRangeService.updateByBo(bo)); + } + + /** + * 删除绩效系数换算 + * + * @param ids 主键串 + */ + @Log(title = "绩效系数换算", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(iPerfCoeffRangeService.deleteWithValidByIds(Arrays.asList(ids), true)); + } +} diff --git a/klp-perf/src/main/java/com/klp/perf/controller/PerfDeptConfigController.java b/klp-perf/src/main/java/com/klp/perf/controller/PerfDeptConfigController.java new file mode 100644 index 000000000..5ed8a8b9e --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/controller/PerfDeptConfigController.java @@ -0,0 +1,99 @@ +package com.klp.perf.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.perf.domain.vo.PerfDeptConfigVo; +import com.klp.perf.domain.bo.PerfDeptConfigBo; +import com.klp.perf.service.IPerfDeptConfigService; +import com.klp.common.core.page.TableDataInfo; + +/** + * 车间考核参数配置 + * + * @author klp + * @date 2026-07-07 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/perf/deptConfig") +public class PerfDeptConfigController extends BaseController { + + private final IPerfDeptConfigService iPerfDeptConfigService; + + /** + * 查询车间考核参数配置列表 + */ + @GetMapping("/list") + public TableDataInfo list(PerfDeptConfigBo bo, PageQuery pageQuery) { + return iPerfDeptConfigService.queryPageList(bo, pageQuery); + } + + /** + * 导出车间考核参数配置列表 + */ + @Log(title = "车间考核参数配置", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(PerfDeptConfigBo bo, HttpServletResponse response) { + List list = iPerfDeptConfigService.queryList(bo); + ExcelUtil.exportExcel(list, "车间考核参数配置", PerfDeptConfigVo.class, response); + } + + /** + * 获取车间考核参数配置详细信息 + * + * @param id 主键 + */ + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(iPerfDeptConfigService.queryById(id)); + } + + /** + * 新增车间考核参数配置 + */ + @Log(title = "车间考核参数配置", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody PerfDeptConfigBo bo) { + return toAjax(iPerfDeptConfigService.insertByBo(bo)); + } + + /** + * 修改车间考核参数配置 + */ + @Log(title = "车间考核参数配置", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody PerfDeptConfigBo bo) { + return toAjax(iPerfDeptConfigService.updateByBo(bo)); + } + + /** + * 删除车间考核参数配置 + * + * @param ids 主键串 + */ + @Log(title = "车间考核参数配置", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(iPerfDeptConfigService.deleteWithValidByIds(Arrays.asList(ids), true)); + } +} diff --git a/klp-perf/src/main/java/com/klp/perf/controller/PerfDeptController.java b/klp-perf/src/main/java/com/klp/perf/controller/PerfDeptController.java new file mode 100644 index 000000000..b58b43dee --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/controller/PerfDeptController.java @@ -0,0 +1,99 @@ +package com.klp.perf.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.perf.domain.vo.PerfDeptVo; +import com.klp.perf.domain.bo.PerfDeptBo; +import com.klp.perf.service.IPerfDeptService; +import com.klp.common.core.page.TableDataInfo; + +/** + * 绩效系统部门 + * + * @author klp + * @date 2026-07-07 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/perf/dept") +public class PerfDeptController extends BaseController { + + private final IPerfDeptService iPerfDeptService; + + /** + * 查询绩效系统部门列表 + */ + @GetMapping("/list") + public TableDataInfo list(PerfDeptBo bo, PageQuery pageQuery) { + return iPerfDeptService.queryPageList(bo, pageQuery); + } + + /** + * 导出绩效系统部门列表 + */ + @Log(title = "绩效系统部门", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(PerfDeptBo bo, HttpServletResponse response) { + List list = iPerfDeptService.queryList(bo); + ExcelUtil.exportExcel(list, "绩效系统部门", PerfDeptVo.class, response); + } + + /** + * 获取绩效系统部门详细信息 + * + * @param id 主键 + */ + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(iPerfDeptService.queryById(id)); + } + + /** + * 新增绩效系统部门 + */ + @Log(title = "绩效系统部门", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody PerfDeptBo bo) { + return toAjax(iPerfDeptService.insertByBo(bo)); + } + + /** + * 修改绩效系统部门 + */ + @Log(title = "绩效系统部门", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody PerfDeptBo bo) { + return toAjax(iPerfDeptService.updateByBo(bo)); + } + + /** + * 删除绩效系统部门 + * + * @param ids 主键串 + */ + @Log(title = "绩效系统部门", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(iPerfDeptService.deleteWithValidByIds(Arrays.asList(ids), true)); + } +} diff --git a/klp-perf/src/main/java/com/klp/perf/controller/PerfDeptItemConfigController.java b/klp-perf/src/main/java/com/klp/perf/controller/PerfDeptItemConfigController.java new file mode 100644 index 000000000..9e632b78b --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/controller/PerfDeptItemConfigController.java @@ -0,0 +1,99 @@ +package com.klp.perf.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.perf.domain.vo.PerfDeptItemConfigVo; +import com.klp.perf.domain.bo.PerfDeptItemConfigBo; +import com.klp.perf.service.IPerfDeptItemConfigService; +import com.klp.common.core.page.TableDataInfo; + +/** + * 车间扣款/奖励项目配置 + * + * @author klp + * @date 2026-07-07 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/perf/deptItemConfig") +public class PerfDeptItemConfigController extends BaseController { + + private final IPerfDeptItemConfigService iPerfDeptItemConfigService; + + /** + * 查询车间扣款/奖励项目配置列表 + */ + @GetMapping("/list") + public TableDataInfo list(PerfDeptItemConfigBo bo, PageQuery pageQuery) { + return iPerfDeptItemConfigService.queryPageList(bo, pageQuery); + } + + /** + * 导出车间扣款/奖励项目配置列表 + */ + @Log(title = "车间扣款/奖励项目配置", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(PerfDeptItemConfigBo bo, HttpServletResponse response) { + List list = iPerfDeptItemConfigService.queryList(bo); + ExcelUtil.exportExcel(list, "车间扣款/奖励项目配置", PerfDeptItemConfigVo.class, response); + } + + /** + * 获取车间扣款/奖励项目配置详细信息 + * + * @param id 主键 + */ + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(iPerfDeptItemConfigService.queryById(id)); + } + + /** + * 新增车间扣款/奖励项目配置 + */ + @Log(title = "车间扣款/奖励项目配置", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody PerfDeptItemConfigBo bo) { + return toAjax(iPerfDeptItemConfigService.insertByBo(bo)); + } + + /** + * 修改车间扣款/奖励项目配置 + */ + @Log(title = "车间扣款/奖励项目配置", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody PerfDeptItemConfigBo bo) { + return toAjax(iPerfDeptItemConfigService.updateByBo(bo)); + } + + /** + * 删除车间扣款/奖励项目配置 + * + * @param ids 主键串 + */ + @Log(title = "车间扣款/奖励项目配置", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(iPerfDeptItemConfigService.deleteWithValidByIds(Arrays.asList(ids), true)); + } +} diff --git a/klp-perf/src/main/java/com/klp/perf/controller/PerfDeptSummaryController.java b/klp-perf/src/main/java/com/klp/perf/controller/PerfDeptSummaryController.java new file mode 100644 index 000000000..609c40ea5 --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/controller/PerfDeptSummaryController.java @@ -0,0 +1,99 @@ +package com.klp.perf.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.perf.domain.vo.PerfDeptSummaryVo; +import com.klp.perf.domain.bo.PerfDeptSummaryBo; +import com.klp.perf.service.IPerfDeptSummaryService; +import com.klp.common.core.page.TableDataInfo; + +/** + * 车间月度汇总 + * + * @author klp + * @date 2026-07-07 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/perf/deptSummary") +public class PerfDeptSummaryController extends BaseController { + + private final IPerfDeptSummaryService iPerfDeptSummaryService; + + /** + * 查询车间月度汇总列表 + */ + @GetMapping("/list") + public TableDataInfo list(PerfDeptSummaryBo bo, PageQuery pageQuery) { + return iPerfDeptSummaryService.queryPageList(bo, pageQuery); + } + + /** + * 导出车间月度汇总列表 + */ + @Log(title = "车间月度汇总", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(PerfDeptSummaryBo bo, HttpServletResponse response) { + List list = iPerfDeptSummaryService.queryList(bo); + ExcelUtil.exportExcel(list, "车间月度汇总", PerfDeptSummaryVo.class, response); + } + + /** + * 获取车间月度汇总详细信息 + * + * @param id 主键 + */ + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(iPerfDeptSummaryService.queryById(id)); + } + + /** + * 新增车间月度汇总 + */ + @Log(title = "车间月度汇总", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody PerfDeptSummaryBo bo) { + return toAjax(iPerfDeptSummaryService.insertByBo(bo)); + } + + /** + * 修改车间月度汇总 + */ + @Log(title = "车间月度汇总", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody PerfDeptSummaryBo bo) { + return toAjax(iPerfDeptSummaryService.updateByBo(bo)); + } + + /** + * 删除车间月度汇总 + * + * @param ids 主键串 + */ + @Log(title = "车间月度汇总", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(iPerfDeptSummaryService.deleteWithValidByIds(Arrays.asList(ids), true)); + } +} diff --git a/klp-perf/src/main/java/com/klp/perf/controller/PerfEmployeeInfoController.java b/klp-perf/src/main/java/com/klp/perf/controller/PerfEmployeeInfoController.java new file mode 100644 index 000000000..5d18464cc --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/controller/PerfEmployeeInfoController.java @@ -0,0 +1,99 @@ +package com.klp.perf.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.perf.domain.vo.PerfEmployeeInfoVo; +import com.klp.perf.domain.bo.PerfEmployeeInfoBo; +import com.klp.perf.service.IPerfEmployeeInfoService; +import com.klp.common.core.page.TableDataInfo; + +/** + * 员工绩效薪资基本信息 + * + * @author klp + * @date 2026-07-07 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/perf/employeeInfo") +public class PerfEmployeeInfoController extends BaseController { + + private final IPerfEmployeeInfoService iPerfEmployeeInfoService; + + /** + * 查询员工绩效薪资基本信息列表 + */ + @GetMapping("/list") + public TableDataInfo list(PerfEmployeeInfoBo bo, PageQuery pageQuery) { + return iPerfEmployeeInfoService.queryPageList(bo, pageQuery); + } + + /** + * 导出员工绩效薪资基本信息列表 + */ + @Log(title = "员工绩效薪资基本信息", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(PerfEmployeeInfoBo bo, HttpServletResponse response) { + List list = iPerfEmployeeInfoService.queryList(bo); + ExcelUtil.exportExcel(list, "员工绩效薪资基本信息", PerfEmployeeInfoVo.class, response); + } + + /** + * 获取员工绩效薪资基本信息详细信息 + * + * @param id 主键 + */ + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(iPerfEmployeeInfoService.queryById(id)); + } + + /** + * 新增员工绩效薪资基本信息 + */ + @Log(title = "员工绩效薪资基本信息", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody PerfEmployeeInfoBo bo) { + return toAjax(iPerfEmployeeInfoService.insertByBo(bo)); + } + + /** + * 修改员工绩效薪资基本信息 + */ + @Log(title = "员工绩效薪资基本信息", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody PerfEmployeeInfoBo bo) { + return toAjax(iPerfEmployeeInfoService.updateByBo(bo)); + } + + /** + * 删除员工绩效薪资基本信息 + * + * @param ids 主键串 + */ + @Log(title = "员工绩效薪资基本信息", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(iPerfEmployeeInfoService.deleteWithValidByIds(Arrays.asList(ids), true)); + } +} diff --git a/klp-perf/src/main/java/com/klp/perf/controller/PerfPositionTemplateController.java b/klp-perf/src/main/java/com/klp/perf/controller/PerfPositionTemplateController.java new file mode 100644 index 000000000..9a266bb7d --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/controller/PerfPositionTemplateController.java @@ -0,0 +1,99 @@ +package com.klp.perf.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.perf.domain.vo.PerfPositionTemplateVo; +import com.klp.perf.domain.bo.PerfPositionTemplateBo; +import com.klp.perf.service.IPerfPositionTemplateService; +import com.klp.common.core.page.TableDataInfo; + +/** + * 岗位绩效考核模板 + * + * @author klp + * @date 2026-07-07 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/perf/positionTemplate") +public class PerfPositionTemplateController extends BaseController { + + private final IPerfPositionTemplateService iPerfPositionTemplateService; + + /** + * 查询岗位绩效考核模板列表 + */ + @GetMapping("/list") + public TableDataInfo list(PerfPositionTemplateBo bo, PageQuery pageQuery) { + return iPerfPositionTemplateService.queryPageList(bo, pageQuery); + } + + /** + * 导出岗位绩效考核模板列表 + */ + @Log(title = "岗位绩效考核模板", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(PerfPositionTemplateBo bo, HttpServletResponse response) { + List list = iPerfPositionTemplateService.queryList(bo); + ExcelUtil.exportExcel(list, "岗位绩效考核模板", PerfPositionTemplateVo.class, response); + } + + /** + * 获取岗位绩效考核模板详细信息 + * + * @param id 主键 + */ + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(iPerfPositionTemplateService.queryById(id)); + } + + /** + * 新增岗位绩效考核模板 + */ + @Log(title = "岗位绩效考核模板", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody PerfPositionTemplateBo bo) { + return toAjax(iPerfPositionTemplateService.insertByBo(bo)); + } + + /** + * 修改岗位绩效考核模板 + */ + @Log(title = "岗位绩效考核模板", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody PerfPositionTemplateBo bo) { + return toAjax(iPerfPositionTemplateService.updateByBo(bo)); + } + + /** + * 删除岗位绩效考核模板 + * + * @param ids 主键串 + */ + @Log(title = "岗位绩效考核模板", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(iPerfPositionTemplateService.deleteWithValidByIds(Arrays.asList(ids), true)); + } +} diff --git a/klp-perf/src/main/java/com/klp/perf/controller/PerfSalaryController.java b/klp-perf/src/main/java/com/klp/perf/controller/PerfSalaryController.java new file mode 100644 index 000000000..55d783204 --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/controller/PerfSalaryController.java @@ -0,0 +1,99 @@ +package com.klp.perf.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.perf.domain.vo.PerfSalaryVo; +import com.klp.perf.domain.bo.PerfSalaryBo; +import com.klp.perf.service.IPerfSalaryService; +import com.klp.common.core.page.TableDataInfo; + +/** + * 月度薪资计算记录 + * + * @author klp + * @date 2026-07-07 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/perf/salary") +public class PerfSalaryController extends BaseController { + + private final IPerfSalaryService iPerfSalaryService; + + /** + * 查询月度薪资计算记录列表 + */ + @GetMapping("/list") + public TableDataInfo list(PerfSalaryBo bo, PageQuery pageQuery) { + return iPerfSalaryService.queryPageList(bo, pageQuery); + } + + /** + * 导出月度薪资计算记录列表 + */ + @Log(title = "月度薪资计算记录", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(PerfSalaryBo bo, HttpServletResponse response) { + List list = iPerfSalaryService.queryList(bo); + ExcelUtil.exportExcel(list, "月度薪资计算记录", PerfSalaryVo.class, response); + } + + /** + * 获取月度薪资计算记录详细信息 + * + * @param id 主键 + */ + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(iPerfSalaryService.queryById(id)); + } + + /** + * 新增月度薪资计算记录 + */ + @Log(title = "月度薪资计算记录", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody PerfSalaryBo bo) { + return toAjax(iPerfSalaryService.insertByBo(bo)); + } + + /** + * 修改月度薪资计算记录 + */ + @Log(title = "月度薪资计算记录", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody PerfSalaryBo bo) { + return toAjax(iPerfSalaryService.updateByBo(bo)); + } + + /** + * 删除月度薪资计算记录 + * + * @param ids 主键串 + */ + @Log(title = "月度薪资计算记录", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(iPerfSalaryService.deleteWithValidByIds(Arrays.asList(ids), true)); + } +} diff --git a/klp-perf/src/main/java/com/klp/perf/controller/PerfTemplateDimensionController.java b/klp-perf/src/main/java/com/klp/perf/controller/PerfTemplateDimensionController.java new file mode 100644 index 000000000..5298ae3ba --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/controller/PerfTemplateDimensionController.java @@ -0,0 +1,99 @@ +package com.klp.perf.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.perf.domain.vo.PerfTemplateDimensionVo; +import com.klp.perf.domain.bo.PerfTemplateDimensionBo; +import com.klp.perf.service.IPerfTemplateDimensionService; +import com.klp.common.core.page.TableDataInfo; + +/** + * 考核维度明细 + * + * @author klp + * @date 2026-07-07 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/perf/templateDimension") +public class PerfTemplateDimensionController extends BaseController { + + private final IPerfTemplateDimensionService iPerfTemplateDimensionService; + + /** + * 查询考核维度明细列表 + */ + @GetMapping("/list") + public TableDataInfo list(PerfTemplateDimensionBo bo, PageQuery pageQuery) { + return iPerfTemplateDimensionService.queryPageList(bo, pageQuery); + } + + /** + * 导出考核维度明细列表 + */ + @Log(title = "考核维度明细", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(PerfTemplateDimensionBo bo, HttpServletResponse response) { + List list = iPerfTemplateDimensionService.queryList(bo); + ExcelUtil.exportExcel(list, "考核维度明细", PerfTemplateDimensionVo.class, response); + } + + /** + * 获取考核维度明细详细信息 + * + * @param id 主键 + */ + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(iPerfTemplateDimensionService.queryById(id)); + } + + /** + * 新增考核维度明细 + */ + @Log(title = "考核维度明细", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody PerfTemplateDimensionBo bo) { + return toAjax(iPerfTemplateDimensionService.insertByBo(bo)); + } + + /** + * 修改考核维度明细 + */ + @Log(title = "考核维度明细", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody PerfTemplateDimensionBo bo) { + return toAjax(iPerfTemplateDimensionService.updateByBo(bo)); + } + + /** + * 删除考核维度明细 + * + * @param ids 主键串 + */ + @Log(title = "考核维度明细", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(iPerfTemplateDimensionService.deleteWithValidByIds(Arrays.asList(ids), true)); + } +} diff --git a/klp-perf/src/main/java/com/klp/perf/domain/PerfAppraisal.java b/klp-perf/src/main/java/com/klp/perf/domain/PerfAppraisal.java new file mode 100644 index 000000000..26083df80 --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/domain/PerfAppraisal.java @@ -0,0 +1,92 @@ +package com.klp.perf.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; + +/** + * 月度绩效考核记录对象 perf_appraisal + * + * @author klp + * @date 2026-07-07 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("perf_appraisal") +public class PerfAppraisal extends BaseEntity { + + private static final long serialVersionUID=1L; + + /** + * + */ + @TableId(value = "id") + private Long id; + /** + * 关联现有员工表主键 + */ + private Long employeeId; + /** + * 关联 perf_dept.id + */ + private Long deptId; + /** + * 关联 perf_position_template.id (当月使用的模板) + */ + private Long templateId; + /** + * 考核周期 YYYY-MM + */ + private String period; + /** + * 加权得分 = SUM(维度得分) + */ + private BigDecimal weightedScore; + /** + * 总加分 + */ + private BigDecimal bonusScore; + /** + * 总扣分 + */ + private BigDecimal penaltyScore; + /** + * 最终得分 = MIN(120, 加权得分+加分-扣分) + */ + private BigDecimal finalScore; + /** + * 评级 S/A/B/C/D + */ + private String grade; + /** + * 绩效系数(线性插值换算,自动同步到岗位系数) + */ + private BigDecimal perfCoeff; + /** + * 0=草稿 1=已确认 2=已归档 + */ + private Long status; + /** + * + */ + private Date confirmedAt; + /** + * 确认人 + */ + private Long confirmedBy; + /** + * 删除标志(0=正常,1=已删除) + */ + @TableLogic + private Integer delFlag; + /** + * 备注 + */ + private String remark; + +} diff --git a/klp-perf/src/main/java/com/klp/perf/domain/PerfAppraisalDetail.java b/klp-perf/src/main/java/com/klp/perf/domain/PerfAppraisalDetail.java new file mode 100644 index 000000000..78cc67259 --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/domain/PerfAppraisalDetail.java @@ -0,0 +1,86 @@ +package com.klp.perf.domain; + +import com.baomidou.mybatisplus.annotation.*; +import com.klp.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; + +/** + * 考核维度评分明细对象 perf_appraisal_detail + * + * @author klp + * @date 2026-07-07 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("perf_appraisal_detail") +public class PerfAppraisalDetail extends BaseEntity { + + private static final long serialVersionUID=1L; + + /** + * + */ + @TableId(value = "id") + private Long id; + /** + * 关联 perf_appraisal.id + */ + private Long appraisalId; + /** + * 关联 perf_template_dimension.id + */ + private Long dimensionId; + /** + * 序号(从模板快照) + */ + private String seq; + /** + * 维度名称(从模板快照) + */ + private String dimName; + /** + * 权重(从模板快照) + */ + private String weight; + /** + * 目标值(可覆盖模板默认值) + */ + private String targetValue; + /** + * 实际值(考核人填写) + */ + private String actualValue; + /** + * 维度得分(公式计算) + */ + private BigDecimal dimScore; + /** + * 本维度额外加分 + */ + private BigDecimal bonus; + /** + * 本维度额外扣分 + */ + private BigDecimal penalty; + /** + * 评分公式(从模板快照) + */ + private String scoreFormula; + /** + * 评分规则(从模板快照) + */ + private String scoreRule; + /** + * 删除标志(0=正常,1=已删除) + */ + @TableLogic + private Integer delFlag; + /** + * 备注 + */ + private String remark; + +} diff --git a/klp-perf/src/main/java/com/klp/perf/domain/PerfCoeffRange.java b/klp-perf/src/main/java/com/klp/perf/domain/PerfCoeffRange.java new file mode 100644 index 000000000..f81c5f5c8 --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/domain/PerfCoeffRange.java @@ -0,0 +1,66 @@ +package com.klp.perf.domain; + +import com.baomidou.mybatisplus.annotation.*; +import com.klp.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; + +/** + * 绩效系数换算对象 perf_coeff_range + * + * @author klp + * @date 2026-07-07 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("perf_coeff_range") +public class PerfCoeffRange extends BaseEntity { + + private static final long serialVersionUID=1L; + + /** + * 主键 + */ + @TableId(value = "id") + private Long id; + /** + * 等级标识 S/A/B/C/D + */ + private String grade; + /** + * 等级名称 卓越/优秀/合格/待改进/不合格 + */ + private String gradeLabel; + /** + * 得分下限(含) + */ + private BigDecimal scoreMin; + /** + * 得分上限(含) + */ + private BigDecimal scoreMax; + /** + * 最低绩效系数 + */ + private BigDecimal coeffMin; + /** + * 最高绩效系数 + */ + private BigDecimal coeffMax; + /** + * 排序(高→低) + */ + private Long sortOrder; + /** + * 删除标志(0=正常,1=已删除) + */ + @TableLogic + private Integer delFlag; + /** + * 备注 + */ + private String remark; + +} diff --git a/klp-perf/src/main/java/com/klp/perf/domain/PerfDept.java b/klp-perf/src/main/java/com/klp/perf/domain/PerfDept.java new file mode 100644 index 000000000..105cb377d --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/domain/PerfDept.java @@ -0,0 +1,53 @@ +package com.klp.perf.domain; + +import com.baomidou.mybatisplus.annotation.*; +import com.klp.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + + +/** + * 绩效系统部门对象 perf_dept + * + * @author klp + * @date 2026-07-07 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("perf_dept") +public class PerfDept extends BaseEntity { + + private static final long serialVersionUID=1L; + + /** + * 主键 + */ + @TableId(value = "id") + private Long id; + /** + * 部门/车间名称 如:酸轧车间/技术部 + */ + private String deptName; + /** + * 排序 + */ + private Long orderNum; + /** + * 是否有保底薪资模式 0=否 1=是 + */ + private Integer hasBaoSalary; + /** + * 状态(0正常 1停用) + */ + private String status; + /** + * 删除标志(0=正常 1=已删除) + */ + @TableLogic + private Integer delFlag; + /** + * 备注 + */ + private String remark; + +} diff --git a/klp-perf/src/main/java/com/klp/perf/domain/PerfDeptConfig.java b/klp-perf/src/main/java/com/klp/perf/domain/PerfDeptConfig.java new file mode 100644 index 000000000..67b813bf5 --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/domain/PerfDeptConfig.java @@ -0,0 +1,83 @@ +package com.klp.perf.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; + +/** + * 车间考核参数配置对象 perf_dept_config + * + * @author klp + * @date 2026-07-07 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("perf_dept_config") +public class PerfDeptConfig extends BaseEntity { + + private static final long serialVersionUID=1L; + + /** + * + */ + @TableId(value = "id") + private Long id; + /** + * 关联 perf_dept.id + */ + private Long deptId; + /** + * 月产量目标(吨) 或 月产长度目标(m) + */ + private BigDecimal monthlyProductionTarget; + /** + * 产量单位: 吨 / m + */ + private String productionUnit; + /** + * 绩效吨钢(元) 或 绩效米钢(元) + */ + private BigDecimal perfUnitPrice; + /** + * 生产班数 + */ + private Long productionShifts; + /** + * 停机保底班数 + */ + private Long guaranteedShifts; + /** + * 车间系数(默认1.0) + */ + private BigDecimal deptCoeff; + /** + * 薪资模式: 0=普通模式 1=保底模式(hasBaoSalary) + */ + private Long salaryMode; + /** + * 保底薪资除数(底薪÷60=保底每班金额) + */ + private Long baseDivisor; + /** + * 月份 + */ + private Date month; + /** + * + */ + private String remark; + /** + * + */ + private Date createdAt; + /** + * + */ + private Date updatedAt; + +} diff --git a/klp-perf/src/main/java/com/klp/perf/domain/PerfDeptItemConfig.java b/klp-perf/src/main/java/com/klp/perf/domain/PerfDeptItemConfig.java new file mode 100644 index 000000000..aa42a22f1 --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/domain/PerfDeptItemConfig.java @@ -0,0 +1,63 @@ +package com.klp.perf.domain; + +import com.baomidou.mybatisplus.annotation.*; +import com.klp.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; + +/** + * 车间扣款/奖励项目配置对象 perf_dept_item_config + * + * @author klp + * @date 2026-07-07 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("perf_dept_item_config") +public class PerfDeptItemConfig extends BaseEntity { + + private static final long serialVersionUID=1L; + + /** + * + */ + @TableId(value = "id") + private Long id; + /** + * 关联 perf_dept.id + */ + private Long deptId; + /** + * 类型: 1=扣款项目 2=奖励项目 + */ + private Long itemType; + /** + * 项目名称 如:质量扣款/节能奖励 + */ + private String itemName; + /** + * + */ + private Long sortOrder; + /** + * 月份 + */ + private Date month; + /** + * + */ + private Long isEnabled; + /** + * 删除标志(0=正常,1=已删除) + */ + @TableLogic + private Integer delFlag; + /** + * 备注 + */ + private String remark; + +} diff --git a/klp-perf/src/main/java/com/klp/perf/domain/PerfDeptSummary.java b/klp-perf/src/main/java/com/klp/perf/domain/PerfDeptSummary.java new file mode 100644 index 000000000..8bd930cf0 --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/domain/PerfDeptSummary.java @@ -0,0 +1,102 @@ +package com.klp.perf.domain; + +import com.baomidou.mybatisplus.annotation.*; +import com.klp.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; + +/** + * 车间月度汇总对象 perf_dept_summary + * + * @author klp + * @date 2026-07-07 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("perf_dept_summary") +public class PerfDeptSummary extends BaseEntity { + + private static final long serialVersionUID=1L; + + /** + * + */ + @TableId(value = "id") + private Long id; + /** + * 关联 perf_dept.id + */ + private Long deptId; + /** + * 周期 YYYY-MM + */ + private String period; + /** + * 总人数 + */ + private Long totalEmployees; + /** + * 系数总计(所有人员总系数之和) + */ + private BigDecimal totalCoeffSum; + /** + * 平均考核得分 + */ + private BigDecimal avgPerfScore; + /** + * 平均绩效系数 + */ + private BigDecimal avgPerfCoeff; + /** + * 底薪合计 + */ + private BigDecimal totalBaseSalary; + /** + * 月度绩效工资合计 + */ + private BigDecimal totalPerfWage; + /** + * 扣款合计 + */ + private BigDecimal totalDeductions; + /** + * 奖励合计 + */ + private BigDecimal totalBonuses; + /** + * 其他合计 + */ + private BigDecimal totalOther; + /** + * 实领薪资合计 + */ + private BigDecimal totalActualSalary; + /** + * 人均实领薪资 + */ + private BigDecimal avgActualSalary; + /** + * 当月实际产量 + */ + private BigDecimal monthlyProduction; + /** + * 系数单价(自动计算) = 月产量×绩效吨钢/系数总计 + */ + private BigDecimal unitPrice; + /** + * 0=草稿 1=已确认 + */ + private Long status; + /** + * 删除标志(0=正常,1=已删除) + */ + @TableLogic + private Integer delFlag; + /** + * 备注 + */ + private String remark; + +} diff --git a/klp-perf/src/main/java/com/klp/perf/domain/PerfEmployeeInfo.java b/klp-perf/src/main/java/com/klp/perf/domain/PerfEmployeeInfo.java new file mode 100644 index 000000000..64d05d1f7 --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/domain/PerfEmployeeInfo.java @@ -0,0 +1,66 @@ +package com.klp.perf.domain; + +import com.baomidou.mybatisplus.annotation.*; +import com.klp.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; + +/** + * 员工绩效薪资基本信息对象 perf_employee_info + * + * @author klp + * @date 2026-07-07 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("perf_employee_info") +public class PerfEmployeeInfo extends BaseEntity { + + private static final long serialVersionUID=1L; + + /** + * + */ + @TableId(value = "id") + private Long id; + /** + * 关联现有员工表主键 + */ + private Long employeeId; + /** + * 关联 perf_dept.id (冗余,便于按部门查询) + */ + private Long deptId; + /** + * 岗位/工种 + */ + private String positionName; + /** + * 底薪(元) + */ + private BigDecimal baseSalary; + /** + * 岗位绩效基数(元), 默认≈底薪×20% + */ + private BigDecimal perfBase; + /** + * 默认岗位系数(初始值,后续月度由绩效自动覆盖) + */ + private BigDecimal posCoeffDefault; + /** + * 是否在职 1=在职 0=离职 + */ + private Long isActive; + /** + * 删除标志(0=正常,1=已删除) + */ + @TableLogic + private Integer delFlag; + /** + * 备注 + */ + private String remark; + +} diff --git a/klp-perf/src/main/java/com/klp/perf/domain/PerfPositionTemplate.java b/klp-perf/src/main/java/com/klp/perf/domain/PerfPositionTemplate.java new file mode 100644 index 000000000..5f15b47b5 --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/domain/PerfPositionTemplate.java @@ -0,0 +1,53 @@ +package com.klp.perf.domain; + +import com.baomidou.mybatisplus.annotation.*; +import com.klp.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + + +/** + * 岗位绩效考核模板对象 perf_position_template + * + * @author klp + * @date 2026-07-07 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("perf_position_template") +public class PerfPositionTemplate extends BaseEntity { + + private static final long serialVersionUID=1L; + + /** + * + */ + @TableId(value = "id") + private Long id; + /** + * 关联 perf_dept.id + */ + private Long deptId; + /** + * 岗位名称 (与员工表岗位字段匹配) + */ + private String positionName; + /** + * 模板标题 如:轧机主操绩效考核评分表 + */ + private String title; + /** + * + */ + private Long isEnabled; + /** + * 删除标志(0=正常,1=已删除) + */ + @TableLogic + private Integer delFlag; + /** + * 备注 + */ + private String remark; + +} diff --git a/klp-perf/src/main/java/com/klp/perf/domain/PerfSalary.java b/klp-perf/src/main/java/com/klp/perf/domain/PerfSalary.java new file mode 100644 index 000000000..650c5dcb8 --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/domain/PerfSalary.java @@ -0,0 +1,156 @@ +package com.klp.perf.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; + +/** + * 月度薪资计算记录对象 perf_salary + * + * @author klp + * @date 2026-07-07 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("perf_salary") +public class PerfSalary extends BaseEntity { + + private static final long serialVersionUID=1L; + + /** + * + */ + @TableId(value = "id") + private Long id; + /** + * 关联现有员工表主键 + */ + private Long employeeId; + /** + * 关联 perf_dept.id + */ + private Long deptId; + /** + * 关联 perf_appraisal.id (可为空=未考核) + */ + private Long appraisalId; + /** + * 薪资周期 YYYY-MM + */ + private String period; + /** + * 底薪 + */ + private BigDecimal baseSalary; + /** + * 岗位绩效基数 + */ + private BigDecimal perfBase; + /** + * 考核得分(关联 perf_appraisal.final_score) + */ + private BigDecimal perfScore; + /** + * 绩效系数(得分换算,关联 perf_appraisal.perf_coeff) + */ + private BigDecimal perfCoeff; + /** + * 车间系数(来自 perf_dept_config.dept_coeff) + */ + private BigDecimal deptCoeff; + /** + * 月度绩效工资 = perf_base × perf_coeff × dept_coeff + */ + private BigDecimal perfWage; + /** + * 岗位系数 (=绩效系数,自动同步) + */ + private BigDecimal posCoeff; + /** + * 固定系数 = pos_coeff × 0.7 + */ + private BigDecimal fixedCoeff; + /** + * 可调系数(手动覆盖,默认=pos_coeff×0.3) + */ + private BigDecimal adjCoeff; + /** + * 可调系数是否手动覆盖: 0=自动 1=手动 + */ + private Long adjCoeffManual; + /** + * 总系数 = fixed_coeff + adj_coeff + */ + private BigDecimal totalCoeff; + /** + * 扣款明细 {"质量扣款":0,"倒卷扣款":0,"客诉扣款":0,...} + */ + private String deductionsJson; + /** + * 扣款合计 + */ + private BigDecimal deductionsTotal; + /** + * 奖励明细 {"节能奖励":0,...} + */ + private String bonusesJson; + /** + * 奖励合计 + */ + private BigDecimal bonusesTotal; + /** + * 其他金额 + */ + private BigDecimal otherAmount; + /** + * 实领薪资 = 底薪+月度绩效工资-扣款合计+奖励合计+其他 + */ + private BigDecimal actualSalary; + /** + * 固定系数薪资(参考) = fixed_coeff × 系数单价 + */ + private BigDecimal fixedSalaryRef; + /** + * 可调系数薪资(参考) = adj_coeff × 系数单价 + */ + private BigDecimal adjSalaryRef; + /** + * 保底每班(参考) = base_salary / 60 + */ + private BigDecimal baoPerShiftRef; + /** + * 保底薪资(参考) = bao_per_shift × 保底班数 + */ + private BigDecimal baoSalaryRef; + /** + * 合计薪资(参考) = fixed_salary_ref+adj_salary_ref+bao_salary_ref + */ + private BigDecimal totalSalaryRef; + /** + * 0=草稿 1=已确认 2=已归档 + */ + private Long status; + /** + * + */ + private Date confirmedAt; + /** + * + */ + private Long confirmedBy; + /** + * 删除标志(0=正常,1=已删除) + */ + @TableLogic + private Integer delFlag; + /** + * 备注 + */ + private String remark; + +} diff --git a/klp-perf/src/main/java/com/klp/perf/domain/PerfTemplateDimension.java b/klp-perf/src/main/java/com/klp/perf/domain/PerfTemplateDimension.java new file mode 100644 index 000000000..f87e86d13 --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/domain/PerfTemplateDimension.java @@ -0,0 +1,73 @@ +package com.klp.perf.domain; + +import com.baomidou.mybatisplus.annotation.*; +import com.klp.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + + +/** + * 考核维度明细对象 perf_template_dimension + * + * @author klp + * @date 2026-07-07 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("perf_template_dimension") +public class PerfTemplateDimension extends BaseEntity { + + private static final long serialVersionUID=1L; + + /** + * + */ + @TableId(value = "id") + private Long id; + /** + * 关联 perf_position_template.id + */ + private Long templateId; + /** + * 序号 + */ + private String seq; + /** + * 考核维度 如:产量/质量/安全/检测准确性 + */ + private String dimName; + /** + * 权重 如:40% 或 0.4 + */ + private String weight; + /** + * 量化指标 如:月产量达标率/产品合格率 + */ + private String indicator; + /** + * 目标值 如:≥98% / 100% / 0次 / 达标 + */ + private String targetValue; + /** + * 评分公式 如:=IF(E4>0,25*(F4/E4),0) + */ + private String scoreFormula; + /** + * 评分规则文字描述 + */ + private String scoreRule; + /** + * + */ + private Long isEnabled; + /** + * 删除标志(0=正常,1=已删除) + */ + @TableLogic + private Integer delFlag; + /** + * 备注 + */ + private String remark; + +} diff --git a/klp-perf/src/main/java/com/klp/perf/domain/bo/PerfAppraisalBo.java b/klp-perf/src/main/java/com/klp/perf/domain/bo/PerfAppraisalBo.java new file mode 100644 index 000000000..efb7ff490 --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/domain/bo/PerfAppraisalBo.java @@ -0,0 +1,99 @@ +package com.klp.perf.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; + +/** + * 月度绩效考核记录业务对象 perf_appraisal + * + * @author klp + * @date 2026-07-07 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class PerfAppraisalBo extends BaseEntity { + + /** + * + */ + private Long id; + + /** + * 关联现有员工表主键 + */ + private Long employeeId; + + /** + * 关联 perf_dept.id + */ + private Long deptId; + + /** + * 关联 perf_position_template.id (当月使用的模板) + */ + private Long templateId; + + /** + * 考核周期 YYYY-MM + */ + private String period; + + /** + * 加权得分 = SUM(维度得分) + */ + private BigDecimal weightedScore; + + /** + * 总加分 + */ + private BigDecimal bonusScore; + + /** + * 总扣分 + */ + private BigDecimal penaltyScore; + + /** + * 最终得分 = MIN(120, 加权得分+加分-扣分) + */ + private BigDecimal finalScore; + + /** + * 评级 S/A/B/C/D + */ + private String grade; + + /** + * 绩效系数(线性插值换算,自动同步到岗位系数) + */ + private BigDecimal perfCoeff; + + /** + * 0=草稿 1=已确认 2=已归档 + */ + private Long status; + + /** + * + */ + private Date confirmedAt; + + /** + * 确认人 + */ + private Long confirmedBy; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/klp-perf/src/main/java/com/klp/perf/domain/bo/PerfAppraisalDetailBo.java b/klp-perf/src/main/java/com/klp/perf/domain/bo/PerfAppraisalDetailBo.java new file mode 100644 index 000000000..e565dafc9 --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/domain/bo/PerfAppraisalDetailBo.java @@ -0,0 +1,92 @@ +package com.klp.perf.domain.bo; + +import com.klp.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import javax.validation.constraints.*; + +import java.math.BigDecimal; + +/** + * 考核维度评分明细业务对象 perf_appraisal_detail + * + * @author klp + * @date 2026-07-07 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class PerfAppraisalDetailBo extends BaseEntity { + + /** + * + */ + private Long id; + + /** + * 关联 perf_appraisal.id + */ + private Long appraisalId; + + /** + * 关联 perf_template_dimension.id + */ + private Long dimensionId; + + /** + * 序号(从模板快照) + */ + private String seq; + + /** + * 维度名称(从模板快照) + */ + private String dimName; + + /** + * 权重(从模板快照) + */ + private String weight; + + /** + * 目标值(可覆盖模板默认值) + */ + private String targetValue; + + /** + * 实际值(考核人填写) + */ + private String actualValue; + + /** + * 维度得分(公式计算) + */ + private BigDecimal dimScore; + + /** + * 本维度额外加分 + */ + private BigDecimal bonus; + + /** + * 本维度额外扣分 + */ + private BigDecimal penalty; + + /** + * 评分公式(从模板快照) + */ + private String scoreFormula; + + /** + * 评分规则(从模板快照) + */ + private String scoreRule; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/klp-perf/src/main/java/com/klp/perf/domain/bo/PerfCoeffRangeBo.java b/klp-perf/src/main/java/com/klp/perf/domain/bo/PerfCoeffRangeBo.java new file mode 100644 index 000000000..3ce828ac4 --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/domain/bo/PerfCoeffRangeBo.java @@ -0,0 +1,67 @@ +package com.klp.perf.domain.bo; + +import com.klp.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import javax.validation.constraints.*; + +import java.math.BigDecimal; + +/** + * 绩效系数换算业务对象 perf_coeff_range + * + * @author klp + * @date 2026-07-07 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class PerfCoeffRangeBo extends BaseEntity { + + /** + * 主键 + */ + private Long id; + + /** + * 等级标识 S/A/B/C/D + */ + private String grade; + + /** + * 等级名称 卓越/优秀/合格/待改进/不合格 + */ + private String gradeLabel; + + /** + * 得分下限(含) + */ + private BigDecimal scoreMin; + + /** + * 得分上限(含) + */ + private BigDecimal scoreMax; + + /** + * 最低绩效系数 + */ + private BigDecimal coeffMin; + + /** + * 最高绩效系数 + */ + private BigDecimal coeffMax; + + /** + * 排序(高→低) + */ + private Long sortOrder; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/klp-perf/src/main/java/com/klp/perf/domain/bo/PerfDeptBo.java b/klp-perf/src/main/java/com/klp/perf/domain/bo/PerfDeptBo.java new file mode 100644 index 000000000..aab7b048c --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/domain/bo/PerfDeptBo.java @@ -0,0 +1,51 @@ +package com.klp.perf.domain.bo; + +import com.klp.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import javax.validation.constraints.*; + + +/** + * 绩效系统部门业务对象 perf_dept + * + * @author klp + * @date 2026-07-07 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class PerfDeptBo extends BaseEntity { + + /** + * 主键 + */ + private Long id; + + /** + * 部门/车间名称 如:酸轧车间/技术部 + */ + private String deptName; + + /** + * 排序 + */ + private Long orderNum; + + /** + * 是否有保底薪资模式 0=否 1=是 + */ + private Integer hasBaoSalary; + + /** + * 状态(0正常 1停用) + */ + private String status; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/klp-perf/src/main/java/com/klp/perf/domain/bo/PerfDeptConfigBo.java b/klp-perf/src/main/java/com/klp/perf/domain/bo/PerfDeptConfigBo.java new file mode 100644 index 000000000..442cb4b1b --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/domain/bo/PerfDeptConfigBo.java @@ -0,0 +1,94 @@ +package com.klp.perf.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; + +/** + * 车间考核参数配置业务对象 perf_dept_config + * + * @author klp + * @date 2026-07-07 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class PerfDeptConfigBo extends BaseEntity { + + /** + * + */ + private Long id; + + /** + * 关联 perf_dept.id + */ + private Long deptId; + + /** + * 月产量目标(吨) 或 月产长度目标(m) + */ + private BigDecimal monthlyProductionTarget; + + /** + * 产量单位: 吨 / m + */ + private String productionUnit; + + /** + * 绩效吨钢(元) 或 绩效米钢(元) + */ + private BigDecimal perfUnitPrice; + + /** + * 生产班数 + */ + private Long productionShifts; + + /** + * 停机保底班数 + */ + private Long guaranteedShifts; + + /** + * 车间系数(默认1.0) + */ + private BigDecimal deptCoeff; + + /** + * 薪资模式: 0=普通模式 1=保底模式(hasBaoSalary) + */ + private Long salaryMode; + + /** + * 保底薪资除数(底薪÷60=保底每班金额) + */ + private Long baseDivisor; + + /** + * 月份 + */ + private Date month; + + /** + * + */ + private String remark; + + /** + * + */ + private Date createdAt; + + /** + * + */ + private Date updatedAt; + + +} diff --git a/klp-perf/src/main/java/com/klp/perf/domain/bo/PerfDeptItemConfigBo.java b/klp-perf/src/main/java/com/klp/perf/domain/bo/PerfDeptItemConfigBo.java new file mode 100644 index 000000000..5371efa47 --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/domain/bo/PerfDeptItemConfigBo.java @@ -0,0 +1,63 @@ +package com.klp.perf.domain.bo; + +import com.klp.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import javax.validation.constraints.*; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; + +/** + * 车间扣款/奖励项目配置业务对象 perf_dept_item_config + * + * @author klp + * @date 2026-07-07 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class PerfDeptItemConfigBo extends BaseEntity { + + /** + * + */ + private Long id; + + /** + * 关联 perf_dept.id + */ + private Long deptId; + + /** + * 类型: 1=扣款项目 2=奖励项目 + */ + private Long itemType; + + /** + * 项目名称 如:质量扣款/节能奖励 + */ + private String itemName; + + /** + * + */ + private Long sortOrder; + + /** + * 月份 + */ + private Date month; + + /** + * + */ + private Long isEnabled; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/klp-perf/src/main/java/com/klp/perf/domain/bo/PerfDeptSummaryBo.java b/klp-perf/src/main/java/com/klp/perf/domain/bo/PerfDeptSummaryBo.java new file mode 100644 index 000000000..5c216715e --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/domain/bo/PerfDeptSummaryBo.java @@ -0,0 +1,112 @@ +package com.klp.perf.domain.bo; + +import com.klp.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import javax.validation.constraints.*; + +import java.math.BigDecimal; + +/** + * 车间月度汇总业务对象 perf_dept_summary + * + * @author klp + * @date 2026-07-07 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class PerfDeptSummaryBo extends BaseEntity { + + /** + * + */ + private Long id; + + /** + * 关联 perf_dept.id + */ + private Long deptId; + + /** + * 周期 YYYY-MM + */ + private String period; + + /** + * 总人数 + */ + private Long totalEmployees; + + /** + * 系数总计(所有人员总系数之和) + */ + private BigDecimal totalCoeffSum; + + /** + * 平均考核得分 + */ + private BigDecimal avgPerfScore; + + /** + * 平均绩效系数 + */ + private BigDecimal avgPerfCoeff; + + /** + * 底薪合计 + */ + private BigDecimal totalBaseSalary; + + /** + * 月度绩效工资合计 + */ + private BigDecimal totalPerfWage; + + /** + * 扣款合计 + */ + private BigDecimal totalDeductions; + + /** + * 奖励合计 + */ + private BigDecimal totalBonuses; + + /** + * 其他合计 + */ + private BigDecimal totalOther; + + /** + * 实领薪资合计 + */ + private BigDecimal totalActualSalary; + + /** + * 人均实领薪资 + */ + private BigDecimal avgActualSalary; + + /** + * 当月实际产量 + */ + private BigDecimal monthlyProduction; + + /** + * 系数单价(自动计算) = 月产量×绩效吨钢/系数总计 + */ + private BigDecimal unitPrice; + + /** + * 0=草稿 1=已确认 + */ + private Long status; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/klp-perf/src/main/java/com/klp/perf/domain/bo/PerfEmployeeInfoBo.java b/klp-perf/src/main/java/com/klp/perf/domain/bo/PerfEmployeeInfoBo.java new file mode 100644 index 000000000..ed01261b7 --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/domain/bo/PerfEmployeeInfoBo.java @@ -0,0 +1,67 @@ +package com.klp.perf.domain.bo; + +import com.klp.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import javax.validation.constraints.*; + +import java.math.BigDecimal; + +/** + * 员工绩效薪资基本信息业务对象 perf_employee_info + * + * @author klp + * @date 2026-07-07 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class PerfEmployeeInfoBo extends BaseEntity { + + /** + * + */ + private Long id; + + /** + * 关联现有员工表主键 + */ + private Long employeeId; + + /** + * 关联 perf_dept.id (冗余,便于按部门查询) + */ + private Long deptId; + + /** + * 岗位/工种 + */ + private String positionName; + + /** + * 底薪(元) + */ + private BigDecimal baseSalary; + + /** + * 岗位绩效基数(元), 默认≈底薪×20% + */ + private BigDecimal perfBase; + + /** + * 默认岗位系数(初始值,后续月度由绩效自动覆盖) + */ + private BigDecimal posCoeffDefault; + + /** + * 是否在职 1=在职 0=离职 + */ + private Long isActive; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/klp-perf/src/main/java/com/klp/perf/domain/bo/PerfPositionTemplateBo.java b/klp-perf/src/main/java/com/klp/perf/domain/bo/PerfPositionTemplateBo.java new file mode 100644 index 000000000..766ffaeab --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/domain/bo/PerfPositionTemplateBo.java @@ -0,0 +1,51 @@ +package com.klp.perf.domain.bo; + +import com.klp.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import javax.validation.constraints.*; + + +/** + * 岗位绩效考核模板业务对象 perf_position_template + * + * @author klp + * @date 2026-07-07 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class PerfPositionTemplateBo extends BaseEntity { + + /** + * + */ + private Long id; + + /** + * 关联 perf_dept.id + */ + private Long deptId; + + /** + * 岗位名称 (与员工表岗位字段匹配) + */ + private String positionName; + + /** + * 模板标题 如:轧机主操绩效考核评分表 + */ + private String title; + + /** + * + */ + private Long isEnabled; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/klp-perf/src/main/java/com/klp/perf/domain/bo/PerfSalaryBo.java b/klp-perf/src/main/java/com/klp/perf/domain/bo/PerfSalaryBo.java new file mode 100644 index 000000000..81db7bf20 --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/domain/bo/PerfSalaryBo.java @@ -0,0 +1,179 @@ +package com.klp.perf.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; + +/** + * 月度薪资计算记录业务对象 perf_salary + * + * @author klp + * @date 2026-07-07 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class PerfSalaryBo extends BaseEntity { + + /** + * + */ + private Long id; + + /** + * 关联现有员工表主键 + */ + private Long employeeId; + + /** + * 关联 perf_dept.id + */ + private Long deptId; + + /** + * 关联 perf_appraisal.id (可为空=未考核) + */ + private Long appraisalId; + + /** + * 薪资周期 YYYY-MM + */ + private String period; + + /** + * 底薪 + */ + private BigDecimal baseSalary; + + /** + * 岗位绩效基数 + */ + private BigDecimal perfBase; + + /** + * 考核得分(关联 perf_appraisal.final_score) + */ + private BigDecimal perfScore; + + /** + * 绩效系数(得分换算,关联 perf_appraisal.perf_coeff) + */ + private BigDecimal perfCoeff; + + /** + * 车间系数(来自 perf_dept_config.dept_coeff) + */ + private BigDecimal deptCoeff; + + /** + * 月度绩效工资 = perf_base × perf_coeff × dept_coeff + */ + private BigDecimal perfWage; + + /** + * 岗位系数 (=绩效系数,自动同步) + */ + private BigDecimal posCoeff; + + /** + * 固定系数 = pos_coeff × 0.7 + */ + private BigDecimal fixedCoeff; + + /** + * 可调系数(手动覆盖,默认=pos_coeff×0.3) + */ + private BigDecimal adjCoeff; + + /** + * 可调系数是否手动覆盖: 0=自动 1=手动 + */ + private Long adjCoeffManual; + + /** + * 总系数 = fixed_coeff + adj_coeff + */ + private BigDecimal totalCoeff; + + /** + * 扣款明细 {"质量扣款":0,"倒卷扣款":0,"客诉扣款":0,...} + */ + private String deductionsJson; + + /** + * 扣款合计 + */ + private BigDecimal deductionsTotal; + + /** + * 奖励明细 {"节能奖励":0,...} + */ + private String bonusesJson; + + /** + * 奖励合计 + */ + private BigDecimal bonusesTotal; + + /** + * 其他金额 + */ + private BigDecimal otherAmount; + + /** + * 实领薪资 = 底薪+月度绩效工资-扣款合计+奖励合计+其他 + */ + private BigDecimal actualSalary; + + /** + * 固定系数薪资(参考) = fixed_coeff × 系数单价 + */ + private BigDecimal fixedSalaryRef; + + /** + * 可调系数薪资(参考) = adj_coeff × 系数单价 + */ + private BigDecimal adjSalaryRef; + + /** + * 保底每班(参考) = base_salary / 60 + */ + private BigDecimal baoPerShiftRef; + + /** + * 保底薪资(参考) = bao_per_shift × 保底班数 + */ + private BigDecimal baoSalaryRef; + + /** + * 合计薪资(参考) = fixed_salary_ref+adj_salary_ref+bao_salary_ref + */ + private BigDecimal totalSalaryRef; + + /** + * 0=草稿 1=已确认 2=已归档 + */ + private Long status; + + /** + * + */ + private Date confirmedAt; + + /** + * + */ + private Long confirmedBy; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/klp-perf/src/main/java/com/klp/perf/domain/bo/PerfTemplateDimensionBo.java b/klp-perf/src/main/java/com/klp/perf/domain/bo/PerfTemplateDimensionBo.java new file mode 100644 index 000000000..a33ada3a8 --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/domain/bo/PerfTemplateDimensionBo.java @@ -0,0 +1,76 @@ +package com.klp.perf.domain.bo; + +import com.klp.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import javax.validation.constraints.*; + + +/** + * 考核维度明细业务对象 perf_template_dimension + * + * @author klp + * @date 2026-07-07 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class PerfTemplateDimensionBo extends BaseEntity { + + /** + * + */ + private Long id; + + /** + * 关联 perf_position_template.id + */ + private Long templateId; + + /** + * 序号 + */ + private String seq; + + /** + * 考核维度 如:产量/质量/安全/检测准确性 + */ + private String dimName; + + /** + * 权重 如:40% 或 0.4 + */ + private String weight; + + /** + * 量化指标 如:月产量达标率/产品合格率 + */ + private String indicator; + + /** + * 目标值 如:≥98% / 100% / 0次 / 达标 + */ + private String targetValue; + + /** + * 评分公式 如:=IF(E4>0,25*(F4/E4),0) + */ + private String scoreFormula; + + /** + * 评分规则文字描述 + */ + private String scoreRule; + + /** + * + */ + private Long isEnabled; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/klp-perf/src/main/java/com/klp/perf/domain/vo/PerfAppraisalDetailVo.java b/klp-perf/src/main/java/com/klp/perf/domain/vo/PerfAppraisalDetailVo.java new file mode 100644 index 000000000..d7a624a4f --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/domain/vo/PerfAppraisalDetailVo.java @@ -0,0 +1,108 @@ +package com.klp.perf.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; + + +/** + * 考核维度评分明细视图对象 perf_appraisal_detail + * + * @author klp + * @date 2026-07-07 + */ +@Data +@ExcelIgnoreUnannotated +public class PerfAppraisalDetailVo { + + private static final long serialVersionUID = 1L; + + /** + * + */ + @ExcelProperty(value = "") + private Long id; + + /** + * 关联 perf_appraisal.id + */ + @ExcelProperty(value = "关联 perf_appraisal.id") + private Long appraisalId; + + /** + * 关联 perf_template_dimension.id + */ + @ExcelProperty(value = "关联 perf_template_dimension.id") + private Long dimensionId; + + /** + * 序号(从模板快照) + */ + @ExcelProperty(value = "序号(从模板快照)") + private String seq; + + /** + * 维度名称(从模板快照) + */ + @ExcelProperty(value = "维度名称(从模板快照)") + private String dimName; + + /** + * 权重(从模板快照) + */ + @ExcelProperty(value = "权重(从模板快照)") + private String weight; + + /** + * 目标值(可覆盖模板默认值) + */ + @ExcelProperty(value = "目标值(可覆盖模板默认值)") + private String targetValue; + + /** + * 实际值(考核人填写) + */ + @ExcelProperty(value = "实际值(考核人填写)") + private String actualValue; + + /** + * 维度得分(公式计算) + */ + @ExcelProperty(value = "维度得分(公式计算)") + private BigDecimal dimScore; + + /** + * 本维度额外加分 + */ + @ExcelProperty(value = "本维度额外加分") + private BigDecimal bonus; + + /** + * 本维度额外扣分 + */ + @ExcelProperty(value = "本维度额外扣分") + private BigDecimal penalty; + + /** + * 评分公式(从模板快照) + */ + @ExcelProperty(value = "评分公式(从模板快照)") + private String scoreFormula; + + /** + * 评分规则(从模板快照) + */ + @ExcelProperty(value = "评分规则(从模板快照)") + private String scoreRule; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/klp-perf/src/main/java/com/klp/perf/domain/vo/PerfAppraisalVo.java b/klp-perf/src/main/java/com/klp/perf/domain/vo/PerfAppraisalVo.java new file mode 100644 index 000000000..08d565adf --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/domain/vo/PerfAppraisalVo.java @@ -0,0 +1,116 @@ +package com.klp.perf.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; + + +/** + * 月度绩效考核记录视图对象 perf_appraisal + * + * @author klp + * @date 2026-07-07 + */ +@Data +@ExcelIgnoreUnannotated +public class PerfAppraisalVo { + + private static final long serialVersionUID = 1L; + + /** + * + */ + @ExcelProperty(value = "") + private Long id; + + /** + * 关联现有员工表主键 + */ + @ExcelProperty(value = "关联现有员工表主键") + private Long employeeId; + + /** + * 关联 perf_dept.id + */ + @ExcelProperty(value = "关联 perf_dept.id") + private Long deptId; + + /** + * 关联 perf_position_template.id (当月使用的模板) + */ + @ExcelProperty(value = "关联 perf_position_template.id (当月使用的模板)") + private Long templateId; + + /** + * 考核周期 YYYY-MM + */ + @ExcelProperty(value = "考核周期 YYYY-MM") + private String period; + + /** + * 加权得分 = SUM(维度得分) + */ + @ExcelProperty(value = "加权得分 = SUM(维度得分)") + private BigDecimal weightedScore; + + /** + * 总加分 + */ + @ExcelProperty(value = "总加分") + private BigDecimal bonusScore; + + /** + * 总扣分 + */ + @ExcelProperty(value = "总扣分") + private BigDecimal penaltyScore; + + /** + * 最终得分 = MIN(120, 加权得分+加分-扣分) + */ + @ExcelProperty(value = "最终得分 = MIN(120, 加权得分+加分-扣分)") + private BigDecimal finalScore; + + /** + * 评级 S/A/B/C/D + */ + @ExcelProperty(value = "评级 S/A/B/C/D") + private String grade; + + /** + * 绩效系数(线性插值换算,自动同步到岗位系数) + */ + @ExcelProperty(value = "绩效系数(线性插值换算,自动同步到岗位系数)") + private BigDecimal perfCoeff; + + /** + * 0=草稿 1=已确认 2=已归档 + */ + @ExcelProperty(value = "0=草稿 1=已确认 2=已归档") + private Long status; + + /** + * + */ + @ExcelProperty(value = "") + private Date confirmedAt; + + /** + * 确认人 + */ + @ExcelProperty(value = "确认人") + private Long confirmedBy; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/klp-perf/src/main/java/com/klp/perf/domain/vo/PerfCoeffRangeVo.java b/klp-perf/src/main/java/com/klp/perf/domain/vo/PerfCoeffRangeVo.java new file mode 100644 index 000000000..2bc9c1e2d --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/domain/vo/PerfCoeffRangeVo.java @@ -0,0 +1,78 @@ +package com.klp.perf.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; + + +/** + * 绩效系数换算视图对象 perf_coeff_range + * + * @author klp + * @date 2026-07-07 + */ +@Data +@ExcelIgnoreUnannotated +public class PerfCoeffRangeVo { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ExcelProperty(value = "主键") + private Long id; + + /** + * 等级标识 S/A/B/C/D + */ + @ExcelProperty(value = "等级标识 S/A/B/C/D") + private String grade; + + /** + * 等级名称 卓越/优秀/合格/待改进/不合格 + */ + @ExcelProperty(value = "等级名称 卓越/优秀/合格/待改进/不合格") + private String gradeLabel; + + /** + * 得分下限(含) + */ + @ExcelProperty(value = "得分下限(含)") + private BigDecimal scoreMin; + + /** + * 得分上限(含) + */ + @ExcelProperty(value = "得分上限(含)") + private BigDecimal scoreMax; + + /** + * 最低绩效系数 + */ + @ExcelProperty(value = "最低绩效系数") + private BigDecimal coeffMin; + + /** + * 最高绩效系数 + */ + @ExcelProperty(value = "最高绩效系数") + private BigDecimal coeffMax; + + /** + * 排序(高→低) + */ + @ExcelProperty(value = "排序(高→低)") + private Long sortOrder; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/klp-perf/src/main/java/com/klp/perf/domain/vo/PerfDeptConfigVo.java b/klp-perf/src/main/java/com/klp/perf/domain/vo/PerfDeptConfigVo.java new file mode 100644 index 000000000..1e1a01a44 --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/domain/vo/PerfDeptConfigVo.java @@ -0,0 +1,110 @@ +package com.klp.perf.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; + + +/** + * 车间考核参数配置视图对象 perf_dept_config + * + * @author klp + * @date 2026-07-07 + */ +@Data +@ExcelIgnoreUnannotated +public class PerfDeptConfigVo { + + private static final long serialVersionUID = 1L; + + /** + * + */ + @ExcelProperty(value = "") + private Long id; + + /** + * 关联 perf_dept.id + */ + @ExcelProperty(value = "关联 perf_dept.id") + private Long deptId; + + /** + * 月产量目标(吨) 或 月产长度目标(m) + */ + @ExcelProperty(value = "月产量目标(吨) 或 月产长度目标(m)") + private BigDecimal monthlyProductionTarget; + + /** + * 产量单位: 吨 / m + */ + @ExcelProperty(value = "产量单位: 吨 / m") + private String productionUnit; + + /** + * 绩效吨钢(元) 或 绩效米钢(元) + */ + @ExcelProperty(value = "绩效吨钢(元) 或 绩效米钢(元)") + private BigDecimal perfUnitPrice; + + /** + * 生产班数 + */ + @ExcelProperty(value = "生产班数") + private Long productionShifts; + + /** + * 停机保底班数 + */ + @ExcelProperty(value = "停机保底班数") + private Long guaranteedShifts; + + /** + * 车间系数(默认1.0) + */ + @ExcelProperty(value = "车间系数(默认1.0)") + private BigDecimal deptCoeff; + + /** + * 薪资模式: 0=普通模式 1=保底模式(hasBaoSalary) + */ + @ExcelProperty(value = "薪资模式: 0=普通模式 1=保底模式(hasBaoSalary)") + private Long salaryMode; + + /** + * 保底薪资除数(底薪÷60=保底每班金额) + */ + @ExcelProperty(value = "保底薪资除数(底薪÷60=保底每班金额)") + private Long baseDivisor; + + /** + * 月份 + */ + @ExcelProperty(value = "月份") + private Date month; + + /** + * + */ + @ExcelProperty(value = "") + private String remark; + + /** + * + */ + @ExcelProperty(value = "") + private Date createdAt; + + /** + * + */ + @ExcelProperty(value = "") + private Date updatedAt; + + +} diff --git a/klp-perf/src/main/java/com/klp/perf/domain/vo/PerfDeptItemConfigVo.java b/klp-perf/src/main/java/com/klp/perf/domain/vo/PerfDeptItemConfigVo.java new file mode 100644 index 000000000..b8be79555 --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/domain/vo/PerfDeptItemConfigVo.java @@ -0,0 +1,73 @@ +package com.klp.perf.domain.vo; + +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; + + +/** + * 车间扣款/奖励项目配置视图对象 perf_dept_item_config + * + * @author klp + * @date 2026-07-07 + */ +@Data +@ExcelIgnoreUnannotated +public class PerfDeptItemConfigVo { + + private static final long serialVersionUID = 1L; + + /** + * + */ + @ExcelProperty(value = "") + private Long id; + + /** + * 关联 perf_dept.id + */ + @ExcelProperty(value = "关联 perf_dept.id") + private Long deptId; + + /** + * 类型: 1=扣款项目 2=奖励项目 + */ + @ExcelProperty(value = "类型: 1=扣款项目 2=奖励项目") + private Long itemType; + + /** + * 项目名称 如:质量扣款/节能奖励 + */ + @ExcelProperty(value = "项目名称 如:质量扣款/节能奖励") + private String itemName; + + /** + * + */ + @ExcelProperty(value = "") + private Long sortOrder; + + /** + * 月份 + */ + @ExcelProperty(value = "月份") + private Date month; + + /** + * + */ + @ExcelProperty(value = "") + private Long isEnabled; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/klp-perf/src/main/java/com/klp/perf/domain/vo/PerfDeptSummaryVo.java b/klp-perf/src/main/java/com/klp/perf/domain/vo/PerfDeptSummaryVo.java new file mode 100644 index 000000000..ede2b56f7 --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/domain/vo/PerfDeptSummaryVo.java @@ -0,0 +1,132 @@ +package com.klp.perf.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; + + +/** + * 车间月度汇总视图对象 perf_dept_summary + * + * @author klp + * @date 2026-07-07 + */ +@Data +@ExcelIgnoreUnannotated +public class PerfDeptSummaryVo { + + private static final long serialVersionUID = 1L; + + /** + * + */ + @ExcelProperty(value = "") + private Long id; + + /** + * 关联 perf_dept.id + */ + @ExcelProperty(value = "关联 perf_dept.id") + private Long deptId; + + /** + * 周期 YYYY-MM + */ + @ExcelProperty(value = "周期 YYYY-MM") + private String period; + + /** + * 总人数 + */ + @ExcelProperty(value = "总人数") + private Long totalEmployees; + + /** + * 系数总计(所有人员总系数之和) + */ + @ExcelProperty(value = "系数总计(所有人员总系数之和)") + private BigDecimal totalCoeffSum; + + /** + * 平均考核得分 + */ + @ExcelProperty(value = "平均考核得分") + private BigDecimal avgPerfScore; + + /** + * 平均绩效系数 + */ + @ExcelProperty(value = "平均绩效系数") + private BigDecimal avgPerfCoeff; + + /** + * 底薪合计 + */ + @ExcelProperty(value = "底薪合计") + private BigDecimal totalBaseSalary; + + /** + * 月度绩效工资合计 + */ + @ExcelProperty(value = "月度绩效工资合计") + private BigDecimal totalPerfWage; + + /** + * 扣款合计 + */ + @ExcelProperty(value = "扣款合计") + private BigDecimal totalDeductions; + + /** + * 奖励合计 + */ + @ExcelProperty(value = "奖励合计") + private BigDecimal totalBonuses; + + /** + * 其他合计 + */ + @ExcelProperty(value = "其他合计") + private BigDecimal totalOther; + + /** + * 实领薪资合计 + */ + @ExcelProperty(value = "实领薪资合计") + private BigDecimal totalActualSalary; + + /** + * 人均实领薪资 + */ + @ExcelProperty(value = "人均实领薪资") + private BigDecimal avgActualSalary; + + /** + * 当月实际产量 + */ + @ExcelProperty(value = "当月实际产量") + private BigDecimal monthlyProduction; + + /** + * 系数单价(自动计算) = 月产量×绩效吨钢/系数总计 + */ + @ExcelProperty(value = "系数单价(自动计算) = 月产量×绩效吨钢/系数总计") + private BigDecimal unitPrice; + + /** + * 0=草稿 1=已确认 + */ + @ExcelProperty(value = "0=草稿 1=已确认") + private Long status; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/klp-perf/src/main/java/com/klp/perf/domain/vo/PerfDeptVo.java b/klp-perf/src/main/java/com/klp/perf/domain/vo/PerfDeptVo.java new file mode 100644 index 000000000..e0f32c0b4 --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/domain/vo/PerfDeptVo.java @@ -0,0 +1,60 @@ +package com.klp.perf.domain.vo; + +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; + + +/** + * 绩效系统部门视图对象 perf_dept + * + * @author klp + * @date 2026-07-07 + */ +@Data +@ExcelIgnoreUnannotated +public class PerfDeptVo { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ExcelProperty(value = "主键") + private Long id; + + /** + * 部门/车间名称 如:酸轧车间/技术部 + */ + @ExcelProperty(value = "部门/车间名称 如:酸轧车间/技术部") + private String deptName; + + /** + * 排序 + */ + @ExcelProperty(value = "排序") + private Long orderNum; + + /** + * 是否有保底薪资模式 0=否 1=是 + */ + @ExcelProperty(value = "是否有保底薪资模式 0=否 1=是") + private Integer hasBaoSalary; + + /** + * 状态(0正常 1停用) + */ + @ExcelProperty(value = "状态", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "0=正常,1=停用") + private String status; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/klp-perf/src/main/java/com/klp/perf/domain/vo/PerfEmployeeInfoVo.java b/klp-perf/src/main/java/com/klp/perf/domain/vo/PerfEmployeeInfoVo.java new file mode 100644 index 000000000..86aa50faa --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/domain/vo/PerfEmployeeInfoVo.java @@ -0,0 +1,78 @@ +package com.klp.perf.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; + + +/** + * 员工绩效薪资基本信息视图对象 perf_employee_info + * + * @author klp + * @date 2026-07-07 + */ +@Data +@ExcelIgnoreUnannotated +public class PerfEmployeeInfoVo { + + private static final long serialVersionUID = 1L; + + /** + * + */ + @ExcelProperty(value = "") + private Long id; + + /** + * 关联现有员工表主键 + */ + @ExcelProperty(value = "关联现有员工表主键") + private Long employeeId; + + /** + * 关联 perf_dept.id (冗余,便于按部门查询) + */ + @ExcelProperty(value = "关联 perf_dept.id (冗余,便于按部门查询)") + private Long deptId; + + /** + * 岗位/工种 + */ + @ExcelProperty(value = "岗位/工种") + private String positionName; + + /** + * 底薪(元) + */ + @ExcelProperty(value = "底薪(元)") + private BigDecimal baseSalary; + + /** + * 岗位绩效基数(元), 默认≈底薪×20% + */ + @ExcelProperty(value = "岗位绩效基数(元), 默认≈底薪×20%") + private BigDecimal perfBase; + + /** + * 默认岗位系数(初始值,后续月度由绩效自动覆盖) + */ + @ExcelProperty(value = "默认岗位系数(初始值,后续月度由绩效自动覆盖)") + private BigDecimal posCoeffDefault; + + /** + * 是否在职 1=在职 0=离职 + */ + @ExcelProperty(value = "是否在职 1=在职 0=离职") + private Long isActive; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/klp-perf/src/main/java/com/klp/perf/domain/vo/PerfPositionTemplateVo.java b/klp-perf/src/main/java/com/klp/perf/domain/vo/PerfPositionTemplateVo.java new file mode 100644 index 000000000..1f68d98b8 --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/domain/vo/PerfPositionTemplateVo.java @@ -0,0 +1,59 @@ +package com.klp.perf.domain.vo; + +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; + + +/** + * 岗位绩效考核模板视图对象 perf_position_template + * + * @author klp + * @date 2026-07-07 + */ +@Data +@ExcelIgnoreUnannotated +public class PerfPositionTemplateVo { + + private static final long serialVersionUID = 1L; + + /** + * + */ + @ExcelProperty(value = "") + private Long id; + + /** + * 关联 perf_dept.id + */ + @ExcelProperty(value = "关联 perf_dept.id") + private Long deptId; + + /** + * 岗位名称 (与员工表岗位字段匹配) + */ + @ExcelProperty(value = "岗位名称 (与员工表岗位字段匹配)") + private String positionName; + + /** + * 模板标题 如:轧机主操绩效考核评分表 + */ + @ExcelProperty(value = "模板标题 如:轧机主操绩效考核评分表") + private String title; + + /** + * + */ + @ExcelProperty(value = "") + private Long isEnabled; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/klp-perf/src/main/java/com/klp/perf/domain/vo/PerfSalaryVo.java b/klp-perf/src/main/java/com/klp/perf/domain/vo/PerfSalaryVo.java new file mode 100644 index 000000000..ae34c92bf --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/domain/vo/PerfSalaryVo.java @@ -0,0 +1,212 @@ +package com.klp.perf.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; + + +/** + * 月度薪资计算记录视图对象 perf_salary + * + * @author klp + * @date 2026-07-07 + */ +@Data +@ExcelIgnoreUnannotated +public class PerfSalaryVo { + + private static final long serialVersionUID = 1L; + + /** + * + */ + @ExcelProperty(value = "") + private Long id; + + /** + * 关联现有员工表主键 + */ + @ExcelProperty(value = "关联现有员工表主键") + private Long employeeId; + + /** + * 关联 perf_dept.id + */ + @ExcelProperty(value = "关联 perf_dept.id") + private Long deptId; + + /** + * 关联 perf_appraisal.id (可为空=未考核) + */ + @ExcelProperty(value = "关联 perf_appraisal.id (可为空=未考核)") + private Long appraisalId; + + /** + * 薪资周期 YYYY-MM + */ + @ExcelProperty(value = "薪资周期 YYYY-MM") + private String period; + + /** + * 底薪 + */ + @ExcelProperty(value = "底薪") + private BigDecimal baseSalary; + + /** + * 岗位绩效基数 + */ + @ExcelProperty(value = "岗位绩效基数") + private BigDecimal perfBase; + + /** + * 考核得分(关联 perf_appraisal.final_score) + */ + @ExcelProperty(value = "考核得分(关联 perf_appraisal.final_score)") + private BigDecimal perfScore; + + /** + * 绩效系数(得分换算,关联 perf_appraisal.perf_coeff) + */ + @ExcelProperty(value = "绩效系数(得分换算,关联 perf_appraisal.perf_coeff)") + private BigDecimal perfCoeff; + + /** + * 车间系数(来自 perf_dept_config.dept_coeff) + */ + @ExcelProperty(value = "车间系数(来自 perf_dept_config.dept_coeff)") + private BigDecimal deptCoeff; + + /** + * 月度绩效工资 = perf_base × perf_coeff × dept_coeff + */ + @ExcelProperty(value = "月度绩效工资 = perf_base × perf_coeff × dept_coeff") + private BigDecimal perfWage; + + /** + * 岗位系数 (=绩效系数,自动同步) + */ + @ExcelProperty(value = "岗位系数 (=绩效系数,自动同步)") + private BigDecimal posCoeff; + + /** + * 固定系数 = pos_coeff × 0.7 + */ + @ExcelProperty(value = "固定系数 = pos_coeff × 0.7") + private BigDecimal fixedCoeff; + + /** + * 可调系数(手动覆盖,默认=pos_coeff×0.3) + */ + @ExcelProperty(value = "可调系数(手动覆盖,默认=pos_coeff×0.3)") + private BigDecimal adjCoeff; + + /** + * 可调系数是否手动覆盖: 0=自动 1=手动 + */ + @ExcelProperty(value = "可调系数是否手动覆盖: 0=自动 1=手动") + private Long adjCoeffManual; + + /** + * 总系数 = fixed_coeff + adj_coeff + */ + @ExcelProperty(value = "总系数 = fixed_coeff + adj_coeff") + private BigDecimal totalCoeff; + + /** + * 扣款明细 {"质量扣款":0,"倒卷扣款":0,"客诉扣款":0,...} + */ + @ExcelProperty(value = "扣款明细") + private String deductionsJson; + + /** + * 扣款合计 + */ + @ExcelProperty(value = "扣款合计") + private BigDecimal deductionsTotal; + + /** + * 奖励明细 {"节能奖励":0,...} + */ + @ExcelProperty(value = "奖励明细") + private String bonusesJson; + + /** + * 奖励合计 + */ + @ExcelProperty(value = "奖励合计") + private BigDecimal bonusesTotal; + + /** + * 其他金额 + */ + @ExcelProperty(value = "其他金额") + private BigDecimal otherAmount; + + /** + * 实领薪资 = 底薪+月度绩效工资-扣款合计+奖励合计+其他 + */ + @ExcelProperty(value = "实领薪资 = 底薪+月度绩效工资-扣款合计+奖励合计+其他") + private BigDecimal actualSalary; + + /** + * 固定系数薪资(参考) = fixed_coeff × 系数单价 + */ + @ExcelProperty(value = "固定系数薪资(参考) = fixed_coeff × 系数单价") + private BigDecimal fixedSalaryRef; + + /** + * 可调系数薪资(参考) = adj_coeff × 系数单价 + */ + @ExcelProperty(value = "可调系数薪资(参考) = adj_coeff × 系数单价") + private BigDecimal adjSalaryRef; + + /** + * 保底每班(参考) = base_salary / 60 + */ + @ExcelProperty(value = "保底每班(参考) = base_salary / 60") + private BigDecimal baoPerShiftRef; + + /** + * 保底薪资(参考) = bao_per_shift × 保底班数 + */ + @ExcelProperty(value = "保底薪资(参考) = bao_per_shift × 保底班数") + private BigDecimal baoSalaryRef; + + /** + * 合计薪资(参考) = fixed_salary_ref+adj_salary_ref+bao_salary_ref + */ + @ExcelProperty(value = "合计薪资(参考) = fixed_salary_ref+adj_salary_ref+bao_salary_ref") + private BigDecimal totalSalaryRef; + + /** + * 0=草稿 1=已确认 2=已归档 + */ + @ExcelProperty(value = "0=草稿 1=已确认 2=已归档") + private Long status; + + /** + * + */ + @ExcelProperty(value = "") + private Date confirmedAt; + + /** + * + */ + @ExcelProperty(value = "") + private Long confirmedBy; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/klp-perf/src/main/java/com/klp/perf/domain/vo/PerfTemplateDimensionVo.java b/klp-perf/src/main/java/com/klp/perf/domain/vo/PerfTemplateDimensionVo.java new file mode 100644 index 000000000..4e0da61c4 --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/domain/vo/PerfTemplateDimensionVo.java @@ -0,0 +1,89 @@ +package com.klp.perf.domain.vo; + +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; + + +/** + * 考核维度明细视图对象 perf_template_dimension + * + * @author klp + * @date 2026-07-07 + */ +@Data +@ExcelIgnoreUnannotated +public class PerfTemplateDimensionVo { + + private static final long serialVersionUID = 1L; + + /** + * + */ + @ExcelProperty(value = "") + private Long id; + + /** + * 关联 perf_position_template.id + */ + @ExcelProperty(value = "关联 perf_position_template.id") + private Long templateId; + + /** + * 序号 + */ + @ExcelProperty(value = "序号") + private String seq; + + /** + * 考核维度 如:产量/质量/安全/检测准确性 + */ + @ExcelProperty(value = "考核维度 如:产量/质量/安全/检测准确性") + private String dimName; + + /** + * 权重 如:40% 或 0.4 + */ + @ExcelProperty(value = "权重 如:40% 或 0.4") + private String weight; + + /** + * 量化指标 如:月产量达标率/产品合格率 + */ + @ExcelProperty(value = "量化指标 如:月产量达标率/产品合格率") + private String indicator; + + /** + * 目标值 如:≥98% / 100% / 0次 / 达标 + */ + @ExcelProperty(value = "目标值 如:≥98% / 100% / 0次 / 达标") + private String targetValue; + + /** + * 评分公式 如:=IF(E4>0,25*(F4/E4),0) + */ + @ExcelProperty(value = "评分公式 如:=IF(E4>0,25*(F4/E4),0)") + private String scoreFormula; + + /** + * 评分规则文字描述 + */ + @ExcelProperty(value = "评分规则文字描述") + private String scoreRule; + + /** + * + */ + @ExcelProperty(value = "") + private Long isEnabled; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/klp-perf/src/main/java/com/klp/perf/mapper/PerfAppraisalDetailMapper.java b/klp-perf/src/main/java/com/klp/perf/mapper/PerfAppraisalDetailMapper.java new file mode 100644 index 000000000..f8fb00e28 --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/mapper/PerfAppraisalDetailMapper.java @@ -0,0 +1,15 @@ +package com.klp.perf.mapper; + +import com.klp.perf.domain.PerfAppraisalDetail; +import com.klp.perf.domain.vo.PerfAppraisalDetailVo; +import com.klp.common.core.mapper.BaseMapperPlus; + +/** + * 考核维度评分明细Mapper接口 + * + * @author klp + * @date 2026-07-07 + */ +public interface PerfAppraisalDetailMapper extends BaseMapperPlus { + +} diff --git a/klp-perf/src/main/java/com/klp/perf/mapper/PerfAppraisalMapper.java b/klp-perf/src/main/java/com/klp/perf/mapper/PerfAppraisalMapper.java new file mode 100644 index 000000000..51b6ba693 --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/mapper/PerfAppraisalMapper.java @@ -0,0 +1,15 @@ +package com.klp.perf.mapper; + +import com.klp.perf.domain.PerfAppraisal; +import com.klp.perf.domain.vo.PerfAppraisalVo; +import com.klp.common.core.mapper.BaseMapperPlus; + +/** + * 月度绩效考核记录Mapper接口 + * + * @author klp + * @date 2026-07-07 + */ +public interface PerfAppraisalMapper extends BaseMapperPlus { + +} diff --git a/klp-perf/src/main/java/com/klp/perf/mapper/PerfCoeffRangeMapper.java b/klp-perf/src/main/java/com/klp/perf/mapper/PerfCoeffRangeMapper.java new file mode 100644 index 000000000..a2e7682f8 --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/mapper/PerfCoeffRangeMapper.java @@ -0,0 +1,15 @@ +package com.klp.perf.mapper; + +import com.klp.perf.domain.PerfCoeffRange; +import com.klp.perf.domain.vo.PerfCoeffRangeVo; +import com.klp.common.core.mapper.BaseMapperPlus; + +/** + * 绩效系数换算Mapper接口 + * + * @author klp + * @date 2026-07-07 + */ +public interface PerfCoeffRangeMapper extends BaseMapperPlus { + +} diff --git a/klp-perf/src/main/java/com/klp/perf/mapper/PerfDeptConfigMapper.java b/klp-perf/src/main/java/com/klp/perf/mapper/PerfDeptConfigMapper.java new file mode 100644 index 000000000..d983e3110 --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/mapper/PerfDeptConfigMapper.java @@ -0,0 +1,15 @@ +package com.klp.perf.mapper; + +import com.klp.perf.domain.PerfDeptConfig; +import com.klp.perf.domain.vo.PerfDeptConfigVo; +import com.klp.common.core.mapper.BaseMapperPlus; + +/** + * 车间考核参数配置Mapper接口 + * + * @author klp + * @date 2026-07-07 + */ +public interface PerfDeptConfigMapper extends BaseMapperPlus { + +} diff --git a/klp-perf/src/main/java/com/klp/perf/mapper/PerfDeptItemConfigMapper.java b/klp-perf/src/main/java/com/klp/perf/mapper/PerfDeptItemConfigMapper.java new file mode 100644 index 000000000..4d7960b17 --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/mapper/PerfDeptItemConfigMapper.java @@ -0,0 +1,15 @@ +package com.klp.perf.mapper; + +import com.klp.perf.domain.PerfDeptItemConfig; +import com.klp.perf.domain.vo.PerfDeptItemConfigVo; +import com.klp.common.core.mapper.BaseMapperPlus; + +/** + * 车间扣款/奖励项目配置Mapper接口 + * + * @author klp + * @date 2026-07-07 + */ +public interface PerfDeptItemConfigMapper extends BaseMapperPlus { + +} diff --git a/klp-perf/src/main/java/com/klp/perf/mapper/PerfDeptMapper.java b/klp-perf/src/main/java/com/klp/perf/mapper/PerfDeptMapper.java new file mode 100644 index 000000000..4a313e77b --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/mapper/PerfDeptMapper.java @@ -0,0 +1,15 @@ +package com.klp.perf.mapper; + +import com.klp.perf.domain.PerfDept; +import com.klp.perf.domain.vo.PerfDeptVo; +import com.klp.common.core.mapper.BaseMapperPlus; + +/** + * 绩效系统部门Mapper接口 + * + * @author klp + * @date 2026-07-07 + */ +public interface PerfDeptMapper extends BaseMapperPlus { + +} diff --git a/klp-perf/src/main/java/com/klp/perf/mapper/PerfDeptSummaryMapper.java b/klp-perf/src/main/java/com/klp/perf/mapper/PerfDeptSummaryMapper.java new file mode 100644 index 000000000..5d35c958e --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/mapper/PerfDeptSummaryMapper.java @@ -0,0 +1,15 @@ +package com.klp.perf.mapper; + +import com.klp.perf.domain.PerfDeptSummary; +import com.klp.perf.domain.vo.PerfDeptSummaryVo; +import com.klp.common.core.mapper.BaseMapperPlus; + +/** + * 车间月度汇总Mapper接口 + * + * @author klp + * @date 2026-07-07 + */ +public interface PerfDeptSummaryMapper extends BaseMapperPlus { + +} diff --git a/klp-perf/src/main/java/com/klp/perf/mapper/PerfEmployeeInfoMapper.java b/klp-perf/src/main/java/com/klp/perf/mapper/PerfEmployeeInfoMapper.java new file mode 100644 index 000000000..df9a2467e --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/mapper/PerfEmployeeInfoMapper.java @@ -0,0 +1,15 @@ +package com.klp.perf.mapper; + +import com.klp.perf.domain.PerfEmployeeInfo; +import com.klp.perf.domain.vo.PerfEmployeeInfoVo; +import com.klp.common.core.mapper.BaseMapperPlus; + +/** + * 员工绩效薪资基本信息Mapper接口 + * + * @author klp + * @date 2026-07-07 + */ +public interface PerfEmployeeInfoMapper extends BaseMapperPlus { + +} diff --git a/klp-perf/src/main/java/com/klp/perf/mapper/PerfPositionTemplateMapper.java b/klp-perf/src/main/java/com/klp/perf/mapper/PerfPositionTemplateMapper.java new file mode 100644 index 000000000..e658c94ef --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/mapper/PerfPositionTemplateMapper.java @@ -0,0 +1,15 @@ +package com.klp.perf.mapper; + +import com.klp.perf.domain.PerfPositionTemplate; +import com.klp.perf.domain.vo.PerfPositionTemplateVo; +import com.klp.common.core.mapper.BaseMapperPlus; + +/** + * 岗位绩效考核模板Mapper接口 + * + * @author klp + * @date 2026-07-07 + */ +public interface PerfPositionTemplateMapper extends BaseMapperPlus { + +} diff --git a/klp-perf/src/main/java/com/klp/perf/mapper/PerfSalaryMapper.java b/klp-perf/src/main/java/com/klp/perf/mapper/PerfSalaryMapper.java new file mode 100644 index 000000000..6bc780ceb --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/mapper/PerfSalaryMapper.java @@ -0,0 +1,15 @@ +package com.klp.perf.mapper; + +import com.klp.perf.domain.PerfSalary; +import com.klp.perf.domain.vo.PerfSalaryVo; +import com.klp.common.core.mapper.BaseMapperPlus; + +/** + * 月度薪资计算记录Mapper接口 + * + * @author klp + * @date 2026-07-07 + */ +public interface PerfSalaryMapper extends BaseMapperPlus { + +} diff --git a/klp-perf/src/main/java/com/klp/perf/mapper/PerfTemplateDimensionMapper.java b/klp-perf/src/main/java/com/klp/perf/mapper/PerfTemplateDimensionMapper.java new file mode 100644 index 000000000..5b076c159 --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/mapper/PerfTemplateDimensionMapper.java @@ -0,0 +1,15 @@ +package com.klp.perf.mapper; + +import com.klp.perf.domain.PerfTemplateDimension; +import com.klp.perf.domain.vo.PerfTemplateDimensionVo; +import com.klp.common.core.mapper.BaseMapperPlus; + +/** + * 考核维度明细Mapper接口 + * + * @author klp + * @date 2026-07-07 + */ +public interface PerfTemplateDimensionMapper extends BaseMapperPlus { + +} diff --git a/klp-perf/src/main/java/com/klp/perf/service/IPerfAppraisalDetailService.java b/klp-perf/src/main/java/com/klp/perf/service/IPerfAppraisalDetailService.java new file mode 100644 index 000000000..90b3b779e --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/service/IPerfAppraisalDetailService.java @@ -0,0 +1,49 @@ +package com.klp.perf.service; + +import com.klp.perf.domain.PerfAppraisalDetail; +import com.klp.perf.domain.vo.PerfAppraisalDetailVo; +import com.klp.perf.domain.bo.PerfAppraisalDetailBo; +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-07-07 + */ +public interface IPerfAppraisalDetailService { + + /** + * 查询考核维度评分明细 + */ + PerfAppraisalDetailVo queryById(Long id); + + /** + * 查询考核维度评分明细列表 + */ + TableDataInfo queryPageList(PerfAppraisalDetailBo bo, PageQuery pageQuery); + + /** + * 查询考核维度评分明细列表 + */ + List queryList(PerfAppraisalDetailBo bo); + + /** + * 新增考核维度评分明细 + */ + Boolean insertByBo(PerfAppraisalDetailBo bo); + + /** + * 修改考核维度评分明细 + */ + Boolean updateByBo(PerfAppraisalDetailBo bo); + + /** + * 校验并批量删除考核维度评分明细信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/klp-perf/src/main/java/com/klp/perf/service/IPerfAppraisalService.java b/klp-perf/src/main/java/com/klp/perf/service/IPerfAppraisalService.java new file mode 100644 index 000000000..d6a65f218 --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/service/IPerfAppraisalService.java @@ -0,0 +1,49 @@ +package com.klp.perf.service; + +import com.klp.perf.domain.PerfAppraisal; +import com.klp.perf.domain.vo.PerfAppraisalVo; +import com.klp.perf.domain.bo.PerfAppraisalBo; +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-07-07 + */ +public interface IPerfAppraisalService { + + /** + * 查询月度绩效考核记录 + */ + PerfAppraisalVo queryById(Long id); + + /** + * 查询月度绩效考核记录列表 + */ + TableDataInfo queryPageList(PerfAppraisalBo bo, PageQuery pageQuery); + + /** + * 查询月度绩效考核记录列表 + */ + List queryList(PerfAppraisalBo bo); + + /** + * 新增月度绩效考核记录 + */ + Boolean insertByBo(PerfAppraisalBo bo); + + /** + * 修改月度绩效考核记录 + */ + Boolean updateByBo(PerfAppraisalBo bo); + + /** + * 校验并批量删除月度绩效考核记录信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/klp-perf/src/main/java/com/klp/perf/service/IPerfCoeffRangeService.java b/klp-perf/src/main/java/com/klp/perf/service/IPerfCoeffRangeService.java new file mode 100644 index 000000000..f589a113b --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/service/IPerfCoeffRangeService.java @@ -0,0 +1,49 @@ +package com.klp.perf.service; + +import com.klp.perf.domain.PerfCoeffRange; +import com.klp.perf.domain.vo.PerfCoeffRangeVo; +import com.klp.perf.domain.bo.PerfCoeffRangeBo; +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-07-07 + */ +public interface IPerfCoeffRangeService { + + /** + * 查询绩效系数换算 + */ + PerfCoeffRangeVo queryById(Long id); + + /** + * 查询绩效系数换算列表 + */ + TableDataInfo queryPageList(PerfCoeffRangeBo bo, PageQuery pageQuery); + + /** + * 查询绩效系数换算列表 + */ + List queryList(PerfCoeffRangeBo bo); + + /** + * 新增绩效系数换算 + */ + Boolean insertByBo(PerfCoeffRangeBo bo); + + /** + * 修改绩效系数换算 + */ + Boolean updateByBo(PerfCoeffRangeBo bo); + + /** + * 校验并批量删除绩效系数换算信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/klp-perf/src/main/java/com/klp/perf/service/IPerfDeptConfigService.java b/klp-perf/src/main/java/com/klp/perf/service/IPerfDeptConfigService.java new file mode 100644 index 000000000..69d713892 --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/service/IPerfDeptConfigService.java @@ -0,0 +1,49 @@ +package com.klp.perf.service; + +import com.klp.perf.domain.PerfDeptConfig; +import com.klp.perf.domain.vo.PerfDeptConfigVo; +import com.klp.perf.domain.bo.PerfDeptConfigBo; +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-07-07 + */ +public interface IPerfDeptConfigService { + + /** + * 查询车间考核参数配置 + */ + PerfDeptConfigVo queryById(Long id); + + /** + * 查询车间考核参数配置列表 + */ + TableDataInfo queryPageList(PerfDeptConfigBo bo, PageQuery pageQuery); + + /** + * 查询车间考核参数配置列表 + */ + List queryList(PerfDeptConfigBo bo); + + /** + * 新增车间考核参数配置 + */ + Boolean insertByBo(PerfDeptConfigBo bo); + + /** + * 修改车间考核参数配置 + */ + Boolean updateByBo(PerfDeptConfigBo bo); + + /** + * 校验并批量删除车间考核参数配置信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/klp-perf/src/main/java/com/klp/perf/service/IPerfDeptItemConfigService.java b/klp-perf/src/main/java/com/klp/perf/service/IPerfDeptItemConfigService.java new file mode 100644 index 000000000..b72673527 --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/service/IPerfDeptItemConfigService.java @@ -0,0 +1,49 @@ +package com.klp.perf.service; + +import com.klp.perf.domain.PerfDeptItemConfig; +import com.klp.perf.domain.vo.PerfDeptItemConfigVo; +import com.klp.perf.domain.bo.PerfDeptItemConfigBo; +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-07-07 + */ +public interface IPerfDeptItemConfigService { + + /** + * 查询车间扣款/奖励项目配置 + */ + PerfDeptItemConfigVo queryById(Long id); + + /** + * 查询车间扣款/奖励项目配置列表 + */ + TableDataInfo queryPageList(PerfDeptItemConfigBo bo, PageQuery pageQuery); + + /** + * 查询车间扣款/奖励项目配置列表 + */ + List queryList(PerfDeptItemConfigBo bo); + + /** + * 新增车间扣款/奖励项目配置 + */ + Boolean insertByBo(PerfDeptItemConfigBo bo); + + /** + * 修改车间扣款/奖励项目配置 + */ + Boolean updateByBo(PerfDeptItemConfigBo bo); + + /** + * 校验并批量删除车间扣款/奖励项目配置信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/klp-perf/src/main/java/com/klp/perf/service/IPerfDeptService.java b/klp-perf/src/main/java/com/klp/perf/service/IPerfDeptService.java new file mode 100644 index 000000000..443eaa518 --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/service/IPerfDeptService.java @@ -0,0 +1,49 @@ +package com.klp.perf.service; + +import com.klp.perf.domain.PerfDept; +import com.klp.perf.domain.vo.PerfDeptVo; +import com.klp.perf.domain.bo.PerfDeptBo; +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-07-07 + */ +public interface IPerfDeptService { + + /** + * 查询绩效系统部门 + */ + PerfDeptVo queryById(Long id); + + /** + * 查询绩效系统部门列表 + */ + TableDataInfo queryPageList(PerfDeptBo bo, PageQuery pageQuery); + + /** + * 查询绩效系统部门列表 + */ + List queryList(PerfDeptBo bo); + + /** + * 新增绩效系统部门 + */ + Boolean insertByBo(PerfDeptBo bo); + + /** + * 修改绩效系统部门 + */ + Boolean updateByBo(PerfDeptBo bo); + + /** + * 校验并批量删除绩效系统部门信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/klp-perf/src/main/java/com/klp/perf/service/IPerfDeptSummaryService.java b/klp-perf/src/main/java/com/klp/perf/service/IPerfDeptSummaryService.java new file mode 100644 index 000000000..517e6e983 --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/service/IPerfDeptSummaryService.java @@ -0,0 +1,49 @@ +package com.klp.perf.service; + +import com.klp.perf.domain.PerfDeptSummary; +import com.klp.perf.domain.vo.PerfDeptSummaryVo; +import com.klp.perf.domain.bo.PerfDeptSummaryBo; +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-07-07 + */ +public interface IPerfDeptSummaryService { + + /** + * 查询车间月度汇总 + */ + PerfDeptSummaryVo queryById(Long id); + + /** + * 查询车间月度汇总列表 + */ + TableDataInfo queryPageList(PerfDeptSummaryBo bo, PageQuery pageQuery); + + /** + * 查询车间月度汇总列表 + */ + List queryList(PerfDeptSummaryBo bo); + + /** + * 新增车间月度汇总 + */ + Boolean insertByBo(PerfDeptSummaryBo bo); + + /** + * 修改车间月度汇总 + */ + Boolean updateByBo(PerfDeptSummaryBo bo); + + /** + * 校验并批量删除车间月度汇总信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/klp-perf/src/main/java/com/klp/perf/service/IPerfEmployeeInfoService.java b/klp-perf/src/main/java/com/klp/perf/service/IPerfEmployeeInfoService.java new file mode 100644 index 000000000..9c76f822c --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/service/IPerfEmployeeInfoService.java @@ -0,0 +1,49 @@ +package com.klp.perf.service; + +import com.klp.perf.domain.PerfEmployeeInfo; +import com.klp.perf.domain.vo.PerfEmployeeInfoVo; +import com.klp.perf.domain.bo.PerfEmployeeInfoBo; +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-07-07 + */ +public interface IPerfEmployeeInfoService { + + /** + * 查询员工绩效薪资基本信息 + */ + PerfEmployeeInfoVo queryById(Long id); + + /** + * 查询员工绩效薪资基本信息列表 + */ + TableDataInfo queryPageList(PerfEmployeeInfoBo bo, PageQuery pageQuery); + + /** + * 查询员工绩效薪资基本信息列表 + */ + List queryList(PerfEmployeeInfoBo bo); + + /** + * 新增员工绩效薪资基本信息 + */ + Boolean insertByBo(PerfEmployeeInfoBo bo); + + /** + * 修改员工绩效薪资基本信息 + */ + Boolean updateByBo(PerfEmployeeInfoBo bo); + + /** + * 校验并批量删除员工绩效薪资基本信息信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/klp-perf/src/main/java/com/klp/perf/service/IPerfPositionTemplateService.java b/klp-perf/src/main/java/com/klp/perf/service/IPerfPositionTemplateService.java new file mode 100644 index 000000000..3c29e50d2 --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/service/IPerfPositionTemplateService.java @@ -0,0 +1,49 @@ +package com.klp.perf.service; + +import com.klp.perf.domain.PerfPositionTemplate; +import com.klp.perf.domain.vo.PerfPositionTemplateVo; +import com.klp.perf.domain.bo.PerfPositionTemplateBo; +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-07-07 + */ +public interface IPerfPositionTemplateService { + + /** + * 查询岗位绩效考核模板 + */ + PerfPositionTemplateVo queryById(Long id); + + /** + * 查询岗位绩效考核模板列表 + */ + TableDataInfo queryPageList(PerfPositionTemplateBo bo, PageQuery pageQuery); + + /** + * 查询岗位绩效考核模板列表 + */ + List queryList(PerfPositionTemplateBo bo); + + /** + * 新增岗位绩效考核模板 + */ + Boolean insertByBo(PerfPositionTemplateBo bo); + + /** + * 修改岗位绩效考核模板 + */ + Boolean updateByBo(PerfPositionTemplateBo bo); + + /** + * 校验并批量删除岗位绩效考核模板信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/klp-perf/src/main/java/com/klp/perf/service/IPerfSalaryService.java b/klp-perf/src/main/java/com/klp/perf/service/IPerfSalaryService.java new file mode 100644 index 000000000..73bdffddc --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/service/IPerfSalaryService.java @@ -0,0 +1,49 @@ +package com.klp.perf.service; + +import com.klp.perf.domain.PerfSalary; +import com.klp.perf.domain.vo.PerfSalaryVo; +import com.klp.perf.domain.bo.PerfSalaryBo; +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-07-07 + */ +public interface IPerfSalaryService { + + /** + * 查询月度薪资计算记录 + */ + PerfSalaryVo queryById(Long id); + + /** + * 查询月度薪资计算记录列表 + */ + TableDataInfo queryPageList(PerfSalaryBo bo, PageQuery pageQuery); + + /** + * 查询月度薪资计算记录列表 + */ + List queryList(PerfSalaryBo bo); + + /** + * 新增月度薪资计算记录 + */ + Boolean insertByBo(PerfSalaryBo bo); + + /** + * 修改月度薪资计算记录 + */ + Boolean updateByBo(PerfSalaryBo bo); + + /** + * 校验并批量删除月度薪资计算记录信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/klp-perf/src/main/java/com/klp/perf/service/IPerfTemplateDimensionService.java b/klp-perf/src/main/java/com/klp/perf/service/IPerfTemplateDimensionService.java new file mode 100644 index 000000000..78f613ce9 --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/service/IPerfTemplateDimensionService.java @@ -0,0 +1,49 @@ +package com.klp.perf.service; + +import com.klp.perf.domain.PerfTemplateDimension; +import com.klp.perf.domain.vo.PerfTemplateDimensionVo; +import com.klp.perf.domain.bo.PerfTemplateDimensionBo; +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-07-07 + */ +public interface IPerfTemplateDimensionService { + + /** + * 查询考核维度明细 + */ + PerfTemplateDimensionVo queryById(Long id); + + /** + * 查询考核维度明细列表 + */ + TableDataInfo queryPageList(PerfTemplateDimensionBo bo, PageQuery pageQuery); + + /** + * 查询考核维度明细列表 + */ + List queryList(PerfTemplateDimensionBo bo); + + /** + * 新增考核维度明细 + */ + Boolean insertByBo(PerfTemplateDimensionBo bo); + + /** + * 修改考核维度明细 + */ + Boolean updateByBo(PerfTemplateDimensionBo bo); + + /** + * 校验并批量删除考核维度明细信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/klp-perf/src/main/java/com/klp/perf/service/impl/PerfAppraisalDetailServiceImpl.java b/klp-perf/src/main/java/com/klp/perf/service/impl/PerfAppraisalDetailServiceImpl.java new file mode 100644 index 000000000..962bb5b28 --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/service/impl/PerfAppraisalDetailServiceImpl.java @@ -0,0 +1,120 @@ +package com.klp.perf.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.perf.domain.bo.PerfAppraisalDetailBo; +import com.klp.perf.domain.vo.PerfAppraisalDetailVo; +import com.klp.perf.domain.PerfAppraisalDetail; +import com.klp.perf.mapper.PerfAppraisalDetailMapper; +import com.klp.perf.service.IPerfAppraisalDetailService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 考核维度评分明细Service业务层处理 + * + * @author klp + * @date 2026-07-07 + */ +@RequiredArgsConstructor +@Service +public class PerfAppraisalDetailServiceImpl implements IPerfAppraisalDetailService { + + private final PerfAppraisalDetailMapper baseMapper; + + /** + * 查询考核维度评分明细 + */ + @Override + public PerfAppraisalDetailVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 查询考核维度评分明细列表 + */ + @Override + public TableDataInfo queryPageList(PerfAppraisalDetailBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询考核维度评分明细列表 + */ + @Override + public List queryList(PerfAppraisalDetailBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(PerfAppraisalDetailBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(bo.getAppraisalId() != null, PerfAppraisalDetail::getAppraisalId, bo.getAppraisalId()); + lqw.eq(bo.getDimensionId() != null, PerfAppraisalDetail::getDimensionId, bo.getDimensionId()); + lqw.eq(StringUtils.isNotBlank(bo.getSeq()), PerfAppraisalDetail::getSeq, bo.getSeq()); + lqw.like(StringUtils.isNotBlank(bo.getDimName()), PerfAppraisalDetail::getDimName, bo.getDimName()); + lqw.eq(StringUtils.isNotBlank(bo.getWeight()), PerfAppraisalDetail::getWeight, bo.getWeight()); + lqw.eq(StringUtils.isNotBlank(bo.getTargetValue()), PerfAppraisalDetail::getTargetValue, bo.getTargetValue()); + lqw.eq(StringUtils.isNotBlank(bo.getActualValue()), PerfAppraisalDetail::getActualValue, bo.getActualValue()); + lqw.eq(bo.getDimScore() != null, PerfAppraisalDetail::getDimScore, bo.getDimScore()); + lqw.eq(bo.getBonus() != null, PerfAppraisalDetail::getBonus, bo.getBonus()); + lqw.eq(bo.getPenalty() != null, PerfAppraisalDetail::getPenalty, bo.getPenalty()); + lqw.eq(StringUtils.isNotBlank(bo.getScoreFormula()), PerfAppraisalDetail::getScoreFormula, bo.getScoreFormula()); + lqw.eq(StringUtils.isNotBlank(bo.getScoreRule()), PerfAppraisalDetail::getScoreRule, bo.getScoreRule()); + return lqw; + } + + /** + * 新增考核维度评分明细 + */ + @Override + public Boolean insertByBo(PerfAppraisalDetailBo bo) { + PerfAppraisalDetail add = BeanUtil.toBean(bo, PerfAppraisalDetail.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改考核维度评分明细 + */ + @Override + public Boolean updateByBo(PerfAppraisalDetailBo bo) { + PerfAppraisalDetail update = BeanUtil.toBean(bo, PerfAppraisalDetail.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(PerfAppraisalDetail entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除考核维度评分明细 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } +} diff --git a/klp-perf/src/main/java/com/klp/perf/service/impl/PerfAppraisalServiceImpl.java b/klp-perf/src/main/java/com/klp/perf/service/impl/PerfAppraisalServiceImpl.java new file mode 100644 index 000000000..563cbbabd --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/service/impl/PerfAppraisalServiceImpl.java @@ -0,0 +1,121 @@ +package com.klp.perf.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.perf.domain.bo.PerfAppraisalBo; +import com.klp.perf.domain.vo.PerfAppraisalVo; +import com.klp.perf.domain.PerfAppraisal; +import com.klp.perf.mapper.PerfAppraisalMapper; +import com.klp.perf.service.IPerfAppraisalService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 月度绩效考核记录Service业务层处理 + * + * @author klp + * @date 2026-07-07 + */ +@RequiredArgsConstructor +@Service +public class PerfAppraisalServiceImpl implements IPerfAppraisalService { + + private final PerfAppraisalMapper baseMapper; + + /** + * 查询月度绩效考核记录 + */ + @Override + public PerfAppraisalVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 查询月度绩效考核记录列表 + */ + @Override + public TableDataInfo queryPageList(PerfAppraisalBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询月度绩效考核记录列表 + */ + @Override + public List queryList(PerfAppraisalBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(PerfAppraisalBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(bo.getEmployeeId() != null, PerfAppraisal::getEmployeeId, bo.getEmployeeId()); + lqw.eq(bo.getDeptId() != null, PerfAppraisal::getDeptId, bo.getDeptId()); + lqw.eq(bo.getTemplateId() != null, PerfAppraisal::getTemplateId, bo.getTemplateId()); + lqw.eq(StringUtils.isNotBlank(bo.getPeriod()), PerfAppraisal::getPeriod, bo.getPeriod()); + lqw.eq(bo.getWeightedScore() != null, PerfAppraisal::getWeightedScore, bo.getWeightedScore()); + lqw.eq(bo.getBonusScore() != null, PerfAppraisal::getBonusScore, bo.getBonusScore()); + lqw.eq(bo.getPenaltyScore() != null, PerfAppraisal::getPenaltyScore, bo.getPenaltyScore()); + lqw.eq(bo.getFinalScore() != null, PerfAppraisal::getFinalScore, bo.getFinalScore()); + lqw.eq(StringUtils.isNotBlank(bo.getGrade()), PerfAppraisal::getGrade, bo.getGrade()); + lqw.eq(bo.getPerfCoeff() != null, PerfAppraisal::getPerfCoeff, bo.getPerfCoeff()); + lqw.eq(bo.getStatus() != null, PerfAppraisal::getStatus, bo.getStatus()); + lqw.eq(bo.getConfirmedAt() != null, PerfAppraisal::getConfirmedAt, bo.getConfirmedAt()); + lqw.eq(bo.getConfirmedBy() != null, PerfAppraisal::getConfirmedBy, bo.getConfirmedBy()); + return lqw; + } + + /** + * 新增月度绩效考核记录 + */ + @Override + public Boolean insertByBo(PerfAppraisalBo bo) { + PerfAppraisal add = BeanUtil.toBean(bo, PerfAppraisal.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改月度绩效考核记录 + */ + @Override + public Boolean updateByBo(PerfAppraisalBo bo) { + PerfAppraisal update = BeanUtil.toBean(bo, PerfAppraisal.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(PerfAppraisal entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除月度绩效考核记录 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } +} diff --git a/klp-perf/src/main/java/com/klp/perf/service/impl/PerfCoeffRangeServiceImpl.java b/klp-perf/src/main/java/com/klp/perf/service/impl/PerfCoeffRangeServiceImpl.java new file mode 100644 index 000000000..29c8d8658 --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/service/impl/PerfCoeffRangeServiceImpl.java @@ -0,0 +1,115 @@ +package com.klp.perf.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.perf.domain.bo.PerfCoeffRangeBo; +import com.klp.perf.domain.vo.PerfCoeffRangeVo; +import com.klp.perf.domain.PerfCoeffRange; +import com.klp.perf.mapper.PerfCoeffRangeMapper; +import com.klp.perf.service.IPerfCoeffRangeService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 绩效系数换算Service业务层处理 + * + * @author klp + * @date 2026-07-07 + */ +@RequiredArgsConstructor +@Service +public class PerfCoeffRangeServiceImpl implements IPerfCoeffRangeService { + + private final PerfCoeffRangeMapper baseMapper; + + /** + * 查询绩效系数换算 + */ + @Override + public PerfCoeffRangeVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 查询绩效系数换算列表 + */ + @Override + public TableDataInfo queryPageList(PerfCoeffRangeBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询绩效系数换算列表 + */ + @Override + public List queryList(PerfCoeffRangeBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(PerfCoeffRangeBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(StringUtils.isNotBlank(bo.getGrade()), PerfCoeffRange::getGrade, bo.getGrade()); + lqw.eq(StringUtils.isNotBlank(bo.getGradeLabel()), PerfCoeffRange::getGradeLabel, bo.getGradeLabel()); + lqw.eq(bo.getScoreMin() != null, PerfCoeffRange::getScoreMin, bo.getScoreMin()); + lqw.eq(bo.getScoreMax() != null, PerfCoeffRange::getScoreMax, bo.getScoreMax()); + lqw.eq(bo.getCoeffMin() != null, PerfCoeffRange::getCoeffMin, bo.getCoeffMin()); + lqw.eq(bo.getCoeffMax() != null, PerfCoeffRange::getCoeffMax, bo.getCoeffMax()); + lqw.eq(bo.getSortOrder() != null, PerfCoeffRange::getSortOrder, bo.getSortOrder()); + return lqw; + } + + /** + * 新增绩效系数换算 + */ + @Override + public Boolean insertByBo(PerfCoeffRangeBo bo) { + PerfCoeffRange add = BeanUtil.toBean(bo, PerfCoeffRange.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改绩效系数换算 + */ + @Override + public Boolean updateByBo(PerfCoeffRangeBo bo) { + PerfCoeffRange update = BeanUtil.toBean(bo, PerfCoeffRange.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(PerfCoeffRange entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除绩效系数换算 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } +} diff --git a/klp-perf/src/main/java/com/klp/perf/service/impl/PerfDeptConfigServiceImpl.java b/klp-perf/src/main/java/com/klp/perf/service/impl/PerfDeptConfigServiceImpl.java new file mode 100644 index 000000000..c5c86017f --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/service/impl/PerfDeptConfigServiceImpl.java @@ -0,0 +1,120 @@ +package com.klp.perf.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.perf.domain.bo.PerfDeptConfigBo; +import com.klp.perf.domain.vo.PerfDeptConfigVo; +import com.klp.perf.domain.PerfDeptConfig; +import com.klp.perf.mapper.PerfDeptConfigMapper; +import com.klp.perf.service.IPerfDeptConfigService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 车间考核参数配置Service业务层处理 + * + * @author klp + * @date 2026-07-07 + */ +@RequiredArgsConstructor +@Service +public class PerfDeptConfigServiceImpl implements IPerfDeptConfigService { + + private final PerfDeptConfigMapper baseMapper; + + /** + * 查询车间考核参数配置 + */ + @Override + public PerfDeptConfigVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 查询车间考核参数配置列表 + */ + @Override + public TableDataInfo queryPageList(PerfDeptConfigBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询车间考核参数配置列表 + */ + @Override + public List queryList(PerfDeptConfigBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(PerfDeptConfigBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(bo.getDeptId() != null, PerfDeptConfig::getDeptId, bo.getDeptId()); + lqw.eq(bo.getMonthlyProductionTarget() != null, PerfDeptConfig::getMonthlyProductionTarget, bo.getMonthlyProductionTarget()); + lqw.eq(StringUtils.isNotBlank(bo.getProductionUnit()), PerfDeptConfig::getProductionUnit, bo.getProductionUnit()); + lqw.eq(bo.getPerfUnitPrice() != null, PerfDeptConfig::getPerfUnitPrice, bo.getPerfUnitPrice()); + lqw.eq(bo.getProductionShifts() != null, PerfDeptConfig::getProductionShifts, bo.getProductionShifts()); + lqw.eq(bo.getGuaranteedShifts() != null, PerfDeptConfig::getGuaranteedShifts, bo.getGuaranteedShifts()); + lqw.eq(bo.getDeptCoeff() != null, PerfDeptConfig::getDeptCoeff, bo.getDeptCoeff()); + lqw.eq(bo.getSalaryMode() != null, PerfDeptConfig::getSalaryMode, bo.getSalaryMode()); + lqw.eq(bo.getBaseDivisor() != null, PerfDeptConfig::getBaseDivisor, bo.getBaseDivisor()); + lqw.eq(bo.getMonth() != null, PerfDeptConfig::getMonth, bo.getMonth()); + lqw.eq(bo.getCreatedAt() != null, PerfDeptConfig::getCreatedAt, bo.getCreatedAt()); + lqw.eq(bo.getUpdatedAt() != null, PerfDeptConfig::getUpdatedAt, bo.getUpdatedAt()); + return lqw; + } + + /** + * 新增车间考核参数配置 + */ + @Override + public Boolean insertByBo(PerfDeptConfigBo bo) { + PerfDeptConfig add = BeanUtil.toBean(bo, PerfDeptConfig.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改车间考核参数配置 + */ + @Override + public Boolean updateByBo(PerfDeptConfigBo bo) { + PerfDeptConfig update = BeanUtil.toBean(bo, PerfDeptConfig.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(PerfDeptConfig entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除车间考核参数配置 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } +} diff --git a/klp-perf/src/main/java/com/klp/perf/service/impl/PerfDeptItemConfigServiceImpl.java b/klp-perf/src/main/java/com/klp/perf/service/impl/PerfDeptItemConfigServiceImpl.java new file mode 100644 index 000000000..2de36f9c0 --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/service/impl/PerfDeptItemConfigServiceImpl.java @@ -0,0 +1,114 @@ +package com.klp.perf.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.perf.domain.bo.PerfDeptItemConfigBo; +import com.klp.perf.domain.vo.PerfDeptItemConfigVo; +import com.klp.perf.domain.PerfDeptItemConfig; +import com.klp.perf.mapper.PerfDeptItemConfigMapper; +import com.klp.perf.service.IPerfDeptItemConfigService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 车间扣款/奖励项目配置Service业务层处理 + * + * @author klp + * @date 2026-07-07 + */ +@RequiredArgsConstructor +@Service +public class PerfDeptItemConfigServiceImpl implements IPerfDeptItemConfigService { + + private final PerfDeptItemConfigMapper baseMapper; + + /** + * 查询车间扣款/奖励项目配置 + */ + @Override + public PerfDeptItemConfigVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 查询车间扣款/奖励项目配置列表 + */ + @Override + public TableDataInfo queryPageList(PerfDeptItemConfigBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询车间扣款/奖励项目配置列表 + */ + @Override + public List queryList(PerfDeptItemConfigBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(PerfDeptItemConfigBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(bo.getDeptId() != null, PerfDeptItemConfig::getDeptId, bo.getDeptId()); + lqw.eq(bo.getItemType() != null, PerfDeptItemConfig::getItemType, bo.getItemType()); + lqw.like(StringUtils.isNotBlank(bo.getItemName()), PerfDeptItemConfig::getItemName, bo.getItemName()); + lqw.eq(bo.getSortOrder() != null, PerfDeptItemConfig::getSortOrder, bo.getSortOrder()); + lqw.eq(bo.getMonth() != null, PerfDeptItemConfig::getMonth, bo.getMonth()); + lqw.eq(bo.getIsEnabled() != null, PerfDeptItemConfig::getIsEnabled, bo.getIsEnabled()); + return lqw; + } + + /** + * 新增车间扣款/奖励项目配置 + */ + @Override + public Boolean insertByBo(PerfDeptItemConfigBo bo) { + PerfDeptItemConfig add = BeanUtil.toBean(bo, PerfDeptItemConfig.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改车间扣款/奖励项目配置 + */ + @Override + public Boolean updateByBo(PerfDeptItemConfigBo bo) { + PerfDeptItemConfig update = BeanUtil.toBean(bo, PerfDeptItemConfig.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(PerfDeptItemConfig entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除车间扣款/奖励项目配置 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } +} diff --git a/klp-perf/src/main/java/com/klp/perf/service/impl/PerfDeptServiceImpl.java b/klp-perf/src/main/java/com/klp/perf/service/impl/PerfDeptServiceImpl.java new file mode 100644 index 000000000..2e40e7183 --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/service/impl/PerfDeptServiceImpl.java @@ -0,0 +1,112 @@ +package com.klp.perf.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.perf.domain.bo.PerfDeptBo; +import com.klp.perf.domain.vo.PerfDeptVo; +import com.klp.perf.domain.PerfDept; +import com.klp.perf.mapper.PerfDeptMapper; +import com.klp.perf.service.IPerfDeptService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 绩效系统部门Service业务层处理 + * + * @author klp + * @date 2026-07-07 + */ +@RequiredArgsConstructor +@Service +public class PerfDeptServiceImpl implements IPerfDeptService { + + private final PerfDeptMapper baseMapper; + + /** + * 查询绩效系统部门 + */ + @Override + public PerfDeptVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 查询绩效系统部门列表 + */ + @Override + public TableDataInfo queryPageList(PerfDeptBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询绩效系统部门列表 + */ + @Override + public List queryList(PerfDeptBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(PerfDeptBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.like(StringUtils.isNotBlank(bo.getDeptName()), PerfDept::getDeptName, bo.getDeptName()); + lqw.eq(bo.getOrderNum() != null, PerfDept::getOrderNum, bo.getOrderNum()); + lqw.eq(bo.getHasBaoSalary() != null, PerfDept::getHasBaoSalary, bo.getHasBaoSalary()); + lqw.eq(StringUtils.isNotBlank(bo.getStatus()), PerfDept::getStatus, bo.getStatus()); + return lqw; + } + + /** + * 新增绩效系统部门 + */ + @Override + public Boolean insertByBo(PerfDeptBo bo) { + PerfDept add = BeanUtil.toBean(bo, PerfDept.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改绩效系统部门 + */ + @Override + public Boolean updateByBo(PerfDeptBo bo) { + PerfDept update = BeanUtil.toBean(bo, PerfDept.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(PerfDept entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除绩效系统部门 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } +} diff --git a/klp-perf/src/main/java/com/klp/perf/service/impl/PerfDeptSummaryServiceImpl.java b/klp-perf/src/main/java/com/klp/perf/service/impl/PerfDeptSummaryServiceImpl.java new file mode 100644 index 000000000..2b0e9a243 --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/service/impl/PerfDeptSummaryServiceImpl.java @@ -0,0 +1,124 @@ +package com.klp.perf.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.perf.domain.bo.PerfDeptSummaryBo; +import com.klp.perf.domain.vo.PerfDeptSummaryVo; +import com.klp.perf.domain.PerfDeptSummary; +import com.klp.perf.mapper.PerfDeptSummaryMapper; +import com.klp.perf.service.IPerfDeptSummaryService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 车间月度汇总Service业务层处理 + * + * @author klp + * @date 2026-07-07 + */ +@RequiredArgsConstructor +@Service +public class PerfDeptSummaryServiceImpl implements IPerfDeptSummaryService { + + private final PerfDeptSummaryMapper baseMapper; + + /** + * 查询车间月度汇总 + */ + @Override + public PerfDeptSummaryVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 查询车间月度汇总列表 + */ + @Override + public TableDataInfo queryPageList(PerfDeptSummaryBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询车间月度汇总列表 + */ + @Override + public List queryList(PerfDeptSummaryBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(PerfDeptSummaryBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(bo.getDeptId() != null, PerfDeptSummary::getDeptId, bo.getDeptId()); + lqw.eq(StringUtils.isNotBlank(bo.getPeriod()), PerfDeptSummary::getPeriod, bo.getPeriod()); + lqw.eq(bo.getTotalEmployees() != null, PerfDeptSummary::getTotalEmployees, bo.getTotalEmployees()); + lqw.eq(bo.getTotalCoeffSum() != null, PerfDeptSummary::getTotalCoeffSum, bo.getTotalCoeffSum()); + lqw.eq(bo.getAvgPerfScore() != null, PerfDeptSummary::getAvgPerfScore, bo.getAvgPerfScore()); + lqw.eq(bo.getAvgPerfCoeff() != null, PerfDeptSummary::getAvgPerfCoeff, bo.getAvgPerfCoeff()); + lqw.eq(bo.getTotalBaseSalary() != null, PerfDeptSummary::getTotalBaseSalary, bo.getTotalBaseSalary()); + lqw.eq(bo.getTotalPerfWage() != null, PerfDeptSummary::getTotalPerfWage, bo.getTotalPerfWage()); + lqw.eq(bo.getTotalDeductions() != null, PerfDeptSummary::getTotalDeductions, bo.getTotalDeductions()); + lqw.eq(bo.getTotalBonuses() != null, PerfDeptSummary::getTotalBonuses, bo.getTotalBonuses()); + lqw.eq(bo.getTotalOther() != null, PerfDeptSummary::getTotalOther, bo.getTotalOther()); + lqw.eq(bo.getTotalActualSalary() != null, PerfDeptSummary::getTotalActualSalary, bo.getTotalActualSalary()); + lqw.eq(bo.getAvgActualSalary() != null, PerfDeptSummary::getAvgActualSalary, bo.getAvgActualSalary()); + lqw.eq(bo.getMonthlyProduction() != null, PerfDeptSummary::getMonthlyProduction, bo.getMonthlyProduction()); + lqw.eq(bo.getUnitPrice() != null, PerfDeptSummary::getUnitPrice, bo.getUnitPrice()); + lqw.eq(bo.getStatus() != null, PerfDeptSummary::getStatus, bo.getStatus()); + return lqw; + } + + /** + * 新增车间月度汇总 + */ + @Override + public Boolean insertByBo(PerfDeptSummaryBo bo) { + PerfDeptSummary add = BeanUtil.toBean(bo, PerfDeptSummary.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改车间月度汇总 + */ + @Override + public Boolean updateByBo(PerfDeptSummaryBo bo) { + PerfDeptSummary update = BeanUtil.toBean(bo, PerfDeptSummary.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(PerfDeptSummary entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除车间月度汇总 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } +} diff --git a/klp-perf/src/main/java/com/klp/perf/service/impl/PerfEmployeeInfoServiceImpl.java b/klp-perf/src/main/java/com/klp/perf/service/impl/PerfEmployeeInfoServiceImpl.java new file mode 100644 index 000000000..58ce5e835 --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/service/impl/PerfEmployeeInfoServiceImpl.java @@ -0,0 +1,115 @@ +package com.klp.perf.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.perf.domain.bo.PerfEmployeeInfoBo; +import com.klp.perf.domain.vo.PerfEmployeeInfoVo; +import com.klp.perf.domain.PerfEmployeeInfo; +import com.klp.perf.mapper.PerfEmployeeInfoMapper; +import com.klp.perf.service.IPerfEmployeeInfoService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 员工绩效薪资基本信息Service业务层处理 + * + * @author klp + * @date 2026-07-07 + */ +@RequiredArgsConstructor +@Service +public class PerfEmployeeInfoServiceImpl implements IPerfEmployeeInfoService { + + private final PerfEmployeeInfoMapper baseMapper; + + /** + * 查询员工绩效薪资基本信息 + */ + @Override + public PerfEmployeeInfoVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 查询员工绩效薪资基本信息列表 + */ + @Override + public TableDataInfo queryPageList(PerfEmployeeInfoBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询员工绩效薪资基本信息列表 + */ + @Override + public List queryList(PerfEmployeeInfoBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(PerfEmployeeInfoBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(bo.getEmployeeId() != null, PerfEmployeeInfo::getEmployeeId, bo.getEmployeeId()); + lqw.eq(bo.getDeptId() != null, PerfEmployeeInfo::getDeptId, bo.getDeptId()); + lqw.like(StringUtils.isNotBlank(bo.getPositionName()), PerfEmployeeInfo::getPositionName, bo.getPositionName()); + lqw.eq(bo.getBaseSalary() != null, PerfEmployeeInfo::getBaseSalary, bo.getBaseSalary()); + lqw.eq(bo.getPerfBase() != null, PerfEmployeeInfo::getPerfBase, bo.getPerfBase()); + lqw.eq(bo.getPosCoeffDefault() != null, PerfEmployeeInfo::getPosCoeffDefault, bo.getPosCoeffDefault()); + lqw.eq(bo.getIsActive() != null, PerfEmployeeInfo::getIsActive, bo.getIsActive()); + return lqw; + } + + /** + * 新增员工绩效薪资基本信息 + */ + @Override + public Boolean insertByBo(PerfEmployeeInfoBo bo) { + PerfEmployeeInfo add = BeanUtil.toBean(bo, PerfEmployeeInfo.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改员工绩效薪资基本信息 + */ + @Override + public Boolean updateByBo(PerfEmployeeInfoBo bo) { + PerfEmployeeInfo update = BeanUtil.toBean(bo, PerfEmployeeInfo.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(PerfEmployeeInfo entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除员工绩效薪资基本信息 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } +} diff --git a/klp-perf/src/main/java/com/klp/perf/service/impl/PerfPositionTemplateServiceImpl.java b/klp-perf/src/main/java/com/klp/perf/service/impl/PerfPositionTemplateServiceImpl.java new file mode 100644 index 000000000..f3221a8b8 --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/service/impl/PerfPositionTemplateServiceImpl.java @@ -0,0 +1,112 @@ +package com.klp.perf.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.perf.domain.bo.PerfPositionTemplateBo; +import com.klp.perf.domain.vo.PerfPositionTemplateVo; +import com.klp.perf.domain.PerfPositionTemplate; +import com.klp.perf.mapper.PerfPositionTemplateMapper; +import com.klp.perf.service.IPerfPositionTemplateService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 岗位绩效考核模板Service业务层处理 + * + * @author klp + * @date 2026-07-07 + */ +@RequiredArgsConstructor +@Service +public class PerfPositionTemplateServiceImpl implements IPerfPositionTemplateService { + + private final PerfPositionTemplateMapper baseMapper; + + /** + * 查询岗位绩效考核模板 + */ + @Override + public PerfPositionTemplateVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 查询岗位绩效考核模板列表 + */ + @Override + public TableDataInfo queryPageList(PerfPositionTemplateBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询岗位绩效考核模板列表 + */ + @Override + public List queryList(PerfPositionTemplateBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(PerfPositionTemplateBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(bo.getDeptId() != null, PerfPositionTemplate::getDeptId, bo.getDeptId()); + lqw.like(StringUtils.isNotBlank(bo.getPositionName()), PerfPositionTemplate::getPositionName, bo.getPositionName()); + lqw.eq(StringUtils.isNotBlank(bo.getTitle()), PerfPositionTemplate::getTitle, bo.getTitle()); + lqw.eq(bo.getIsEnabled() != null, PerfPositionTemplate::getIsEnabled, bo.getIsEnabled()); + return lqw; + } + + /** + * 新增岗位绩效考核模板 + */ + @Override + public Boolean insertByBo(PerfPositionTemplateBo bo) { + PerfPositionTemplate add = BeanUtil.toBean(bo, PerfPositionTemplate.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改岗位绩效考核模板 + */ + @Override + public Boolean updateByBo(PerfPositionTemplateBo bo) { + PerfPositionTemplate update = BeanUtil.toBean(bo, PerfPositionTemplate.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(PerfPositionTemplate entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除岗位绩效考核模板 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } +} diff --git a/klp-perf/src/main/java/com/klp/perf/service/impl/PerfSalaryServiceImpl.java b/klp-perf/src/main/java/com/klp/perf/service/impl/PerfSalaryServiceImpl.java new file mode 100644 index 000000000..d6d65bcc4 --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/service/impl/PerfSalaryServiceImpl.java @@ -0,0 +1,137 @@ +package com.klp.perf.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.perf.domain.bo.PerfSalaryBo; +import com.klp.perf.domain.vo.PerfSalaryVo; +import com.klp.perf.domain.PerfSalary; +import com.klp.perf.mapper.PerfSalaryMapper; +import com.klp.perf.service.IPerfSalaryService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 月度薪资计算记录Service业务层处理 + * + * @author klp + * @date 2026-07-07 + */ +@RequiredArgsConstructor +@Service +public class PerfSalaryServiceImpl implements IPerfSalaryService { + + private final PerfSalaryMapper baseMapper; + + /** + * 查询月度薪资计算记录 + */ + @Override + public PerfSalaryVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 查询月度薪资计算记录列表 + */ + @Override + public TableDataInfo queryPageList(PerfSalaryBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询月度薪资计算记录列表 + */ + @Override + public List queryList(PerfSalaryBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(PerfSalaryBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(bo.getEmployeeId() != null, PerfSalary::getEmployeeId, bo.getEmployeeId()); + lqw.eq(bo.getDeptId() != null, PerfSalary::getDeptId, bo.getDeptId()); + lqw.eq(bo.getAppraisalId() != null, PerfSalary::getAppraisalId, bo.getAppraisalId()); + lqw.eq(StringUtils.isNotBlank(bo.getPeriod()), PerfSalary::getPeriod, bo.getPeriod()); + lqw.eq(bo.getBaseSalary() != null, PerfSalary::getBaseSalary, bo.getBaseSalary()); + lqw.eq(bo.getPerfBase() != null, PerfSalary::getPerfBase, bo.getPerfBase()); + lqw.eq(bo.getPerfScore() != null, PerfSalary::getPerfScore, bo.getPerfScore()); + lqw.eq(bo.getPerfCoeff() != null, PerfSalary::getPerfCoeff, bo.getPerfCoeff()); + lqw.eq(bo.getDeptCoeff() != null, PerfSalary::getDeptCoeff, bo.getDeptCoeff()); + lqw.eq(bo.getPerfWage() != null, PerfSalary::getPerfWage, bo.getPerfWage()); + lqw.eq(bo.getPosCoeff() != null, PerfSalary::getPosCoeff, bo.getPosCoeff()); + lqw.eq(bo.getFixedCoeff() != null, PerfSalary::getFixedCoeff, bo.getFixedCoeff()); + lqw.eq(bo.getAdjCoeff() != null, PerfSalary::getAdjCoeff, bo.getAdjCoeff()); + lqw.eq(bo.getAdjCoeffManual() != null, PerfSalary::getAdjCoeffManual, bo.getAdjCoeffManual()); + lqw.eq(bo.getTotalCoeff() != null, PerfSalary::getTotalCoeff, bo.getTotalCoeff()); + lqw.eq(StringUtils.isNotBlank(bo.getDeductionsJson()), PerfSalary::getDeductionsJson, bo.getDeductionsJson()); + lqw.eq(bo.getDeductionsTotal() != null, PerfSalary::getDeductionsTotal, bo.getDeductionsTotal()); + lqw.eq(StringUtils.isNotBlank(bo.getBonusesJson()), PerfSalary::getBonusesJson, bo.getBonusesJson()); + lqw.eq(bo.getBonusesTotal() != null, PerfSalary::getBonusesTotal, bo.getBonusesTotal()); + lqw.eq(bo.getOtherAmount() != null, PerfSalary::getOtherAmount, bo.getOtherAmount()); + lqw.eq(bo.getActualSalary() != null, PerfSalary::getActualSalary, bo.getActualSalary()); + lqw.eq(bo.getFixedSalaryRef() != null, PerfSalary::getFixedSalaryRef, bo.getFixedSalaryRef()); + lqw.eq(bo.getAdjSalaryRef() != null, PerfSalary::getAdjSalaryRef, bo.getAdjSalaryRef()); + lqw.eq(bo.getBaoPerShiftRef() != null, PerfSalary::getBaoPerShiftRef, bo.getBaoPerShiftRef()); + lqw.eq(bo.getBaoSalaryRef() != null, PerfSalary::getBaoSalaryRef, bo.getBaoSalaryRef()); + lqw.eq(bo.getTotalSalaryRef() != null, PerfSalary::getTotalSalaryRef, bo.getTotalSalaryRef()); + lqw.eq(bo.getStatus() != null, PerfSalary::getStatus, bo.getStatus()); + lqw.eq(bo.getConfirmedAt() != null, PerfSalary::getConfirmedAt, bo.getConfirmedAt()); + lqw.eq(bo.getConfirmedBy() != null, PerfSalary::getConfirmedBy, bo.getConfirmedBy()); + return lqw; + } + + /** + * 新增月度薪资计算记录 + */ + @Override + public Boolean insertByBo(PerfSalaryBo bo) { + PerfSalary add = BeanUtil.toBean(bo, PerfSalary.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改月度薪资计算记录 + */ + @Override + public Boolean updateByBo(PerfSalaryBo bo) { + PerfSalary update = BeanUtil.toBean(bo, PerfSalary.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(PerfSalary entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除月度薪资计算记录 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } +} diff --git a/klp-perf/src/main/java/com/klp/perf/service/impl/PerfTemplateDimensionServiceImpl.java b/klp-perf/src/main/java/com/klp/perf/service/impl/PerfTemplateDimensionServiceImpl.java new file mode 100644 index 000000000..eb6ff8784 --- /dev/null +++ b/klp-perf/src/main/java/com/klp/perf/service/impl/PerfTemplateDimensionServiceImpl.java @@ -0,0 +1,117 @@ +package com.klp.perf.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.perf.domain.bo.PerfTemplateDimensionBo; +import com.klp.perf.domain.vo.PerfTemplateDimensionVo; +import com.klp.perf.domain.PerfTemplateDimension; +import com.klp.perf.mapper.PerfTemplateDimensionMapper; +import com.klp.perf.service.IPerfTemplateDimensionService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 考核维度明细Service业务层处理 + * + * @author klp + * @date 2026-07-07 + */ +@RequiredArgsConstructor +@Service +public class PerfTemplateDimensionServiceImpl implements IPerfTemplateDimensionService { + + private final PerfTemplateDimensionMapper baseMapper; + + /** + * 查询考核维度明细 + */ + @Override + public PerfTemplateDimensionVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 查询考核维度明细列表 + */ + @Override + public TableDataInfo queryPageList(PerfTemplateDimensionBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询考核维度明细列表 + */ + @Override + public List queryList(PerfTemplateDimensionBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(PerfTemplateDimensionBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(bo.getTemplateId() != null, PerfTemplateDimension::getTemplateId, bo.getTemplateId()); + lqw.eq(StringUtils.isNotBlank(bo.getSeq()), PerfTemplateDimension::getSeq, bo.getSeq()); + lqw.like(StringUtils.isNotBlank(bo.getDimName()), PerfTemplateDimension::getDimName, bo.getDimName()); + lqw.eq(StringUtils.isNotBlank(bo.getWeight()), PerfTemplateDimension::getWeight, bo.getWeight()); + lqw.eq(StringUtils.isNotBlank(bo.getIndicator()), PerfTemplateDimension::getIndicator, bo.getIndicator()); + lqw.eq(StringUtils.isNotBlank(bo.getTargetValue()), PerfTemplateDimension::getTargetValue, bo.getTargetValue()); + lqw.eq(StringUtils.isNotBlank(bo.getScoreFormula()), PerfTemplateDimension::getScoreFormula, bo.getScoreFormula()); + lqw.eq(StringUtils.isNotBlank(bo.getScoreRule()), PerfTemplateDimension::getScoreRule, bo.getScoreRule()); + lqw.eq(bo.getIsEnabled() != null, PerfTemplateDimension::getIsEnabled, bo.getIsEnabled()); + return lqw; + } + + /** + * 新增考核维度明细 + */ + @Override + public Boolean insertByBo(PerfTemplateDimensionBo bo) { + PerfTemplateDimension add = BeanUtil.toBean(bo, PerfTemplateDimension.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改考核维度明细 + */ + @Override + public Boolean updateByBo(PerfTemplateDimensionBo bo) { + PerfTemplateDimension update = BeanUtil.toBean(bo, PerfTemplateDimension.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(PerfTemplateDimension entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除考核维度明细 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } +} diff --git a/klp-perf/src/main/resources/mapper/perf/PerfAppraisalDetailMapper.xml b/klp-perf/src/main/resources/mapper/perf/PerfAppraisalDetailMapper.xml new file mode 100644 index 000000000..bfefc06c8 --- /dev/null +++ b/klp-perf/src/main/resources/mapper/perf/PerfAppraisalDetailMapper.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/klp-perf/src/main/resources/mapper/perf/PerfAppraisalMapper.xml b/klp-perf/src/main/resources/mapper/perf/PerfAppraisalMapper.xml new file mode 100644 index 000000000..bdcffde34 --- /dev/null +++ b/klp-perf/src/main/resources/mapper/perf/PerfAppraisalMapper.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/klp-perf/src/main/resources/mapper/perf/PerfCoeffRangeMapper.xml b/klp-perf/src/main/resources/mapper/perf/PerfCoeffRangeMapper.xml new file mode 100644 index 000000000..7614df6bd --- /dev/null +++ b/klp-perf/src/main/resources/mapper/perf/PerfCoeffRangeMapper.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/klp-perf/src/main/resources/mapper/perf/PerfDeptConfigMapper.xml b/klp-perf/src/main/resources/mapper/perf/PerfDeptConfigMapper.xml new file mode 100644 index 000000000..0c96822b8 --- /dev/null +++ b/klp-perf/src/main/resources/mapper/perf/PerfDeptConfigMapper.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/klp-perf/src/main/resources/mapper/perf/PerfDeptItemConfigMapper.xml b/klp-perf/src/main/resources/mapper/perf/PerfDeptItemConfigMapper.xml new file mode 100644 index 000000000..6e8e16306 --- /dev/null +++ b/klp-perf/src/main/resources/mapper/perf/PerfDeptItemConfigMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/klp-perf/src/main/resources/mapper/perf/PerfDeptMapper.xml b/klp-perf/src/main/resources/mapper/perf/PerfDeptMapper.xml new file mode 100644 index 000000000..a359fc9f4 --- /dev/null +++ b/klp-perf/src/main/resources/mapper/perf/PerfDeptMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/klp-perf/src/main/resources/mapper/perf/PerfDeptSummaryMapper.xml b/klp-perf/src/main/resources/mapper/perf/PerfDeptSummaryMapper.xml new file mode 100644 index 000000000..bf29d200a --- /dev/null +++ b/klp-perf/src/main/resources/mapper/perf/PerfDeptSummaryMapper.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/klp-perf/src/main/resources/mapper/perf/PerfEmployeeInfoMapper.xml b/klp-perf/src/main/resources/mapper/perf/PerfEmployeeInfoMapper.xml new file mode 100644 index 000000000..17bb24965 --- /dev/null +++ b/klp-perf/src/main/resources/mapper/perf/PerfEmployeeInfoMapper.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/klp-perf/src/main/resources/mapper/perf/PerfPositionTemplateMapper.xml b/klp-perf/src/main/resources/mapper/perf/PerfPositionTemplateMapper.xml new file mode 100644 index 000000000..d2b27d489 --- /dev/null +++ b/klp-perf/src/main/resources/mapper/perf/PerfPositionTemplateMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/klp-perf/src/main/resources/mapper/perf/PerfSalaryMapper.xml b/klp-perf/src/main/resources/mapper/perf/PerfSalaryMapper.xml new file mode 100644 index 000000000..778538fd1 --- /dev/null +++ b/klp-perf/src/main/resources/mapper/perf/PerfSalaryMapper.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/klp-perf/src/main/resources/mapper/perf/PerfTemplateDimensionMapper.xml b/klp-perf/src/main/resources/mapper/perf/PerfTemplateDimensionMapper.xml new file mode 100644 index 000000000..75dd0838c --- /dev/null +++ b/klp-perf/src/main/resources/mapper/perf/PerfTemplateDimensionMapper.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/klp-pltcm/src/main/java/com/klp/pltcm/controller/ModDeviceEnableController.java b/klp-pltcm/src/main/java/com/klp/pltcm/controller/ModDeviceEnableController.java new file mode 100644 index 000000000..d33fc2425 --- /dev/null +++ b/klp-pltcm/src/main/java/com/klp/pltcm/controller/ModDeviceEnableController.java @@ -0,0 +1,68 @@ +package com.klp.pltcm.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.pltcm.domain.vo.ModDeviceEnableVo; +import com.klp.pltcm.domain.bo.ModDeviceEnableBo; +import com.klp.pltcm.service.IModDeviceEnableService; +import com.klp.common.core.page.TableDataInfo; + +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/pltcm/deviceEnable") +public class ModDeviceEnableController extends BaseController { + + private final IModDeviceEnableService iModDeviceEnableService; + + @GetMapping("/list") + public TableDataInfo list(ModDeviceEnableBo bo, PageQuery pageQuery) { + return iModDeviceEnableService.queryPageList(bo, pageQuery); + } + + @Log(title = "设备启用状态", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(ModDeviceEnableBo bo, HttpServletResponse response) { + List list = iModDeviceEnableService.queryList(bo); + ExcelUtil.exportExcel(list, "设备启用状态", ModDeviceEnableVo.class, response); + } + + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") @PathVariable Long id) { + return R.ok(iModDeviceEnableService.queryById(id)); + } + + @Log(title = "设备启用状态", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody ModDeviceEnableBo bo) { + return toAjax(iModDeviceEnableService.insertByBo(bo)); + } + + @Log(title = "设备启用状态", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody ModDeviceEnableBo bo) { + return toAjax(iModDeviceEnableService.updateByBo(bo)); + } + + @Log(title = "设备启用状态", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") @PathVariable Long[] ids) { + return toAjax(iModDeviceEnableService.deleteWithValidByIds(Arrays.asList(ids), true)); + } +} diff --git a/klp-pltcm/src/main/java/com/klp/pltcm/domain/ModDeviceEnable.java b/klp-pltcm/src/main/java/com/klp/pltcm/domain/ModDeviceEnable.java new file mode 100644 index 000000000..3f3886793 --- /dev/null +++ b/klp-pltcm/src/main/java/com/klp/pltcm/domain/ModDeviceEnable.java @@ -0,0 +1,35 @@ +package com.klp.pltcm.domain; + +import com.baomidou.mybatisplus.annotation.*; +import com.klp.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 设备启用状态 mod_device_enable + * + * @author klp + * @date 2026-07-06 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("mod_device_enable") +public class ModDeviceEnable extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + private String deviceCode; + private String deviceName; + private String deviceType; + private String workshop; + private String lineName; + private Integer isEnabled; + private Integer sortOrder; + private String remark; + + @TableLogic + private Long delFlag; +} diff --git a/klp-pltcm/src/main/java/com/klp/pltcm/domain/bo/ModDeviceEnableBo.java b/klp-pltcm/src/main/java/com/klp/pltcm/domain/bo/ModDeviceEnableBo.java new file mode 100644 index 000000000..d3a949c45 --- /dev/null +++ b/klp-pltcm/src/main/java/com/klp/pltcm/domain/bo/ModDeviceEnableBo.java @@ -0,0 +1,19 @@ +package com.klp.pltcm.domain.bo; + +import com.klp.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper = true) +public class ModDeviceEnableBo extends BaseEntity { + private Long id; + private String deviceCode; + private String deviceName; + private String deviceType; + private String workshop; + private String lineName; + private Integer isEnabled; + private Integer sortOrder; + private String remark; +} diff --git a/klp-pltcm/src/main/java/com/klp/pltcm/domain/vo/ModDeviceEnableVo.java b/klp-pltcm/src/main/java/com/klp/pltcm/domain/vo/ModDeviceEnableVo.java new file mode 100644 index 000000000..8fdbbfaa9 --- /dev/null +++ b/klp-pltcm/src/main/java/com/klp/pltcm/domain/vo/ModDeviceEnableVo.java @@ -0,0 +1,35 @@ +package com.klp.pltcm.domain.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; +import java.util.Date; + +@Data +@ExcelIgnoreUnannotated +public class ModDeviceEnableVo { + private static final long serialVersionUID = 1L; + + @ExcelProperty(value = "主键ID") + private Long id; + @ExcelProperty(value = "设备编码") + private String deviceCode; + @ExcelProperty(value = "设备名称") + private String deviceName; + @ExcelProperty(value = "设备类型") + private String deviceType; + @ExcelProperty(value = "所属车间") + private String workshop; + @ExcelProperty(value = "所属产线") + private String lineName; + @ExcelProperty(value = "是否启用") + private Integer isEnabled; + @ExcelProperty(value = "排序") + private Integer sortOrder; + @ExcelProperty(value = "备注") + private String remark; + @ExcelProperty(value = "创建时间") + private Date createTime; + @ExcelProperty(value = "更新时间") + private Date updateTime; +} diff --git a/klp-pltcm/src/main/java/com/klp/pltcm/mapper/ModDeviceEnableMapper.java b/klp-pltcm/src/main/java/com/klp/pltcm/mapper/ModDeviceEnableMapper.java new file mode 100644 index 000000000..935bc1d22 --- /dev/null +++ b/klp-pltcm/src/main/java/com/klp/pltcm/mapper/ModDeviceEnableMapper.java @@ -0,0 +1,8 @@ +package com.klp.pltcm.mapper; + +import com.klp.pltcm.domain.ModDeviceEnable; +import com.klp.pltcm.domain.vo.ModDeviceEnableVo; +import com.klp.common.core.mapper.BaseMapperPlus; + +public interface ModDeviceEnableMapper extends BaseMapperPlus { +} diff --git a/klp-pltcm/src/main/java/com/klp/pltcm/service/IModDeviceEnableService.java b/klp-pltcm/src/main/java/com/klp/pltcm/service/IModDeviceEnableService.java new file mode 100644 index 000000000..8f81c8637 --- /dev/null +++ b/klp-pltcm/src/main/java/com/klp/pltcm/service/IModDeviceEnableService.java @@ -0,0 +1,17 @@ +package com.klp.pltcm.service; + +import com.klp.pltcm.domain.vo.ModDeviceEnableVo; +import com.klp.pltcm.domain.bo.ModDeviceEnableBo; +import com.klp.common.core.page.TableDataInfo; +import com.klp.common.core.domain.PageQuery; +import java.util.Collection; +import java.util.List; + +public interface IModDeviceEnableService { + ModDeviceEnableVo queryById(Long id); + TableDataInfo queryPageList(ModDeviceEnableBo bo, PageQuery pageQuery); + List queryList(ModDeviceEnableBo bo); + Boolean insertByBo(ModDeviceEnableBo bo); + Boolean updateByBo(ModDeviceEnableBo bo); + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/klp-pltcm/src/main/java/com/klp/pltcm/service/impl/ModDeviceEnableServiceImpl.java b/klp-pltcm/src/main/java/com/klp/pltcm/service/impl/ModDeviceEnableServiceImpl.java new file mode 100644 index 000000000..ea244b3fe --- /dev/null +++ b/klp-pltcm/src/main/java/com/klp/pltcm/service/impl/ModDeviceEnableServiceImpl.java @@ -0,0 +1,81 @@ +package com.klp.pltcm.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.pltcm.domain.bo.ModDeviceEnableBo; +import com.klp.pltcm.domain.vo.ModDeviceEnableVo; +import com.klp.pltcm.domain.ModDeviceEnable; +import com.klp.pltcm.mapper.ModDeviceEnableMapper; +import com.klp.pltcm.service.IModDeviceEnableService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +@RequiredArgsConstructor +@Service +public class ModDeviceEnableServiceImpl implements IModDeviceEnableService { + + private final ModDeviceEnableMapper baseMapper; + + @Override + public ModDeviceEnableVo queryById(Long id) { + return baseMapper.selectVoById(id); + } + + @Override + public TableDataInfo queryPageList(ModDeviceEnableBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + @Override + public List queryList(ModDeviceEnableBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(ModDeviceEnableBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.like(StringUtils.isNotBlank(bo.getDeviceCode()), ModDeviceEnable::getDeviceCode, bo.getDeviceCode()); + lqw.like(StringUtils.isNotBlank(bo.getDeviceName()), ModDeviceEnable::getDeviceName, bo.getDeviceName()); + lqw.eq(StringUtils.isNotBlank(bo.getDeviceType()), ModDeviceEnable::getDeviceType, bo.getDeviceType()); + lqw.like(StringUtils.isNotBlank(bo.getWorkshop()), ModDeviceEnable::getWorkshop, bo.getWorkshop()); + lqw.like(StringUtils.isNotBlank(bo.getLineName()), ModDeviceEnable::getLineName, bo.getLineName()); + lqw.eq(bo.getIsEnabled() != null, ModDeviceEnable::getIsEnabled, bo.getIsEnabled()); + lqw.orderByAsc(ModDeviceEnable::getSortOrder); + return lqw; + } + + @Override + public Boolean insertByBo(ModDeviceEnableBo bo) { + ModDeviceEnable add = BeanUtil.toBean(bo, ModDeviceEnable.class); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + @Override + public Boolean updateByBo(ModDeviceEnableBo bo) { + ModDeviceEnable update = BeanUtil.toBean(bo, ModDeviceEnable.class); + return baseMapper.updateById(update) > 0; + } + + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if (isValid) { + } + return baseMapper.deleteBatchIds(ids) > 0; + } +} diff --git a/klp-pltcm/src/main/resources/mapper/pltcm/ModDeviceEnableMapper.xml b/klp-pltcm/src/main/resources/mapper/pltcm/ModDeviceEnableMapper.xml new file mode 100644 index 000000000..277d76f8c --- /dev/null +++ b/klp-pltcm/src/main/resources/mapper/pltcm/ModDeviceEnableMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/klp-system/src/main/java/com/klp/system/domain/vo/SysFileVo.java b/klp-system/src/main/java/com/klp/system/domain/vo/SysFileVo.java index 66c91baf2..ff1dbc629 100644 --- a/klp-system/src/main/java/com/klp/system/domain/vo/SysFileVo.java +++ b/klp-system/src/main/java/com/klp/system/domain/vo/SysFileVo.java @@ -86,4 +86,10 @@ public class SysFileVo extends BaseEntity { @ExcelProperty(value = "浏览次数") private Long viewCount; + /** + * 创建者昵称 + */ + @ExcelProperty(value = "创建者昵称") + private String createByName; + } diff --git a/klp-system/src/main/java/com/klp/system/service/impl/SysFileServiceImpl.java b/klp-system/src/main/java/com/klp/system/service/impl/SysFileServiceImpl.java index 09b1c2ccf..306c1bde6 100644 --- a/klp-system/src/main/java/com/klp/system/service/impl/SysFileServiceImpl.java +++ b/klp-system/src/main/java/com/klp/system/service/impl/SysFileServiceImpl.java @@ -17,12 +17,15 @@ import com.klp.system.domain.SysFile; import com.klp.system.domain.SysFileVisibleUser; import com.klp.system.mapper.SysFileMapper; import com.klp.system.mapper.SysFileVisibleUserMapper; +import com.klp.system.mapper.SysUserMapper; import com.klp.system.service.ISysFileService; +import com.klp.common.core.domain.entity.SysUser; import java.util.List; import java.util.Map; import java.util.Collection; import java.util.stream.Collectors; +import java.util.Optional; /** * 文件主信息Service业务层处理 @@ -36,6 +39,7 @@ public class SysFileServiceImpl implements ISysFileService { private final SysFileMapper baseMapper; private final SysFileVisibleUserMapper visibleUserMapper; + private final SysUserMapper userMapper; /** * 查询文件主信息 @@ -52,6 +56,7 @@ public class SysFileServiceImpl implements ISysFileService { public TableDataInfo queryPageList(SysFileBo bo, PageQuery pageQuery) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + fillCreateByName(result.getRecords()); return TableDataInfo.build(result); } @@ -61,7 +66,9 @@ public class SysFileServiceImpl implements ISysFileService { @Override public List queryList(SysFileBo bo) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); - return baseMapper.selectVoList(lqw); + List list = baseMapper.selectVoList(lqw); + fillCreateByName(list); + return list; } private LambdaQueryWrapper buildQueryWrapper(SysFileBo bo) { @@ -122,6 +129,7 @@ public class SysFileServiceImpl implements ISysFileService { LambdaQueryWrapper lqw = buildQueryWrapper(bo); lqw.in(SysFile::getFileId, fileIds); Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + fillCreateByName(result.getRecords()); return TableDataInfo.build(result); } @@ -135,6 +143,35 @@ public class SysFileServiceImpl implements ISysFileService { .eq(SysFile::getFileId, fileId)); } + /** + * 根据 createBy(登录名)批量填充 createByName(用户昵称) + */ + private void fillCreateByName(List list) { + if (list == null || list.isEmpty()) { + return; + } + // 收集所有不重复的 createBy + List userNames = list.stream() + .map(SysFileVo::getCreateBy) + .filter(StringUtils::isNotBlank) + .distinct() + .collect(Collectors.toList()); + if (userNames.isEmpty()) { + return; + } + // 批量查询用户 + List users = userMapper.selectUserList( + Wrappers.lambdaQuery().in(SysUser::getUserName, userNames)); + Map nickNameMap = users.stream() + .collect(Collectors.toMap(SysUser::getUserName, SysUser::getNickName, (a, b) -> a)); + // 赋值 + for (SysFileVo vo : list) { + if (StringUtils.isNotBlank(vo.getCreateBy())) { + vo.setCreateByName(nickNameMap.get(vo.getCreateBy())); + } + } + } + /** * 保存前的数据校验 */ diff --git a/klp-ui/src/api/crm/order.js b/klp-ui/src/api/crm/order.js index 6f151bae5..428fb2cc8 100644 --- a/klp-ui/src/api/crm/order.js +++ b/klp-ui/src/api/crm/order.js @@ -64,3 +64,13 @@ export function listTodayOrder(query) { params: query }) } + +// 导出正式订单主列表(业务精简字段) +export function exportOrder(query) { + return request({ + url: '/crm/order/exportDetail', + method: 'post', + data: query, + responseType: 'blob' + }) +} diff --git a/klp-ui/src/api/crm/orderItem.js b/klp-ui/src/api/crm/orderItem.js index 3ae03d026..d938634db 100644 --- a/klp-ui/src/api/crm/orderItem.js +++ b/klp-ui/src/api/crm/orderItem.js @@ -42,3 +42,13 @@ export function delOrderItem(itemId) { method: 'delete' }) } + +// 导出正式订单明细列表(业务精简字段) +export function exportOrderItem(query) { + return request({ + url: '/crm/orderItem/exportDetail', + method: 'post', + data: query, + responseType: 'blob' + }) +} diff --git a/klp-ui/src/components/CoilSelector/index.vue b/klp-ui/src/components/CoilSelector/index.vue index 6b9045388..7b5482e83 100644 --- a/klp-ui/src/components/CoilSelector/index.vue +++ b/klp-ui/src/components/CoilSelector/index.vue @@ -84,7 +84,10 @@ - + + + @@ -303,7 +306,7 @@ export default { DragResizePanel, OrderDetail }, - dicts: ['coil_itemname', 'coil_material', 'coil_manufacturer', 'coil_quality_status'], + dicts: ['coil_itemname', 'coil_material', 'coil_manufacturer', 'coil_quality_status', 'wip_pack_saleman'], props: { // 非触发器模式下,外部控制显隐(触发器模式下无效) visible: { diff --git a/klp-ui/src/components/KLPService/UserSelect/index.vue b/klp-ui/src/components/KLPService/UserSelect/index.vue index 8a39408fa..633009e1c 100644 --- a/klp-ui/src/components/KLPService/UserSelect/index.vue +++ b/klp-ui/src/components/KLPService/UserSelect/index.vue @@ -1,26 +1,28 @@ diff --git a/klp-ui/src/views/crm/components/CoilTable.vue b/klp-ui/src/views/crm/components/CoilTable.vue index 26d7b08d1..2b7eb6ffc 100644 --- a/klp-ui/src/views/crm/components/CoilTable.vue +++ b/klp-ui/src/views/crm/components/CoilTable.vue @@ -42,7 +42,7 @@ - + diff --git a/klp-ui/src/views/crm/orderItem/index.vue b/klp-ui/src/views/crm/orderItem/index.vue index 94e314553..cc7340f51 100644 --- a/klp-ui/src/views/crm/orderItem/index.vue +++ b/klp-ui/src/views/crm/orderItem/index.vue @@ -52,6 +52,7 @@ /> 筛选 重置 + 导出 已按合同签订日期默认当月,结果按交货日期倒序排列 @@ -96,6 +97,11 @@ {{ row.customer }} + + + - + diff --git a/klp-ui/src/views/system/file/index.vue b/klp-ui/src/views/system/file/index.vue index 543c70aaa..45469eef7 100644 --- a/klp-ui/src/views/system/file/index.vue +++ b/klp-ui/src/views/system/file/index.vue @@ -1,33 +1,5 @@