瀏覽代碼

项目信息,消息通知,缓存

yuanchao 2 月之前
父節點
當前提交
2c677047e9
共有 25 個文件被更改,包括 1229 次插入7 次删除
  1. 3 0
      yudao-module-pms/yudao-module-pms-api/src/main/java/cn/iocoder/yudao/module/pms/enums/ErrorCodeConstant.java
  2. 109 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotprojectinfo/IotProjectInfoController.java
  3. 68 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotprojectinfo/vo/IotProjectInfoPageReqVO.java
  4. 81 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotprojectinfo/vo/IotProjectInfoRespVO.java
  5. 62 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotprojectinfo/vo/IotProjectInfoSaveReqVO.java
  6. 24 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotprojectinfo/vo/IotProjectSaveVO.java
  7. 105 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotprojecttask/IotProjectTaskController.java
  8. 51 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotprojecttask/vo/IotProjectTaskPageReqVO.java
  9. 61 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotprojecttask/vo/IotProjectTaskRespVO.java
  10. 44 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotprojecttask/vo/IotProjectTaskSaveReqVO.java
  11. 1 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/iotopeationfill/IotOpeationFillDO.java
  12. 1 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/iotopeationfill/IotOpeationFillOrderDO.java
  13. 91 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/iotprojectinfo/IotProjectInfoDO.java
  14. 71 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/iotprojecttask/IotProjectTaskDO.java
  15. 42 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/iotprojectinfo/IotProjectInfoMapper.java
  16. 38 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/iotprojecttask/IotProjectTaskMapper.java
  17. 26 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/job/IotOperationFillJob.java
  18. 21 6
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/job/IotZHBDJob.java
  19. 57 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotprojectinfo/IotProjectInfoService.java
  20. 74 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotprojectinfo/IotProjectInfoServiceImpl.java
  21. 63 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotprojecttask/IotProjectTaskService.java
  22. 101 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotprojecttask/IotProjectTaskServiceImpl.java
  23. 2 1
      yudao-module-pms/yudao-module-pms-biz/src/main/resources/mapper/static/IotOpeationFillMapper.xml
  24. 12 0
      yudao-module-pms/yudao-module-pms-biz/src/main/resources/mapper/static/iotprojectinfo/IotProjectInfoMapper.xml
  25. 21 0
      yudao-module-pms/yudao-module-pms-biz/src/main/resources/mapper/static/iotprojecttask/IotProjectTaskMapper.xml

+ 3 - 0
yudao-module-pms/yudao-module-pms-api/src/main/java/cn/iocoder/yudao/module/pms/enums/ErrorCodeConstant.java

@@ -66,4 +66,7 @@ public interface ErrorCodeConstant{
     ErrorCode IOT_SAP_SYNC_LOG_NOT_EXISTS = new ErrorCode(153, "操作日志记录 V2 版本不存在");
     ErrorCode IOT_MATERIAL_REQUISITION_NOT_EXISTS = new ErrorCode(154, "物料领用不存在");
     ErrorCode IOT_MATERIAL_REQUISITION_DETAIL_NOT_EXISTS = new ErrorCode(155, "PMS 物料领用明细不存在");
+    ErrorCode IOT_PROJECT_INFO_NOT_EXISTS = new ErrorCode(152, "项目信息不存在");
+    ErrorCode IOT_PROJECT_TASK_NOT_EXISTS = new ErrorCode(153, "该任务不存在");
+
 }

+ 109 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotprojectinfo/IotProjectInfoController.java

