浏览代码

Merge branch 'master' of http://39.105.58.247:3100/hydw/hycw

zx 4 月之前
父节点
当前提交
417de151e2
共有 38 个文件被更改,包括 3082 次插入0 次删除
  1. 54 0
      ruoyi-common/src/main/java/com/ruoyi/common/handler/ConvertCommaSeparatedStrToListTypeHandler.java
  2. 11 0
      ruoyi-powerdistribution/pom.xml
  3. 142 0
      ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/controller/PdmConstructTeamController.java
  4. 102 0
      ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/controller/PdmConstructorController.java
  5. 98 0
      ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/controller/PdmVehicleAlarmController.java
  6. 137 0
      ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/controller/PdmVehicleDrivingRecordController.java
  7. 12 0
      ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/controller/PdmWorkPlanController.java
  8. 182 0
      ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/domain/PdmConstructTeam.java
  9. 98 0
      ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/domain/PdmConstructor.java
  10. 131 0
      ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/domain/PdmVehicleAlarm.java
  11. 144 0
      ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/domain/PdmVehicleDrivingRecord.java
  12. 4 0
      ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/domain/dto/PdmWorkPlanDTO.java
  13. 52 0
      ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/domain/excel/ConstructTeam.java
  14. 12 0
      ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/domain/vo/PdmConstructTeamVo.java
  15. 69 0
      ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/mapper/PdmConstructTeamMapper.java
  16. 82 0
      ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/mapper/PdmConstructorMapper.java
  17. 74 0
      ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/mapper/PdmVehicleAlarmMapper.java
  18. 68 0
      ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/mapper/PdmVehicleDrivingRecordMapper.java
  19. 7 0
      ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/mapper/PdmWorkPlanMapper.java
  20. 37 0
      ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/provider/ConstructTeamProvider.java
  21. 27 0
      ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/provider/ConstructorProvider.java
  22. 30 0
      ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/provider/VehicleDrivingRecordProvider.java
  23. 69 0
      ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/service/IPdmConstructTeamService.java
  24. 61 0
      ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/service/IPdmConstructorService.java
  25. 61 0
      ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/service/IPdmVehicleAlarmService.java
  26. 67 0
      ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/service/IPdmVehicleDrivingRecordService.java
  27. 6 0
      ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/service/IPdmWorkPlanService.java
  28. 201 0
      ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/service/impl/PdmConstructTeamServiceImpl.java
  29. 96 0
      ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/service/impl/PdmConstructorServiceImpl.java
  30. 96 0
      ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/service/impl/PdmVehicleAlarmServiceImpl.java
  31. 101 0
      ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/service/impl/PdmVehicleDrivingRecordServiceImpl.java
  32. 5 0
      ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/service/impl/PdmWorkPlanServiceImpl.java
  33. 215 0
      ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/util/DynamicEasyExcelConstructTeamListener.java
  34. 145 0
      ruoyi-powerdistribution/src/main/resources/mapper/powerdistribution/PdmConstructTeamMapper.xml
  35. 110 0
      ruoyi-powerdistribution/src/main/resources/mapper/powerdistribution/PdmConstructorMapper.xml
  36. 133 0
      ruoyi-powerdistribution/src/main/resources/mapper/powerdistribution/PdmVehicleAlarmMapper.xml
  37. 103 0
      ruoyi-powerdistribution/src/main/resources/mapper/powerdistribution/PdmVehicleDrivingRecordMapper.xml
  38. 40 0
      ruoyi-powerdistribution/src/main/resources/mapper/powerdistribution/PdmWorkPlanMapper.xml

+ 54 - 0
ruoyi-common/src/main/java/com/ruoyi/common/handler/ConvertCommaSeparatedStrToListTypeHandler.java

@@ -0,0 +1,54 @@
+package com.ruoyi.common.handler;
+
+
+import org.apache.commons.lang3.StringUtils;
+import org.apache.ibatis.type.BaseTypeHandler;
+import org.apache.ibatis.type.JdbcType;
+import org.apache.ibatis.type.MappedJdbcTypes;
+import org.apache.ibatis.type.MappedTypes;
+
+import java.sql.CallableStatement;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
+
+@MappedJdbcTypes(value = { JdbcType.VARCHAR })
+public class ConvertCommaSeparatedStrToListTypeHandler extends BaseTypeHandler<List<String>> {
+    @Override
+    public void setNonNullParameter(PreparedStatement ps, int i, List<String> parameter, JdbcType jdbcType)
+            throws SQLException {
+        String d = parameter.stream().map(v -> String.valueOf(v)).collect(Collectors.joining(","));
+        ps.setString(i, d);
+    }
+
+    @Override
+    public List<String> getNullableResult(ResultSet rs, String columnName) throws SQLException {
+        String values = rs.getString(columnName);
+        return getResults(values);
+    }
+
+    @Override
+    public List<String> getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
+        String values = rs.getString(columnIndex);
+        return getResults(values);
+    }
+
+    @Override
+    public List<String> getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
+        String values = cs.getString(columnIndex);
+        return getResults(values);
+    }
+
+    private List<String> getResults(String values) {
+        if (StringUtils.isNotBlank(values)) {
+            String[] data = values.split(",");
+            return new ArrayList<>(Arrays.asList(data));
+        }
+        return new ArrayList<>();
+    }
+}

+ 11 - 0
ruoyi-powerdistribution/pom.xml

@@ -54,6 +54,17 @@
             <artifactId>freemarker</artifactId>
             <version>2.3.28</version>
         </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>easyexcel</artifactId>
+            <version>3.3.4</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.opencsv</groupId>
+            <artifactId>opencsv</artifactId>
+            <version>5.1</version>
+        </dependency>
     </dependencies>
 
 </project>

+ 142 - 0
ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/controller/PdmConstructTeamController.java

