From 069d321dc9e2b68c1f36b7906914ecb0e717adf0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A9=AC=E4=B8=89=E7=82=AE?= <15856818120@163.com> Date: Mon, 12 Jan 2026 14:02:43 +0800 Subject: [PATCH] =?UTF-8?q?bug=E4=BF=AE=E5=A4=8D,=E9=9C=80=E6=B1=82?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WorkloadAndCarSummaryExcelExporter.java | 77 ++++++++++-------- .../digital/controller/DayPlanController.java | 7 +- .../controller/PersonnelController.java | 66 ++++++++++++++- .../controller/PlanManagementController.java | 2 +- .../com/bonus/digital/dao/MonthlyPlanVo.java | 11 +++ .../com/bonus/digital/dao/PersonnelVo.java | 8 ++ .../bonus/digital/dao/PlanManagementVo.java | 7 +- .../bonus/digital/dao/WorkloadCategoryVo.java | 7 +- .../digital/dao/WorkloadSummaryExcelVo.java | 12 ++- .../com/bonus/digital/dao/WorkloadVo.java | 5 ++ .../digital/service/PersonnelService.java | 2 + .../service/impl/DayPlanServiceImpl.java | 8 ++ .../service/impl/MonthlyPlanServiceImpl.java | 6 +- .../service/impl/PersonnelServiceImpl.java | 40 +++++++++ .../impl/PlanManagementServiceImpl.java | 14 ++-- .../main/resources/download/人员导入模板.xlsx | Bin 0 -> 11037 bytes .../main/resources/download/计划导入模板.xlsx | Bin 10961 -> 10963 bytes .../main/resources/mapper/DayPlanMapper.xml | 9 +- .../main/resources/mapper/MonthPlanMapper.xml | 8 +- .../mapper/WorkloadCategoryMapper.xml | 13 +-- 20 files changed, 236 insertions(+), 66 deletions(-) create mode 100644 bonus-business/src/main/resources/download/人员导入模板.xlsx diff --git a/bonus-business/src/main/java/com/bonus/business/controller/tool/WorkloadAndCarSummaryExcelExporter.java b/bonus-business/src/main/java/com/bonus/business/controller/tool/WorkloadAndCarSummaryExcelExporter.java index 102c82a..bd000d6 100644 --- a/bonus-business/src/main/java/com/bonus/business/controller/tool/WorkloadAndCarSummaryExcelExporter.java +++ b/bonus-business/src/main/java/com/bonus/business/controller/tool/WorkloadAndCarSummaryExcelExporter.java @@ -24,12 +24,12 @@ import java.util.List; public class WorkloadAndCarSummaryExcelExporter { // 列索引常量 - private static final int COL_A = 0, COL_B = 1, COL_C = 2, COL_D = 3, COL_E = 4, COL_F = 5; - private static final int COL_G = 6, COL_H = 7, COL_I = 8, COL_J = 9, COL_K = 10; + private static final int COL_A = 0, COL_B = 1, COL_C = 2, COL_D = 3, COL_E = 4, COL_F = 5,COL_G = 6, COL_H = 7; + private static final int COL_I = 8, COL_J = 9, COL_K = 10, COL_L = 11, COL_M = 12; // 标题合并区域列范围 - private static final int[] WORKLOAD_TITLE_COLS = {COL_A, COL_B, COL_C, COL_D, COL_E, COL_F}; // 工作量标题列(A-F) - private static final int[] CAR_TITLE_COLS = {COL_H, COL_I, COL_J, COL_K}; // 用车标题列(H-K) + private static final int[] WORKLOAD_TITLE_COLS = {COL_A, COL_B, COL_C, COL_D, COL_E,COL_F,COL_G,COL_H}; // 工作量标题列(A-F) + private static final int[] CAR_TITLE_COLS = {COL_J, COL_K,COL_L, COL_M}; // 用车标题列(H-K) /** * 导出方法(纯POI手动构建所有内容) @@ -206,7 +206,7 @@ public class WorkloadAndCarSummaryExcelExporter { Cell cell = row0.createCell(col); cell.setCellStyle(titleStyle); } - Cell carTitle = row0.getCell(COL_H); + Cell carTitle = row0.getCell(COL_J); carTitle.setCellValue(monthOnly + "月份用车清单"); // ========== 行1:二级表头 ========== @@ -216,13 +216,15 @@ public class WorkloadAndCarSummaryExcelExporter { createCell(row1, COL_B, "运检站", headerStyle); createCell(row1, COL_C, "工作量类型", headerStyle); createCell(row1, COL_D, "工作量", headerStyle); - createCell(row1, COL_E, "单价", headerStyle); - createCell(row1, COL_F, "合计", headerStyle); + createCell(row1, COL_E, "绩效单价", headerStyle); + createCell(row1, COL_F, "结算单价", headerStyle); + createCell(row1, COL_G, "绩效合计", headerStyle); + createCell(row1, COL_H, "结算合计", headerStyle); // 用车表头 - createCell(row1, COL_H, "序号", headerStyle); - createCell(row1, COL_I, "运检站", headerStyle); - createCell(row1, COL_J, "管理用车天数", headerStyle); - createCell(row1, COL_K, "分包用车天数", headerStyle); + createCell(row1, COL_J, "序号", headerStyle); + createCell(row1, COL_K, "运检站", headerStyle); + createCell(row1, COL_L, "管理用车天数", headerStyle); + createCell(row1, COL_M, "分包用车天数", headerStyle); } /** @@ -244,30 +246,32 @@ public class WorkloadAndCarSummaryExcelExporter { createCell(row, COL_C, workloadVo.getWorkloadCategoryName() == null ? "" : workloadVo.getWorkloadCategoryName(), contentStyle); createCell(row, COL_D, workloadVo.getTotalWorkload() == null ? 0 : workloadVo.getTotalWorkload(), contentStyle); createCell(row, COL_E, workloadVo.getUnitPrice() == null ? 0 : workloadVo.getUnitPrice(), contentStyle); - createCell(row, COL_F, workloadVo.getTotalAmount() == null ? 0 : workloadVo.getTotalAmount(), contentStyle); + createCell(row, COL_F, workloadVo.getSettlementUnitPrice() == null ? 0 : workloadVo.getSettlementUnitPrice(), contentStyle); + createCell(row, COL_G, workloadVo.getTotalAmount() == null ? 0 : workloadVo.getTotalAmount(), contentStyle); + createCell(row, COL_H, workloadVo.getSettlementTotalAmount() == null ? 0 : workloadVo.getSettlementTotalAmount(), contentStyle); // 填充用车数据(核心修改:序号为0时置空) CarUseSummaryExcelVo carVo = i < carData.size() ? carData.get(i) : new CarUseSummaryExcelVo(); Integer carSerialNum = carVo.getSerialNumber(); // 序号:为0或null时置空,否则填实际值 - if (carSerialNum == null || carSerialNum == 0) { - createCell(row, COL_H, "", contentStyle); - } else { - createCell(row, COL_H, carSerialNum, contentStyle); - } - // 运检站:保留原有逻辑 - createCell(row, COL_I, carVo.getInspectionStationName() == null ? "" : carVo.getInspectionStationName(), contentStyle); - // 管理用车天数:序号为0/null时置空,否则填实际值(无值则0) if (carSerialNum == null || carSerialNum == 0) { createCell(row, COL_J, "", contentStyle); } else { - createCell(row, COL_J, carVo.getTotalManageCarDays() == null ? 0 : carVo.getTotalManageCarDays(), contentStyle); + createCell(row, COL_J, carSerialNum, contentStyle); + } + // 运检站:保留原有逻辑 + createCell(row, COL_K, carVo.getInspectionStationName() == null ? "" : carVo.getInspectionStationName(), contentStyle); + // 管理用车天数:序号为0/null时置空,否则填实际值(无值则0) + if (carSerialNum == null || carSerialNum == 0) { + createCell(row, COL_L, "", contentStyle); + } else { + createCell(row, COL_L, carVo.getTotalManageCarDays() == null ? 0 : carVo.getTotalManageCarDays(), contentStyle); } // 分包用车天数:序号为0/null时置空,否则填实际值(无值则0) if (carSerialNum == null || carSerialNum == 0) { - createCell(row, COL_K, "", contentStyle); + createCell(row, COL_M, "", contentStyle); } else { - createCell(row, COL_K, carVo.getTotalSubCarDays() == null ? 0 : carVo.getTotalSubCarDays(), contentStyle); + createCell(row, COL_M, carVo.getTotalSubCarDays() == null ? 0 : carVo.getTotalSubCarDays(), contentStyle); } } } @@ -284,15 +288,19 @@ public class WorkloadAndCarSummaryExcelExporter { // 工作量合计 createCell(totalRow, COL_A, "合计", totalStyle); int workloadTotal = 0; + int settlementWorkloadTotal = 0; for (WorkloadSummaryExcelVo vo : workloadData) { if (vo != null && vo.getTotalAmount() != null) { workloadTotal += vo.getTotalAmount(); } + if (vo != null && vo.getSettlementTotalAmount() != null) { + settlementWorkloadTotal += vo.getSettlementTotalAmount(); + } } - createCell(totalRow, COL_F, workloadTotal, totalStyle); - + createCell(totalRow, COL_G, workloadTotal, totalStyle); + createCell(totalRow, COL_H, settlementWorkloadTotal, totalStyle); // 用车合计 - createCell(totalRow, COL_H, "合计", totalStyle); + createCell(totalRow, COL_J, "合计", totalStyle); int manageCarTotal = 0; int subCarTotal = 0; for (CarUseSummaryExcelVo vo : carData) { @@ -310,15 +318,16 @@ public class WorkloadAndCarSummaryExcelExporter { } } // 确保J列(管理用车天数合计)和K列(分包用车天数合计)正常赋值 - createCell(totalRow, COL_J, manageCarTotal, totalStyle); - createCell(totalRow, COL_K, subCarTotal, totalStyle); + createCell(totalRow, COL_L, manageCarTotal, totalStyle); + createCell(totalRow, COL_M, subCarTotal, totalStyle); // 合计行其他单元格填充空值+样式 createCell(totalRow, COL_B, "", totalStyle); createCell(totalRow, COL_C, "", totalStyle); createCell(totalRow, COL_D, "", totalStyle); createCell(totalRow, COL_E, "", totalStyle); - createCell(totalRow, COL_I, "", totalStyle); + createCell(totalRow, COL_F, "", totalStyle); + createCell(totalRow, COL_K, "", totalStyle); } /** @@ -326,19 +335,19 @@ public class WorkloadAndCarSummaryExcelExporter { */ private static void setMergedRegions(Sheet sheet, int totalRowNum) { // 一级标题合并 - sheet.addMergedRegion(new CellRangeAddress(0, 0, COL_A, COL_F)); - sheet.addMergedRegion(new CellRangeAddress(0, 0, COL_H, COL_K)); + sheet.addMergedRegion(new CellRangeAddress(0, 0, COL_A, COL_H)); + sheet.addMergedRegion(new CellRangeAddress(0, 0, COL_J, COL_M)); // 合计行合并 - sheet.addMergedRegion(new CellRangeAddress(totalRowNum, totalRowNum, COL_A, COL_E)); + sheet.addMergedRegion(new CellRangeAddress(totalRowNum, totalRowNum, COL_A, COL_F)); // 核心修改:用车合计行仅合并H-I列,不再合并J列,确保J列和K列的合计值正常显示 - sheet.addMergedRegion(new CellRangeAddress(totalRowNum, totalRowNum, COL_H, COL_I)); + sheet.addMergedRegion(new CellRangeAddress(totalRowNum, totalRowNum, COL_J, COL_K)); } /** * 自适应列宽 */ private static void autoSizeColumns(Sheet sheet) { - int[] cols = {COL_A, COL_B, COL_C, COL_D, COL_E, COL_F, COL_H, COL_I, COL_J, COL_K}; + int[] cols = {COL_A, COL_B, COL_C, COL_D, COL_E, COL_F, COL_G, COL_H, COL_J, COL_K, COL_L, COL_M}; for (int col : cols) { sheet.autoSizeColumn(col); // 手动调整列宽(避免自适应过窄) diff --git a/bonus-business/src/main/java/com/bonus/digital/controller/DayPlanController.java b/bonus-business/src/main/java/com/bonus/digital/controller/DayPlanController.java index 855284f..5a1cfde 100644 --- a/bonus-business/src/main/java/com/bonus/digital/controller/DayPlanController.java +++ b/bonus-business/src/main/java/com/bonus/digital/controller/DayPlanController.java @@ -1,7 +1,5 @@ package com.bonus.digital.controller; -import com.bonus.business.controller.tool.MonthPlanExcelExporter; -import com.bonus.business.controller.tool.WorkloadAndCarSummaryExcelExporter; import com.bonus.business.controller.tool.WorkloadSummaryExcelExporter; import com.bonus.common.annotation.Log; import com.bonus.common.core.controller.BaseController; @@ -16,7 +14,6 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; -import java.io.IOException; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeParseException; @@ -72,8 +69,10 @@ public class DayPlanController extends BaseController { public AjaxResult addMonthlyPlan(@RequestBody List dayPlanVoList) { try { int res = dayPlanService.addMonthlyPlan(dayPlanVoList); - if (res > 0) { + if (res ==1) { return AjaxResult.success(); + } else if (res ==2) { + return AjaxResult.error("新增失败,计划已存在"); } else { return AjaxResult.error("新增失败"); } diff --git a/bonus-business/src/main/java/com/bonus/digital/controller/PersonnelController.java b/bonus-business/src/main/java/com/bonus/digital/controller/PersonnelController.java index c2d568b..8206547 100644 --- a/bonus-business/src/main/java/com/bonus/digital/controller/PersonnelController.java +++ b/bonus-business/src/main/java/com/bonus/digital/controller/PersonnelController.java @@ -3,16 +3,23 @@ package com.bonus.digital.controller; import com.bonus.common.core.controller.BaseController; import com.bonus.common.core.domain.AjaxResult; import com.bonus.common.core.page.TableDataInfo; -import com.bonus.digital.dao.InspectionStationVo; -import com.bonus.digital.dao.PersonnelClassificationVo; -import com.bonus.digital.dao.PersonnelVo; -import com.bonus.digital.dao.SelectDto; +import com.bonus.common.utils.poi.ExcelUtil; +import com.bonus.digital.dao.*; import com.bonus.digital.service.PersonnelService; +import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; +import org.apache.poi.util.IOUtils; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.InputStream; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; import java.util.List; /** @@ -153,4 +160,55 @@ public class PersonnelController extends BaseController { } } + /** + * 导入计划管理 + */ + @PostMapping("/importPersonnel") + public AjaxResult importPersonnel(MultipartFile file) { + try { + ExcelUtil util = new ExcelUtil(PersonnelVo.class); + List planManagementList = util.importExcel(file.getInputStream()); + String message = personnelService.importPersonnel(planManagementList); + return success(message); + } catch (Exception e) { + log.error(e.getMessage()); + return AjaxResult.error("模板错误"); + } + } + + @ApiOperation("人员模板下载") + @PostMapping("/downloadPersonnelExcel") + public void downloadPersonnelExcel(HttpServletRequest request, HttpServletResponse response) { + InputStream inputStream = null; + ServletOutputStream servletOutputStream = null; + try { + String path = "download/" + "人员导入模板.xlsx"; + inputStream = this.getClass().getClassLoader().getResourceAsStream(path); + response.setContentType("application/vnd.ms-excel"); + response.addHeader("Cache-Control", "no-cache, no-store, must-revalidate"); + response.addHeader("charset", "utf-8"); + response.addHeader("Pragma", "no-cache"); + String encodeName = URLEncoder.encode("人员导入模板.xlsx", StandardCharsets.UTF_8.toString()); + response.setHeader("Content-Disposition", "attachment; filename=\"" + encodeName + "\"; filename*=utf-8''" + encodeName); + servletOutputStream = response.getOutputStream(); + IOUtils.copy(inputStream, servletOutputStream); + response.flushBuffer(); + log.info("文件下载成功!!"); + } catch (Exception e) { + log.error(e.getMessage()); + e.printStackTrace(); + } finally { + try { + if (servletOutputStream != null) { + servletOutputStream.close(); + } + if (inputStream != null) { + inputStream.close(); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + } + } diff --git a/bonus-business/src/main/java/com/bonus/digital/controller/PlanManagementController.java b/bonus-business/src/main/java/com/bonus/digital/controller/PlanManagementController.java index ee66f86..b3e6ad9 100644 --- a/bonus-business/src/main/java/com/bonus/digital/controller/PlanManagementController.java +++ b/bonus-business/src/main/java/com/bonus/digital/controller/PlanManagementController.java @@ -143,7 +143,7 @@ public class PlanManagementController extends BaseController { return success(message); } catch (Exception e) { log.error(e.getMessage()); - return AjaxResult.error("系统异常,请联系管理员"); + return AjaxResult.error("模板错误"); } } diff --git a/bonus-business/src/main/java/com/bonus/digital/dao/MonthlyPlanVo.java b/bonus-business/src/main/java/com/bonus/digital/dao/MonthlyPlanVo.java index 4ce63f1..7ca81fd 100644 --- a/bonus-business/src/main/java/com/bonus/digital/dao/MonthlyPlanVo.java +++ b/bonus-business/src/main/java/com/bonus/digital/dao/MonthlyPlanVo.java @@ -212,4 +212,15 @@ public class MonthlyPlanVo { */ private String nowDate; + + /** + * 结算单价(元) + */ + private int settlementUnitPrice; + + /** + * 结算合计(元) + */ + private Integer settlementTotalAmount; + } diff --git a/bonus-business/src/main/java/com/bonus/digital/dao/PersonnelVo.java b/bonus-business/src/main/java/com/bonus/digital/dao/PersonnelVo.java index 36c77d7..062f626 100644 --- a/bonus-business/src/main/java/com/bonus/digital/dao/PersonnelVo.java +++ b/bonus-business/src/main/java/com/bonus/digital/dao/PersonnelVo.java @@ -1,5 +1,6 @@ package com.bonus.digital.dao; +import com.bonus.common.annotation.Excel; import lombok.Data; import java.util.Date; @@ -26,23 +27,27 @@ public class PersonnelVo { /** * 单位名称 */ + @Excel(name = "人员所属") private String inspectionStationName; /** * 姓名 */ + @Excel(name = "姓名") private String name; /** * 性别 */ + @Excel(name = "性别") private String sex; /** * 电话 */ + @Excel(name = "电话") private String phone; /** @@ -53,6 +58,7 @@ public class PersonnelVo { /** * 岗位 */ + @Excel(name = "岗位") private String positionName; /** @@ -63,6 +69,7 @@ public class PersonnelVo { /** * 人员性质 */ + @Excel(name = "人员性质") private String personnelNatureName; /** @@ -73,6 +80,7 @@ public class PersonnelVo { /** * 人员分类 */ + @Excel(name = "人员分类") private String personnelClassificationName; /** diff --git a/bonus-business/src/main/java/com/bonus/digital/dao/PlanManagementVo.java b/bonus-business/src/main/java/com/bonus/digital/dao/PlanManagementVo.java index a347637..13a8103 100644 --- a/bonus-business/src/main/java/com/bonus/digital/dao/PlanManagementVo.java +++ b/bonus-business/src/main/java/com/bonus/digital/dao/PlanManagementVo.java @@ -1,6 +1,7 @@ package com.bonus.digital.dao; import com.bonus.common.annotation.Excel; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import java.util.Date; @@ -38,24 +39,24 @@ public class PlanManagementVo { /** * 实施部门 */ - @Excel(name = "实施部门") private Integer inspectionStationId; /** * 实施部门 */ + @Excel(name = "实施部门") private String inspectionStationName; /** * 计划开始时间 */ - @Excel(name = "计划开始时间") + @Excel(name = "计划开始时间",dateFormat ="yyyy-MM-dd" ) private String stareDate; /** * 计划结束时间 */ - @Excel(name = "计划结束时间") + @Excel(name = "计划结束时间" ,dateFormat ="yyyy-MM-dd") private String endDate; /** diff --git a/bonus-business/src/main/java/com/bonus/digital/dao/WorkloadCategoryVo.java b/bonus-business/src/main/java/com/bonus/digital/dao/WorkloadCategoryVo.java index e50c405..dfb2a95 100644 --- a/bonus-business/src/main/java/com/bonus/digital/dao/WorkloadCategoryVo.java +++ b/bonus-business/src/main/java/com/bonus/digital/dao/WorkloadCategoryVo.java @@ -52,7 +52,12 @@ public class WorkloadCategoryVo { private Date updateTime; /** - * 单价(元) + * 绩效单价(元) */ private int unitPrice; + + /** + * 结算单价(元) + */ + private int settlementUnitPrice; } diff --git a/bonus-business/src/main/java/com/bonus/digital/dao/WorkloadSummaryExcelVo.java b/bonus-business/src/main/java/com/bonus/digital/dao/WorkloadSummaryExcelVo.java index 0ff5b87..f3c5409 100644 --- a/bonus-business/src/main/java/com/bonus/digital/dao/WorkloadSummaryExcelVo.java +++ b/bonus-business/src/main/java/com/bonus/digital/dao/WorkloadSummaryExcelVo.java @@ -26,11 +26,19 @@ public class WorkloadSummaryExcelVo { @ColumnWidth(10) private Integer totalWorkload; - @ExcelProperty(value = "单价", index = 4) // E列 + @ExcelProperty(value = "绩效单价", index = 4) // E列 @ColumnWidth(10) private Integer unitPrice; - @ExcelProperty(value = "合计", index = 5) // F列 + @ExcelProperty(value = "结算单价", index = 5) // G列 + @ColumnWidth(10) + private Integer settlementUnitPrice; + + @ExcelProperty(value = "绩效合计", index = 6) // F列 @ColumnWidth(12) private Integer totalAmount; + + @ExcelProperty(value = "结算合计", index = 7) // H列 + @ColumnWidth(10) + private Integer settlementTotalAmount; } diff --git a/bonus-business/src/main/java/com/bonus/digital/dao/WorkloadVo.java b/bonus-business/src/main/java/com/bonus/digital/dao/WorkloadVo.java index 34c1dd8..ac7e537 100644 --- a/bonus-business/src/main/java/com/bonus/digital/dao/WorkloadVo.java +++ b/bonus-business/src/main/java/com/bonus/digital/dao/WorkloadVo.java @@ -43,4 +43,9 @@ public class WorkloadVo { * 数据来源:0月计划:1日计划 */ private String dataSource; + + /** + * 结算单价(元) + */ + private int settlementUnitPrice; } diff --git a/bonus-business/src/main/java/com/bonus/digital/service/PersonnelService.java b/bonus-business/src/main/java/com/bonus/digital/service/PersonnelService.java index c35793a..dc3988c 100644 --- a/bonus-business/src/main/java/com/bonus/digital/service/PersonnelService.java +++ b/bonus-business/src/main/java/com/bonus/digital/service/PersonnelService.java @@ -43,4 +43,6 @@ public interface PersonnelService { * @return */ List getPersonnelClassificationSelect(String category); + + String importPersonnel(List planManagementList); } diff --git a/bonus-business/src/main/java/com/bonus/digital/service/impl/DayPlanServiceImpl.java b/bonus-business/src/main/java/com/bonus/digital/service/impl/DayPlanServiceImpl.java index 7c2d3dc..9f17290 100644 --- a/bonus-business/src/main/java/com/bonus/digital/service/impl/DayPlanServiceImpl.java +++ b/bonus-business/src/main/java/com/bonus/digital/service/impl/DayPlanServiceImpl.java @@ -35,6 +35,11 @@ public class DayPlanServiceImpl implements DayPlanService { for (DayPlanVo dayPlanVo1 : dayPlanVo) { dayPlanVo1.setCreateUser(SecurityUtils.getUserId().toString()); dayPlanVo1.setCreateTime(new Date()); + //查看当前计划是否存在 + DayPlanVo res = dayPlanMapper.getDayPlanById(dayPlanVo1); + if (res != null) { + return 2; + } dayPlanMapper.addMonthlyPlan(dayPlanVo1); } return 1; @@ -57,6 +62,9 @@ public class DayPlanServiceImpl implements DayPlanService { //保存工作量信息 List workloadVoList = dayPlanVo.getWorkloadList(); if (workloadVoList != null && !workloadVoList.isEmpty()) { + MonthlyPlanVo monthlyPlanVo = new MonthlyPlanVo(); + monthlyPlanVo.setMonthlyPlanId(dayPlanVo.getMonthlyPlanId()); + monthlyPlanMapper.delWorkload(monthlyPlanVo); for (WorkloadVo w : workloadVoList) { w.setPlanId(dayPlanVo.getDayPlanId()); w.setDataSource("1"); diff --git a/bonus-business/src/main/java/com/bonus/digital/service/impl/MonthlyPlanServiceImpl.java b/bonus-business/src/main/java/com/bonus/digital/service/impl/MonthlyPlanServiceImpl.java index ece8694..69beab9 100644 --- a/bonus-business/src/main/java/com/bonus/digital/service/impl/MonthlyPlanServiceImpl.java +++ b/bonus-business/src/main/java/com/bonus/digital/service/impl/MonthlyPlanServiceImpl.java @@ -216,8 +216,10 @@ public class MonthlyPlanServiceImpl implements MonthlyPlanService { exportVo.setInspectionStationName(vo.getInspectionStationName()); // 运检站 exportVo.setWorkloadCategoryName(vo.getWorkloadCategoryName()); // 工作量类别 exportVo.setTotalWorkload(vo.getTotalWorkload()); // 总工作量 - exportVo.setUnitPrice(vo.getUnitPrice()); // 单价 - exportVo.setTotalAmount(vo.getTotalAmount()); // 合计金额 + exportVo.setUnitPrice(vo.getUnitPrice()/100); // 绩效单价 + exportVo.setTotalAmount(vo.getTotalAmount()/100); // 合计金额 + exportVo.setSettlementUnitPrice(vo.getSettlementUnitPrice()/100);// 结算单价 + exportVo.setSettlementTotalAmount(vo.getSettlementTotalAmount()/100);//结算合计 exportList.add(exportVo); } diff --git a/bonus-business/src/main/java/com/bonus/digital/service/impl/PersonnelServiceImpl.java b/bonus-business/src/main/java/com/bonus/digital/service/impl/PersonnelServiceImpl.java index 6e5101f..df618f2 100644 --- a/bonus-business/src/main/java/com/bonus/digital/service/impl/PersonnelServiceImpl.java +++ b/bonus-business/src/main/java/com/bonus/digital/service/impl/PersonnelServiceImpl.java @@ -3,12 +3,17 @@ package com.bonus.digital.service.impl; import com.bonus.common.utils.AesUtil; import com.bonus.common.utils.SecurityUtils; import com.bonus.common.utils.StringUtils; +import com.bonus.digital.dao.InspectionStationVo; +import com.bonus.digital.dao.PersonnelClassificationVo; import com.bonus.digital.dao.PersonnelVo; import com.bonus.digital.dao.SelectDto; +import com.bonus.digital.mapper.InspectionStationMapper; +import com.bonus.digital.mapper.PersonnelClassificationMapper; import com.bonus.digital.mapper.PersonnelMapper; import com.bonus.digital.service.PersonnelService; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.Date; @@ -25,6 +30,11 @@ public class PersonnelServiceImpl implements PersonnelService { @Resource private PersonnelMapper personnelMapper; + @Resource + private InspectionStationMapper inspectionStationMapper; + + @Resource + private PersonnelClassificationMapper personnelClassificationMapper; /** * 获取人员管理列表 @@ -103,4 +113,34 @@ public class PersonnelServiceImpl implements PersonnelService { public List getPersonnelClassificationSelect(String category) { return personnelMapper.getPersonnelClassificationSelect(category); } + + @Override + @Transactional + public String importPersonnel(List planManagementList) { + for (PersonnelVo planManagement : planManagementList) { + //获取运检站信息 + InspectionStationVo inspectionStationVo = new InspectionStationVo(); + inspectionStationVo.setInspectionStationName(planManagement.getInspectionStationName()); + InspectionStationVo inspectionStationOld =inspectionStationMapper.getInspectionStationDetail(inspectionStationVo); + planManagement.setInspectionStationId(inspectionStationOld.getInspectionStationId()); + //人员分类 + PersonnelClassificationVo personnelClassificationVo = new PersonnelClassificationVo(); + personnelClassificationVo.setPersonnelClassificationName(planManagement.getPersonnelClassificationName()); + personnelClassificationVo.setCategory("0"); + PersonnelClassificationVo res = personnelClassificationMapper.getClassification(personnelClassificationVo); + planManagement.setPersonnelClassificationId(res.getPersonnelClassificationId()); + //人员性质 + personnelClassificationVo.setPersonnelClassificationName(planManagement.getPersonnelNatureName()); + personnelClassificationVo.setCategory("1"); + PersonnelClassificationVo res1 = personnelClassificationMapper.getClassification(personnelClassificationVo); + planManagement.setPersonnelNatureId(res1.getPersonnelClassificationId()); + //岗位 + personnelClassificationVo.setPersonnelClassificationName(planManagement.getPositionName()); + personnelClassificationVo.setCategory("2"); + PersonnelClassificationVo res2 = personnelClassificationMapper.getClassification(personnelClassificationVo); + planManagement.setPositionId(res2.getPersonnelClassificationId()); + addPersonnel(planManagement); + } + return "导入成功"; + } } diff --git a/bonus-business/src/main/java/com/bonus/digital/service/impl/PlanManagementServiceImpl.java b/bonus-business/src/main/java/com/bonus/digital/service/impl/PlanManagementServiceImpl.java index 873adf9..012af1c 100644 --- a/bonus-business/src/main/java/com/bonus/digital/service/impl/PlanManagementServiceImpl.java +++ b/bonus-business/src/main/java/com/bonus/digital/service/impl/PlanManagementServiceImpl.java @@ -88,12 +88,14 @@ public class PlanManagementServiceImpl implements PlanManagementService { //获取当前 InspectionStationVo inspectionStationVo = new InspectionStationVo(); inspectionStationVo.setInspectionStationName(planManagementVo.getInspectionStationName()); - inspectionStationVo =inspectionStationMapper.getInspectionStationDetail(inspectionStationVo); - planManagementVo.setInspectionStationId(inspectionStationVo.getInspectionStationId()); - Long userId = SecurityUtils.getUserId(); - planManagementVo.setCreateUser(userId.toString()); - planManagementVo.setCreateTime(new Date()); - planManagementMapper.addPlanManagement(planManagementVo); + InspectionStationVo inspectionStationOld =inspectionStationMapper.getInspectionStationDetail(inspectionStationVo); + if (inspectionStationOld!=null){ + planManagementVo.setInspectionStationId(inspectionStationOld.getInspectionStationId()); + Long userId = SecurityUtils.getUserId(); + planManagementVo.setCreateUser(userId.toString()); + planManagementVo.setCreateTime(new Date()); + planManagementMapper.addPlanManagement(planManagementVo); + } } return "导入成功"; } diff --git a/bonus-business/src/main/resources/download/人员导入模板.xlsx b/bonus-business/src/main/resources/download/人员导入模板.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..81431de2645c4374ee35e44523e72fd3a7531781 GIT binary patch literal 11037 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 PpSOva=RVt0zR3L#9X?5X literal 0 HcmV?d00001 diff --git a/bonus-business/src/main/resources/download/计划导入模板.xlsx b/bonus-business/src/main/resources/download/计划导入模板.xlsx index 592935d6c4f2a967483073092a6fef9237e316c0..81a9906a8daaedae758de793ccc4398599b7eb6a 100644 GIT binary patch delta 3229 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 q4k4%HLBfA0U}^whk{poT*gDg4Y;i#EY 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 + AND tdp.day_plan = #{dayPlan} + + + AND tdp.monthly_plan_id = #{monthlyPlanId} + diff --git a/bonus-business/src/main/resources/mapper/MonthPlanMapper.xml b/bonus-business/src/main/resources/mapper/MonthPlanMapper.xml index a336bd3..a46ad8f 100644 --- a/bonus-business/src/main/resources/mapper/MonthPlanMapper.xml +++ b/bonus-business/src/main/resources/mapper/MonthPlanMapper.xml @@ -18,8 +18,8 @@ values (#{monthlyPlanId},#{day},#{personnelNames}) - insert into tb_workload (plan_id,workload_category_id,workload_category_name,unit_price,workload_num,data_source) - values (#{planId},#{workloadCategoryId},#{workloadCategoryName},#{unitPrice},#{workloadNum},#{dataSource}) + insert into tb_workload (plan_id,workload_category_id,workload_category_name,unit_price,workload_num,data_source,settlement_unit_price) + values (#{planId},#{workloadCategoryId},#{workloadCategoryName},#{unitPrice},#{workloadNum},#{dataSource},#{settlementUnitPrice}) update tb_monthly_plan @@ -192,8 +192,10 @@ tmp.inspection_station_name, tw.workload_category_name, IFNULL(tw.unit_price, 0) as unit_price, + IFNULL(tw.settlement_unit_price, 0) as settlementUnitPrice, IFNULL(SUM(tw.workload_num), 0) as total_workload, - IFNULL(SUM(tw.workload_num), 0) * IFNULL(tw.unit_price, 0) as total_amount + IFNULL(SUM(tw.workload_num), 0) * IFNULL(tw.unit_price, 0) as total_amount, + IFNULL(SUM(tw.workload_num), 0) * IFNULL(tw.settlement_unit_price, 0) as settlementTotalAmount from tb_monthly_plan tmp left join tb_workload tw on tw.plan_id = tmp.monthly_plan_id diff --git a/bonus-business/src/main/resources/mapper/WorkloadCategoryMapper.xml b/bonus-business/src/main/resources/mapper/WorkloadCategoryMapper.xml index dbf324b..8d4d42d 100644 --- a/bonus-business/src/main/resources/mapper/WorkloadCategoryMapper.xml +++ b/bonus-business/src/main/resources/mapper/WorkloadCategoryMapper.xml @@ -4,8 +4,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - insert into tb_workload_category (workload_category_name,remark,create_user,create_time,unit_price) - values (#{workloadCategoryName},#{remark},#{createUser},#{createTime},#{unitPrice}) + insert into tb_workload_category (workload_category_name,remark,create_user,create_time,unit_price,settlement_unit_price) + values (#{workloadCategoryName},#{remark},#{createUser},#{createTime},#{unitPrice},#{settlementUnitPrice}) update tb_workload_category @@ -25,6 +25,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update_time=#{updateTime}, + + settlement_unit_price=#{settlementUnitPrice}, + where workload_category_id = #{workloadCategoryId} @@ -33,18 +36,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"