@@ -0,0 +1,109 @@
+package cn.iocoder.yudao.module.pms.controller.admin.iotprojectinfo;
+
+import cn.iocoder.yudao.module.pms.controller.admin.iotprojectinfo.vo.IotProjectInfoPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.iotprojectinfo.vo.IotProjectInfoRespVO;
+import cn.iocoder.yudao.module.pms.controller.admin.iotprojectinfo.vo.IotProjectInfoSaveReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.iotprojectinfo.vo.IotProjectSaveVO;
+import cn.iocoder.yudao.module.pms.controller.admin.iotprojecttask.vo.IotProjectTaskSaveReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotprojectinfo.IotProjectInfoDO;
+import cn.iocoder.yudao.module.pms.service.iotprojectinfo.IotProjectInfoService;
+import cn.iocoder.yudao.module.pms.service.iotprojecttask.IotProjectTaskService;
+import org.springframework.web.bind.annotation.*;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import javax.validation.constraints.*;
+import javax.validation.*;
+import javax.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
+
+
+@Tag(name = "管理后台 - 项目信息")
+@RestController
+@RequestMapping("/rq/iot-project-info")
+@Validated
+public class IotProjectInfoController {
+
+    @Resource
+    private IotProjectInfoService iotProjectInfoService;
+    @Resource
+    private IotProjectTaskService iotProjectTaskService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建项目信息")
+    @PreAuthorize("@ss.hasPermission('rq:iot-project-info:create')")
+    public CommonResult<Long> createIotProjectInfo(@RequestBody IotProjectSaveVO createReqVO) {
+        Long id = iotProjectInfoService.createIotProjectInfo(createReqVO.getProjectData());
+        List<IotProjectTaskSaveReqVO> taskList = createReqVO.getTaskList();
+        for (IotProjectTaskSaveReqVO saveReqVO:taskList) {
+            saveReqVO.setProjectId(id);
+        }
+        Boolean a = iotProjectTaskService.createIotProjectTaskList(taskList);
+        return success(id);
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新项目信息")
+    @PreAuthorize("@ss.hasPermission('rq:iot-project-info:update')")
+    public CommonResult<Boolean> updateIotProjectInfo(@RequestBody IotProjectSaveVO updateReqVO) {
+        iotProjectInfoService.updateIotProjectInfo(updateReqVO.getProjectData());
+        iotProjectTaskService.updateIotProjectTaskList(updateReqVO.getTaskList());
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除项目信息")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('rq:iot-project-info:delete')")
+    public CommonResult<Boolean> deleteIotProjectInfo(@RequestParam("id") Long id) {
+        iotProjectInfoService.deleteIotProjectInfo(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得项目信息")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('rq:iot-project-info:query')")
+    public CommonResult<IotProjectInfoRespVO> getIotProjectInfo(@RequestParam("id") Long id) {
+        IotProjectInfoDO iotProjectInfo = iotProjectInfoService.getIotProjectInfo(id);
+        return success(BeanUtils.toBean(iotProjectInfo, IotProjectInfoRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得项目信息分页")
+    @PreAuthorize("@ss.hasPermission('rq:iot-project-info:query')")
+    public CommonResult<PageResult<IotProjectInfoRespVO>> getIotProjectInfoPage(@Valid IotProjectInfoPageReqVO pageReqVO) {
+        PageResult<IotProjectInfoDO> pageResult = iotProjectInfoService.getIotProjectInfoPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, IotProjectInfoRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出项目信息 Excel")
+    @PreAuthorize("@ss.hasPermission('rq:iot-project-info:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportIotProjectInfoExcel(@Valid IotProjectInfoPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<IotProjectInfoDO> list = iotProjectInfoService.getIotProjectInfoPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "项目信息.xls", "数据", IotProjectInfoRespVO.class,
+                        BeanUtils.toBean(list, IotProjectInfoRespVO.class));
+    }
+
+}

+ 68 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotprojectinfo/vo/IotProjectInfoPageReqVO.java

@@ -0,0 +1,68 @@
+package cn.iocoder.yudao.module.pms.controller.admin.iotprojectinfo.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 项目信息分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class IotProjectInfoPageReqVO extends PageParam {
+
+    @Schema(description = "组织id", example = "31703")
+    private Long deptId;
+
+    @Schema(description = "部门名称", example = "芋艿")
+    private String deptName;
+
+    @Schema(description = "合同名称", example = "王五")
+    private String contractName;
+
+    @Schema(description = "合同编号")
+    private Integer contractCode;
+
+    @Schema(description = "工作量总数")
+    private String workloadTotal;
+
+    @Schema(description = "工作量已完成")
+    private String workloadFinish;
+
+    @Schema(description = "开始时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] startTime;
+
+    @Schema(description = "完成时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] endTime;
+
+    @Schema(description = "施工地点")
+    private String location;
+
+    @Schema(description = "施工工艺")
+    private String technique;
+
+    @Schema(description = "施工工艺")
+    private String payment;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+    @Schema(description = "用户名", example = "王五")
+    private String userName;
+
+    @Schema(description = "用户id", example = "448")
+    private Long userId;
+
+    private String remark;
+
+    private Long manufacturerId;
+
+    private String manufactureName;
+}

+ 81 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotprojectinfo/vo/IotProjectInfoRespVO.java

@@ -0,0 +1,81 @@
+package cn.iocoder.yudao.module.pms.controller.admin.iotprojectinfo.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import com.alibaba.excel.annotation.*;
+
+@Schema(description = "管理后台 - 项目信息 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class IotProjectInfoRespVO {
+
+    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "14006")
+    @ExcelProperty("主键id")
+    private Long id;
+
+    @Schema(description = "组织id", example = "31703")
+    @ExcelProperty("组织id")
+    private Long deptId;
+
+    @Schema(description = "部门名称", example = "芋艿")
+    @ExcelProperty("部门名称")
+    private String deptName;
+
+    @Schema(description = "合同名称", example = "王五")
+    @ExcelProperty("合同名称")
+    private String contractName;
+
+    @Schema(description = "合同编号")
+    @ExcelProperty("合同编号")
+    private Integer contractCode;
+
+    @Schema(description = "工作量总数")
+    @ExcelProperty("工作量总数")
+    private String workloadTotal;
+
+    @Schema(description = "工作量已完成")
+    @ExcelProperty("工作量已完成")
+    private String workloadFinish;
+
+    @Schema(description = "开始时间")
+    @ExcelProperty("开始时间")
+    private LocalDateTime startTime;
+
+    @Schema(description = "完成时间")
+    @ExcelProperty("完成时间")
+    private LocalDateTime endTime;
+
+    @Schema(description = "施工地点")
+    @ExcelProperty("施工地点")
+    private String location;
+
+    @Schema(description = "施工工艺")
+    @ExcelProperty("施工工艺")
+    private String technique;
+
+    @Schema(description = "施工工艺")
+    @ExcelProperty("施工工艺")
+    private String payment;
+
+    @Schema(description = "创建时间")
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+    @Schema(description = "用户名", example = "王五")
+    @ExcelProperty("用户名")
+    private String userName;
+
+    @Schema(description = "用户id", example = "448")
+    @ExcelProperty("用户id")
+    private Long userId;
+
+    private String remark;
+
+    private Long manufacturerId;
+
+    private String manufactureName;
+
+}

+ 62 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotprojectinfo/vo/IotProjectInfoSaveReqVO.java

@@ -0,0 +1,62 @@
+package cn.iocoder.yudao.module.pms.controller.admin.iotprojectinfo.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import javax.validation.constraints.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 项目信息新增/修改 Request VO")
+@Data
+public class IotProjectInfoSaveReqVO {
+
+    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "14006")
+    private Long id;
+
+    @Schema(description = "组织id", example = "31703")
+    private Long deptId;
+
+    @Schema(description = "部门名称", example = "芋艿")
+    private String deptName;
+
+    @Schema(description = "合同名称", example = "王五")
+    private String contractName;
+
+    @Schema(description = "合同编号")
+    private Integer contractCode;
+
+    @Schema(description = "工作量总数")
+    private String workloadTotal;
+
+    @Schema(description = "工作量已完成")
+    private String workloadFinish;
+
+    @Schema(description = "开始时间")
+    private LocalDateTime startTime;
+
+    @Schema(description = "完成时间")
+    private LocalDateTime endTime;
+
+    @Schema(description = "施工地点")
+    private String location;
+
+    @Schema(description = "施工工艺")
+    private String technique;
+
+    @Schema(description = "施工工艺")
+    private String payment;
+
+    @Schema(description = "用户名", example = "王五")
+    private String userName;
+
+    @Schema(description = "用户id", example = "448")
+    private Long userId;
+
+    private String remark;
+
+    private Long manufacturerId;
+
+    private String manufactureName;
+
+}

+ 24 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotprojectinfo/vo/IotProjectSaveVO.java

@@ -0,0 +1,24 @@
+package cn.iocoder.yudao.module.pms.controller.admin.iotprojectinfo.vo;
+
+import cn.iocoder.yudao.module.pms.controller.admin.iotprojecttask.vo.IotProjectTaskPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.iotprojecttask.vo.IotProjectTaskSaveReqVO;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author yc
+ * @version 1.0
+ * @className IotProjectSaveVO
+ * @date 2025/6/17 9:51
+ * @description
+ */
+@Schema(description = "项目信息 - 项目信息 保存/修改 Request VO")
+@Data
+public class IotProjectSaveVO {
+    @Schema(description = "项目信息主表")
+    private IotProjectInfoSaveReqVO projectData;
+    @Schema(description = "任务拆分主表")
+    private List<IotProjectTaskSaveReqVO> taskList;
+}

+ 105 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotprojecttask/IotProjectTaskController.java

@@ -0,0 +1,105 @@
+package cn.iocoder.yudao.module.pms.controller.admin.iotprojecttask;
+
+import cn.iocoder.yudao.module.pms.controller.admin.iotprojecttask.vo.IotProjectTaskPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.iotprojecttask.vo.IotProjectTaskRespVO;
+import cn.iocoder.yudao.module.pms.controller.admin.iotprojecttask.vo.IotProjectTaskSaveReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotprojecttask.IotProjectTaskDO;
+import cn.iocoder.yudao.module.pms.service.iotprojecttask.IotProjectTaskService;
+import org.springframework.web.bind.annotation.*;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import javax.validation.constraints.*;
+import javax.validation.*;
+import javax.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
+
+
+@Tag(name = "管理后台 - 项目信息任务拆分")
+@RestController
+@RequestMapping("/rq/iot-project-task")
+@Validated
+public class IotProjectTaskController {
+
+    @Resource
+    private IotProjectTaskService iotProjectTaskService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建项目信息任务拆分")
+    @PreAuthorize("@ss.hasPermission('rq:iot-project-task:create')")
+    public CommonResult<Long> createIotProjectTask(@Valid @RequestBody IotProjectTaskSaveReqVO createReqVO) {
+        return success(iotProjectTaskService.createIotProjectTask(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新项目信息任务拆分")
+    @PreAuthorize("@ss.hasPermission('rq:iot-project-task:update')")
+    public CommonResult<Boolean> updateIotProjectTask(@Valid @RequestBody IotProjectTaskSaveReqVO updateReqVO) {
+        iotProjectTaskService.updateIotProjectTask(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除项目信息任务拆分")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('rq:iot-project-task:delete')")
+    public CommonResult<Boolean> deleteIotProjectTask(@RequestParam("id") Long id) {
+        iotProjectTaskService.deleteIotProjectTask(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得项目信息任务拆分")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('rq:iot-project-task:query')")
+    public CommonResult<IotProjectTaskRespVO> getIotProjectTask(@RequestParam("id") Long id) {
+        IotProjectTaskDO iotProjectTask = iotProjectTaskService.getIotProjectTask(id);
+        return success(BeanUtils.toBean(iotProjectTask, IotProjectTaskRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得项目信息任务拆分分页")
+    @PreAuthorize("@ss.hasPermission('rq:iot-project-task:query')")
+    public CommonResult<PageResult<IotProjectTaskRespVO>> getIotProjectTaskPage(@Valid IotProjectTaskPageReqVO pageReqVO) {
+        PageResult<IotProjectTaskDO> pageResult = iotProjectTaskService.getIotProjectTaskPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, IotProjectTaskRespVO.class));
+    }
+
+    @GetMapping("/list")
+    @Operation(summary = "获得项目信息任务拆分全部数据")
+    @PreAuthorize("@ss.hasPermission('rq:iot-project-task:query')")
+    public CommonResult<List<IotProjectTaskRespVO>> getTaskList(@Valid IotProjectTaskDO taskDO) {
+        List<IotProjectTaskDO> taskList = iotProjectTaskService.taskList(taskDO);
+        return success(BeanUtils.toBean(taskList, IotProjectTaskRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出项目信息任务拆分 Excel")
+    @PreAuthorize("@ss.hasPermission('rq:iot-project-task:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportIotProjectTaskExcel(@Valid IotProjectTaskPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<IotProjectTaskDO> list = iotProjectTaskService.getIotProjectTaskPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "项目信息任务拆分.xls", "数据", IotProjectTaskRespVO.class,
+                        BeanUtils.toBean(list, IotProjectTaskRespVO.class));
+    }
+
+}

+ 51 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotprojecttask/vo/IotProjectTaskPageReqVO.java

@@ -0,0 +1,51 @@
+package cn.iocoder.yudao.module.pms.controller.admin.iotprojecttask.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 项目信息任务拆分分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class IotProjectTaskPageReqVO extends PageParam {
+
+    @Schema(description = "项目id", example = "2988")
+    private Long projectId;
+
+    @Schema(description = "井号", example = "赵六")
+    private String wellName;
+
+    @Schema(description = "井型/井别", example = "2")
+    private String wellType;
+
+    @Schema(description = "施工地点")
+    private String location;
+
+    @Schema(description = "施工工艺")
+    private String technique;
+
+    @Schema(description = "设计工作量")
+    private String workloadDesign;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+    @Schema(description = "用户名", example = "赵六")
+    private String userName;
+
+    @Schema(description = "用户id", example = "25471")
+    private Long userId;
+
+    @Schema(description = "备注", example = "你说的对")
+    private String remark;
+
+    private Set<Long> deptIds;
+
+}

+ 61 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotprojecttask/vo/IotProjectTaskRespVO.java

@@ -0,0 +1,61 @@
+package cn.iocoder.yudao.module.pms.controller.admin.iotprojecttask.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import com.alibaba.excel.annotation.*;
+
+@Schema(description = "管理后台 - 项目信息任务拆分 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class IotProjectTaskRespVO {
+
+    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "31284")
+    @ExcelProperty("主键id")
+    private Long id;
+
+    @Schema(description = "项目id", example = "2988")
+    @ExcelProperty("项目id")
+    private Long projectId;
+
+    @Schema(description = "井号", example = "赵六")
+    @ExcelProperty("井号")
+    private String wellName;
+
+    @Schema(description = "井型/井别", example = "2")
+    @ExcelProperty("井型/井别")
+    private String wellType;
+
+    @Schema(description = "施工地点")
+    @ExcelProperty("施工地点")
+    private String location;
+
+    @Schema(description = "施工工艺")
+    @ExcelProperty("施工工艺")
+    private String technique;
+
+    @Schema(description = "设计工作量")
+    @ExcelProperty("设计工作量")
+    private String workloadDesign;
+
+    @Schema(description = "创建时间")
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+    @Schema(description = "用户名", example = "赵六")
+    @ExcelProperty("用户名")
+    private String userName;
+
+    @Schema(description = "用户id", example = "25471")
+    @ExcelProperty("用户id")
+    private Long userId;
+
+    @Schema(description = "备注", example = "你说的对")
+    @ExcelProperty("备注")
+    private String remark;
+
+    private Set<Long> deptIds;
+
+}

+ 44 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotprojecttask/vo/IotProjectTaskSaveReqVO.java

@@ -0,0 +1,44 @@
+package cn.iocoder.yudao.module.pms.controller.admin.iotprojecttask.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import javax.validation.constraints.*;
+
+@Schema(description = "管理后台 - 项目信息任务拆分新增/修改 Request VO")
+@Data
+public class IotProjectTaskSaveReqVO {
+
+    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "31284")
+    private Long id;
+
+    @Schema(description = "项目id", example = "2988")
+    private Long projectId;
+
+    @Schema(description = "井号", example = "赵六")
+    private String wellName;
+
+    @Schema(description = "井型/井别", example = "2")
+    private String wellType;
+
+    @Schema(description = "施工地点")
+    private String location;
+
+    @Schema(description = "施工工艺")
+    private String technique;
+
+    @Schema(description = "设计工作量")
+    private String workloadDesign;
+
+    @Schema(description = "用户名", example = "赵六")
+    private String userName;
+
+    @Schema(description = "用户id", example = "25471")
+    private Long userId;
+
+    @Schema(description = "备注", example = "你说的对")
+    private String remark;
+
+    private Set<Long> deptIds;
+
+}

+ 1 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/iotopeationfill/IotOpeationFillDO.java

@@ -105,5 +105,6 @@ public class IotOpeationFillDO extends BaseDO {
     private Integer userId;
     private String userName;
     private Long orderId;
+    private String mobile;
 
 }

+ 1 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/iotopeationfill/IotOpeationFillOrderDO.java

@@ -42,5 +42,6 @@ public class IotOpeationFillOrderDO extends BaseDO {
     private int orderStatus;
     private String userName;
     private Integer userId;
+    private String mobile;
 
 }

+ 91 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/iotprojectinfo/IotProjectInfoDO.java

@@ -0,0 +1,91 @@
+package cn.iocoder.yudao.module.pms.dal.dataobject.iotprojectinfo;
+
+import lombok.*;
+import java.util.*;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.*;
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+
+/**
+ * 项目信息 DO
+ *
+ * @author 超级管理员
+ */
+@TableName("rq_iot_project_info")
+@KeySequence("rq_iot_project_info_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class IotProjectInfoDO extends BaseDO {
+
+    /**
+     * 主键id
+     */
+    @TableId
+    private Long id;
+    /**
+     * 组织id
+     */
+    private Long deptId;
+    /**
+     * 部门名称
+     */
+    private String deptName;
+    /**
+     * 合同名称
+     */
+    private String contractName;
+    /**
+     * 合同编号
+     */
+    private Integer contractCode;
+    /**
+     * 工作量总数
+     */
+    private String workloadTotal;
+    /**
+     * 工作量已完成
+     */
+    private String workloadFinish;
+    /**
+     * 开始时间
+     */
+    private LocalDateTime startTime;
+    /**
+     * 完成时间
+     */
+    private LocalDateTime endTime;
+    /**
+     * 施工地点
+     */
+    private String location;
+    /**
+     * 施工工艺
+     */
+    private String technique;
+    /**
+     * 施工工艺
+     */
+    private String payment;
+    /**
+     * 用户名
+     */
+    private String userName;
+    /**
+     * 用户id
+     */
+    private Long userId;
+
+    private String remark;
+
+    private Long manufacturerId;
+
+    private String manufactureName;
+
+}

+ 71 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/iotprojecttask/IotProjectTaskDO.java

@@ -0,0 +1,71 @@
+package cn.iocoder.yudao.module.pms.dal.dataobject.iotprojecttask;
+
+import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
+import lombok.*;
+import java.util.*;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.*;
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+
+/**
+ * 项目信息任务拆分 DO
+ *
+ * @author 超级管理员
+ */
+@TableName(value="rq_iot_project_task", autoResultMap = true)
+@KeySequence("rq_iot_project_task_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class IotProjectTaskDO extends BaseDO {
+
+    /**
+     * 主键id
+     */
+    @TableId
+    private Long id;
+    /**
+     * 项目id
+     */
+    private Long projectId;
+    /**
+     * 井号
+     */
+    private String wellName;
+    /**
+     * 井型/井别
+     */
+    private String wellType;
+    /**
+     * 施工地点
+     */
+    private String location;
+    /**
+     * 施工工艺
+     */
+    private String technique;
+    /**
+     * 设计工作量
+     */
+    private String workloadDesign;
+    /**
+     * 用户名
+     */
+    private String userName;
+    /**
+     * 用户id
+     */
+    private Long userId;
+    /**
+     * 备注
+     */
+    private String remark;
+
+    @TableField(typeHandler = JacksonTypeHandler.class)
+    private Set<Long> deptIds;
+
+}

+ 42 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/iotprojectinfo/IotProjectInfoMapper.java

@@ -0,0 +1,42 @@
+package cn.iocoder.yudao.module.pms.dal.mysql.iotprojectinfo;
+
+import java.util.*;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.module.pms.controller.admin.iotprojectinfo.vo.IotProjectInfoPageReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotprojectinfo.IotProjectInfoDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 项目信息 Mapper
+ *
+ * @author 超级管理员
+ */
+@Mapper
+public interface IotProjectInfoMapper extends BaseMapperX<IotProjectInfoDO> {
+
+    default PageResult<IotProjectInfoDO> selectPage(IotProjectInfoPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<IotProjectInfoDO>()
+                .eqIfPresent(IotProjectInfoDO::getDeptId, reqVO.getDeptId())
+                .likeIfPresent(IotProjectInfoDO::getManufactureName, reqVO.getManufactureName())
+                .likeIfPresent(IotProjectInfoDO::getDeptName, reqVO.getDeptName())
+                .likeIfPresent(IotProjectInfoDO::getContractName, reqVO.getContractName())
+                .eqIfPresent(IotProjectInfoDO::getContractCode, reqVO.getContractCode())
+                .eqIfPresent(IotProjectInfoDO::getWorkloadTotal, reqVO.getWorkloadTotal())
+                .eqIfPresent(IotProjectInfoDO::getWorkloadFinish, reqVO.getWorkloadFinish())
+                .betweenIfPresent(IotProjectInfoDO::getStartTime, reqVO.getStartTime())
+                .betweenIfPresent(IotProjectInfoDO::getEndTime, reqVO.getEndTime())
+                .eqIfPresent(IotProjectInfoDO::getLocation, reqVO.getLocation())
+                .eqIfPresent(IotProjectInfoDO::getTechnique, reqVO.getTechnique())
+                .eqIfPresent(IotProjectInfoDO::getPayment, reqVO.getPayment())
+                .betweenIfPresent(IotProjectInfoDO::getCreateTime, reqVO.getCreateTime())
+                .likeIfPresent(IotProjectInfoDO::getUserName, reqVO.getUserName())
+                .eqIfPresent(IotProjectInfoDO::getManufacturerId, reqVO.getManufacturerId())
+                .eqIfPresent(IotProjectInfoDO::getUserId, reqVO.getUserId())
+                .likeIfPresent(IotProjectInfoDO::getRemark, reqVO.getRemark())
+                .orderByDesc(IotProjectInfoDO::getId));
+    }
+
+}

+ 38 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/iotprojecttask/IotProjectTaskMapper.java

@@ -0,0 +1,38 @@
+package cn.iocoder.yudao.module.pms.dal.mysql.iotprojecttask;
+
+import java.util.*;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.module.pms.controller.admin.iotprojecttask.vo.IotProjectTaskPageReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotprojecttask.IotProjectTaskDO;
+import org.apache.ibatis.annotations.Mapper;
+
+
+/**
+ * 项目信息任务拆分 Mapper
+ *
+ * @author 超级管理员
+ */
+@Mapper
+public interface IotProjectTaskMapper extends BaseMapperX<IotProjectTaskDO> {
+
+    default PageResult<IotProjectTaskDO> selectPage(IotProjectTaskPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<IotProjectTaskDO>()
+                .eqIfPresent(IotProjectTaskDO::getProjectId, reqVO.getProjectId())
+                .likeIfPresent(IotProjectTaskDO::getWellName, reqVO.getWellName())
+                .eqIfPresent(IotProjectTaskDO::getWellType, reqVO.getWellType())
+                .eqIfPresent(IotProjectTaskDO::getLocation, reqVO.getLocation())
+                .eqIfPresent(IotProjectTaskDO::getTechnique, reqVO.getTechnique())
+                .eqIfPresent(IotProjectTaskDO::getWorkloadDesign, reqVO.getWorkloadDesign())
+                .betweenIfPresent(IotProjectTaskDO::getCreateTime, reqVO.getCreateTime())
+                .likeIfPresent(IotProjectTaskDO::getUserName, reqVO.getUserName())
+                .eqIfPresent(IotProjectTaskDO::getUserId, reqVO.getUserId())
+                .eqIfPresent(IotProjectTaskDO::getRemark, reqVO.getRemark())
+                .orderByDesc(IotProjectTaskDO::getId));
+    }
+
+    List<IotProjectTaskDO> taskList(IotProjectTaskDO taskDO);
+
+}

+ 26 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/job/IotOperationFillJob.java

@@ -4,27 +4,34 @@ import cn.iocoder.yudao.framework.quartz.core.handler.JobHandler;
 import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
 import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder;
 import cn.iocoder.yudao.framework.tenant.core.job.TenantJob;
+import cn.iocoder.yudao.module.pms.constant.PmsConstants;
 import cn.iocoder.yudao.module.pms.controller.admin.iotopeationfill.vo.IotOpeationFillPageReqVO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotopeationfill.IotOpeationFillDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotopeationfill.IotOpeationFillOrderDO;
 import cn.iocoder.yudao.module.pms.dal.mysql.iotopeationfill.IotOpeationFillMapper;
 import cn.iocoder.yudao.module.pms.dal.mysql.iotopeationfill.IotOpeationFillOrderMapper;
+import cn.iocoder.yudao.module.pms.message.PmsMessage;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.scheduling.annotation.EnableScheduling;
 import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 import org.springframework.stereotype.Component;
 
+import javax.annotation.Resource;
 import javax.annotation.security.PermitAll;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.concurrent.CompletableFuture;
 import java.util.function.Predicate;
 import java.util.stream.Collectors;
 
+import static cn.iocoder.yudao.module.pms.framework.config.MultiThreadConfiguration.PMS_THREAD_POOL_TASK_EXECUTOR;
+
 /**
  * @author yc
  * @version 1.0
@@ -41,6 +48,11 @@ public class IotOperationFillJob implements JobHandler {
     private IotOpeationFillMapper iotOpeationFillMapper;
     @Autowired
     private IotOpeationFillOrderMapper iotOpeationFillOrderMapper;
+    @Resource
+    private PmsMessage pmsMessage;
+    @Resource(name = PMS_THREAD_POOL_TASK_EXECUTOR)
+    private ThreadPoolTaskExecutor pmsThreadPoolTaskExecutor;
+
 
     @Override
     @TenantIgnore
@@ -66,6 +78,7 @@ public class IotOperationFillJob implements JobHandler {
                 fillDO.setCreateTime(LocalDateTime.now());
                 fillDO.setUserName(pd.getUserName());
                 fillDO.setUserId(pd.getUserId());
+                fillDO.setMobile(pd.getMobile());
                 orderList.add(fillDO);
             }
 
@@ -79,6 +92,7 @@ public class IotOperationFillJob implements JobHandler {
                 fillDO.setCreateTime(LocalDateTime.now());
                 fillDO.setUserName(pd.getUserName());
                 fillDO.setUserId(pd.getUserId());
+                fillDO.setMobile(pd.getMobile());
                 orderList.add(fillDO);
             }
 
@@ -92,6 +106,7 @@ public class IotOperationFillJob implements JobHandler {
                 fillDO.setCreateTime(LocalDateTime.now());
                 fillDO.setUserName(pd.getUserName());
                 fillDO.setUserId(pd.getUserId());
+                fillDO.setMobile(pd.getMobile());
                 orderList.add(fillDO);
             }
         }
@@ -109,6 +124,17 @@ public class IotOperationFillJob implements JobHandler {
 
         iotOpeationFillOrderMapper.insertBatch(orderList1);
 
+        pmsThreadPoolTaskExecutor.execute(()->{
+            try{
+                for (IotOpeationFillOrderDO order:orderList1) {
+                    pmsMessage.sendMessage(order.getId(), order.getOrderName(), PmsConstants.GENERATE_OPERATION, (long)order.getUserId(), order.getMobile());
+                }
+            }catch (Exception e){
+                e.printStackTrace();
+            }
+        });
+
+
 
         for (IotOpeationFillDO device:deviceList) {
             System.out.println("deviceUser"+device.getUserId());

+ 21 - 6
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/job/IotZHBDJob.java

@@ -12,6 +12,7 @@ import cn.iocoder.yudao.module.pms.job.httpEntity.ApiResponse;
 import cn.iocoder.yudao.module.pms.job.httpEntity.LocationData;
 import cn.iocoder.yudao.module.pms.job.httpEntity.LoginRequestEntity;
 import cn.iocoder.yudao.module.pms.job.httpEntity.LoginResponseEntity;
+import com.alibaba.fastjson.JSON;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.xingyuv.captcha.util.StringUtils;
 import io.netty.util.internal.StringUtil;
@@ -21,11 +22,13 @@ import okhttp3.Request;
 import okhttp3.RequestBody;
 import okhttp3.Response;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.http.*;
 import org.springframework.stereotype.Component;
 import org.springframework.web.client.RestTemplate;
 
 
+import javax.annotation.Resource;
 import java.io.IOException;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -54,6 +57,11 @@ public class IotZHBDJob implements JobHandler {
     private IotOpeationFillMapper zhbdmapper;
     @Autowired
     private TDDeviceMapper deviceMapper;
+
+    @Resource
+    private StringRedisTemplate redisTemplate;
+
+
     @Override
     @TenantIgnore
     public String execute(String param) throws Exception {
@@ -71,7 +79,6 @@ public class IotZHBDJob implements JobHandler {
             List<DeviceZHBDDO> zhbdList = zhbdmapper.carList();
             // 准备请求参数
             String carIds = StringUtils.strip(zhbdList.stream().map(e->e.getCarId()).collect(Collectors.toList()).toString(),"[]").replace(" ","") ;
-            System.out.println("carIDs----------"+carIds);
             Long timestamp = System.currentTimeMillis();  // 当前时间戳
 
 
@@ -86,22 +93,20 @@ public class IotZHBDJob implements JobHandler {
                     ApiResponse response = parseResponse(jsonResponse);
                     // 处理结果
                     if (response != null && response.code == 200) {
-                        System.out.println("获取定位信息请求成功: " + response.message);
-                        List<Map<String,Object>> locations = response.data.data;
 
+                        List<Map<String,Object>> locations = response.data.data;
 
                         for (Map<String,Object> location : locations) {
 
                             if(String.valueOf(location.get("vehicle_id")).equals(zhbddo.getCarId())){
 
-                                System.out.println("匹配成功==========="+zhbddo.getCarId());
-
                                 TDLogDO logDO = new TDLogDO();
                                 List<DeviceLogDO> list = new ArrayList<>();
 
                                 logDO.setTableName(zhbddo.getDeviceCode().toLowerCase());
                                 logDO.setSerialNumber("'"+zhbddo.getDeviceCode()+"'");
 
+                                Map<String, String> abcMap = new HashMap<>();
                                 location.forEach((k,v)->{
                                     if(parameter.contains(k)){
                                         DeviceLogDO deviceLogDO = new DeviceLogDO();
@@ -114,9 +119,19 @@ public class IotZHBDJob implements JobHandler {
                                         deviceLogDO.setBatchId(0);
                                         list.add(deviceLogDO);
                                         logDO.setList(list);
+
+                                        /**
+                                         * 存入Redis
+                                         */
+                                        Map<String, String> abc=new HashMap<>();
+                                        abc.put("value",String.valueOf(v));
+                                        abcMap.put(k, JSON.toJSONString(abc));
+
+
                                     }
                                 });
-                                System.out.println("YF号-----------------"+logDO.getSerialNumber());
+                                redisTemplate.opsForHash().putAll("TSLV:"+zhbddo.getDeviceCode(),abcMap);
+
                                 /**
                                  * 插入时序库
                                  */

+ 57 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotprojectinfo/IotProjectInfoService.java

@@ -0,0 +1,57 @@
+package cn.iocoder.yudao.module.pms.service.iotprojectinfo;
+
+import java.util.*;
+import javax.validation.*;
+
+import cn.iocoder.yudao.module.pms.controller.admin.iotprojectinfo.vo.IotProjectInfoPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.iotprojectinfo.vo.IotProjectInfoSaveReqVO;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotprojectinfo.IotProjectInfoDO;
+
+/**
+ * 项目信息 Service 接口
+ *
+ * @author 超级管理员
+ */
+public interface IotProjectInfoService {
+
+    /**
+     * 创建项目信息
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createIotProjectInfo(@Valid IotProjectInfoSaveReqVO createReqVO);
+
+    /**
+     * 更新项目信息
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateIotProjectInfo(@Valid IotProjectInfoSaveReqVO updateReqVO);
+
+    /**
+     * 删除项目信息
+     *
+     * @param id 编号
+     */
+    void deleteIotProjectInfo(Long id);
+
+    /**
+     * 获得项目信息
+     *
+     * @param id 编号
+     * @return 项目信息
+     */
+    IotProjectInfoDO getIotProjectInfo(Long id);
+
+    /**
+     * 获得项目信息分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 项目信息分页
+     */
+    PageResult<IotProjectInfoDO> getIotProjectInfoPage(IotProjectInfoPageReqVO pageReqVO);
+
+}

+ 74 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotprojectinfo/IotProjectInfoServiceImpl.java

@@ -0,0 +1,74 @@
+package cn.iocoder.yudao.module.pms.service.iotprojectinfo;
+
+import cn.iocoder.yudao.module.pms.controller.admin.iotprojectinfo.vo.IotProjectInfoPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.iotprojectinfo.vo.IotProjectInfoSaveReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotprojectinfo.IotProjectInfoDO;
+import cn.iocoder.yudao.module.pms.dal.mysql.iotprojectinfo.IotProjectInfoMapper;
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.iocoder.yudao.module.pms.enums.ErrorCodeConstant.IOT_PROJECT_INFO_NOT_EXISTS;
+
+/**
+ * 项目信息 Service 实现类
+ *
+ * @author 超级管理员
+ */
+@Service
+@Validated
+public class IotProjectInfoServiceImpl implements IotProjectInfoService {
+
+    @Resource
+    private IotProjectInfoMapper iotProjectInfoMapper;
+
+    @Override
+    public Long createIotProjectInfo(IotProjectInfoSaveReqVO createReqVO) {
+        // 插入
+        IotProjectInfoDO iotProjectInfo = BeanUtils.toBean(createReqVO, IotProjectInfoDO.class);
+        iotProjectInfoMapper.insert(iotProjectInfo);
+        // 返回
+        return iotProjectInfo.getId();
+    }
+
+    @Override
+    public void updateIotProjectInfo(IotProjectInfoSaveReqVO updateReqVO) {
+        // 校验存在
+        validateIotProjectInfoExists(updateReqVO.getId());
+        // 更新
+        IotProjectInfoDO updateObj = BeanUtils.toBean(updateReqVO, IotProjectInfoDO.class);
+        iotProjectInfoMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteIotProjectInfo(Long id) {
+        // 校验存在
+        validateIotProjectInfoExists(id);
+        // 删除
+        iotProjectInfoMapper.deleteById(id);
+    }
+
+    private void validateIotProjectInfoExists(Long id) {
+        if (iotProjectInfoMapper.selectById(id) == null) {
+            throw exception(IOT_PROJECT_INFO_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public IotProjectInfoDO getIotProjectInfo(Long id) {
+        return iotProjectInfoMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<IotProjectInfoDO> getIotProjectInfoPage(IotProjectInfoPageReqVO pageReqVO) {
+        return iotProjectInfoMapper.selectPage(pageReqVO);
+    }
+
+}

+ 63 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotprojecttask/IotProjectTaskService.java

@@ -0,0 +1,63 @@
+package cn.iocoder.yudao.module.pms.service.iotprojecttask;
+
+import java.util.*;
+import javax.validation.*;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.module.pms.controller.admin.iotprojecttask.vo.IotProjectTaskPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.iotprojecttask.vo.IotProjectTaskSaveReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotprojecttask.IotProjectTaskDO;
+
+/**
+ * 项目信息任务拆分 Service 接口
+ *
+ * @author 超级管理员
+ */
+public interface IotProjectTaskService {
+
+    /**
+     * 创建项目信息任务拆分
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createIotProjectTask(@Valid IotProjectTaskSaveReqVO createReqVO);
+
+    Boolean createIotProjectTaskList(List<IotProjectTaskSaveReqVO> list);
+
+    /**
+     * 更新项目信息任务拆分
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateIotProjectTask(@Valid IotProjectTaskSaveReqVO updateReqVO);
+
+    void updateIotProjectTaskList(List<IotProjectTaskSaveReqVO> list);
+
+    /**
+     * 删除项目信息任务拆分
+     *
+     * @param id 编号
+     */
+    void deleteIotProjectTask(Long id);
+
+    /**
+     * 获得项目信息任务拆分
+     *
+     * @param id 编号
+     * @return 项目信息任务拆分
+     */
+    IotProjectTaskDO getIotProjectTask(Long id);
+
+    /**
+     * 获得项目信息任务拆分分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 项目信息任务拆分分页
+     */
+    PageResult<IotProjectTaskDO> getIotProjectTaskPage(IotProjectTaskPageReqVO pageReqVO);
+
+
+    List<IotProjectTaskDO> taskList(IotProjectTaskDO taskDO);
+
+}

+ 101 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotprojecttask/IotProjectTaskServiceImpl.java

@@ -0,0 +1,101 @@
+package cn.iocoder.yudao.module.pms.service.iotprojecttask;
+
+
+import cn.iocoder.yudao.module.pms.controller.admin.iotprojecttask.vo.IotProjectTaskPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.iotprojecttask.vo.IotProjectTaskSaveReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotprojecttask.IotProjectTaskDO;
+import cn.iocoder.yudao.module.pms.dal.mysql.iotprojecttask.IotProjectTaskMapper;
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+
+
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.iocoder.yudao.module.pms.enums.ErrorCodeConstant.IOT_PROJECT_TASK_NOT_EXISTS;
+
+/**
+ * 项目信息任务拆分 Service 实现类
+ *
+ * @author 超级管理员
+ */
+@Service
+@Validated
+public class IotProjectTaskServiceImpl implements IotProjectTaskService {
+
+    @Resource
+    private IotProjectTaskMapper iotProjectTaskMapper;
+
+    @Override
+    public Long createIotProjectTask(IotProjectTaskSaveReqVO createReqVO) {
+        // 插入
+        IotProjectTaskDO iotProjectTask = BeanUtils.toBean(createReqVO, IotProjectTaskDO.class);
+        iotProjectTaskMapper.insert(iotProjectTask);
+        // 返回
+        return iotProjectTask.getId();
+    }
+
+    @Override
+    public Boolean createIotProjectTaskList(List<IotProjectTaskSaveReqVO> list) {
+        List<IotProjectTaskDO> taskDOS = new ArrayList<>();
+        for (IotProjectTaskSaveReqVO saveReqVO:list) {
+            IotProjectTaskDO iotProjectTask = BeanUtils.toBean(saveReqVO, IotProjectTaskDO.class);
+            taskDOS.add(iotProjectTask);
+        }
+        return iotProjectTaskMapper.insertBatch(taskDOS);
+    }
+
+    @Override
+    public void updateIotProjectTask(IotProjectTaskSaveReqVO updateReqVO) {
+        // 校验存在
+        validateIotProjectTaskExists(updateReqVO.getId());
+        // 更新
+        IotProjectTaskDO updateObj = BeanUtils.toBean(updateReqVO, IotProjectTaskDO.class);
+        iotProjectTaskMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void updateIotProjectTaskList(List<IotProjectTaskSaveReqVO> list) {
+        List<IotProjectTaskDO> taskDOS = new ArrayList<>();
+        for (IotProjectTaskSaveReqVO saveReqVO:list) {
+            IotProjectTaskDO updateObj = BeanUtils.toBean(saveReqVO, IotProjectTaskDO.class);
+            taskDOS.add(updateObj);
+        }
+        iotProjectTaskMapper.updateBatch(taskDOS);
+    }
+
+    @Override
+    public void deleteIotProjectTask(Long id) {
+        // 校验存在
+        validateIotProjectTaskExists(id);
+        // 删除
+        iotProjectTaskMapper.deleteById(id);
+    }
+
+    private void validateIotProjectTaskExists(Long id) {
+        if (iotProjectTaskMapper.selectById(id) == null) {
+            throw exception(IOT_PROJECT_TASK_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public IotProjectTaskDO getIotProjectTask(Long id) {
+        return iotProjectTaskMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<IotProjectTaskDO> getIotProjectTaskPage(IotProjectTaskPageReqVO pageReqVO) {
+        return iotProjectTaskMapper.selectPage(pageReqVO);
+    }
+
+    @Override
+    public List<IotProjectTaskDO> taskList(IotProjectTaskDO taskDO) {
+        return iotProjectTaskMapper.taskList(taskDO);
+    }
+
+}

+ 2 - 1
yudao-module-pms/yudao-module-pms-biz/src/main/resources/mapper/static/IotOpeationFillMapper.xml

@@ -284,7 +284,8 @@
             distinct
             a.id user_id,
             a.nickname user_name,
-            a.dept_id
+            a.dept_id,
+            a.mobile
         from
             system_users a,
             rq_iot_device_person b

+ 12 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/resources/mapper/static/iotprojectinfo/IotProjectInfoMapper.xml

@@ -0,0 +1,12 @@
+<?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="cn.iocoder.yudao.module.pms.dal.mysql.iotprojectinfo.IotProjectInfoMapper">
+
+    <!--
+        一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
+        无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
+        代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
+        文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
+     -->
+
+</mapper>

+ 21 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/resources/mapper/static/iotprojecttask/IotProjectTaskMapper.xml

@@ -0,0 +1,21 @@
+<?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="cn.iocoder.yudao.module.pms.dal.mysql.iotprojecttask.IotProjectTaskMapper">
+
+    <!--
+        一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
+        无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
+        代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
+        文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
+     -->
+    <select id="taskList" parameterType="cn.iocoder.yudao.module.pms.dal.dataobject.iotprojecttask.IotProjectTaskDO"
+    resultType="cn.iocoder.yudao.module.pms.dal.dataobject.iotprojecttask.IotProjectTaskDO">
+        select * from rqiot.rq_iot_project_task
+        where 1=1
+        and project_id =#{projectId}
+        <if test="id != null  and id != ''">
+        id=#{id}
+        </if>
+    </select>
+
+</mapper>