@@ -0,0 +1,142 @@
+package com.ruoyi.powerdistribution.controller;
+
+import java.io.InputStream;
+import java.util.List;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.enums.CellExtraTypeEnum;
+import com.alibaba.fastjson.JSON;
+import com.ruoyi.powerdistribution.domain.excel.ConstructTeam;
+import com.ruoyi.powerdistribution.domain.vo.PdmConstructTeamVo;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.powerdistribution.domain.PdmConstructTeam;
+import com.ruoyi.powerdistribution.service.IPdmConstructTeamService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+import org.springframework.web.multipart.MultipartFile;
+import com.ruoyi.powerdistribution.util.DynamicEasyExcelConstructTeamListener;
+
+/**
+ * 配网工程队伍施工小组信息Controller
+ * 
+ * @author ruoyi
+ * @date 2025-01-20
+ */
+@RestController
+@RequestMapping("/powerdistribution/constructTeam")
+public class PdmConstructTeamController extends BaseController
+{
+    @Autowired
+    private IPdmConstructTeamService pdmConstructTeamService;
+
+    /**
+     * 查询配网工程队伍施工小组信息列表
+     */
+    @GetMapping("/list")
+    public TableDataInfo list(PdmConstructTeam pdmConstructTeam)
+    {
+        startPage();
+        List<PdmConstructTeam> list = pdmConstructTeamService.selectPdmConstructTeamList(pdmConstructTeam);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出配网工程队伍施工小组信息列表
+     */
+
+    @Log(title = "配网工程队伍施工小组信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, PdmConstructTeam pdmConstructTeam)
+    {
+        List<PdmConstructTeam> list = pdmConstructTeamService.selectPdmConstructTeamList(pdmConstructTeam);
+        ExcelUtil<PdmConstructTeam> util = new ExcelUtil<PdmConstructTeam>(PdmConstructTeam.class);
+        util.exportExcel(response, list, "配网工程队伍施工小组信息数据");
+    }
+
+    /**
+     * 获取配网工程队伍施工小组信息详细信息
+     */
+
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(pdmConstructTeamService.selectPdmConstructTeamById(id));
+    }
+
+    /**
+     * 新增配网工程队伍施工小组信息
+     */
+
+    @Log(title = "配网工程队伍施工小组信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody PdmConstructTeamVo pdmConstructTeam)
+    {
+        if(pdmConstructTeam.getId()!=null)
+            return toAjax(pdmConstructTeamService.updatePdmConstructTeam(pdmConstructTeam));
+        return toAjax(pdmConstructTeamService.insertPdmConstructTeam(pdmConstructTeam));
+    }
+
+    /**
+     * 修改配网工程队伍施工小组信息
+     */
+
+    @Log(title = "配网工程队伍施工小组信息", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody PdmConstructTeamVo pdmConstructTeam)
+    {
+        return toAjax(pdmConstructTeamService.updatePdmConstructTeam(pdmConstructTeam));
+    }
+
+    /**
+     * 删除配网工程队伍施工小组信息
+     */
+
+    @Log(title = "配网工程队伍施工小组信息", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(pdmConstructTeamService.deletePdmConstructTeamByIds(ids));
+    }
+    @PostMapping("/import")
+    public void importExcel(HttpServletRequest request, MultipartFile file) {
+        try {
+            InputStream inputStream = file.getInputStream();
+            /**
+             *DynamicEasyExcelConstructTeamListener:导入监听类
+             * 1:是正文起始行,用于处理合并单元格
+             **/
+            DynamicEasyExcelConstructTeamListener listener = new DynamicEasyExcelConstructTeamListener(request,1);
+
+            //读取全部sheet使用extraRead(CellExtraTypeEnum.MERGE).doReadAll()
+            /**
+             * headRowNumber(1):1是正文起始行
+             * CellExtraTypeEnum.MERGE:读取合并单元格
+             * CellExtraTypeEnum.COMMENT:读取批注
+             * CellExtraTypeEnum.HYPERLINK:读取超链接
+             * extraRead(CellExtraTypeEnum.MERGE).doReadAll():如果多sheet,直接使用这个方法
+             **/
+            EasyExcel.read(inputStream, ConstructTeam.class,listener).headRowNumber(1).extraRead(CellExtraTypeEnum.MERGE).sheet(0).doRead();
+            inputStream.close();
+            pdmConstructTeamService.importExcel(listener.getDataList());
+            //System.out.println(JSON.toJSON(listener.getDataList()));
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+}

+ 102 - 0
ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/controller/PdmConstructorController.java

@@ -0,0 +1,102 @@
+package com.ruoyi.powerdistribution.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.powerdistribution.domain.PdmConstructor;
+import com.ruoyi.powerdistribution.service.IPdmConstructorService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 配网工程队伍施工人员信息Controller
+ * 
+ * @author ruoyi
+ * @date 2025-01-20
+ */
+@RestController
+@RequestMapping("/powerdistribution/constructor")
+public class PdmConstructorController extends BaseController
+{
+    @Autowired
+    private IPdmConstructorService pdmConstructorService;
+
+    /**
+     * 查询配网工程队伍施工人员信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('powerdistribution:constructor:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(PdmConstructor pdmConstructor)
+    {
+        startPage();
+        List<PdmConstructor> list = pdmConstructorService.selectPdmConstructorList(pdmConstructor);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出配网工程队伍施工人员信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('powerdistribution:constructor:export')")
+    @Log(title = "配网工程队伍施工人员信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, PdmConstructor pdmConstructor)
+    {
+        List<PdmConstructor> list = pdmConstructorService.selectPdmConstructorList(pdmConstructor);
+        ExcelUtil<PdmConstructor> util = new ExcelUtil<PdmConstructor>(PdmConstructor.class);
+        util.exportExcel(response, list, "配网工程队伍施工人员信息数据");
+    }
+
+    /**
+     * 获取配网工程队伍施工人员信息详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('powerdistribution:constructor:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(pdmConstructorService.selectPdmConstructorById(id));
+    }
+
+    /**
+     * 新增配网工程队伍施工人员信息
+     */
+    @Log(title = "配网工程队伍施工人员信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody PdmConstructor pdmConstructor)
+    {
+        return toAjax(pdmConstructorService.insertPdmConstructor(pdmConstructor));
+    }
+
+    /**
+     * 修改配网工程队伍施工人员信息
+     */
+    @Log(title = "配网工程队伍施工人员信息", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody PdmConstructor pdmConstructor)
+    {
+        return toAjax(pdmConstructorService.updatePdmConstructor(pdmConstructor));
+    }
+
+    /**
+     * 删除配网工程队伍施工人员信息
+     */
+
+    @Log(title = "配网工程队伍施工人员信息", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(pdmConstructorService.deletePdmConstructorByIds(ids));
+    }
+}

+ 98 - 0
ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/controller/PdmVehicleAlarmController.java

@@ -0,0 +1,98 @@
+package com.ruoyi.powerdistribution.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.powerdistribution.domain.PdmVehicleAlarm;
+import com.ruoyi.powerdistribution.service.IPdmVehicleAlarmService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 施工车辆告警Controller
+ * 
+ * @author ruoyi
+ * @date 2025-01-21
+ */
+@RestController
+@RequestMapping("/powerdistribution/pdmVehicleAlarm")
+public class PdmVehicleAlarmController extends BaseController
+{
+    @Autowired
+    private IPdmVehicleAlarmService pdmVehicleAlarmService;
+
+    /**
+     * 查询施工车辆告警列表
+     */
+    @GetMapping("/list")
+    public TableDataInfo list(PdmVehicleAlarm pdmVehicleAlarm)
+    {
+        startPage();
+        List<PdmVehicleAlarm> list = pdmVehicleAlarmService.selectPdmVehicleAlarmList(pdmVehicleAlarm);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出施工车辆告警列表
+     */
+    @Log(title = "施工车辆告警", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, PdmVehicleAlarm pdmVehicleAlarm)
+    {
+        List<PdmVehicleAlarm> list = pdmVehicleAlarmService.selectPdmVehicleAlarmList(pdmVehicleAlarm);
+        ExcelUtil<PdmVehicleAlarm> util = new ExcelUtil<PdmVehicleAlarm>(PdmVehicleAlarm.class);
+        util.exportExcel(response, list, "施工车辆告警数据");
+    }
+
+    /**
+     * 获取施工车辆告警详细信息
+     */
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(pdmVehicleAlarmService.selectPdmVehicleAlarmById(id));
+    }
+
+    /**
+     * 新增施工车辆告警
+     */
+    @Log(title = "施工车辆告警", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody PdmVehicleAlarm pdmVehicleAlarm)
+    {
+        return toAjax(pdmVehicleAlarmService.insertPdmVehicleAlarm(pdmVehicleAlarm));
+    }
+
+    /**
+     * 修改施工车辆告警
+     */
+    @Log(title = "施工车辆告警", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody PdmVehicleAlarm pdmVehicleAlarm)
+    {
+        return toAjax(pdmVehicleAlarmService.updatePdmVehicleAlarm(pdmVehicleAlarm));
+    }
+
+    /**
+     * 删除施工车辆告警
+     */
+    @Log(title = "施工车辆告警", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(pdmVehicleAlarmService.deletePdmVehicleAlarmByIds(ids));
+    }
+}

+ 137 - 0
ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/controller/PdmVehicleDrivingRecordController.java

@@ -0,0 +1,137 @@
+package com.ruoyi.powerdistribution.controller;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.math.BigDecimal;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.List;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import com.alibaba.fastjson.JSON;
+import com.opencsv.CSVReader;
+import com.opencsv.exceptions.CsvValidationException;
+import com.ruoyi.common.utils.DateUtils;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.powerdistribution.domain.PdmVehicleDrivingRecord;
+import com.ruoyi.powerdistribution.service.IPdmVehicleDrivingRecordService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+import org.springframework.web.multipart.MultipartFile;
+
+/**
+ * 施工车辆行驶记录Controller
+ * 
+ * @author ruoyi
+ * @date 2025-01-21
+ */
+@RestController
+@RequestMapping("/powerdistribution/vehicleDrivingRecord")
+public class PdmVehicleDrivingRecordController extends BaseController
+{
+    @Autowired
+    private IPdmVehicleDrivingRecordService pdmVehicleDrivingRecordService;
+
+    /**
+     * 查询施工车辆行驶记录列表
+     */
+    @GetMapping("/list")
+    public TableDataInfo list(PdmVehicleDrivingRecord pdmVehicleDrivingRecord)
+    {
+        startPage();
+        List<PdmVehicleDrivingRecord> list = pdmVehicleDrivingRecordService.selectPdmVehicleDrivingRecordList(pdmVehicleDrivingRecord);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出施工车辆行驶记录列表
+     */
+    @Log(title = "施工车辆行驶记录", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, PdmVehicleDrivingRecord pdmVehicleDrivingRecord)
+    {
+        List<PdmVehicleDrivingRecord> list = pdmVehicleDrivingRecordService.selectPdmVehicleDrivingRecordList(pdmVehicleDrivingRecord);
+        ExcelUtil<PdmVehicleDrivingRecord> util = new ExcelUtil<PdmVehicleDrivingRecord>(PdmVehicleDrivingRecord.class);
+        util.exportExcel(response, list, "施工车辆行驶记录数据");
+    }
+
+    /**
+     * 获取施工车辆行驶记录详细信息
+     */
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(pdmVehicleDrivingRecordService.selectPdmVehicleDrivingRecordById(id));
+    }
+
+    /**
+     * 新增施工车辆行驶记录
+     */
+    @Log(title = "施工车辆行驶记录", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody PdmVehicleDrivingRecord pdmVehicleDrivingRecord)
+    {
+        return toAjax(pdmVehicleDrivingRecordService.insertPdmVehicleDrivingRecord(pdmVehicleDrivingRecord));
+    }
+
+    /**
+     * 修改施工车辆行驶记录
+     */
+    @Log(title = "施工车辆行驶记录", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody PdmVehicleDrivingRecord pdmVehicleDrivingRecord)
+    {
+        return toAjax(pdmVehicleDrivingRecordService.updatePdmVehicleDrivingRecord(pdmVehicleDrivingRecord));
+    }
+
+    /**
+     * 删除施工车辆行驶记录
+     */
+    @Log(title = "施工车辆行驶记录", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(pdmVehicleDrivingRecordService.deletePdmVehicleDrivingRecordByIds(ids));
+    }
+    @PostMapping("/import")
+    public void importExcel(HttpServletRequest request, MultipartFile file)throws IOException, CsvValidationException {
+             CSVReader csvReader = new CSVReader(new InputStreamReader(file.getInputStream(), StandardCharsets.UTF_8));
+            String[] nextLine;
+            int i=0;
+            List<PdmVehicleDrivingRecord> dataList=new ArrayList<>();
+            while ((nextLine = csvReader.readNext()) != null) {
+                if(i>0) {
+                    // 处理每一行数据,nextLine是一个字符串数组,包含当前行的每个字段
+                    PdmVehicleDrivingRecord vehicleDrivingRecord = new PdmVehicleDrivingRecord();
+                    vehicleDrivingRecord.setVehicleGroup(nextLine[0]);
+                    vehicleDrivingRecord.setEquipNm(nextLine[1]);
+                    vehicleDrivingRecord.setEquipNo(nextLine[2]);
+                    vehicleDrivingRecord.setVehicleNo(nextLine[3]);
+                    vehicleDrivingRecord.setStartTm( DateUtils.covertStrToLocalTime(nextLine[4]));
+                    vehicleDrivingRecord.setEndTm( DateUtils.covertStrToLocalTime(nextLine[5]));
+                    vehicleDrivingRecord.setMileage(new BigDecimal(nextLine[6]));
+                    dataList.add(vehicleDrivingRecord);
+                }
+                i++;
+            }
+            System.out.println(JSON.toJSON(dataList));
+        pdmVehicleDrivingRecordService.batchAdd(dataList);
+    }
+}

+ 12 - 0
ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/controller/PdmWorkPlanController.java

@@ -121,4 +121,16 @@ public class PdmWorkPlanController extends BaseController
     public List<WorkNumByCompanyStatistics> getWorkRiskStatistics(WorkNumByCompanyStatistics workNumByCompany){
         return pdmWorkPlanService.getWorkNumByCompanyStatistics(workNumByCompany);
     }
+
+    /**
+     * 查询作业计划列表
+     */
+    @ApiOperation(value = "根据车辆编号查询作业信息")
+    @GetMapping("/selectWorkPlanByVchicleNo")
+    public TableDataInfo selectWorkPlanByVchicleNo(PdmWorkPlanDTO pdmWorkPlan)
+    {
+        startPage();
+        List<PdmWorkPlan> list = pdmWorkPlanService.selectWorkPlanByVchicleNo(pdmWorkPlan);
+        return getDataTable(list);
+    }
 }

+ 182 - 0
ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/domain/PdmConstructTeam.java

@@ -0,0 +1,182 @@
+package com.ruoyi.powerdistribution.domain;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.ruoyi.common.handler.ConvertCommaSeparatedStrToListTypeHandler;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+import java.util.List;
+
+/**
+ * 配网工程队伍施工小组信息对象 pdm_construct_team
+ * 
+ * @author ruoyi
+ * @date 2025-01-20
+ */
+public class PdmConstructTeam extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** $column.columnComment */
+    private Long id;
+
+    private String countyOrgNm;
+
+    /** 施工队伍编号 */
+    @Excel(name = "施工队伍编号")
+    private String teamNo;
+
+    /** 队伍名称 */
+    @Excel(name = "队伍名称")
+    private String teamNm;
+
+    /** 法人 */
+    @Excel(name = "法人")
+    private String legalPerson;
+
+    /** 法人联系电话号码 */
+    @Excel(name = "法人联系电话号码")
+    private String legalContactPhone;
+
+    /** 施工小组序号 */
+    @Excel(name = "施工小组序号")
+    private String teamSerialNo;
+
+    /** 施工小组负责人 */
+    @Excel(name = "施工小组负责人")
+    private String teamLeader;
+
+    /** 施工小组负责人电话号码 */
+    @Excel(name = "施工小组负责人电话号码")
+    private String teamLeaderPhone;
+
+    /** 施工小组作业车牌号 */
+    @TableField(value = "construc_car_number", typeHandler = ConvertCommaSeparatedStrToListTypeHandler.class)
+    private List<String> construcCarNumber;
+
+    /** 驻点位置 */
+    @Excel(name = "驻点位置")
+    private String arrestPoint;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setTeamNo(String teamNo) 
+    {
+        this.teamNo = teamNo;
+    }
+
+    public String getTeamNo() 
+    {
+        return teamNo;
+    }
+    public void setTeamNm(String teamNm) 
+    {
+        this.teamNm = teamNm;
+    }
+
+    public String getTeamNm() 
+    {
+        return teamNm;
+    }
+    public void setLegalPerson(String legalPerson) 
+    {
+        this.legalPerson = legalPerson;
+    }
+
+    public String getLegalPerson() 
+    {
+        return legalPerson;
+    }
+    public void setLegalContactPhone(String legalContactPhone) 
+    {
+        this.legalContactPhone = legalContactPhone;
+    }
+
+    public String getLegalContactPhone() 
+    {
+        return legalContactPhone;
+    }
+    public void setTeamSerialNo(String teamSerialNo)
+    {
+        this.teamSerialNo = teamSerialNo;
+    }
+
+    public String getTeamSerialNo()
+    {
+        return teamSerialNo;
+    }
+    public void setTeamLeader(String teamLeader) 
+    {
+        this.teamLeader = teamLeader;
+    }
+
+    public String getTeamLeader() 
+    {
+        return teamLeader;
+    }
+    public void setTeamLeaderPhone(String teamLeaderPhone) 
+    {
+        this.teamLeaderPhone = teamLeaderPhone;
+    }
+
+    public String getTeamLeaderPhone() 
+    {
+        return teamLeaderPhone;
+    }
+    public void setConstrucCarNumber(List<String> construcCarNumber)
+    {
+        this.construcCarNumber = construcCarNumber;
+    }
+
+    public List<String> getConstrucCarNumber()
+    {
+        return construcCarNumber;
+    }
+    public void setArrestPoint(String arrestPoint) 
+    {
+        this.arrestPoint = arrestPoint;
+    }
+
+    public String getArrestPoint() 
+    {
+        return arrestPoint;
+    }
+
+    public String getCountyOrgNm() {
+        return countyOrgNm;
+    }
+
+    public void setCountyOrgNm(String countyOrgNm) {
+        this.countyOrgNm = countyOrgNm;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("teamNo", getTeamNo())
+            .append("teamNm", getTeamNm())
+            .append("legalPerson", getLegalPerson())
+            .append("legalContactPhone", getLegalContactPhone())
+            .append("teamSerialNo", getTeamSerialNo())
+            .append("teamLeader", getTeamLeader())
+            .append("teamLeaderPhone", getTeamLeaderPhone())
+            .append("construcCarNumber", getConstrucCarNumber())
+            .append("arrestPoint", getArrestPoint())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("remark", getRemark())
+            .toString();
+    }
+}

+ 98 - 0
ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/domain/PdmConstructor.java

@@ -0,0 +1,98 @@
+package com.ruoyi.powerdistribution.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 配网工程队伍施工人员信息对象 pdm_constructor
+ * 
+ * @author ruoyi
+ * @date 2025-01-20
+ */
+public class PdmConstructor extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** $column.columnComment */
+    private Long id;
+
+    /** 施工队伍编号 */
+    @Excel(name = "施工队伍编号")
+    private String teamNo;
+
+    /** 施工小组人员类型(1-工作负责人,2-技工,3-其他) */
+    @Excel(name = "施工小组人员类型", readConverterExp = "1=-工作负责人,2-技工,3-其他")
+    private String constructPersonType;
+
+    /** 施工人员姓名 */
+    @Excel(name = "施工人员姓名")
+    private String constructPersonnelName;
+
+    /** 施工人员联系电话号码 */
+    @Excel(name = "施工人员联系电话号码")
+    private String constructPersonnelPhone;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setTeamNo(String teamNo) 
+    {
+        this.teamNo = teamNo;
+    }
+
+    public String getTeamNo() 
+    {
+        return teamNo;
+    }
+    public void setConstructPersonType(String constructPersonType) 
+    {
+        this.constructPersonType = constructPersonType;
+    }
+
+    public String getConstructPersonType() 
+    {
+        return constructPersonType;
+    }
+    public void setConstructPersonnelName(String constructPersonnelName) 
+    {
+        this.constructPersonnelName = constructPersonnelName;
+    }
+
+    public String getConstructPersonnelName() 
+    {
+        return constructPersonnelName;
+    }
+    public void setConstructPersonnelPhone(String constructPersonnelPhone) 
+    {
+        this.constructPersonnelPhone = constructPersonnelPhone;
+    }
+
+    public String getConstructPersonnelPhone() 
+    {
+        return constructPersonnelPhone;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("teamNo", getTeamNo())
+            .append("constructPersonType", getConstructPersonType())
+            .append("constructPersonnelName", getConstructPersonnelName())
+            .append("constructPersonnelPhone", getConstructPersonnelPhone())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("remark", getRemark())
+            .toString();
+    }
+}

+ 131 - 0
ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/domain/PdmVehicleAlarm.java

@@ -0,0 +1,131 @@
+package com.ruoyi.powerdistribution.domain;
+
+import lombok.Data;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 施工车辆告警对象 pdm_vehicle_alarm
+ * 
+ * @author ruoyi
+ * @date 2025-01-21
+ */
+@Data
+public class PdmVehicleAlarm extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** $column.columnComment */
+    private Long id;
+
+    private String countyOrgNm;
+
+    private String curator;
+
+    /** 施工车辆 */
+    @Excel(name = "施工车辆")
+    private String vehicleNo;
+
+    /** 车组 */
+    @Excel(name = "车组")
+    private String vehicleGroup;
+
+    /** $column.columnComment */
+    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    private String equipNo;
+
+    /** 设备名称 */
+    @Excel(name = "设备名称")
+    private String equipNm;
+
+    /** 异常编码0-正常,1-车辆GPS离线,2-施工车辆长期未动,3-有作业信息,没有车辆行驶里程,4-有车辆行驶里程,没有作业信息 */
+    @Excel(name = "异常编码0-正常,1-车辆GPS离线,2-施工车辆长期未动,3-有作业信息,没有车辆行驶里程,4-有车辆行驶里程,没有作业信息")
+    private String alarmCd;
+
+    /** 告警描述 */
+    @Excel(name = "告警描述")
+    private String alarmDesc;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setVehicleNo(String vehicleNo) 
+    {
+        this.vehicleNo = vehicleNo;
+    }
+
+    public String getVehicleNo() 
+    {
+        return vehicleNo;
+    }
+    public void setVehicleGroup(String vehicleGroup) 
+    {
+        this.vehicleGroup = vehicleGroup;
+    }
+
+    public String getVehicleGroup() 
+    {
+        return vehicleGroup;
+    }
+    public void setEquipNo(String equipNo) 
+    {
+        this.equipNo = equipNo;
+    }
+
+    public String getEquipNo() 
+    {
+        return equipNo;
+    }
+    public void setEquipNm(String equipNm) 
+    {
+        this.equipNm = equipNm;
+    }
+
+    public String getEquipNm() 
+    {
+        return equipNm;
+    }
+    public void setAlarmCd(String alarmCd) 
+    {
+        this.alarmCd = alarmCd;
+    }
+
+    public String getAlarmCd() 
+    {
+        return alarmCd;
+    }
+    public void setAlarmDesc(String alarmDesc) 
+    {
+        this.alarmDesc = alarmDesc;
+    }
+
+    public String getAlarmDesc() 
+    {
+        return alarmDesc;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("vehicleNo", getVehicleNo())
+            .append("vehicleGroup", getVehicleGroup())
+            .append("equipNo", getEquipNo())
+            .append("equipNm", getEquipNm())
+            .append("alarmCd", getAlarmCd())
+            .append("alarmDesc", getAlarmDesc())
+            .append("createTime", getCreateTime())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("remark", getRemark())
+            .toString();
+    }
+}

+ 144 - 0
ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/domain/PdmVehicleDrivingRecord.java

@@ -0,0 +1,144 @@
+package com.ruoyi.powerdistribution.domain;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 施工车辆行驶记录对象 pdm_vehicle_driving_record
+ * 
+ * @author ruoyi
+ * @date 2025-01-21
+ */
+public class PdmVehicleDrivingRecord extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** $column.columnComment */
+    private Long id;
+
+    /** 施工车辆 */
+    @Excel(name = "施工车辆")
+    private String vehicleNo;
+
+    /** 车组 */
+    @Excel(name = "车组")
+    private String vehicleGroup;
+
+    /** $column.columnComment */
+    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    private String equipNo;
+
+    /** 设备名称 */
+    @Excel(name = "设备名称")
+    private String equipNm;
+
+    /** 开始时间 */
+    //@JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "开始时间", width = 30)
+    private String startTm;
+
+    /** 结束时间 */
+   // @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "结束时间", width = 30)
+    private String endTm;
+
+    /** 行驶里程 */
+    @Excel(name = "行驶里程")
+    private BigDecimal mileage;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setVehicleNo(String vehicleNo) 
+    {
+        this.vehicleNo = vehicleNo;
+    }
+
+    public String getVehicleNo() 
+    {
+        return vehicleNo;
+    }
+    public void setVehicleGroup(String vehicleGroup) 
+    {
+        this.vehicleGroup = vehicleGroup;
+    }
+
+    public String getVehicleGroup() 
+    {
+        return vehicleGroup;
+    }
+    public void setEquipNo(String equipNo) 
+    {
+        this.equipNo = equipNo;
+    }
+
+    public String getEquipNo() 
+    {
+        return equipNo;
+    }
+    public void setEquipNm(String equipNm) 
+    {
+        this.equipNm = equipNm;
+    }
+
+    public String getEquipNm() 
+    {
+        return equipNm;
+    }
+    public void setStartTm(String startTm)
+    {
+        this.startTm = startTm;
+    }
+
+    public String getStartTm()
+    {
+        return startTm;
+    }
+    public void setEndTm(String endTm)
+    {
+        this.endTm = endTm;
+    }
+
+    public String getEndTm()
+    {
+        return endTm;
+    }
+    public void setMileage(BigDecimal mileage) 
+    {
+        this.mileage = mileage;
+    }
+
+    public BigDecimal getMileage() 
+    {
+        return mileage;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("vehicleNo", getVehicleNo())
+            .append("vehicleGroup", getVehicleGroup())
+            .append("equipNo", getEquipNo())
+            .append("equipNm", getEquipNm())
+            .append("startTm", getStartTm())
+            .append("endTm", getEndTm())
+            .append("mileage", getMileage())
+            .append("createTime", getCreateTime())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("remark", getRemark())
+            .toString();
+    }
+}

+ 4 - 0
ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/domain/dto/PdmWorkPlanDTO.java

@@ -1,10 +1,12 @@
 package com.ruoyi.powerdistribution.domain.dto;
 
 import com.ruoyi.powerdistribution.domain.PdmWorkPlan;
+import lombok.Data;
 
 /**
  * 作业表DTO
  */
+@Data
 public class PdmWorkPlanDTO extends PdmWorkPlan {
 
     /**
@@ -32,6 +34,8 @@ public class PdmWorkPlanDTO extends PdmWorkPlan {
      */
     private String riskFlag;
 
+    private String vehicleNo;
+
     public String getStartDate() {
         return startDate;
     }

+ 52 - 0
ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/domain/excel/ConstructTeam.java

@@ -0,0 +1,52 @@
+package com.ruoyi.powerdistribution.domain.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.ruoyi.common.annotation.Excel;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class ConstructTeam {
+    @ExcelProperty(index =0)
+    private String countyOrgNm;
+    @ExcelProperty(index =1)
+    private String teamNm;
+    @ExcelProperty(index =2)
+    private String legalPerson;
+    /** 法人联系电话号码 */
+    @ExcelProperty(index =3)
+    private String legalContactPhone;
+
+    /** 施工小组序号 */
+    @ExcelProperty(index =4)
+    private String teamSerialNo;
+
+    /** 施工小组负责人 */
+    @ExcelProperty(index =5)
+    private String teamLeader;
+
+    /** 施工小组负责人电话号码 */
+    @ExcelProperty(index =6)
+    private String teamLeaderPhone;
+
+    //施工小组人员类型
+    @ExcelProperty(index =7)
+    private String constructPersonType;
+
+    /** 施工人员姓名 */
+    @ExcelProperty(index =8)
+    private String constructPersonnelName;
+
+    /** 施工人员联系电话号码 */
+    @ExcelProperty(index =9)
+    private String constructPersonnelPhone;
+
+    /** 施工小组作业车牌号 */
+    @ExcelProperty(index =10)
+    private String carNumber;
+
+    /** 驻点位置 */
+    @ExcelProperty(index =11)
+    private String arrestPoint;
+}

+ 12 - 0
ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/domain/vo/PdmConstructTeamVo.java

@@ -0,0 +1,12 @@
+package com.ruoyi.powerdistribution.domain.vo;
+
+import com.ruoyi.powerdistribution.domain.PdmConstructTeam;
+import com.ruoyi.powerdistribution.domain.PdmConstructor;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class PdmConstructTeamVo extends PdmConstructTeam {
+    private List<PdmConstructor> constructorList;
+}

+ 69 - 0
ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/mapper/PdmConstructTeamMapper.java

@@ -0,0 +1,69 @@
+package com.ruoyi.powerdistribution.mapper;
+
+import java.util.List;
+import com.ruoyi.powerdistribution.domain.PdmConstructTeam;
+import com.ruoyi.powerdistribution.domain.vo.PdmConstructTeamVo;
+import com.ruoyi.powerdistribution.provider.ConstructTeamProvider;
+import com.ruoyi.powerdistribution.provider.VehicleDrivingRecordProvider;
+import org.apache.ibatis.annotations.InsertProvider;
+
+/**
+ * 配网工程队伍施工小组信息Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2025-01-20
+ */
+public interface PdmConstructTeamMapper 
+{
+    /**
+     * 查询配网工程队伍施工小组信息
+     * 
+     * @param id 配网工程队伍施工小组信息主键
+     * @return 配网工程队伍施工小组信息
+     */
+    public PdmConstructTeam selectPdmConstructTeamById(Long id);
+
+    /**
+     * 查询配网工程队伍施工小组信息列表
+     * 
+     * @param pdmConstructTeam 配网工程队伍施工小组信息
+     * @return 配网工程队伍施工小组信息集合
+     */
+    public List<PdmConstructTeam> selectPdmConstructTeamList(PdmConstructTeam pdmConstructTeam);
+
+    /**
+     * 新增配网工程队伍施工小组信息
+     * 
+     * @param pdmConstructTeam 配网工程队伍施工小组信息
+     * @return 结果
+     */
+    public int insertPdmConstructTeam(PdmConstructTeam pdmConstructTeam);
+
+    /**
+     * 修改配网工程队伍施工小组信息
+     * 
+     * @param pdmConstructTeam 配网工程队伍施工小组信息
+     * @return 结果
+     */
+    public int updatePdmConstructTeam(PdmConstructTeam pdmConstructTeam);
+
+    /**
+     * 删除配网工程队伍施工小组信息
+     * 
+     * @param id 配网工程队伍施工小组信息主键
+     * @return 结果
+     */
+    public int deletePdmConstructTeamById(Long id);
+
+    /**
+     * 批量删除配网工程队伍施工小组信息
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deletePdmConstructTeamByIds(Long[] ids);
+
+    public void clean();
+    @InsertProvider(type = ConstructTeamProvider.class, method = "insert")
+    public void batchAdd(List<PdmConstructTeamVo> list);
+}

+ 82 - 0
ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/mapper/PdmConstructorMapper.java

@@ -0,0 +1,82 @@
+package com.ruoyi.powerdistribution.mapper;
+
+import java.util.List;
+
+import com.ruoyi.powerdistribution.domain.PdmConstructTeam;
+import com.ruoyi.powerdistribution.domain.PdmConstructor;
+import com.ruoyi.powerdistribution.provider.ConstructTeamProvider;
+import com.ruoyi.powerdistribution.provider.ConstructorProvider;
+import org.apache.ibatis.annotations.InsertProvider;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 配网工程队伍施工人员信息Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2025-01-20
+ */
+public interface PdmConstructorMapper 
+{
+    /**
+     * 查询配网工程队伍施工人员信息
+     * 
+     * @param id 配网工程队伍施工人员信息主键
+     * @return 配网工程队伍施工人员信息
+     */
+    public PdmConstructor selectPdmConstructorById(Long id);
+
+    /**
+     * 查询配网工程队伍施工人员信息列表
+     * 
+     * @param pdmConstructor 配网工程队伍施工人员信息
+     * @return 配网工程队伍施工人员信息集合
+     */
+    public List<PdmConstructor> selectPdmConstructorList(PdmConstructor pdmConstructor);
+
+    /**
+     * 新增配网工程队伍施工人员信息
+     * 
+     * @param pdmConstructor 配网工程队伍施工人员信息
+     * @return 结果
+     */
+    public int insertPdmConstructor(PdmConstructor pdmConstructor);
+
+    /**
+     * 修改配网工程队伍施工人员信息
+     * 
+     * @param pdmConstructor 配网工程队伍施工人员信息
+     * @return 结果
+     */
+    public int updatePdmConstructor(PdmConstructor pdmConstructor);
+
+    /**
+     * 删除配网工程队伍施工人员信息
+     * 
+     * @param id 配网工程队伍施工人员信息主键
+     * @return 结果
+     */
+    public int deletePdmConstructorById(Long id);
+
+    /**
+     * 批量删除配网工程队伍施工人员信息
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deletePdmConstructorByIds(Long[] ids);
+
+    /**
+     *
+     * @param teamId
+     * @return
+     */
+    public int deletePdmConstructorByTeamId(@Param("teamId")Long teamId);
+
+    public  int deletePdmConstructorByTeamIds(Long[] ids);
+
+    public List<PdmConstructor> selectPdmConstructorByTeamNo(@Param("teamNo")String teamNo);
+
+    public void clean();
+    @InsertProvider(type = ConstructorProvider.class, method = "insert")
+    public void batchAdd(List<PdmConstructor> list);
+}

+ 74 - 0
ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/mapper/PdmVehicleAlarmMapper.java

@@ -0,0 +1,74 @@
+package com.ruoyi.powerdistribution.mapper;
+
+import java.util.List;
+import com.ruoyi.powerdistribution.domain.PdmVehicleAlarm;
+
+/**
+ * 施工车辆告警Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2025-01-21
+ */
+public interface PdmVehicleAlarmMapper 
+{
+    /**
+     * 查询施工车辆告警
+     * 
+     * @param id 施工车辆告警主键
+     * @return 施工车辆告警
+     */
+    public PdmVehicleAlarm selectPdmVehicleAlarmById(Long id);
+
+    /**
+     * 查询施工车辆告警列表
+     * 
+     * @param pdmVehicleAlarm 施工车辆告警
+     * @return 施工车辆告警集合
+     */
+    public List<PdmVehicleAlarm> selectPdmVehicleAlarmList(PdmVehicleAlarm pdmVehicleAlarm);
+
+    /**
+     * 新增施工车辆告警
+     * 
+     * @param pdmVehicleAlarm 施工车辆告警
+     * @return 结果
+     */
+    public int insertPdmVehicleAlarm(PdmVehicleAlarm pdmVehicleAlarm);
+
+    /**
+     * 修改施工车辆告警
+     * 
+     * @param pdmVehicleAlarm 施工车辆告警
+     * @return 结果
+     */
+    public int updatePdmVehicleAlarm(PdmVehicleAlarm pdmVehicleAlarm);
+
+    /**
+     * 删除施工车辆告警
+     * 
+     * @param id 施工车辆告警主键
+     * @return 结果
+     */
+    public int deletePdmVehicleAlarmById(Long id);
+
+    /**
+     * 批量删除施工车辆告警
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deletePdmVehicleAlarmByIds(Long[] ids);
+
+    /**
+     * 初始一条监控记录
+     * @return
+     */
+    public  int insertVehicleAlar();
+
+    /**
+     * 删除车辆监控
+     * @param vehicleNo
+     * @return
+     */
+    public int deletePdmVehicleAlarmByVehicleNo(String vehicleNo);
+}

+ 68 - 0
ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/mapper/PdmVehicleDrivingRecordMapper.java

@@ -0,0 +1,68 @@
+package com.ruoyi.powerdistribution.mapper;
+
+import java.util.List;
+import com.ruoyi.powerdistribution.domain.PdmVehicleDrivingRecord;
+import com.ruoyi.powerdistribution.provider.VehicleDrivingRecordProvider;
+import org.apache.ibatis.annotations.InsertProvider;
+
+/**
+ * 施工车辆行驶记录Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2025-01-21
+ */
+public interface PdmVehicleDrivingRecordMapper 
+{
+    /**
+     * 查询施工车辆行驶记录
+     * 
+     * @param id 施工车辆行驶记录主键
+     * @return 施工车辆行驶记录
+     */
+    public PdmVehicleDrivingRecord selectPdmVehicleDrivingRecordById(Long id);
+
+    /**
+     * 查询施工车辆行驶记录列表
+     * 
+     * @param pdmVehicleDrivingRecord 施工车辆行驶记录
+     * @return 施工车辆行驶记录集合
+     */
+    public List<PdmVehicleDrivingRecord> selectPdmVehicleDrivingRecordList(PdmVehicleDrivingRecord pdmVehicleDrivingRecord);
+
+    /**
+     * 新增施工车辆行驶记录
+     * 
+     * @param pdmVehicleDrivingRecord 施工车辆行驶记录
+     * @return 结果
+     */
+    public int insertPdmVehicleDrivingRecord(PdmVehicleDrivingRecord pdmVehicleDrivingRecord);
+
+    /**
+     * 修改施工车辆行驶记录
+     * 
+     * @param pdmVehicleDrivingRecord 施工车辆行驶记录
+     * @return 结果
+     */
+    public int updatePdmVehicleDrivingRecord(PdmVehicleDrivingRecord pdmVehicleDrivingRecord);
+
+    /**
+     * 删除施工车辆行驶记录
+     * 
+     * @param id 施工车辆行驶记录主键
+     * @return 结果
+     */
+    public int deletePdmVehicleDrivingRecordById(Long id);
+
+    /**
+     * 批量删除施工车辆行驶记录
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deletePdmVehicleDrivingRecordByIds(Long[] ids);
+
+
+    @InsertProvider(type = VehicleDrivingRecordProvider.class, method = "insert")
+    void insert(List<PdmVehicleDrivingRecord> list);
+
+}

+ 7 - 0
ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/mapper/PdmWorkPlanMapper.java

@@ -76,5 +76,12 @@ public interface PdmWorkPlanMapper
      */
     List<WorkNumByCompanyStatistics> getWorkNumByCompanyStatistics(WorkNumByCompanyStatistics workNumByCompany);
 
+    /**
+     * 查询车辆作业信息
+     * @param vchicleNo
+     * @return
+     */
+    List<PdmWorkPlan> selectWorkPlanByVchicleNo(PdmWorkPlanDTO pdmWorkPlan);
+
 
 }

+ 37 - 0
ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/provider/ConstructTeamProvider.java

@@ -0,0 +1,37 @@
+package com.ruoyi.powerdistribution.provider;
+
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.powerdistribution.domain.PdmConstructTeam;
+import com.ruoyi.powerdistribution.domain.vo.PdmConstructTeamVo;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+public class ConstructTeamProvider {
+    public String insert(List<PdmConstructTeamVo> list) {
+        StringBuffer sqlList = new StringBuffer();
+        sqlList.append(
+                " INSERT INTO pdm_construct_team(county_org_nm,team_no,team_nm,legal_person,legal_contact_phone,team_serial_no,team_leader,team_leader_phone,construc_car_number,arrest_point,create_by,create_time,update_time) VALUES ");
+        for (int i =0; i < list.size(); i++) {
+            PdmConstructTeamVo constructTeam = list.get(i);
+            sqlList.append(" (").append("'").append(constructTeam.getCountyOrgNm()==null?"":constructTeam.getCountyOrgNm()).append("',")
+                    .append("'").append(constructTeam.getTeamNo()).append("',")
+                    .append("'").append(constructTeam.getTeamNm()).append("',")
+                    .append("'").append(constructTeam.getLegalPerson()).append("',")
+                    .append("'").append(constructTeam.getLegalContactPhone()).append("',")
+                    .append("'").append(constructTeam.getTeamSerialNo()).append("',")
+                    .append("'").append(constructTeam.getTeamLeader()).append("',")
+                    .append("'").append(constructTeam.getTeamLeaderPhone()).append("',")
+                    .append("'").append(constructTeam.getConstrucCarNumber()!=null?constructTeam.getConstrucCarNumber().stream().map(v -> String.valueOf(v)).collect(Collectors.joining(",")):"").append("',")
+                    .append("'").append(constructTeam.getArrestPoint()).append("',")
+                    .append("'").append(SecurityUtils.getUsername()).append("',")
+                    .append("SYSDATE()").append(",")
+                    .append("SYSDATE()")
+                    .append(")");
+            if (i < list.size() - 1) {
+                sqlList.append(",");
+            }
+        }
+        return sqlList.toString();
+    }
+}

+ 27 - 0
ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/provider/ConstructorProvider.java

@@ -0,0 +1,27 @@
+package com.ruoyi.powerdistribution.provider;
+
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.powerdistribution.domain.PdmConstructor;
+import java.util.List;
+
+public class ConstructorProvider {
+    public String insert(List<PdmConstructor> list) {
+        StringBuffer sqlList = new StringBuffer();
+        sqlList.append(
+                " INSERT INTO pdm_constructor(team_no,construct_person_type,construct_personnel_name,construct_personnel_phone,create_by,create_time) VALUES ");
+        for (int i =0; i < list.size(); i++) {
+            PdmConstructor constructor = list.get(i);
+            sqlList.append(" (").append("'").append(constructor.getTeamNo()).append("',")
+                    .append("'").append(constructor.getConstructPersonType()).append("',")
+                    .append("'").append(constructor.getConstructPersonnelName()).append("',")
+                    .append("'").append(constructor.getConstructPersonnelPhone()).append("',")
+                    .append("'").append(SecurityUtils.getUsername()).append("',")
+                    .append("SYSDATE()")
+                    .append(")");
+            if (i < list.size() - 1) {
+                sqlList.append(",");
+            }
+        }
+        return sqlList.toString();
+    }
+}

+ 30 - 0
ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/provider/VehicleDrivingRecordProvider.java

@@ -0,0 +1,30 @@
+package com.ruoyi.powerdistribution.provider;
+import java.util.List;
+
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.powerdistribution.domain.PdmVehicleDrivingRecord;
+
+public class VehicleDrivingRecordProvider {
+    public String insert(List<PdmVehicleDrivingRecord> list) {
+        StringBuffer sqlList = new StringBuffer();
+        sqlList.append(
+                " INSERT INTO pdm_vehicle_driving_record(vehicle_group,equip_nm,equip_no,vehicle_no,start_tm,end_tm,mileage,create_by,create_time) VALUES ");
+        for (int i =0; i < list.size(); i++) {
+            PdmVehicleDrivingRecord vehicleDrivingRecord = list.get(i);
+            sqlList.append(" (").append("'").append(vehicleDrivingRecord.getVehicleGroup()).append("',")
+                    .append("'").append(vehicleDrivingRecord.getEquipNm()).append("',")
+                    .append("'").append(vehicleDrivingRecord.getEquipNo()).append("',")
+                    .append("'").append(vehicleDrivingRecord.getVehicleNo()).append("',")
+                    .append("'").append(vehicleDrivingRecord.getStartTm()).append("',")
+                    .append("'").append(vehicleDrivingRecord.getEndTm()).append("',")
+                    .append(vehicleDrivingRecord.getMileage()).append(",")
+                    .append("'").append(SecurityUtils.getUsername()).append("',")
+                    .append("SYSDATE()")
+                    .append(")");
+            if (i < list.size() - 1) {
+                sqlList.append(",");
+            }
+        }
+        return sqlList.toString();
+    }
+}

+ 69 - 0
ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/service/IPdmConstructTeamService.java

@@ -0,0 +1,69 @@
+package com.ruoyi.powerdistribution.service;
+
+import java.util.List;
+import com.ruoyi.powerdistribution.domain.PdmConstructTeam;
+import com.ruoyi.powerdistribution.domain.excel.ConstructTeam;
+import com.ruoyi.powerdistribution.domain.vo.PdmConstructTeamVo;
+
+/**
+ * 配网工程队伍施工小组信息Service接口
+ * 
+ * @author ruoyi
+ * @date 2025-01-20
+ */
+public interface IPdmConstructTeamService 
+{
+    /**
+     * 查询配网工程队伍施工小组信息
+     * 
+     * @param id 配网工程队伍施工小组信息主键
+     * @return 配网工程队伍施工小组信息
+     */
+    public PdmConstructTeam selectPdmConstructTeamById(Long id);
+
+    /**
+     * 查询配网工程队伍施工小组信息列表
+     * 
+     * @param pdmConstructTeam 配网工程队伍施工小组信息
+     * @return 配网工程队伍施工小组信息集合
+     */
+    public List<PdmConstructTeam> selectPdmConstructTeamList(PdmConstructTeam pdmConstructTeam);
+
+    /**
+     * 新增配网工程队伍施工小组信息
+     * 
+     * @param pdmConstructTeam 配网工程队伍施工小组信息
+     * @return 结果
+     */
+    public int insertPdmConstructTeam(PdmConstructTeamVo pdmConstructTeam);
+
+    /**
+     * 修改配网工程队伍施工小组信息
+     * 
+     * @param pdmConstructTeam 配网工程队伍施工小组信息
+     * @return 结果
+     */
+    public int updatePdmConstructTeam(PdmConstructTeamVo pdmConstructTeam);
+
+    /**
+     * 批量删除配网工程队伍施工小组信息
+     * 
+     * @param ids 需要删除的配网工程队伍施工小组信息主键集合
+     * @return 结果
+     */
+    public int deletePdmConstructTeamByIds(Long[] ids);
+
+    /**
+     * 删除配网工程队伍施工小组信息信息
+     * 
+     * @param id 配网工程队伍施工小组信息主键
+     * @return 结果
+     */
+    public int deletePdmConstructTeamById(Long id);
+
+    /**
+     * 文件导入
+     * @param constructTeamList
+     */
+    public void importExcel(List<ConstructTeam> constructTeamList);
+}

+ 61 - 0
ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/service/IPdmConstructorService.java

@@ -0,0 +1,61 @@
+package com.ruoyi.powerdistribution.service;
+
+import java.util.List;
+import com.ruoyi.powerdistribution.domain.PdmConstructor;
+
+/**
+ * 配网工程队伍施工人员信息Service接口
+ * 
+ * @author ruoyi
+ * @date 2025-01-20
+ */
+public interface IPdmConstructorService 
+{
+    /**
+     * 查询配网工程队伍施工人员信息
+     * 
+     * @param id 配网工程队伍施工人员信息主键
+     * @return 配网工程队伍施工人员信息
+     */
+    public PdmConstructor selectPdmConstructorById(Long id);
+
+    /**
+     * 查询配网工程队伍施工人员信息列表
+     * 
+     * @param pdmConstructor 配网工程队伍施工人员信息
+     * @return 配网工程队伍施工人员信息集合
+     */
+    public List<PdmConstructor> selectPdmConstructorList(PdmConstructor pdmConstructor);
+
+    /**
+     * 新增配网工程队伍施工人员信息
+     * 
+     * @param pdmConstructor 配网工程队伍施工人员信息
+     * @return 结果
+     */
+    public int insertPdmConstructor(PdmConstructor pdmConstructor);
+
+    /**
+     * 修改配网工程队伍施工人员信息
+     * 
+     * @param pdmConstructor 配网工程队伍施工人员信息
+     * @return 结果
+     */
+    public int updatePdmConstructor(PdmConstructor pdmConstructor);
+
+    /**
+     * 批量删除配网工程队伍施工人员信息
+     * 
+     * @param ids 需要删除的配网工程队伍施工人员信息主键集合
+     * @return 结果
+     */
+    public int deletePdmConstructorByIds(Long[] ids);
+
+    /**
+     * 删除配网工程队伍施工人员信息信息
+     * 
+     * @param id 配网工程队伍施工人员信息主键
+     * @return 结果
+     */
+    public int deletePdmConstructorById(Long id);
+}

+ 61 - 0
ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/service/IPdmVehicleAlarmService.java

@@ -0,0 +1,61 @@
+package com.ruoyi.powerdistribution.service;
+
+import java.util.List;
+import com.ruoyi.powerdistribution.domain.PdmVehicleAlarm;
+
+/**
+ * 施工车辆告警Service接口
+ * 
+ * @author ruoyi
+ * @date 2025-01-21
+ */
+public interface IPdmVehicleAlarmService 
+{
+    /**
+     * 查询施工车辆告警
+     * 
+     * @param id 施工车辆告警主键
+     * @return 施工车辆告警
+     */
+    public PdmVehicleAlarm selectPdmVehicleAlarmById(Long id);
+
+    /**
+     * 查询施工车辆告警列表
+     * 
+     * @param pdmVehicleAlarm 施工车辆告警
+     * @return 施工车辆告警集合
+     */
+    public List<PdmVehicleAlarm> selectPdmVehicleAlarmList(PdmVehicleAlarm pdmVehicleAlarm);
+
+    /**
+     * 新增施工车辆告警
+     * 
+     * @param pdmVehicleAlarm 施工车辆告警
+     * @return 结果
+     */
+    public int insertPdmVehicleAlarm(PdmVehicleAlarm pdmVehicleAlarm);
+
+    /**
+     * 修改施工车辆告警
+     * 
+     * @param pdmVehicleAlarm 施工车辆告警
+     * @return 结果
+     */
+    public int updatePdmVehicleAlarm(PdmVehicleAlarm pdmVehicleAlarm);
+
+    /**
+     * 批量删除施工车辆告警
+     * 
+     * @param ids 需要删除的施工车辆告警主键集合
+     * @return 结果
+     */
+    public int deletePdmVehicleAlarmByIds(Long[] ids);
+
+    /**
+     * 删除施工车辆告警信息
+     * 
+     * @param id 施工车辆告警主键
+     * @return 结果
+     */
+    public int deletePdmVehicleAlarmById(Long id);
+}

+ 67 - 0
ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/service/IPdmVehicleDrivingRecordService.java

@@ -0,0 +1,67 @@
+package com.ruoyi.powerdistribution.service;
+
+import java.util.List;
+import com.ruoyi.powerdistribution.domain.PdmVehicleDrivingRecord;
+
+/**
+ * 施工车辆行驶记录Service接口
+ * 
+ * @author ruoyi
+ * @date 2025-01-21
+ */
+public interface IPdmVehicleDrivingRecordService 
+{
+    /**
+     * 查询施工车辆行驶记录
+     * 
+     * @param id 施工车辆行驶记录主键
+     * @return 施工车辆行驶记录
+     */
+    public PdmVehicleDrivingRecord selectPdmVehicleDrivingRecordById(Long id);
+
+    /**
+     * 查询施工车辆行驶记录列表
+     * 
+     * @param pdmVehicleDrivingRecord 施工车辆行驶记录
+     * @return 施工车辆行驶记录集合
+     */
+    public List<PdmVehicleDrivingRecord> selectPdmVehicleDrivingRecordList(PdmVehicleDrivingRecord pdmVehicleDrivingRecord);
+
+    /**
+     * 新增施工车辆行驶记录
+     * 
+     * @param pdmVehicleDrivingRecord 施工车辆行驶记录
+     * @return 结果
+     */
+    public int insertPdmVehicleDrivingRecord(PdmVehicleDrivingRecord pdmVehicleDrivingRecord);
+
+    /**
+     * 修改施工车辆行驶记录
+     * 
+     * @param pdmVehicleDrivingRecord 施工车辆行驶记录
+     * @return 结果
+     */
+    public int updatePdmVehicleDrivingRecord(PdmVehicleDrivingRecord pdmVehicleDrivingRecord);
+
+    /**
+     * 批量删除施工车辆行驶记录
+     * 
+     * @param ids 需要删除的施工车辆行驶记录主键集合
+     * @return 结果
+     */
+    public int deletePdmVehicleDrivingRecordByIds(Long[] ids);
+
+    /**
+     * 删除施工车辆行驶记录信息
+     * 
+     * @param id 施工车辆行驶记录主键
+     * @return 结果
+     */
+    public int deletePdmVehicleDrivingRecordById(Long id);
+
+    /**
+     * 批量插入
+     * @param list
+     */
+    public void batchAdd(List<PdmVehicleDrivingRecord> list);
+}

+ 6 - 0
ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/service/IPdmWorkPlanService.java

@@ -81,4 +81,10 @@ public interface IPdmWorkPlanService
      */
     void workDataCompute();
 
+    /**
+     * 查询车辆作业信息
+     * @param pdmWorkPlan
+     * @return
+     */
+    List<PdmWorkPlan> selectWorkPlanByVchicleNo(PdmWorkPlanDTO pdmWorkPlan);
 }

+ 201 - 0
ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/service/impl/PdmConstructTeamServiceImpl.java

@@ -0,0 +1,201 @@
+package com.ruoyi.powerdistribution.service.impl;
+
+import java.util.*;
+
+import com.alibaba.fastjson.JSON;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.bean.BeanUtils;
+import com.ruoyi.common.utils.uuid.IdUtils;
+import com.ruoyi.powerdistribution.domain.PdmConstructor;
+import com.ruoyi.powerdistribution.domain.excel.ConstructTeam;
+import com.ruoyi.powerdistribution.domain.vo.PdmConstructTeamVo;
+import com.ruoyi.powerdistribution.mapper.PdmConstructorMapper;
+import com.ruoyi.powerdistribution.mapper.PdmVehicleAlarmMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.powerdistribution.mapper.PdmConstructTeamMapper;
+import com.ruoyi.powerdistribution.domain.PdmConstructTeam;
+import com.ruoyi.powerdistribution.service.IPdmConstructTeamService;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * 配网工程队伍施工小组信息Service业务层处理
+ * 
+ * @author ruoyi
+ * @date 2025-01-20
+ */
+@Service
+public class PdmConstructTeamServiceImpl implements IPdmConstructTeamService 
+{
+    @Autowired
+    private PdmConstructTeamMapper pdmConstructTeamMapper;
+
+    @Autowired
+    private PdmConstructorMapper pdmConstructorMapper;
+    @Autowired
+    private PdmVehicleAlarmMapper pdmVehicleAlarmMapper;
+
+    /**
+     * 查询配网工程队伍施工小组信息
+     * 
+     * @param id 配网工程队伍施工小组信息主键
+     * @return 配网工程队伍施工小组信息
+     */
+    @Override
+    public PdmConstructTeam selectPdmConstructTeamById(Long id)
+    {
+        return pdmConstructTeamMapper.selectPdmConstructTeamById(id);
+    }
+
+    /**
+     * 查询配网工程队伍施工小组信息列表
+     * 
+     * @param pdmConstructTeam 配网工程队伍施工小组信息
+     * @return 配网工程队伍施工小组信息
+     */
+    @Override
+    public List<PdmConstructTeam> selectPdmConstructTeamList(PdmConstructTeam pdmConstructTeam)
+    {
+        return pdmConstructTeamMapper.selectPdmConstructTeamList(pdmConstructTeam);
+    }
+
+    /**
+     * 新增配网工程队伍施工小组信息
+     * 
+     * @param pdmConstructTeam 配网工程队伍施工小组信息
+     * @return 结果
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int insertPdmConstructTeam(PdmConstructTeamVo pdmConstructTeam)
+    {
+        String teamNo= IdUtils.fastSimpleUUID();
+        pdmConstructTeam.setCreateTime(DateUtils.getNowDate());
+        pdmConstructTeam.setCreateBy(SecurityUtils.getUsername());
+        pdmConstructTeam.setTeamNo(teamNo);
+        for(PdmConstructor constructor:pdmConstructTeam.getConstructorList()){
+            constructor.setTeamNo(teamNo);
+            constructor.setCreateTime(DateUtils.getNowDate());
+            constructor.setCreateBy(SecurityUtils.getUsername());
+            pdmConstructorMapper.insertPdmConstructor(constructor);
+        }
+
+        int i= pdmConstructTeamMapper.insertPdmConstructTeam(pdmConstructTeam);
+        pdmVehicleAlarmMapper.insertVehicleAlar();
+         return i;
+    }
+
+    /**
+     * 修改配网工程队伍施工小组信息
+     * 
+     * @param pdmConstructTeam 配网工程队伍施工小组信息
+     * @return 结果
+     */
+    @Override
+    public int updatePdmConstructTeam(PdmConstructTeamVo pdmConstructTeam)
+    {
+        pdmConstructTeam.setUpdateTime(DateUtils.getNowDate());
+        pdmConstructTeam.setUpdateBy(SecurityUtils.getUsername());
+        pdmConstructorMapper.deletePdmConstructorByTeamId(pdmConstructTeam.getId());
+        for(PdmConstructor constructor:pdmConstructTeam.getConstructorList()){
+            //if(pdmConstructorMapper.updatePdmConstructor(constructor)<1){
+                constructor.setTeamNo(pdmConstructTeam.getTeamNo());
+                pdmConstructorMapper.insertPdmConstructor(constructor);
+           // }
+        }
+        int i= pdmConstructTeamMapper.updatePdmConstructTeam(pdmConstructTeam);
+        pdmVehicleAlarmMapper.insertVehicleAlar();
+        return i;
+    }
+
+    /**
+     * 批量删除配网工程队伍施工小组信息
+     * 
+     * @param ids 需要删除的配网工程队伍施工小组信息主键
+     * @return 结果
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int deletePdmConstructTeamByIds(Long[] ids)
+    {
+        for(Long id:ids){
+            PdmConstructTeam constructTeam= pdmConstructTeamMapper.selectPdmConstructTeamById(id);
+            for(String carNo:  constructTeam.getConstrucCarNumber()){
+                pdmVehicleAlarmMapper.deletePdmVehicleAlarmByVehicleNo(carNo);
+            }
+        }
+        pdmConstructorMapper.deletePdmConstructorByTeamIds(ids);
+        return pdmConstructTeamMapper.deletePdmConstructTeamByIds(ids);
+    }
+
+    /**
+     * 删除配网工程队伍施工小组信息信息
+     * 
+     * @param id 配网工程队伍施工小组信息主键
+     * @return 结果
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int deletePdmConstructTeamById(Long id)
+    {
+        PdmConstructTeam constructTeam= pdmConstructTeamMapper.selectPdmConstructTeamById(id);
+        for(String carNo:  constructTeam.getConstrucCarNumber()){
+            pdmVehicleAlarmMapper.deletePdmVehicleAlarmByVehicleNo(carNo);
+        }
+        pdmConstructorMapper.deletePdmConstructorByTeamId(id);
+        return pdmConstructTeamMapper.deletePdmConstructTeamById(id);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void importExcel(List<ConstructTeam> constructTeamList) {
+        Map<String,PdmConstructTeamVo> data=new HashMap<>();
+        for (ConstructTeam constructTeam : constructTeamList) {
+            String key=constructTeam.getCountyOrgNm()+","+constructTeam.getTeamNm()+","+constructTeam.getLegalPerson()+","+constructTeam.getLegalContactPhone()
+                    +","+constructTeam.getTeamLeader()+","+constructTeam.getTeamLeaderPhone();
+            if(data.containsKey(key)){
+                PdmConstructor constructor=new PdmConstructor();
+                BeanUtils.copyProperties(constructTeam,constructor);
+                PdmConstructTeamVo constructTeamVo=data.get(key);
+                constructTeamVo.getConstructorList().add(constructor);
+            }else{
+                PdmConstructTeamVo constructTeamVo=new PdmConstructTeamVo();
+                BeanUtils.copyProperties(constructTeam,constructTeamVo);
+                if(StringUtils.isNotEmpty(constructTeam.getCarNumber())){
+                    constructTeam.setCarNumber(constructTeam.getCarNumber().replaceAll(" ","").replaceAll("、",",")
+                            .replaceAll("\n",",").replaceAll("\r",",").replaceAll(",",",").toUpperCase()
+                    );
+                    constructTeamVo.setConstrucCarNumber(Arrays.asList(constructTeam.getCarNumber().split(",")));
+                }
+                PdmConstructor constructor=new PdmConstructor();
+                BeanUtils.copyProperties(constructTeam,constructor);
+                List<PdmConstructor> constructorList= new ArrayList<>();
+                constructorList.add(constructor);
+                constructTeamVo.setConstructorList(constructorList);
+                data.put(key,constructTeamVo);
+            }
+        }
+        System.out.println("解析数据:"+ JSON.toJSON(data.values()));
+        pdmConstructTeamMapper.clean();
+        pdmConstructorMapper.clean();
+        List<PdmConstructor> allConstructor=new ArrayList<>();
+        List<PdmConstructTeamVo> constructTeamVos=new ArrayList<>(data.values());
+        data.values().forEach(dmConstructTeamVo->{
+            String teamNo= IdUtils.fastSimpleUUID();
+            dmConstructTeamVo.setCreateTime(DateUtils.getNowDate());
+            dmConstructTeamVo.setCreateBy(SecurityUtils.getUsername());
+            dmConstructTeamVo.setTeamNo(teamNo);
+            for(PdmConstructor constructor:dmConstructTeamVo.getConstructorList()){
+                constructor.setTeamNo(teamNo);
+                constructor.setCreateTime(DateUtils.getNowDate());
+                constructor.setCreateBy(SecurityUtils.getUsername());
+                allConstructor.add(constructor);
+            }
+        });
+        pdmConstructTeamMapper.batchAdd(constructTeamVos);
+        pdmConstructorMapper.batchAdd(allConstructor);
+        pdmVehicleAlarmMapper.insertVehicleAlar();
+    }
+}

+ 96 - 0
ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/service/impl/PdmConstructorServiceImpl.java

@@ -0,0 +1,96 @@
+package com.ruoyi.powerdistribution.service.impl;
+
+import java.util.List;
+import com.ruoyi.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.powerdistribution.mapper.PdmConstructorMapper;
+import com.ruoyi.powerdistribution.domain.PdmConstructor;
+import com.ruoyi.powerdistribution.service.IPdmConstructorService;
+
+/**
+ * 配网工程队伍施工人员信息Service业务层处理
+ * 
+ * @author ruoyi
+ * @date 2025-01-20
+ */
+@Service
+public class PdmConstructorServiceImpl implements IPdmConstructorService 
+{
+    @Autowired
+    private PdmConstructorMapper pdmConstructorMapper;
+
+    /**
+     * 查询配网工程队伍施工人员信息
+     * 
+     * @param id 配网工程队伍施工人员信息主键
+     * @return 配网工程队伍施工人员信息
+     */
+    @Override
+    public PdmConstructor selectPdmConstructorById(Long id)
+    {
+        return pdmConstructorMapper.selectPdmConstructorById(id);
+    }
+
+    /**
+     * 查询配网工程队伍施工人员信息列表
+     * 
+     * @param pdmConstructor 配网工程队伍施工人员信息
+     * @return 配网工程队伍施工人员信息
+     */
+    @Override
+    public List<PdmConstructor> selectPdmConstructorList(PdmConstructor pdmConstructor)
+    {
+        return pdmConstructorMapper.selectPdmConstructorList(pdmConstructor);
+    }
+
+    /**
+     * 新增配网工程队伍施工人员信息
+     * 
+     * @param pdmConstructor 配网工程队伍施工人员信息
+     * @return 结果
+     */
+    @Override
+    public int insertPdmConstructor(PdmConstructor pdmConstructor)
+    {
+        pdmConstructor.setCreateTime(DateUtils.getNowDate());
+        return pdmConstructorMapper.insertPdmConstructor(pdmConstructor);
+    }
+
+    /**
+     * 修改配网工程队伍施工人员信息
+     * 
+     * @param pdmConstructor 配网工程队伍施工人员信息
+     * @return 结果
+     */
+    @Override
+    public int updatePdmConstructor(PdmConstructor pdmConstructor)
+    {
+        pdmConstructor.setUpdateTime(DateUtils.getNowDate());
+        return pdmConstructorMapper.updatePdmConstructor(pdmConstructor);
+    }
+
+    /**
+     * 批量删除配网工程队伍施工人员信息
+     * 
+     * @param ids 需要删除的配网工程队伍施工人员信息主键
+     * @return 结果
+     */
+    @Override
+    public int deletePdmConstructorByIds(Long[] ids)
+    {
+        return pdmConstructorMapper.deletePdmConstructorByIds(ids);
+    }
+
+    /**
+     * 删除配网工程队伍施工人员信息信息
+     * 
+     * @param id 配网工程队伍施工人员信息主键
+     * @return 结果
+     */
+    @Override
+    public int deletePdmConstructorById(Long id)
+    {
+        return pdmConstructorMapper.deletePdmConstructorById(id);
+    }
+}

+ 96 - 0
ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/service/impl/PdmVehicleAlarmServiceImpl.java

@@ -0,0 +1,96 @@
+package com.ruoyi.powerdistribution.service.impl;
+
+import java.util.List;
+import com.ruoyi.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.powerdistribution.mapper.PdmVehicleAlarmMapper;
+import com.ruoyi.powerdistribution.domain.PdmVehicleAlarm;
+import com.ruoyi.powerdistribution.service.IPdmVehicleAlarmService;
+
+/**
+ * 施工车辆告警Service业务层处理
+ * 
+ * @author ruoyi
+ * @date 2025-01-21
+ */
+@Service
+public class PdmVehicleAlarmServiceImpl implements IPdmVehicleAlarmService 
+{
+    @Autowired
+    private PdmVehicleAlarmMapper pdmVehicleAlarmMapper;
+
+    /**
+     * 查询施工车辆告警
+     * 
+     * @param id 施工车辆告警主键
+     * @return 施工车辆告警
+     */
+    @Override
+    public PdmVehicleAlarm selectPdmVehicleAlarmById(Long id)
+    {
+        return pdmVehicleAlarmMapper.selectPdmVehicleAlarmById(id);
+    }
+
+    /**
+     * 查询施工车辆告警列表
+     * 
+     * @param pdmVehicleAlarm 施工车辆告警
+     * @return 施工车辆告警
+     */
+    @Override
+    public List<PdmVehicleAlarm> selectPdmVehicleAlarmList(PdmVehicleAlarm pdmVehicleAlarm)
+    {
+        return pdmVehicleAlarmMapper.selectPdmVehicleAlarmList(pdmVehicleAlarm);
+    }
+
+    /**
+     * 新增施工车辆告警
+     * 
+     * @param pdmVehicleAlarm 施工车辆告警
+     * @return 结果
+     */
+    @Override
+    public int insertPdmVehicleAlarm(PdmVehicleAlarm pdmVehicleAlarm)
+    {
+        pdmVehicleAlarm.setCreateTime(DateUtils.getNowDate());
+        return pdmVehicleAlarmMapper.insertPdmVehicleAlarm(pdmVehicleAlarm);
+    }
+
+    /**
+     * 修改施工车辆告警
+     * 
+     * @param pdmVehicleAlarm 施工车辆告警
+     * @return 结果
+     */
+    @Override
+    public int updatePdmVehicleAlarm(PdmVehicleAlarm pdmVehicleAlarm)
+    {
+        pdmVehicleAlarm.setUpdateTime(DateUtils.getNowDate());
+        return pdmVehicleAlarmMapper.updatePdmVehicleAlarm(pdmVehicleAlarm);
+    }
+
+    /**
+     * 批量删除施工车辆告警
+     * 
+     * @param ids 需要删除的施工车辆告警主键
+     * @return 结果
+     */
+    @Override
+    public int deletePdmVehicleAlarmByIds(Long[] ids)
+    {
+        return pdmVehicleAlarmMapper.deletePdmVehicleAlarmByIds(ids);
+    }
+
+    /**
+     * 删除施工车辆告警信息
+     * 
+     * @param id 施工车辆告警主键
+     * @return 结果
+     */
+    @Override
+    public int deletePdmVehicleAlarmById(Long id)
+    {
+        return pdmVehicleAlarmMapper.deletePdmVehicleAlarmById(id);
+    }
+}

+ 101 - 0
ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/service/impl/PdmVehicleDrivingRecordServiceImpl.java

@@ -0,0 +1,101 @@
+package com.ruoyi.powerdistribution.service.impl;
+
+import java.util.List;
+import com.ruoyi.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.powerdistribution.mapper.PdmVehicleDrivingRecordMapper;
+import com.ruoyi.powerdistribution.domain.PdmVehicleDrivingRecord;
+import com.ruoyi.powerdistribution.service.IPdmVehicleDrivingRecordService;
+
+/**
+ * 施工车辆行驶记录Service业务层处理
+ * 
+ * @author ruoyi
+ * @date 2025-01-21
+ */
+@Service
+public class PdmVehicleDrivingRecordServiceImpl implements IPdmVehicleDrivingRecordService 
+{
+    @Autowired
+    private PdmVehicleDrivingRecordMapper pdmVehicleDrivingRecordMapper;
+
+    /**
+     * 查询施工车辆行驶记录
+     * 
+     * @param id 施工车辆行驶记录主键
+     * @return 施工车辆行驶记录
+     */
+    @Override
+    public PdmVehicleDrivingRecord selectPdmVehicleDrivingRecordById(Long id)
+    {
+        return pdmVehicleDrivingRecordMapper.selectPdmVehicleDrivingRecordById(id);
+    }
+
+    /**
+     * 查询施工车辆行驶记录列表
+     * 
+     * @param pdmVehicleDrivingRecord 施工车辆行驶记录
+     * @return 施工车辆行驶记录
+     */
+    @Override
+    public List<PdmVehicleDrivingRecord> selectPdmVehicleDrivingRecordList(PdmVehicleDrivingRecord pdmVehicleDrivingRecord)
+    {
+        return pdmVehicleDrivingRecordMapper.selectPdmVehicleDrivingRecordList(pdmVehicleDrivingRecord);
+    }
+
+    /**
+     * 新增施工车辆行驶记录
+     * 
+     * @param pdmVehicleDrivingRecord 施工车辆行驶记录
+     * @return 结果
+     */
+    @Override
+    public int insertPdmVehicleDrivingRecord(PdmVehicleDrivingRecord pdmVehicleDrivingRecord)
+    {
+        pdmVehicleDrivingRecord.setCreateTime(DateUtils.getNowDate());
+        return pdmVehicleDrivingRecordMapper.insertPdmVehicleDrivingRecord(pdmVehicleDrivingRecord);
+    }
+
+    /**
+     * 修改施工车辆行驶记录
+     * 
+     * @param pdmVehicleDrivingRecord 施工车辆行驶记录
+     * @return 结果
+     */
+    @Override
+    public int updatePdmVehicleDrivingRecord(PdmVehicleDrivingRecord pdmVehicleDrivingRecord)
+    {
+        pdmVehicleDrivingRecord.setUpdateTime(DateUtils.getNowDate());
+        return pdmVehicleDrivingRecordMapper.updatePdmVehicleDrivingRecord(pdmVehicleDrivingRecord);
+    }
+
+    /**
+     * 批量删除施工车辆行驶记录
+     * 
+     * @param ids 需要删除的施工车辆行驶记录主键
+     * @return 结果
+     */
+    @Override
+    public int deletePdmVehicleDrivingRecordByIds(Long[] ids)
+    {
+        return pdmVehicleDrivingRecordMapper.deletePdmVehicleDrivingRecordByIds(ids);
+    }
+
+    /**
+     * 删除施工车辆行驶记录信息
+     * 
+     * @param id 施工车辆行驶记录主键
+     * @return 结果
+     */
+    @Override
+    public int deletePdmVehicleDrivingRecordById(Long id)
+    {
+        return pdmVehicleDrivingRecordMapper.deletePdmVehicleDrivingRecordById(id);
+    }
+
+    @Override
+    public void batchAdd(List<PdmVehicleDrivingRecord> list) {
+        pdmVehicleDrivingRecordMapper.insert(list);
+    }
+}

+ 5 - 0
ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/service/impl/PdmWorkPlanServiceImpl.java

@@ -156,6 +156,11 @@ public class PdmWorkPlanServiceImpl implements IPdmWorkPlanService
 
     }
 
+    @Override
+    public List<PdmWorkPlan> selectWorkPlanByVchicleNo(PdmWorkPlanDTO pdmWorkPlan) {
+        return pdmWorkPlanMapper.selectWorkPlanByVchicleNo(pdmWorkPlan);
+    }
+
     /**
      * 校验是否高风险
      * @param plan

+ 215 - 0
ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/util/DynamicEasyExcelConstructTeamListener.java

@@ -0,0 +1,215 @@
+package com.ruoyi.powerdistribution.util;
+
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.event.AnalysisEventListener;
+import com.alibaba.excel.metadata.CellExtra;
+import com.alibaba.fastjson2.JSON;
+import com.ruoyi.powerdistribution.domain.excel.ConstructTeam;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.util.CollectionUtils;
+
+import javax.servlet.http.HttpServletRequest;
+import java.lang.reflect.Field;
+import java.util.*;
+
+/**
+ * 创建一个监听器
+ */
+public class DynamicEasyExcelConstructTeamListener extends AnalysisEventListener<ConstructTeam> {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(DynamicEasyExcelConstructTeamListener.class);
+
+    private HttpServletRequest request;
+
+    /**
+     * 表头数据(存储所有的表头数据)
+     */
+    private List<Map<Integer, String>> headList = new ArrayList<>();
+
+    /**
+     * 数据体
+     */
+    private List<Map<Integer, String>> dataList = new ArrayList<>();
+
+
+    public DynamicEasyExcelConstructTeamListener(HttpServletRequest request, Integer headRowNumber) {
+        this.request = request;
+        this.headRowNumber = headRowNumber;
+    }
+    public DynamicEasyExcelConstructTeamListener() {
+    }
+    /**
+     * 最终返回的解析数据list
+     */
+    private final List<ConstructTeam> data = new ArrayList<>();
+    /**
+     * 解析数据
+     * key是sheetName,value是相应sheet的解析数据
+     */
+    private final Map<String, List<ConstructTeam>> dataMap = new HashMap<>();
+    /**
+     * 合并单元格
+     * key键是sheetName,value是相应sheet的合并单元格数据
+     */
+    private final Map<String, List<CellExtra>> mergeMap = new HashMap<>();
+
+    /**
+     * 正文起始行
+     */
+    private Integer headRowNumber;
+
+    /**
+     * 这里会一行行的返回头信息,不包含数据
+     */
+    @Override
+    public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
+        LOGGER.info("解析到一条头数据:{}", JSON.toJSONString(headMap));
+        //存储全部表头数据
+    }
+
+    /**
+     * 这个每一条数据解析都会来调用
+     */
+    @Override
+    public void invoke(ConstructTeam excelData1, AnalysisContext context) {
+        LOGGER.info("解析到一条数据:{}", JSON.toJSONString(data));
+        String teamNm = excelData1.getTeamNm();
+        String sheetName = context.readSheetHolder().getSheetName();
+        dataMap.computeIfAbsent(sheetName, k -> new ArrayList<>());
+        dataMap.get(sheetName).add(excelData1);//将所有的数据放入dataMap中
+//        data.add(excelData1);
+    }
+
+    //上面写入的CellExtraTypeEnum.MERGE就会来调用这个方法
+    @Override
+    public void extra(CellExtra extra, AnalysisContext context) {
+        String sheetName = context.readSheetHolder().getSheetName();//获取sheet名称
+        switch (extra.getType()) {
+            case MERGE: // 额外信息是合并单元格
+                if (extra.getRowIndex() >= headRowNumber) {
+                    mergeMap.computeIfAbsent(sheetName, k -> new ArrayList<>());
+                    mergeMap.get(sheetName).add(extra);//key是sheet名称,value是合并单元格信息
+                }
+                break;
+            case COMMENT:
+            case HYPERLINK:
+            default:
+        }
+    }
+
+    /**
+     * 将具有多个sheet数据的dataMap转变成一个data
+     */
+    private void convertDataMapToData() {
+        Iterator<Map.Entry<String, List<ConstructTeam>>> iterator = dataMap.entrySet().iterator();
+        while (iterator.hasNext()) {
+            Map.Entry<String, List<ConstructTeam>> next = iterator.next();
+            String sheetName = next.getKey();//sheet的名称
+            List<ConstructTeam> list = next.getValue();//sheet中的集合数据
+            List<CellExtra> mergeList = mergeMap.get(sheetName);//合并单元格信息
+            if (!CollectionUtils.isEmpty(mergeList)) {
+                list = explainMergeData(list, mergeList);
+            }
+            data.addAll(list);
+        }
+    }
+
+    /**
+     * 处理有合并单元格的数据
+     * @param list      解析的sheet数据
+     * @param mergeList 合并单元格信息
+     * @return 填充好的解析数据
+     */
+    private List<ConstructTeam> explainMergeData(List<ConstructTeam> list, List<CellExtra> mergeList) {
+        // 循环所有合并单元格信息
+        for (CellExtra item : mergeList) {
+            Integer firstRowIndex = item.getFirstRowIndex() - headRowNumber;//起始行
+            Integer lastRowIndex = item.getLastRowIndex() - headRowNumber;//结束行
+            Integer firstColumnIndex = item.getFirstColumnIndex();//起始列
+            Integer lastColumnIndex = item.getLastColumnIndex();//结束列
+            // 获取初始值,即合并单元的的值
+            Object initValue = getInitValueFromList(firstRowIndex, firstColumnIndex, list);
+            // 设置值
+            for (int i = firstRowIndex; i <= lastRowIndex; i++) {
+                for (int j = firstColumnIndex; j <= lastColumnIndex; j++) {
+                    setInitValueToList(initValue, i, j, list);
+                }
+            }
+        }
+        return list;
+    }
+
+    /**
+     * 获取合并单元格的初始值
+     * rowIndex对应list的索引
+     * columnIndex对应实体内的字段
+     *
+     * @param firstRowIndex    起始行
+     * @param firstColumnIndex 起始列
+     * @param list             列数据
+     * @return 初始值
+     */
+    private Object getInitValueFromList(Integer firstRowIndex, Integer firstColumnIndex, List<ConstructTeam> list) {
+        Object filedValue = null;
+        ConstructTeam object = list.get(firstRowIndex);
+        for (Field field : object.getClass().getDeclaredFields()) {
+            field.setAccessible(true);
+            ExcelProperty annotation = field.getAnnotation(ExcelProperty.class);
+            if (annotation != null) {
+                if (annotation.index() == firstColumnIndex) {
+                    try {
+                        filedValue = field.get(object);
+                        break;
+                    } catch (IllegalAccessException e) {
+                        LOGGER.error("获取合并单元格的初始值异常:" + e.getMessage());
+                    }
+                }
+            }
+        }
+        return filedValue;
+    }
+
+    /**
+     * 设置合并单元格的值
+     *
+     * @param filedValue  值
+     * @param rowIndex    行
+     * @param columnIndex 列
+     * @param list        解析数据
+     */
+    public void setInitValueToList(Object filedValue, Integer rowIndex, Integer columnIndex, List<ConstructTeam> list) {
+        ConstructTeam object = list.get(rowIndex);//
+        for (Field field : object.getClass().getDeclaredFields()) {
+            field.setAccessible(true);//提升反射性能,关闭安全检查
+            ExcelProperty annotation = field.getAnnotation(ExcelProperty.class);
+            if (annotation != null) {
+                if (annotation.index() == columnIndex) {
+                    try {
+                        field.set(object, filedValue);
+                        break;
+                    } catch (IllegalAccessException e) {
+                        LOGGER.error("设置合并单元格的值异常:" + e.getMessage());
+                    }
+                }
+            }
+        }
+    }
+    /**
+     * 所有数据解析完成了 都会来调用
+     *每个sheet调取一次
+     * @param context
+     */
+    @Override
+    public void doAfterAllAnalysed(AnalysisContext context) {
+        //LOGGER.info("所有数据解析完成!"+data);
+        //在invok解析完数据以后,才去处理合并单元格数据,最后得到合并完以后的数据
+        convertDataMapToData();
+        //LOGGER.info("所有数据解析完成!"+data);
+    }
+    public List<ConstructTeam> getDataList() {
+        return data;
+    }
+}

+ 145 - 0
ruoyi-powerdistribution/src/main/resources/mapper/powerdistribution/PdmConstructTeamMapper.xml

@@ -0,0 +1,145 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.powerdistribution.mapper.PdmConstructTeamMapper">
+    
+    <resultMap type="PdmConstructTeam" id="PdmConstructTeamResult">
+        <result property="id"    column="id"    />
+        <result property="teamNo"    column="team_no"    />
+        <result property="countyOrgNm"    column="county_org_nm"    />
+        <result property="teamNm"    column="team_nm"    />
+        <result property="legalPerson"    column="legal_person"    />
+        <result property="legalContactPhone"    column="legal_contact_phone"    />
+        <result property="teamSerialNo"    column="team_serial_no"    />
+        <result property="teamLeader"    column="team_leader"    />
+        <result property="teamLeaderPhone"    column="team_leader_phone"    />
+        <result property="construcCarNumber"    column="construc_car_number"    typeHandler="com.ruoyi.common.handler.ConvertCommaSeparatedStrToListTypeHandler" javaType="java.util.List" />
+        <result property="arrestPoint"    column="arrest_point"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="remark"    column="remark"    />
+    </resultMap>
+    <resultMap type="com.ruoyi.powerdistribution.domain.vo.PdmConstructTeamVo" id="PdmConstructTeamResult2">
+        <result property="id"    column="id"    />
+        <result property="countyOrgNm"    column="county_org_nm"    />
+        <result property="teamNo"    column="team_no"    />
+        <result property="teamNm"    column="team_nm"    />
+        <result property="legalPerson"    column="legal_person"    />
+        <result property="legalContactPhone"    column="legal_contact_phone"    />
+        <result property="teamSerialNo"    column="team_serial_no"    />
+        <result property="teamLeader"    column="team_leader"    />
+        <result property="teamLeaderPhone"    column="team_leader_phone"    />
+        <result property="construcCarNumber"    column="construc_car_number"  typeHandler="com.ruoyi.common.handler.ConvertCommaSeparatedStrToListTypeHandler" javaType="java.util.List"/>
+        <result property="arrestPoint"    column="arrest_point"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="remark"    column="remark"    />
+        <collection property="constructorList" column="{teamNo=team_no}" select="com.ruoyi.powerdistribution.mapper.PdmConstructorMapper.selectPdmConstructorByTeamNo"></collection>
+    </resultMap>
+
+    <sql id="selectPdmConstructTeamVo">
+        select id, county_org_nm,team_no, team_nm, legal_person, legal_contact_phone, team_serial_no, team_leader, team_leader_phone, construc_car_number, arrest_point, create_by, create_time, update_by, update_time, remark from pdm_construct_team
+    </sql>
+
+    <select id="selectPdmConstructTeamList" parameterType="PdmConstructTeam" resultMap="PdmConstructTeamResult2">
+        <include refid="selectPdmConstructTeamVo"/>
+        <where>
+            <if test="countyOrgNm != null  and countyOrgNm != ''"> and county_org_nm  like concat('%', #{countyOrgNm}, '%')</if>
+            <if test="teamNo != null  and teamNo != ''"> and team_no = #{teamNo}</if>
+            <if test="teamNm != null  and teamNm != ''"> and team_nm like concat('%', #{teamNm}, '%')</if>
+            <if test="legalPerson != null  and legalPerson != ''"> and legal_person = #{legalPerson}</if>
+            <if test="legalContactPhone != null  and legalContactPhone != ''"> and legal_contact_phone = #{legalContactPhone}</if>
+            <if test="teamSerialNo != null "> and team_serial_no = #{teamSerialNo}</if>
+            <if test="teamLeader != null  and teamLeader != ''"> and team_leader = #{teamLeader}</if>
+            <if test="teamLeaderPhone != null  and teamLeaderPhone != ''"> and team_leader_phone = #{teamLeaderPhone}</if>
+            <if test="arrestPoint != null  and arrestPoint != ''"> and arrest_point = #{arrestPoint}</if>
+        </where>
+        order by county_org_nm,team_nm,team_serial_no asc
+    </select>
+    
+    <select id="selectPdmConstructTeamById" parameterType="Long" resultMap="PdmConstructTeamResult">
+        <include refid="selectPdmConstructTeamVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertPdmConstructTeam" parameterType="PdmConstructTeam">
+        insert into pdm_construct_team
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="countyOrgNm != null">county_org_nm,</if>
+            <if test="teamNo != null and teamNo != ''">team_no,</if>
+            <if test="teamNm != null">team_nm,</if>
+            <if test="legalPerson != null">legal_person,</if>
+            <if test="legalContactPhone != null">legal_contact_phone,</if>
+            <if test="teamSerialNo != null">team_serial_no,</if>
+            <if test="teamLeader != null">team_leader,</if>
+            <if test="teamLeaderPhone != null">team_leader_phone,</if>
+            <if test="construcCarNumber != null">construc_car_number,</if>
+            <if test="arrestPoint != null">arrest_point,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="remark != null">remark,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="countyOrgNm != null and countyOrgNm!=''">#{countyOrgNm},</if>
+            <if test="teamNo != null and teamNo != ''">#{teamNo},</if>
+            <if test="teamNm != null">#{teamNm},</if>
+            <if test="legalPerson != null">#{legalPerson},</if>
+            <if test="legalContactPhone != null">#{legalContactPhone},</if>
+            <if test="teamSerialNo != null">#{teamSerialNo},</if>
+            <if test="teamLeader != null">#{teamLeader},</if>
+            <if test="teamLeaderPhone != null">#{teamLeaderPhone},</if>
+            <if test="construcCarNumber != null">#{construcCarNumber,typeHandler=com.ruoyi.common.handler.ConvertCommaSeparatedStrToListTypeHandler},</if>
+            <if test="arrestPoint != null">#{arrestPoint},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="remark != null">#{remark},</if>
+         </trim>
+    </insert>
+
+    <update id="updatePdmConstructTeam" parameterType="PdmConstructTeam">
+        update pdm_construct_team
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="countyOrgNm != null and countyOrgNm!=''">county_org_nm=#{countyOrgNm},</if>
+            <if test="teamNo != null and teamNo != ''">team_no = #{teamNo},</if>
+            <if test="teamNm != null">team_nm = #{teamNm},</if>
+            <if test="legalPerson != null">legal_person = #{legalPerson},</if>
+            <if test="legalContactPhone != null">legal_contact_phone = #{legalContactPhone},</if>
+            <if test="teamSerialNo != null">team_serial_no = #{teamSerialNo},</if>
+            <if test="teamLeader != null">team_leader = #{teamLeader},</if>
+            <if test="teamLeaderPhone != null">team_leader_phone = #{teamLeaderPhone},</if>
+            construc_car_number = #{construcCarNumber,typeHandler=com.ruoyi.common.handler.ConvertCommaSeparatedStrToListTypeHandler},
+            <if test="arrestPoint != null">arrest_point = #{arrestPoint},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="remark != null">remark = #{remark},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deletePdmConstructTeamById" parameterType="Long">
+        delete from pdm_construct_team where id = #{id}
+    </delete>
+
+    <delete id="deletePdmConstructTeamByIds" parameterType="String">
+        delete from pdm_construct_team where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+    <delete id="clean">
+        TRUNCATE TABLE pdm_construct_team
+    </delete>
+</mapper>

+ 110 - 0
ruoyi-powerdistribution/src/main/resources/mapper/powerdistribution/PdmConstructorMapper.xml

@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.powerdistribution.mapper.PdmConstructorMapper">
+    
+    <resultMap type="PdmConstructor" id="PdmConstructorResult">
+        <result property="id"    column="id"    />
+        <result property="teamNo"    column="team_no"    />
+        <result property="constructPersonType"    column="construct_person_type"    />
+        <result property="constructPersonnelName"    column="construct_personnel_name"    />
+        <result property="constructPersonnelPhone"    column="construct_personnel_phone"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="remark"    column="remark"    />
+    </resultMap>
+
+    <sql id="selectPdmConstructorVo">
+        select id, team_no, construct_person_type, construct_personnel_name, construct_personnel_phone, create_by, create_time, update_by, update_time, remark from pdm_constructor
+    </sql>
+
+    <select id="selectPdmConstructorList" parameterType="PdmConstructor" resultMap="PdmConstructorResult">
+        <include refid="selectPdmConstructorVo"/>
+        <where>  
+            <if test="teamNo != null  and teamNo != ''"> and team_no = #{teamNo}</if>
+            <if test="constructPersonType != null  and constructPersonType != ''"> and construct_person_type = #{constructPersonType}</if>
+            <if test="constructPersonnelName != null  and constructPersonnelName != ''"> and construct_personnel_name like concat('%', #{constructPersonnelName}, '%')</if>
+            <if test="constructPersonnelPhone != null  and constructPersonnelPhone != ''"> and construct_personnel_phone = #{constructPersonnelPhone}</if>
+        </where>
+    </select>
+    
+    <select id="selectPdmConstructorById" parameterType="Long" resultMap="PdmConstructorResult">
+        <include refid="selectPdmConstructorVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertPdmConstructor" parameterType="PdmConstructor">
+        insert into pdm_constructor
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="teamNo != null and teamNo != ''">team_no,</if>
+            <if test="constructPersonType != null">construct_person_type,</if>
+            <if test="constructPersonnelName != null">construct_personnel_name,</if>
+            <if test="constructPersonnelPhone != null">construct_personnel_phone,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="remark != null">remark,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="teamNo != null and teamNo != ''">#{teamNo},</if>
+            <if test="constructPersonType != null">#{constructPersonType},</if>
+            <if test="constructPersonnelName != null">#{constructPersonnelName},</if>
+            <if test="constructPersonnelPhone != null">#{constructPersonnelPhone},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="remark != null">#{remark},</if>
+         </trim>
+    </insert>
+
+    <update id="updatePdmConstructor" parameterType="PdmConstructor">
+        update pdm_constructor
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="teamNo != null and teamNo != ''">team_no = #{teamNo},</if>
+            <if test="constructPersonType != null">construct_person_type = #{constructPersonType},</if>
+            <if test="constructPersonnelName != null">construct_personnel_name = #{constructPersonnelName},</if>
+            <if test="constructPersonnelPhone != null">construct_personnel_phone = #{constructPersonnelPhone},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="remark != null">remark = #{remark},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deletePdmConstructorById" parameterType="Long">
+        delete from pdm_constructor where id = #{id}
+    </delete>
+
+    <delete id="deletePdmConstructorByIds" parameterType="String">
+        delete from pdm_constructor where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+    <delete id="deletePdmConstructorByTeamId" parameterType="Long">
+        delete from pdm_constructor where team_no =(select team_no from pdm_construct_team t where t.id=#{teamId} )
+    </delete>
+
+    <delete id="deletePdmConstructorByTeamIds" parameterType="String">
+        delete from pdm_constructor where team_no in( select team_no from pdm_construct_team t  where t.id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+        )
+    </delete>
+    <select id="selectPdmConstructorByTeamNo" resultMap="PdmConstructorResult">
+        select * from pdm_constructor where team_no=#{teamNo} order by construct_person_type,construct_personnel_name
+    </select>
+    <delete id="clean">
+        TRUNCATE TABLE pdm_constructor
+    </delete>
+</mapper>

+ 133 - 0
ruoyi-powerdistribution/src/main/resources/mapper/powerdistribution/PdmVehicleAlarmMapper.xml

@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.powerdistribution.mapper.PdmVehicleAlarmMapper">
+    
+    <resultMap type="PdmVehicleAlarm" id="PdmVehicleAlarmResult">
+        <result property="id"    column="id"    />
+        <result property="vehicleNo"    column="vehicle_no"    />
+        <result property="vehicleGroup"    column="vehicle_group"    />
+        <result property="countyOrgNm"    column="county_org_nm"    />
+        <result property="curator"    column="curator"    />
+        <result property="equipNo"    column="equip_no"    />
+        <result property="equipNm"    column="equip_nm"    />
+        <result property="alarmCd"    column="alarm_cd"    />
+        <result property="alarmDesc"    column="alarm_desc"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="remark"    column="remark"    />
+    </resultMap>
+
+    <sql id="selectPdmVehicleAlarmVo">
+        select id, county_org_nm,curator,vehicle_no, vehicle_group, equip_no, equip_nm, alarm_cd, alarm_desc, create_time, update_by, update_time, remark from pdm_vehicle_alarm
+    </sql>
+
+    <select id="selectPdmVehicleAlarmList" parameterType="PdmVehicleAlarm" resultMap="PdmVehicleAlarmResult">
+        <include refid="selectPdmVehicleAlarmVo"/>
+        <where>
+            <if test="countyOrgNm != null  and countyOrgNm != ''"> and county_org_nm  like concat('%', #{countyOrgNm}, '%')</if>
+            <if test="curator != null  and curator != ''"> and curator  like concat('%', #{curator}, '%')</if>
+            <if test="vehicleNo != null  and vehicleNo != ''"> and vehicle_no = #{vehicleNo}</if>
+            <if test="vehicleGroup != null  and vehicleGroup != ''"> and vehicle_group = #{vehicleGroup}</if>
+            <if test="equipNo != null  and equipNo != ''"> and equip_no = #{equipNo}</if>
+            <if test="equipNm != null  and equipNm != ''"> and equip_nm = #{equipNm}</if>
+            <if test="alarmCd != null  and alarmCd != ''"> and alarm_cd = #{alarmCd}</if>
+            <if test="alarmDesc != null  and alarmDesc != ''"> and alarm_desc = #{alarmDesc}</if>
+        </where>
+        order by county_org_nm,vehicle_group,curator
+    </select>
+    
+    <select id="selectPdmVehicleAlarmById" parameterType="Long" resultMap="PdmVehicleAlarmResult">
+        <include refid="selectPdmVehicleAlarmVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertPdmVehicleAlarm" parameterType="PdmVehicleAlarm" useGeneratedKeys="true" keyProperty="id">
+        insert into pdm_vehicle_alarm
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="vehicleNo != null">vehicle_no,</if>
+            <if test="vehicleGroup != null">vehicle_group,</if>
+            <if test="equipNo != null">equip_no,</if>
+            <if test="equipNm != null">equip_nm,</if>
+            <if test="alarmCd != null">alarm_cd,</if>
+            <if test="alarmDesc != null">alarm_desc,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="remark != null">remark,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="vehicleNo != null">#{vehicleNo},</if>
+            <if test="vehicleGroup != null">#{vehicleGroup},</if>
+            <if test="equipNo != null">#{equipNo},</if>
+            <if test="equipNm != null">#{equipNm},</if>
+            <if test="alarmCd != null">#{alarmCd},</if>
+            <if test="alarmDesc != null">#{alarmDesc},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="remark != null">#{remark},</if>
+         </trim>
+    </insert>
+
+    <update id="updatePdmVehicleAlarm" parameterType="PdmVehicleAlarm">
+        update pdm_vehicle_alarm
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="vehicleNo != null">vehicle_no = #{vehicleNo},</if>
+            <if test="vehicleGroup != null">vehicle_group = #{vehicleGroup},</if>
+            <if test="equipNo != null">equip_no = #{equipNo},</if>
+            <if test="equipNm != null">equip_nm = #{equipNm},</if>
+            <if test="alarmCd != null">alarm_cd = #{alarmCd},</if>
+            <if test="alarmDesc != null">alarm_desc = #{alarmDesc},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="remark != null">remark = #{remark},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deletePdmVehicleAlarmById" parameterType="Long">
+        delete from pdm_vehicle_alarm where id = #{id}
+    </delete>
+
+    <delete id="deletePdmVehicleAlarmByIds" parameterType="String">
+        delete from pdm_vehicle_alarm where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+    <insert id="insertVehicleAlar">
+        insert into pdm_vehicle_alarm
+        select * from (
+        SELECT
+        null as id,
+        county_org_nm,
+        SUBSTRING_INDEX( SUBSTRING_INDEX( construc_car_number, ',', n ), ',', - 1 ) AS vchicle_no ,
+        team_nm,
+        team_leader,
+        null as equip_no,
+        null as equip_nm,
+        '0',
+        '正常',
+        SYSDATE() as create_time,
+        null as update_by,
+        SYSDATE() as update_time,
+        null as remark
+        FROM
+        `pdm_construct_team`,
+        ( SELECT @rownum := @rownum + 1 AS n FROM ( SELECT @rownum := 0 ) r, `pdm_construct_team` ) x
+        WHERE
+        1 = 1
+        AND n &lt;= ( LENGTH( construc_car_number ) - LENGTH( REPLACE ( construc_car_number, ',', '' ) ) + 1 )
+        ORDER BY
+        id)a where 1=1 and   IFNULL(vchicle_no,'')!='' and not EXISTS(select 1 from pdm_vehicle_alarm p where p.vehicle_no =a.vchicle_no
+        and p.curator=a.team_leader and p.vehicle_group=a.team_nm
+        )
+    </insert>
+    <delete id="deletePdmVehicleAlarmByVehicleNo" parameterType="String">
+        delete from pdm_vehicle_alarm where vehicle_no = #{vehicleNo}
+    </delete>
+</mapper>

+ 103 - 0
ruoyi-powerdistribution/src/main/resources/mapper/powerdistribution/PdmVehicleDrivingRecordMapper.xml

@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.powerdistribution.mapper.PdmVehicleDrivingRecordMapper">
+    
+    <resultMap type="PdmVehicleDrivingRecord" id="PdmVehicleDrivingRecordResult">
+        <result property="id"    column="id"    />
+        <result property="vehicleNo"    column="vehicle_no"    />
+        <result property="vehicleGroup"    column="vehicle_group"    />
+        <result property="equipNo"    column="equip_no"    />
+        <result property="equipNm"    column="equip_nm"    />
+        <result property="startTm"    column="start_tm"    />
+        <result property="endTm"    column="end_tm"    />
+        <result property="mileage"    column="mileage"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="remark"    column="remark"    />
+    </resultMap>
+
+    <sql id="selectPdmVehicleDrivingRecordVo">
+        select distinct vehicle_no, vehicle_group, equip_no, equip_nm, start_tm, end_tm, mileage from pdm_vehicle_driving_record
+    </sql>
+
+    <select id="selectPdmVehicleDrivingRecordList" parameterType="PdmVehicleDrivingRecord" resultMap="PdmVehicleDrivingRecordResult">
+        <include refid="selectPdmVehicleDrivingRecordVo"/>
+        <where>  
+            <if test="vehicleNo != null  and vehicleNo != ''"> and vehicle_no = #{vehicleNo}</if>
+            <if test="vehicleGroup != null  and vehicleGroup != ''"> and vehicle_group = #{vehicleGroup}</if>
+            <if test="equipNo != null  and equipNo != ''"> and equip_no = #{equipNo}</if>
+            <if test="equipNm != null  and equipNm != ''"> and equip_nm = #{equipNm}</if>
+            <if test="startTm != null "> and STR_TO_DATE(start_tm,'%Y-%m-%d') &gt;= #{startTm}</if>
+            <if test="endTm != null "> and STR_TO_DATE(end_tm,'%Y-%m-%d') &lt;= #{endTm}</if>
+            <if test="mileage != null "> and mileage = #{mileage}</if>
+        </where>
+        order by vehicle_no,start_tm desc
+    </select>
+    
+    <select id="selectPdmVehicleDrivingRecordById" parameterType="Long" resultMap="PdmVehicleDrivingRecordResult">
+        <include refid="selectPdmVehicleDrivingRecordVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertPdmVehicleDrivingRecord" parameterType="PdmVehicleDrivingRecord" useGeneratedKeys="true" keyProperty="id">
+        insert into pdm_vehicle_driving_record
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="vehicleNo != null">vehicle_no,</if>
+            <if test="vehicleGroup != null">vehicle_group,</if>
+            <if test="equipNo != null">equip_no,</if>
+            <if test="equipNm != null">equip_nm,</if>
+            <if test="startTm != null">start_tm,</if>
+            <if test="endTm != null">end_tm,</if>
+            <if test="mileage != null">mileage,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="remark != null">remark,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="vehicleNo != null">#{vehicleNo},</if>
+            <if test="vehicleGroup != null">#{vehicleGroup},</if>
+            <if test="equipNo != null">#{equipNo},</if>
+            <if test="equipNm != null">#{equipNm},</if>
+            <if test="startTm != null">#{startTm},</if>
+            <if test="endTm != null">#{endTm},</if>
+            <if test="mileage != null">#{mileage},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="remark != null">#{remark},</if>
+         </trim>
+    </insert>
+
+    <update id="updatePdmVehicleDrivingRecord" parameterType="PdmVehicleDrivingRecord">
+        update pdm_vehicle_driving_record
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="vehicleNo != null">vehicle_no = #{vehicleNo},</if>
+            <if test="vehicleGroup != null">vehicle_group = #{vehicleGroup},</if>
+            <if test="equipNo != null">equip_no = #{equipNo},</if>
+            <if test="equipNm != null">equip_nm = #{equipNm},</if>
+            <if test="startTm != null">start_tm = #{startTm},</if>
+            <if test="endTm != null">end_tm = #{endTm},</if>
+            <if test="mileage != null">mileage = #{mileage},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="remark != null">remark = #{remark},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deletePdmVehicleDrivingRecordById" parameterType="Long">
+        delete from pdm_vehicle_driving_record where id = #{id}
+    </delete>
+
+    <delete id="deletePdmVehicleDrivingRecordByIds" parameterType="String">
+        delete from pdm_vehicle_driving_record where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 40 - 0
ruoyi-powerdistribution/src/main/resources/mapper/powerdistribution/PdmWorkPlanMapper.xml

@@ -591,4 +591,44 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         GROUP BY submit_org_nm
         ) t2 on t1.organ_name = t2.submit_org_nm
     </select>
+    <select id="selectWorkPlanByVchicleNo" parameterType="com.ruoyi.powerdistribution.domain.dto.PdmWorkPlanDTO"  resultMap="PdmWorkPlanResult">
+        select *  from pdm_work_plan p
+        <where>
+        <if test="startDate != null and startDate!=''"> and DATE_FORMAT(plan_start_wk_tm,'%Y-%m-%d') &gt;= #{startDate}</if>
+        <if test="endDate != null and endDate!=''"> and DATE_FORMAT(plan_end_tm,'%Y-%m-%d') &lt;= #{endDate}</if>
+        and EXISTS (select 1 from  pdm_construct_team t
+        INNER JOIN
+        (SELECT
+        DISTINCT team_no,SUBSTRING_INDEX( SUBSTRING_INDEX( construc_car_number, ',', n ), ',', - 1 ) AS vchicle_no
+        FROM
+        `pdm_construct_team`,
+        ( SELECT @rownum := @rownum + 1 AS n FROM ( SELECT @rownum := 0 ) r, `pdm_construct_team` ) x
+        WHERE
+        1 = 1
+        AND n &lt;= ( LENGTH( construc_car_number ) - LENGTH( REPLACE ( construc_car_number, ',', '' ) ) + 1 )
+        ORDER BY
+        id)a on a.vchicle_no=#{vehicleNo} and a.team_no=t.team_no
+        where t.team_leader=work_princip_nm
+        )
+        </where>
+        UNION
+        select *  from pdm_work_plan
+        <where>
+        <if test="startDate != null and startDate!=''"> and DATE_FORMAT(plan_start_wk_tm,'%Y-%m-%d') &gt;= #{startDate}</if>
+        <if test="endDate != null and endDate!=''"> and DATE_FORMAT(plan_end_tm,'%Y-%m-%d') &lt;= #{endDate}</if>
+         and EXISTS (select 1 from  pdm_constructor t inner JOIN
+        (SELECT
+        DISTINCT team_no,SUBSTRING_INDEX( SUBSTRING_INDEX( construc_car_number, ',', n ), ',', - 1 ) AS vchicle_no
+        FROM
+        `pdm_construct_team`,
+        ( SELECT @rownum := @rownum + 1 AS n FROM ( SELECT @rownum := 0 ) r, `pdm_construct_team` ) x
+        WHERE
+        1 = 1
+        AND n &lt;= ( LENGTH( construc_car_number ) - LENGTH( REPLACE ( construc_car_number, ',', '' ) ) + 1 )
+        ORDER BY
+        id) a on a.vchicle_no=#{vehicleNo} and a.team_no=t.team_no
+        where t.construct_personnel_name=work_princip_nm
+        )
+        </where>
+    </select>
 </mapper>