Pārlūkot izejas kodu

Merge remote-tracking branch 'origin/master' into master

yangyj 2 gadi atpakaļ
vecāks
revīzija
d3f3e6ca29
74 mainītis faili ar 1951 papildinājumiem un 858 dzēšanām
  1. 3 0
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/feign/ArchiveFileClient.java
  2. 4 0
      blade-service-api/blade-control-api/src/main/java/org/springblade/control/dto/ControlProjectInfoDTO.java
  3. 34 0
      blade-service-api/blade-control-api/src/main/java/org/springblade/control/dto/DictInfoDTO.java
  4. 19 0
      blade-service-api/blade-control-api/src/main/java/org/springblade/control/dto/LogHistoryInfoDTO.java
  5. 0 19
      blade-service-api/blade-control-api/src/main/java/org/springblade/control/dto/PlanInfoDTO.java
  6. 0 24
      blade-service-api/blade-control-api/src/main/java/org/springblade/control/dto/TaskInfoDTO.java
  7. 98 0
      blade-service-api/blade-control-api/src/main/java/org/springblade/control/entity/ControlContractInfo.java
  8. 16 28
      blade-service-api/blade-control-api/src/main/java/org/springblade/control/entity/ControlProjectInfo.java
  9. 66 0
      blade-service-api/blade-control-api/src/main/java/org/springblade/control/entity/DictInfo.java
  10. 31 0
      blade-service-api/blade-control-api/src/main/java/org/springblade/control/entity/LogHistoryInfo.java
  11. 0 42
      blade-service-api/blade-control-api/src/main/java/org/springblade/control/entity/PlanInfo.java
  12. 1 1
      blade-service-api/blade-control-api/src/main/java/org/springblade/control/entity/ProjectProcess.java
  13. 0 64
      blade-service-api/blade-control-api/src/main/java/org/springblade/control/entity/TaskInfo.java
  14. 0 4
      blade-service-api/blade-control-api/src/main/java/org/springblade/control/feign/test.java
  15. 19 0
      blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/ControlContractInfoVO.java
  16. 11 2
      blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/ControlProjectInfoVO.java
  17. 70 0
      blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/DictInfoVO.java
  18. 15 0
      blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/LogHistoryInfoReadVO.java
  19. 38 0
      blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/LogHistoryInfoVO.java
  20. 0 39
      blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/PlanInfoVO.java
  21. 0 16
      blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/PlanTaskRecordVO.java
  22. 0 47
      blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/TaskPageVO.java
  23. 4 0
      blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/feign/IUserClient.java
  24. 1 1
      blade-service/blade-archive/pom.xml
  25. 6 4
      blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchivesAutoServiceImpl.java
  26. 1 1
      blade-service/blade-business/pom.xml
  27. 11 0
      blade-service/blade-business/src/main/java/org/springblade/business/feignClient/ArchiveFileClientImpl.java
  28. 2 0
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/ArchiveFileMapper.java
  29. 6 0
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/ArchiveFileMapper.xml
  30. 90 0
      blade-service/blade-control/src/main/java/org/springblade/control/controller/ContractInfoController.java
  31. 120 0
      blade-service/blade-control/src/main/java/org/springblade/control/controller/DictInfoController.java
  32. 61 0
      blade-service/blade-control/src/main/java/org/springblade/control/controller/LogHistoryController.java
  33. 0 56
      blade-service/blade-control/src/main/java/org/springblade/control/controller/PlanInfoController.java
  34. 8 8
      blade-service/blade-control/src/main/java/org/springblade/control/controller/ProjectInfoController.java
  35. 0 71
      blade-service/blade-control/src/main/java/org/springblade/control/controller/TaskInfoController.java
  36. 28 0
      blade-service/blade-control/src/main/java/org/springblade/control/mapper/ContractInfoMapper.java
  37. 21 0
      blade-service/blade-control/src/main/java/org/springblade/control/mapper/ContractInfoMapper.xml
  38. 52 0
      blade-service/blade-control/src/main/java/org/springblade/control/mapper/DictInfoMapper.java
  39. 24 0
      blade-service/blade-control/src/main/java/org/springblade/control/mapper/DictInfoMapper.xml
  40. 7 0
      blade-service/blade-control/src/main/java/org/springblade/control/mapper/LogHistoryMapper.java
  41. 14 0
      blade-service/blade-control/src/main/java/org/springblade/control/mapper/LogHistoryMapper.xml
  42. 0 7
      blade-service/blade-control/src/main/java/org/springblade/control/mapper/PlanInfoMapper.java
  43. 0 19
      blade-service/blade-control/src/main/java/org/springblade/control/mapper/PlanInfoMapper.xml
  44. 4 2
      blade-service/blade-control/src/main/java/org/springblade/control/mapper/ProjectInfoMapper.java
  45. 30 14
      blade-service/blade-control/src/main/java/org/springblade/control/mapper/ProjectInfoMapper.xml
  46. 7 7
      blade-service/blade-control/src/main/java/org/springblade/control/mapper/ProjectProcessMapper.xml
  47. 0 7
      blade-service/blade-control/src/main/java/org/springblade/control/mapper/TaskInfoMapper.java
  48. 0 13
      blade-service/blade-control/src/main/java/org/springblade/control/mapper/TaskInfoMapper.xml
  49. 35 0
      blade-service/blade-control/src/main/java/org/springblade/control/service/IContractInfoService.java
  50. 74 0
      blade-service/blade-control/src/main/java/org/springblade/control/service/IDictInfoService.java
  51. 4 2
      blade-service/blade-control/src/main/java/org/springblade/control/service/IProjectInfoService.java
  52. 23 0
      blade-service/blade-control/src/main/java/org/springblade/control/service/LogHistoryService.java
  53. 0 19
      blade-service/blade-control/src/main/java/org/springblade/control/service/PlanInfoService.java
  54. 0 26
      blade-service/blade-control/src/main/java/org/springblade/control/service/TaskInfoService.java
  55. 93 0
      blade-service/blade-control/src/main/java/org/springblade/control/service/impl/ContractInfoServiceImpl.java
  56. 73 0
      blade-service/blade-control/src/main/java/org/springblade/control/service/impl/DictInfoServiceImpl.java
  57. 183 0
      blade-service/blade-control/src/main/java/org/springblade/control/service/impl/LogHistoryServiceImpl.java
  58. 0 131
      blade-service/blade-control/src/main/java/org/springblade/control/service/impl/PlanInfoServiceImpl.java
  59. 25 6
      blade-service/blade-control/src/main/java/org/springblade/control/service/impl/ProjectInfoServiceImpl.java
  60. 16 12
      blade-service/blade-control/src/main/java/org/springblade/control/service/impl/ProjectProcessServiceImpl.java
  61. 0 161
      blade-service/blade-control/src/main/java/org/springblade/control/service/impl/TaskInfoServiceImpl.java
  62. 62 0
      blade-service/blade-control/src/main/java/org/springblade/control/wrapper/DictInfoWrapper.java
  63. 0 4
      blade-service/blade-control/src/main/java/org/springblade/control/wrapper/test.java
  64. 1 1
      blade-service/blade-manager/pom.xml
  65. 5 0
      blade-service/blade-user/src/main/java/org/springblade/system/user/feign/UserClient.java
  66. 127 0
      src/main/java/org/springblade/control/controller/DictInfoController.java
  67. 34 0
      src/main/java/org/springblade/control/dto/DictInfoDTO.java
  68. 64 0
      src/main/java/org/springblade/control/entity/DictInfo.java
  69. 42 0
      src/main/java/org/springblade/control/mapper/DictInfoMapper.java
  70. 32 0
      src/main/java/org/springblade/control/mapper/DictInfoMapper.xml
  71. 41 0
      src/main/java/org/springblade/control/service/IDictInfoService.java
  72. 41 0
      src/main/java/org/springblade/control/service/impl/DictInfoServiceImpl.java
  73. 34 0
      src/main/java/org/springblade/control/vo/DictInfoVO.java
  74. 20 0
      src/main/java/sql/dictinfo.menu.sql

+ 3 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/feign/ArchiveFileClient.java

@@ -115,4 +115,7 @@ public interface ArchiveFileClient {
 
     @PostMapping(API_PREFIX + "/updateArchiveFileByBoxNameOne")
     boolean updateArchiveFileByBoxNameOne(@RequestParam String boxName, @RequestParam Integer boxNumber);
+
+    @PostMapping(API_PREFIX + "/updateRectificationById")
+    boolean updateRectificationById(@RequestParam Long id,@RequestParam Integer rectification);
 }

+ 4 - 0
blade-service-api/blade-control-api/src/main/java/org/springblade/control/dto/ControlProjectInfoDTO.java

@@ -22,4 +22,8 @@ public class ControlProjectInfoDTO extends ControlProjectInfo {
     //模糊查询
     @ApiModelProperty(value = "搜索值")
     private String queryValue;
+
+    //模糊查询
+    @ApiModelProperty(value = "查询时间")
+    private String queryDate;
 }

+ 34 - 0
blade-service-api/blade-control-api/src/main/java/org/springblade/control/dto/DictInfoDTO.java

@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.control.dto;
+
+import org.springblade.control.entity.DictInfo;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 参数信息表数据传输对象实体类
+ *
+ * @author BladeX
+ * @since 2023-06-05
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class DictInfoDTO extends DictInfo {
+    private static final long serialVersionUID = 1L;
+
+}

+ 19 - 0
blade-service-api/blade-control-api/src/main/java/org/springblade/control/dto/LogHistoryInfoDTO.java

@@ -0,0 +1,19 @@
+package org.springblade.control.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springblade.control.entity.LogHistoryInfo;
+
+@Data
+public class LogHistoryInfoDTO extends LogHistoryInfo {
+
+    @ApiModelProperty(value = "开始时间")
+    private String startTime;
+
+    @ApiModelProperty(value = "结束时间")
+    private String endTime;
+
+    @ApiModelProperty(value = "任务ids")
+    private String taskIds;
+
+}

+ 0 - 19
blade-service-api/blade-control-api/src/main/java/org/springblade/control/dto/PlanInfoDTO.java

@@ -1,19 +0,0 @@
-package org.springblade.control.dto;
-
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.springblade.control.entity.PlanInfo;
-
-
-@Data
-@EqualsAndHashCode(callSuper = true)
-public class PlanInfoDTO extends PlanInfo {
-
-    @ApiModelProperty(value = "任务ids,字符串逗号拼接")
-    private String taskIds;
-
-    @ApiModelProperty(value = "任务数据状态 1=提交数据 2=暂存数据")
-    private String taskDataStatus;
-
-}

+ 0 - 24
blade-service-api/blade-control-api/src/main/java/org/springblade/control/dto/TaskInfoDTO.java

@@ -1,24 +0,0 @@
-package org.springblade.control.dto;
-
-
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.springblade.control.entity.TaskInfo;
-import org.springblade.core.mp.base.BaseEntity;
-
-
-@Data
-@EqualsAndHashCode(callSuper = true)
-public class TaskInfoDTO extends TaskInfo {
-
-    @ApiModelProperty(value = "1=我的任务、2=我关联的计划任务、3=查看全部计划任务")
-    private String type;
-
-    @ApiModelProperty(value = "计划部门")
-    private String planDept;
-
-    @ApiModelProperty(value = "计划状态")
-    private String planStatus;
-
-}

+ 98 - 0
blade-service-api/blade-control-api/src/main/java/org/springblade/control/entity/ControlContractInfo.java

@@ -0,0 +1,98 @@
+package org.springblade.control.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.mp.base.BaseEntity;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+
+/**
+ * @Param
+ * @Author wangwl
+ * @Date 2023/6/6 9:21
+ **/
+@Data
+@TableName("c_control_contract_info")
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "项目合同表", description = "项目合同表")
+public class ControlContractInfo extends BaseEntity {
+    @ApiModelProperty(value = "合同编号")
+    private String number;
+
+    @ApiModelProperty(value = "合同名称")
+    private String name;
+
+    @ApiModelProperty(value = "合同类型")
+    private Integer contractType;
+
+    @ApiModelProperty(value = "项目id")
+    private Long projectId;
+
+    @DateTimeFormat(
+            pattern = "yyyy-MM-dd"
+    )
+    @JsonFormat(
+            pattern = "yyyy-MM-dd"
+    )
+    @ApiModelProperty(value = "合同签订时间")
+    private LocalDate contractSignTime;
+
+    @DateTimeFormat(
+            pattern = "yyyy-MM-dd"
+    )
+    @JsonFormat(
+            pattern = "yyyy-MM-dd"
+    )
+    @ApiModelProperty(value = "合同开始日期")
+    private LocalDate startTime;
+
+    @DateTimeFormat(
+            pattern = "yyyy-MM-dd"
+    )
+    @JsonFormat(
+            pattern = "yyyy-MM-dd"
+    )
+    @ApiModelProperty(value = "合同结束日期")
+    private LocalDate endTime;
+
+    @ApiModelProperty(value = "对方单位回款联系人名称")
+    private String returnedUserName;
+
+    @ApiModelProperty(value = "对方单位回款联系人电话")
+    private String returnedUserPhone;
+
+    @ApiModelProperty(value = "合同金额")
+    private BigDecimal contractMoney;
+
+    @ApiModelProperty(value = "发票抬头")
+    private String invoiceHead;
+
+    @ApiModelProperty(value = "纳税人识别号")
+    private String taxpayerNumber;
+
+    @ApiModelProperty(value = "开户银行")
+    private String openAccountBank;
+
+    @ApiModelProperty(value = "银行账户")
+    private String bankAccount;
+
+    @ApiModelProperty(value = "收件人姓名")
+    private String addresseeUserName;
+
+    @ApiModelProperty(value = "联系电话")
+    private String addresseePhone;
+
+    @ApiModelProperty(value = "邮寄地址")
+    private String mailingAddress;
+
+    @ApiModelProperty(value = "合同附件")
+    private String contractAccessory;
+
+
+}

+ 16 - 28
blade-service-api/blade-control-api/src/main/java/org/springblade/control/entity/ControlProjectInfo.java

@@ -30,8 +30,8 @@ public class ControlProjectInfo extends BaseEntity {
     @ApiModelProperty(value = "项目名称")
     private String name;
 
-    @ApiModelProperty(value = "项目进程")
-    private String process;
+    @ApiModelProperty(value = "建设单位")
+    private String constructUnit;
 
     @DateTimeFormat(
             pattern = "yyyy-MM-dd"
@@ -40,16 +40,7 @@ public class ControlProjectInfo extends BaseEntity {
             pattern = "yyyy-MM-dd"
     )
     @ApiModelProperty(value = "项目开始日期")
-    private LocalDate projectStartTime;
-
-    @ApiModelProperty(value = "项目类型")
-    private Integer projectType;
-
-    @ApiModelProperty(value = "合同类型")
-    private Integer contractType;
-
-    @ApiModelProperty(value = "合同金额")
-    private BigDecimal contractAmount;
+    private LocalDate startTime;
 
     @DateTimeFormat(
             pattern = "yyyy-MM-dd"
@@ -57,25 +48,22 @@ public class ControlProjectInfo extends BaseEntity {
     @JsonFormat(
             pattern = "yyyy-MM-dd"
     )
-    @ApiModelProperty(value = "合同开始时间")
-    private LocalDate contractStartTime;
+    @ApiModelProperty(value = "项目结束日期")
+    private LocalDate endTime;
 
-    @DateTimeFormat(
-            pattern = "yyyy-MM-dd"
-    )
-    @JsonFormat(
-            pattern = "yyyy-MM-dd"
-    )
-    @ApiModelProperty(value = "合同停止日期")
-    private LocalDate contractEndTime;
+    @ApiModelProperty(value = "项目类型")
+    private Integer projectType;
+
+    @ApiModelProperty(value = "项目服务类型")
+    private Integer projectServerType;
 
-    @ApiModelProperty(value = "已回款")
-    private BigDecimal returnedMoney;
+    @ApiModelProperty(value = "项目负责人")
+    private Long projectPrincipal;
 
-    @ApiModelProperty(value = "合同pdf")
-    private String contractPdf;
+    @ApiModelProperty(value = "实施负责人")
+    private Long implementPrincipal;
 
-    @ApiModelProperty(value = "负责人")
-    private Long dutyUser;
+    @ApiModelProperty(value = "维护负责人")
+    private Long maintainPrincipal;
 
 }

+ 66 - 0
blade-service-api/blade-control-api/src/main/java/org/springblade/control/entity/DictInfo.java

@@ -0,0 +1,66 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.control.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+
+import org.springblade.core.mp.base.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 参数信息表实体类
+ *
+ * @author BladeX
+ * @since 2023-06-05
+ */
+@Data
+@TableName("c_dict_info")
+@EqualsAndHashCode(callSuper = true)
+public class DictInfo extends BaseEntity {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 父主键
+     */
+    private Long parentId;
+    /**
+     * 字典名称
+     */
+    private String dictName;
+    /**
+     * 字典值
+     */
+    private String dictValue;
+    /**
+     * 排序
+     */
+    private Integer sort;
+    /**
+     * 参数类型
+     */
+    private Integer type;
+    /**
+     * 自定义码
+     */
+    private String code;
+
+
+}

+ 31 - 0
blade-service-api/blade-control-api/src/main/java/org/springblade/control/entity/LogHistoryInfo.java

@@ -0,0 +1,31 @@
+package org.springblade.control.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.mp.base.BaseEntity;
+
+@Data
+@TableName("c_log_history_info")
+@EqualsAndHashCode(callSuper = true)
+public class LogHistoryInfo extends BaseEntity {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "用户id")
+    private Long userId;
+
+    @ApiModelProperty(value = "组织部门id")
+    private Long orgDept;
+
+    @ApiModelProperty(value = "工作描述")
+    private String workDesc;
+
+    @ApiModelProperty(value = "风险预警")
+    private String riskWarning;
+
+    @ApiModelProperty(value = "报销金额")
+    private String expenseReimbursementAmount;
+
+}

+ 0 - 42
blade-service-api/blade-control-api/src/main/java/org/springblade/control/entity/PlanInfo.java

@@ -1,42 +0,0 @@
-package org.springblade.control.entity;
-
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.springblade.core.mp.base.BaseEntity;
-
-import java.util.Date;
-
-/**
- * 计划表
- */
-@Data
-@TableName("c_control_plan_info")
-@EqualsAndHashCode(callSuper = true)
-public class PlanInfo extends BaseEntity {
-
-    private static final long serialVersionUID = 1L;
-
-    @ApiModelProperty(value = "计划名称")
-    private String planName;
-
-    @ApiModelProperty(value = "计划编号")
-    private String planNumber;
-
-    @ApiModelProperty(value = "计划部门")
-    private Integer planDept;
-
-    @ApiModelProperty(value = "计划类型")
-    private Integer planType;
-
-    @ApiModelProperty(value = "计划开始时间")
-    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy/MM/dd", timezone = "GMT+8")
-    private Date planStartDate;
-
-    @ApiModelProperty(value = "计划结束时间")
-    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy/MM/dd", timezone = "GMT+8")
-    private Date planEndDate;
-
-}

+ 1 - 1
blade-service-api/blade-control-api/src/main/java/org/springblade/control/entity/ProjectProcess.java

@@ -18,7 +18,7 @@ import java.time.LocalDateTime;
  * @Date 2023/5/12 11:42
  **/
 @Data
-@TableName("c_control_project_process")
+@TableName("c_project_process")
 @EqualsAndHashCode(callSuper = true)
 @ApiModel(value = "项目进程表", description = "项目进程表")
 public class ProjectProcess extends BaseEntity {

+ 0 - 64
blade-service-api/blade-control-api/src/main/java/org/springblade/control/entity/TaskInfo.java

@@ -1,64 +0,0 @@
-package org.springblade.control.entity;
-
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.springblade.core.mp.base.BaseEntity;
-
-import java.util.Date;
-
-
-/**
- * 计划任务表
- */
-@Data
-@TableName("c_control_task_info")
-@EqualsAndHashCode(callSuper = true)
-public class TaskInfo extends BaseEntity {
-
-    private static final long serialVersionUID = 1L;
-
-    @ApiModelProperty(value = "任务描述")
-    private String taskDesc;
-
-    @ApiModelProperty(value = "任务类型")
-    private Integer taskType;
-
-    @ApiModelProperty(value = "任务完成指标")
-    private String taskStandard;
-
-    @ApiModelProperty(value = "任务开始日期")
-    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy/MM/dd", timezone = "GMT+8")
-    private Date taskStartDate;
-
-    @ApiModelProperty(value = "任务结束日期")
-    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy/MM/dd", timezone = "GMT+8")
-    private Date taskEndDate;
-
-    @ApiModelProperty(value = "总工作日")
-    private String totalWorkDays;
-
-    @ApiModelProperty(value = "关联项目id")
-    private Long relatedProjectId;
-
-    @ApiModelProperty(value = "是否关联预算 0=否 1=是")
-    private Integer isRelatedBudget;
-
-    @ApiModelProperty(value = "关联的项目环节")
-    private Integer projectProcess;
-
-    @ApiModelProperty(value = "任务人id")
-    private Long taskUserId;
-
-    @ApiModelProperty(value = "协助人id")
-    private Long taskUserIdAssist;
-
-    @ApiModelProperty(value = "部门负责人id")
-    private Long taskUserIdLeader;
-
-    @ApiModelProperty(value = "任务数据状态 1=提交数据 2=暂存数据")
-    private Integer isSubmitOrSuspend;
-
-}

+ 0 - 4
blade-service-api/blade-control-api/src/main/java/org/springblade/control/feign/test.java

@@ -1,4 +0,0 @@
-package org.springblade.control.feign;
-
-public class test {
-}

+ 19 - 0
blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/ControlContractInfoVO.java

@@ -0,0 +1,19 @@
+package org.springblade.control.vo;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.control.entity.ControlContractInfo;
+
+/**
+ * @Param
+ * @Author wangwl
+ * @Date 2023/6/6 15:22
+ **/
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ControlContractInfoVO extends ControlContractInfo {
+    //合同类型值
+    private String contractTypeValue;
+    //项目名称
+    private String projectName;
+}

+ 11 - 2
blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/ControlProjectInfoVO.java

@@ -4,6 +4,7 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 import org.springblade.control.entity.ControlProjectInfo;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -16,8 +17,16 @@ import java.util.List;
 public class ControlProjectInfoVO extends ControlProjectInfo {
     //项目类型值
     private String projectTypeValue;
-    //合同类型值
-    private String contractTypeValue;
+    //项目服务类型值
+    private String projectServerTypeValue;
+    //合同金额
+    private BigDecimal contractMoney;
+    //项目负责人名称
+    private String projectPrincipalName;
+    //实施负责人名称
+    private String implementPrincipalName;
+    //维护负责人名称
+    private String maintainPrincipalName;
     //项目进程集合
     private List<ProjectProcessVO> projectProcessList;
 }

+ 70 - 0
blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/DictInfoVO.java

@@ -0,0 +1,70 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.control.vo;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import org.springblade.control.entity.DictInfo;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.tool.node.INode;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 参数信息表视图实体类
+ *
+ * @author BladeX
+ * @since 2023-06-05
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class DictInfoVO extends DictInfo implements INode<DictInfoVO> {
+    private static final long serialVersionUID = 1L;
+    /**
+     * 主键ID
+     */
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long id;
+
+    /**
+     * 父节点ID
+     */
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long parentId;
+
+    /**
+     * 子孙节点
+     */
+    @JsonInclude(JsonInclude.Include.NON_EMPTY)
+    private List<DictInfoVO> children;
+
+    @Override
+    public List<DictInfoVO> getChildren() {
+        if (this.children == null) {
+            this.children = new ArrayList<>();
+        }
+        return this.children;
+    }
+
+    /**
+     * 上级字典
+     */
+    private String parentName;
+}

+ 15 - 0
blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/LogHistoryInfoReadVO.java

@@ -0,0 +1,15 @@
+package org.springblade.control.vo;
+
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+@Data
+@TableName("c_log_history_read_record")
+public class LogHistoryInfoReadVO {
+
+    private Long id;
+    private Long logId;
+    private Long userId;
+
+}

+ 38 - 0
blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/LogHistoryInfoVO.java

@@ -0,0 +1,38 @@
+package org.springblade.control.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springblade.control.entity.LogHistoryInfo;
+
+import java.util.List;
+
+@Data
+public class LogHistoryInfoVO extends LogHistoryInfo {
+
+    @ApiModelProperty(value = "用户头像")
+    private String headPicture;
+
+    @ApiModelProperty(value = "日志名称")
+    private String logTitle;
+
+    @ApiModelProperty(value = "已读状态 0=未读 1=已读")
+    private Integer isRead;
+
+   /*@ApiModelProperty(value = "当前日志关联的任务信息List")
+    private List<TaskInfo> taskList;*/
+
+    @ApiModelProperty(value = "当前日志所有已读人")
+    private List<ReadUser> readUsers;
+
+    @Data
+    public static class ReadUser {
+        private String headPicture;
+        private String name;
+
+        public ReadUser(String headPicture, String name) {
+            this.headPicture = headPicture;
+            this.name = name;
+        }
+    }
+
+}

+ 0 - 39
blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/PlanInfoVO.java

@@ -1,39 +0,0 @@
-package org.springblade.control.vo;
-
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-import java.io.Serializable;
-
-@Data
-public class PlanInfoVO implements Serializable {
-
-    @ApiModelProperty(value = "计划id")
-    private String id;
-
-    @ApiModelProperty(value = "计划编号")
-    private String planNumber;
-
-    @ApiModelProperty(value = "计划名称")
-    private String planName;
-
-    @ApiModelProperty(value = "计划类型")
-    private String planTypeName;
-
-    @ApiModelProperty(value = "计划起止日期")
-    private String planStartAndEndDate;
-
-    @ApiModelProperty(value = "任务总数量")
-    private String taskCount;
-
-    @ApiModelProperty(value = "已完成计划")
-    private String taskComplete;
-
-    @ApiModelProperty(value = "未完成计划")
-    private String taskIncomplete;
-
-    @ApiModelProperty(value = "计划制定人")
-    private String planFormulateUserName;
-
-
-}

+ 0 - 16
blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/PlanTaskRecordVO.java

@@ -1,16 +0,0 @@
-package org.springblade.control.vo;
-
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-
-import java.io.Serializable;
-
-@Data
-@TableName("c_control_plan_task_record")
-public class PlanTaskRecordVO implements Serializable {
-
-    private Long id;
-    private Long planId;
-    private Long taskId;
-
-}

+ 0 - 47
blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/TaskPageVO.java

@@ -1,47 +0,0 @@
-package org.springblade.control.vo;
-
-import com.fasterxml.jackson.annotation.JsonFormat;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-import java.io.Serializable;
-import java.util.Date;
-
-@Data
-public class TaskPageVO implements Serializable {
-
-    @ApiModelProperty(value = "任务id")
-    private String id;
-
-    @ApiModelProperty(value = "计划名称")
-    private String planName;
-
-    @ApiModelProperty(value = "任务状态")
-    private String status;
-
-    @ApiModelProperty(value = "任务描述")
-    private String taskDesc;
-
-    @ApiModelProperty(value = "任务完成指标")
-    private String taskStandard;
-
-    @ApiModelProperty(value = "任务完成期限")
-    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy/MM/dd", timezone = "GMT+8")
-    private Date taskEndDate;
-
-    @ApiModelProperty(value = "任务人")
-    private String taskUserName;
-
-    @ApiModelProperty(value = "协助人")
-    private String taskUserAssistName;
-
-    @ApiModelProperty(value = "部门负责人")
-    private String taskUserLeaderName;
-
-    @ApiModelProperty(value = "关联的项目环节名称")
-    private String projectProcessName;
-
-    @ApiModelProperty(value = "关联项目")
-    private String relatedProjectName;
-
-}

+ 4 - 0
blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/feign/IUserClient.java

@@ -57,6 +57,7 @@ public interface IUserClient {
     String UPDATE_USERS_ROLE_ID = API_PREFIX + "/user-roleId-update-three";
     String USER_INFO_LIST = API_PREFIX + "/find-user-info-list";
     String USER_INFO_ALL = API_PREFIX + "/get-users-all";
+    String USER_LIST_INFO_BY_IDS = API_PREFIX + "/getUserListByIds";
 
     /**
      * 获取所有有效用户
@@ -162,4 +163,7 @@ public interface IUserClient {
     @GetMapping(USER_INFO_ALL)
     List<User> selectUserAll();
 
+    @GetMapping(USER_LIST_INFO_BY_IDS)
+    List<User> userInfoByIds(@RequestBody List<Long> userIds);
+
 }

+ 1 - 1
blade-service/blade-archive/pom.xml

@@ -145,7 +145,7 @@
                     <target>${java.version}</target>
                     <encoding>${project.build.sourceEncoding}</encoding>
                     <compilerArguments>
-                        <bootclasspath>${java.home}/lib/rt.jar:${java.home}/lib/jce.jar:${java.home}/lib/jsse.jar
+                        <bootclasspath>${java.home}/lib/rt.jar;${java.home}/lib/jce.jar;${java.home}/lib/jsse.jar
                         </bootclasspath>
                     </compilerArguments>
                 </configuration>

+ 6 - 4
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchivesAutoServiceImpl.java

@@ -1451,15 +1451,17 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 
 		//分组,分程 建设单位,各个合同段,电子单位等
 		for (List<ArchiveTreeContract> subList: subGroupedList) {
+
+			//根据 authFilter函数过滤
+			subList = authFilter(subList,contractId,nodeId);
 			List<Long> ids = subList.stream()
 					.map(ArchiveTreeContract::getId)
 					.collect(Collectors.toList());
 
-			//todo 后续根据 authFilter函数过滤
-
-			subList = authFilter(subList,contractId,nodeId);
-
 			index =1;
+			if(ids.size()==0){
+				continue;
+			}
 			List<ArchivesAuto> archivesAutos = findArchivesAutosByIds(ids);
 			if (archivesAutos == null || archivesAutos.size() == 0) {
 				continue;

+ 1 - 1
blade-service/blade-business/pom.xml

@@ -179,7 +179,7 @@
                     <target>${java.version}</target>
                     <encoding>${project.build.sourceEncoding}</encoding>
                     <compilerArguments>
-                        <bootclasspath>${java.home}/lib/rt.jar:${java.home}/lib/jce.jar:${java.home}/lib/jsse.jar
+                        <bootclasspath>${java.home}/lib/rt.jar;${java.home}/lib/jce.jar;${java.home}/lib/jsse.jar
                         </bootclasspath>
                     </compilerArguments>
                 </configuration>

+ 11 - 0
blade-service/blade-business/src/main/java/org/springblade/business/feignClient/ArchiveFileClientImpl.java

@@ -240,5 +240,16 @@ public class ArchiveFileClientImpl implements ArchiveFileClient {
         return this.iArchiveFileService.updateArchiveFileByBoxNameOne(boxName, boxNumber);
     }
 
+    @Override
+    public boolean updateRectificationById(Long id,Integer rectification) {
+        try {
+            fileMapper.updateRectificationById(id,rectification);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+        return true;
+    }
+
 
 }

+ 2 - 0
blade-service/blade-business/src/main/java/org/springblade/business/mapper/ArchiveFileMapper.java

@@ -86,4 +86,6 @@ public interface ArchiveFileMapper extends BaseMapper<ArchiveFile> {
 
     //后续应该加入文件类型
     List<ArchiveFile> getAllPdfFileUrlByProjectIdAndFileType(@Param("projectId") Long projectId);
+
+    void updateRectificationById(@Param("id") Long id,@Param("rectification") Integer rectification);
 }

+ 6 - 0
blade-service/blade-business/src/main/java/org/springblade/business/mapper/ArchiveFileMapper.xml

@@ -357,6 +357,7 @@
         from u_archive_file
         where node_id = #{nodeId}
           and (is_archive = 0 OR is_archive IS NULL)
+          and (is_auto_file is null or is_auto_file != 1)
           and is_deleted = 0
         order by sort
     </select>
@@ -376,4 +377,9 @@
         WHERE project_id = #{projectId}
     </select>
 
+    <update id="updateRectificationById">
+        update u_archive_file set rectification = #{rectification} where
+        id = #{id}
+    </update>
+
 </mapper>

+ 90 - 0
blade-service/blade-control/src/main/java/org/springblade/control/controller/ContractInfoController.java

@@ -0,0 +1,90 @@
+package org.springblade.control.controller;
+
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springblade.control.dto.ControlProjectInfoDTO;
+import org.springblade.control.entity.ControlContractInfo;
+import org.springblade.control.service.IContractInfoService;
+import org.springblade.control.service.IProjectInfoService;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @Param
+ * @Author wangwl
+ * @Date 2023/6/6 9:46
+ **/
+@RestController
+@AllArgsConstructor
+@RequestMapping("/contractInfo")
+@Api(value = "合同信息接口", tags = "合同信息接口")
+public class ContractInfoController {
+    private final IContractInfoService contractInfoService;
+
+    /**
+     * 新增合同
+     */
+    @PostMapping("/addContractInfo")
+    @ApiOperationSupport(order = 1)
+    @ApiOperation(value = "新增合同")
+    public R addContractInfo(@RequestBody ControlContractInfo contractInfo) {
+        contractInfoService.addContractInfo(contractInfo);
+        return R.success("新增成功");
+    }
+
+    /**
+     * 删除合同
+     */
+    @GetMapping("/deleteContractInfoById")
+    @ApiOperationSupport(order = 1)
+    @ApiOperation(value = "删除合同")
+    public R deleteContractInfoById(Long id) {
+        contractInfoService.deleteContractInfoById(id);
+        return R.success("删除成功");
+    }
+
+    /**
+     * 修改合同
+     */
+    @PostMapping("/updateContractInfo")
+    @ApiOperationSupport(order = 1)
+    @ApiOperation(value = "修改合同")
+    public R updateContractInfo(@RequestBody ControlContractInfo contractInfo) {
+        contractInfoService.updateContractInfo(contractInfo);
+        return R.success("修改成功");
+    }
+
+    /**
+     * 查询单个合同信息
+     */
+    @GetMapping("/getContractInfoById")
+    @ApiOperationSupport(order = 2)
+    @ApiOperation(value = "查询单个合同信息")
+    public R getContractInfoById(Long id) {
+        return R.data(contractInfoService.getContractInfoById(id));
+    }
+
+    /**
+     * 获取合同类型字典
+     */
+    @GetMapping("/getContractTypeDict")
+    @ApiOperationSupport(order = 2)
+    @ApiOperation(value = "获取合同类型字典")
+    public R getContractTypeDict() {
+        return R.data(contractInfoService.getContractTypeDict());
+    }
+
+    /**
+     * 获取未被关联的项目
+     */
+    @GetMapping("getNoConnectionProject")
+    @ApiOperationSupport(order = 2)
+    @ApiOperation(value = "获取未被关联的项目")
+    public R getNoConnectionProject(){
+        return R.data(contractInfoService.getNoConnectionProject());
+    }
+
+}

+ 120 - 0
blade-service/blade-control/src/main/java/org/springblade/control/controller/DictInfoController.java

@@ -0,0 +1,120 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.control.controller;
+
+import io.swagger.annotations.*;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import lombok.AllArgsConstructor;
+
+import javax.validation.Valid;
+
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.system.entity.DictBiz;
+import org.springblade.system.vo.DictBizVO;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.control.entity.DictInfo;
+import org.springblade.control.vo.DictInfoVO;
+import org.springblade.control.service.IDictInfoService;
+import org.springblade.core.boot.ctrl.BladeController;
+import springfox.documentation.annotations.ApiIgnore;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 参数信息表 控制器
+ *
+ * @author BladeX
+ * @since 2023-06-05
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/dictinfo")
+@Api(value = "参数信息表", tags = "参数信息表接口")
+public class DictInfoController extends BladeController {
+
+    private final IDictInfoService dictInfoService;
+
+    /**
+     * 新增或修改 参数信息表
+     */
+    @PostMapping("/submit")
+    @ApiOperationSupport(order = 6)
+    @ApiOperation(value = "新增或修改", notes = "传入dictInfo")
+    public R submit(@Valid @RequestBody DictInfo dictInfo) {
+        return R.status(dictInfoService.saveOrUpdate(dictInfo));
+    }
+
+
+    /**
+     * 删除 参数信息表
+     */
+    @PostMapping("/remove")
+    @ApiOperationSupport(order = 7)
+    @ApiOperation(value = "逻辑删除", notes = "传入ids")
+    public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+        return R.status(dictInfoService.deleteLogic(Func.toLongList(ids)));
+    }
+
+
+    /**
+     * 获取字典
+     */
+    @GetMapping("/dictionary")
+    @ApiOperationSupport(order = 8)
+    @ApiOperation(value = "获取字典", notes = "获取字典")
+    public R<List<DictBiz>> dictionary(String code) {
+        List<DictBiz> tree = dictInfoService.getList(code, "notRoot");
+        return R.data(tree);
+    }
+
+    /**
+     * 顶级列表
+     */
+    @GetMapping("/parent-list")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "code", value = "字典编号", paramType = "query", dataType = "string"),
+            @ApiImplicitParam(name = "dictValue", value = "字典名称", paramType = "query", dataType = "string")
+    })
+    @ApiOperationSupport(order = 3)
+    @ApiOperation(value = "列表", notes = "传入dict")
+    public R<IPage<DictInfoVO>> parentList(@ApiIgnore @RequestParam Map<String, Object> dict, Query query) {
+        return R.data(dictInfoService.parentList(dict, query));
+    }
+
+    /**
+     * 子列表
+     */
+    @GetMapping("/child-list")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "code", value = "字典编号", paramType = "query", dataType = "string"),
+            @ApiImplicitParam(name = "dictValue", value = "字典名称", paramType = "query", dataType = "string"),
+            @ApiImplicitParam(name = "parentId", value = "字典名称", paramType = "query", dataType = "string")
+    })
+    @ApiOperationSupport(order = 4)
+    @ApiOperation(value = "列表", notes = "传入dict")
+    public R<List<DictInfoVO>> childList(@ApiIgnore @RequestParam Map<String, Object> dict, @RequestParam(required = false, defaultValue = "-1") Long parentId) {
+        return R.data(dictInfoService.childList(dict, parentId));
+    }
+
+
+}

+ 61 - 0
blade-service/blade-control/src/main/java/org/springblade/control/controller/LogHistoryController.java

@@ -0,0 +1,61 @@
+package org.springblade.control.controller;
+
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springblade.control.dto.LogHistoryInfoDTO;
+import org.springblade.control.service.LogHistoryService;
+import org.springblade.control.vo.LogHistoryInfoVO;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.tool.api.R;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@AllArgsConstructor
+@RequestMapping("/log")
+@Api(value = "日志填报接口", tags = "日志填报接口")
+public class LogHistoryController extends BladeController {
+
+    private final LogHistoryService logHistoryService;
+
+    @PostMapping("/list")
+    @ApiOperationSupport(order = 1)
+    @ApiOperation(value = "日志填报列表查询", notes = "传入HistoryLogInfoDTO")
+    public R<Map<String, List<LogHistoryInfoVO>>> logList(@RequestBody LogHistoryInfoDTO dto) {
+        return R.data(logHistoryService.logList(dto));
+    }
+
+    @PostMapping("/submit")
+    @ApiOperationSupport(order = 2)
+    @ApiOperation(value = "日志填报新增或修改", notes = "传入HistoryLogInfoDTO")
+    public R<Object> logSubmit(@RequestBody LogHistoryInfoDTO dto) {
+        return R.status(logHistoryService.logSubmit(dto));
+    }
+
+    @PostMapping("/detail")
+    @ApiOperationSupport(order = 3)
+    @ApiOperation(value = "日志填报详情", notes = "传入日志id")
+    public R<LogHistoryInfoVO> logDetail(@RequestParam Long id) {
+        return R.data(logHistoryService.logDetail(id));
+    }
+
+    @PostMapping("/task/complete")
+    @ApiOperationSupport(order = 4)
+    @ApiOperation(value = "日志任务完成", notes = "传入日志logId、任务taskId")
+    public R<Object> logTaskComplete(@RequestParam Long logId, @RequestParam Long taskId) {
+        return R.status(logHistoryService.logTaskComplete(logId, taskId));
+    }
+
+    @PostMapping("/task/list")
+    @ApiOperationSupport(order = 5)
+    @ApiOperation(value = "日志任务列表", notes = "传入日志logId")
+    public R<Object> logTaskList(@RequestParam Long logId) {
+        return R.data(logHistoryService.logTaskList(logId));
+    }
+
+
+}

+ 0 - 56
blade-service/blade-control/src/main/java/org/springblade/control/controller/PlanInfoController.java

@@ -1,56 +0,0 @@
-package org.springblade.control.controller;
-
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import lombok.AllArgsConstructor;
-import org.springblade.control.dto.PlanInfoDTO;
-import org.springblade.control.entity.PlanInfo;
-import org.springblade.control.service.PlanInfoService;
-import org.springblade.control.vo.PlanInfoVO;
-import org.springblade.core.boot.ctrl.BladeController;
-import org.springblade.core.mp.support.Condition;
-import org.springblade.core.mp.support.Query;
-import org.springblade.core.tool.api.R;
-import org.springframework.web.bind.annotation.*;
-
-
-@RestController
-@AllArgsConstructor
-@RequestMapping("/plan")
-@Api(value = "计划接口", tags = "计划接口")
-public class PlanInfoController extends BladeController {
-
-    private final PlanInfoService planInfoService;
-
-    @PostMapping("/page")
-    @ApiOperationSupport(order = 1)
-    @ApiOperation(value = "计划分页查询", notes = "传入Query、PlanInfoDTO")
-    public R<IPage<PlanInfoVO>> planPage(@RequestBody Query query, @RequestBody PlanInfoDTO dto) {
-        return R.data(planInfoService.planPage(Condition.getPage(query), dto));
-    }
-
-    @PostMapping("/submit")
-    @ApiOperationSupport(order = 2)
-    @ApiOperation(value = "计划新增或编辑", notes = "传入PlanInfoDTO")
-    public R<Object> planSubmit(PlanInfoDTO dto) {
-        return R.status(planInfoService.planSubmit(dto));
-    }
-
-    @PostMapping("/remove")
-    @ApiOperationSupport(order = 3)
-    @ApiOperation(value = "计划删除", notes = "传入计划id")
-    public R<Object> planRemove(@RequestParam String id) {
-        return R.status(planInfoService.planRemove(id));
-    }
-
-    @GetMapping("/detail")
-    @ApiOperationSupport(order = 4)
-    @ApiOperation(value = "计划详情", notes = "传入计划id")
-    public R<PlanInfo> planDetail(@RequestParam String id) {
-        return R.data(planInfoService.planDetail(id));
-    }
-
-}

+ 8 - 8
blade-service/blade-control/src/main/java/org/springblade/control/controller/ProjectInfoController.java

@@ -67,13 +67,12 @@ public class ProjectInfoController {
         return R.success("删除成功");
     }
 
-
     /**
-     * 根据id获取项目和流程
+     * 编辑-根据id获取项目和流程
      */
     @GetMapping("/getProjectInfoById")
     @ApiOperationSupport(order = 2)
-    @ApiOperation(value = "根据id获取项目和流程")
+    @ApiOperation(value = "编辑-根据id获取项目和流程")
     public R getProjectInfoById(Long id) {
         return R.data(projectInfoService.getProjectInfoById(id));
     }
@@ -89,13 +88,14 @@ public class ProjectInfoController {
     }
 
     /**
-     * 获取合同类型字典
+     * 获取项目服务类型字典
      */
-    @GetMapping("/getContractTypeDict")
+    @GetMapping("/getProjectServerTypeDict")
     @ApiOperationSupport(order = 2)
-    @ApiOperation(value = "获取合同类型字典")
-    public R getContractTypeDict() {
-        return R.data(projectInfoService.getContractTypeDict());
+    @ApiOperation(value = "获取项目服务类型字典")
+    public R getProjectServerTypeDict() {
+        return R.data(projectInfoService.getProjectServerTypeDict());
     }
 
+
 }

+ 0 - 71
blade-service/blade-control/src/main/java/org/springblade/control/controller/TaskInfoController.java

@@ -1,71 +0,0 @@
-package org.springblade.control.controller;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import lombok.AllArgsConstructor;
-import org.springblade.control.dto.TaskInfoDTO;
-import org.springblade.control.entity.TaskInfo;
-import org.springblade.control.service.TaskInfoService;
-import org.springblade.control.vo.TaskPageVO;
-import org.springblade.core.boot.ctrl.BladeController;
-import org.springblade.core.mp.support.Condition;
-import org.springblade.core.mp.support.Query;
-import org.springblade.core.secure.BladeUser;
-import org.springblade.core.tool.api.R;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.List;
-
-@RestController
-@AllArgsConstructor
-@RequestMapping("/task")
-@Api(value = "计划任务接口", tags = "计划任务接口")
-public class TaskInfoController extends BladeController {
-
-    private final TaskInfoService taskInfoService;
-
-    @PostMapping("/submit")
-    @ApiOperationSupport(order = 1)
-    @ApiOperation(value = "任务新增或修改", notes = "传入TaskInfo")
-    public R<Object> taskSubmit(@RequestBody TaskInfo obj) {
-        return R.status(taskInfoService.taskSubmit(obj));
-    }
-
-    @GetMapping("/list")
-    @ApiOperationSupport(order = 2)
-    @ApiOperation(value = "任务列表", notes = "传入计划id")
-    public R<List<TaskInfo>> taskList(@RequestParam String id) {
-        return R.data(taskInfoService.taskList(id));
-    }
-
-    @PostMapping("/remove")
-    @ApiOperationSupport(order = 3)
-    @ApiOperation(value = "任务删除", notes = "传入任务id")
-    public R<Object> taskRemove(@RequestParam String id) {
-        return R.status(taskInfoService.taskRemove(id));
-    }
-
-    @PostMapping("/repeal")
-    @ApiOperationSupport(order = 4)
-    @ApiOperation(value = "任务废除", notes = "传入任务id")
-    public R<Object> taskRepeal(@RequestParam String id) {
-        return R.status(taskInfoService.taskRepeal(id));
-    }
-
-    @PostMapping("/page")
-    @ApiOperationSupport(order = 5)
-    @ApiOperation(value = "我的任务page分页", notes = "传入Query、TaskInfoDTO")
-    public R<IPage<TaskPageVO>> taskPage(@RequestBody Query query, @RequestBody TaskInfoDTO dto) {
-        return R.data(taskInfoService.taskPage(Condition.getPage(query), dto));
-    }
-
-    @PostMapping("/relation/submit")
-    @ApiOperationSupport(order = 6)
-    @ApiOperation(value = "关联任务提交", notes = "传入任务ids、当前用户信息")
-    public R<Object> taskRelationSubmit(String taskIds, BladeUser user) {
-        return R.status(taskInfoService.taskRelationSubmit(taskIds, user));
-    }
-
-}

+ 28 - 0
blade-service/blade-control/src/main/java/org/springblade/control/mapper/ContractInfoMapper.java

@@ -0,0 +1,28 @@
+package org.springblade.control.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
+import org.springblade.control.dto.ControlProjectInfoDTO;
+import org.springblade.control.entity.ControlContractInfo;
+import org.springblade.control.entity.ControlProjectInfo;
+import org.springblade.control.entity.DictInfo;
+import org.springblade.control.vo.ControlContractInfoVO;
+import org.springblade.control.vo.ControlProjectInfoVO;
+import org.springblade.system.entity.DictBiz;
+
+import java.util.List;
+
+/**
+ * @Param
+ * @Author wangwl
+ * @Date 2023/5/12 9:38
+ **/
+public interface ContractInfoMapper extends BaseMapper<ControlContractInfo> {
+
+    List<DictInfo> getContractTypeDict();
+
+    List<ControlProjectInfo> getNoConnectionProject();
+
+    ControlContractInfoVO getContractInfoById(@Param("id") Long id);
+}

+ 21 - 0
blade-service/blade-control/src/main/java/org/springblade/control/mapper/ContractInfoMapper.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="org.springblade.control.mapper.ContractInfoMapper">
+
+
+    <select id="getNoConnectionProject" resultType="org.springblade.control.entity.ControlProjectInfo">
+        select pi.id,pi.name from c_control_project_info pi left join c_control_contract_info ci on pi.id = ci.project_id WHERE ci.id is null
+    </select>
+
+    <select id="getContractTypeDict" resultType="org.springblade.control.entity.DictInfo">
+        SELECT * FROM c_dict_info WHERE CODE = 'contract_type' order by sort
+    </select>
+
+    <select id="getContractInfoById" resultType="org.springblade.control.vo.ControlContractInfoVO">
+        SELECT
+            ci.*,
+            (select dict_name  from c_dict_info WHERE code = 'contract_type' AND dict_value= ci.contract_type) as contractTypeValue,
+            (select name  from c_control_project_info WHERE id = ci.project_id) as projectName
+        FROM c_control_contract_info ci WHERE ci.id = #{id}
+    </select>
+</mapper>

+ 52 - 0
blade-service/blade-control/src/main/java/org/springblade/control/mapper/DictInfoMapper.java

@@ -0,0 +1,52 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.control.mapper;
+
+import org.apache.ibatis.annotations.Param;
+import org.springblade.control.entity.DictInfo;
+import org.springblade.control.vo.DictInfoVO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.system.entity.DictBiz;
+
+import java.util.List;
+
+/**
+ * 参数信息表 Mapper 接口
+ *
+ * @author BladeX
+ * @since 2023-06-05
+ */
+public interface DictInfoMapper extends BaseMapper<DictInfo> {
+
+    /**
+     * 自定义分页
+     *
+     * @param page
+     * @param dictInfo
+     * @return
+     */
+    List<DictInfoVO> selectDictInfoPage(IPage page, DictInfoVO dictInfo);
+
+    /**
+     * 获取字典表
+     *
+     * @param code 字典编号
+     * @return
+     */
+    List<DictBiz> getList(@Param("code") String code, @Param("notRoot") String notRoot);
+}

+ 24 - 0
blade-service/blade-control/src/main/java/org/springblade/control/mapper/DictInfoMapper.xml

@@ -0,0 +1,24 @@
+<?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="org.springblade.control.mapper.DictInfoMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="dictInfoResultMap" type="org.springblade.control.entity.DictInfo">
+        <result column="id" property="id"/>
+        <result column="is_deleted" property="isDeleted"/>
+        <result column="parent_id" property="parentId"/>
+        <result column="dict_name" property="dictName"/>
+        <result column="dict_value" property="dictValue"/>
+        <result column="sort" property="sort"/>
+        <result column="type" property="type"/>
+        <result column="code" property="code"/>
+    </resultMap>
+
+
+    <select id="selectDictInfoPage" resultMap="dictInfoResultMap">
+        select *
+        from c_dict_info
+        where is_deleted = 0
+    </select>
+
+</mapper>

+ 7 - 0
blade-service/blade-control/src/main/java/org/springblade/control/mapper/LogHistoryMapper.java

@@ -0,0 +1,7 @@
+package org.springblade.control.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springblade.control.entity.LogHistoryInfo;
+
+public interface LogHistoryMapper extends BaseMapper<LogHistoryInfo> {
+}

+ 14 - 0
blade-service/blade-control/src/main/java/org/springblade/control/mapper/LogHistoryMapper.xml

@@ -0,0 +1,14 @@
+<?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="org.springblade.control.mapper.LogHistoryMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="resultMap" type="org.springblade.control.entity.LogHistoryInfo">
+        <result column="user_id" property="userId"/>
+        <result column="risk_warning" property="riskWarning"/>
+        <result column="work_desc" property="workDesc"/>
+        <result column="expense_reimbursement_amount" property="expenseReimbursementAmount"/>
+    </resultMap>
+
+
+</mapper>

+ 0 - 7
blade-service/blade-control/src/main/java/org/springblade/control/mapper/PlanInfoMapper.java

@@ -1,7 +0,0 @@
-package org.springblade.control.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.springblade.control.entity.PlanInfo;
-
-public interface PlanInfoMapper extends BaseMapper<PlanInfo> {
-}

+ 0 - 19
blade-service/blade-control/src/main/java/org/springblade/control/mapper/PlanInfoMapper.xml

@@ -1,19 +0,0 @@
-<?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="org.springblade.control.mapper.PlanInfoMapper">
-
-    <!-- 通用查询映射结果 -->
-    <resultMap id="resultMap" type="org.springblade.control.entity.PlanInfo">
-        <result column="id" property="id"/>
-        <result column="plan_name" property="planName"/>
-        <result column="plan_number" property="planNumber"/>
-        <result column="plan_dept" property="planDept"/>
-        <result column="plan_type" property="planType"/>
-        <result column="plan_start_date" property="planStartDate"/>
-        <result column="plan_end_date" property="planEndDate"/>
-        <result column="status" property="status"/>
-        <result column="is_deleted" property="isDeleted"/>
-    </resultMap>
-
-
-</mapper>

+ 4 - 2
blade-service/blade-control/src/main/java/org/springblade/control/mapper/ProjectInfoMapper.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.apache.ibatis.annotations.Param;
 import org.springblade.control.dto.ControlProjectInfoDTO;
 import org.springblade.control.entity.ControlProjectInfo;
+import org.springblade.control.entity.DictInfo;
 import org.springblade.control.vo.ControlProjectInfoVO;
 import org.springblade.system.entity.DictBiz;
 
@@ -20,7 +21,8 @@ public interface ProjectInfoMapper extends BaseMapper<ControlProjectInfo> {
 
     ControlProjectInfoVO getProjectInfoById(@Param("id") Long id);
 
-    List<DictBiz> getProjectTypeDict();
+    List<DictInfo> getProjectTypeDict();
+
+    List<DictInfo> getProjectServerTypeDict();
 
-    List<DictBiz> getContractTypeDict();
 }

+ 30 - 14
blade-service/blade-control/src/main/java/org/springblade/control/mapper/ProjectInfoMapper.xml

@@ -4,36 +4,52 @@
 
 
     <select id="selectByPage" resultType="org.springblade.control.vo.ControlProjectInfoVO">
-        select pi.*,d1.dict_value as projectTypeValue,d2.dict_value as contractTypeValue
+        select
+        pi.*,
+        (select dict_name  from c_dict_info WHERE code = 'project_type' AND dict_value = pi.project_type) as projectTypeValue,
+        (select dict_name  from c_dict_info WHERE code = 'project_server_type' AND dict_value = pi.project_server_type) as projectServerTypeValue,
+        (select contract_money from c_control_contract_info WHERE project_id = pi.id)as contractMoney,
+        (select name from blade_user WHERE id = pi.project_principal) as projectPrincipalName,
+        (select name from blade_user WHERE id = pi.implement_principal) as implementPrincipalName
         from c_control_project_info pi
-        LEFT JOIN ( SELECT * FROM blade_dict_biz WHERE CODE = 'project_type' ) d1 ON pi.project_type = d1.dict_key
-        LEFT JOIN ( SELECT * FROM blade_dict_biz WHERE CODE = 'contract_type' ) d2 ON pi.contract_type = d2.dict_key
         where pi.is_deleted = 0
         <if test="dto.projectType != null and dto.projectType != ''">
             and pi.project_type = #{dto.projectType}
         </if>
-        <if test="dto.contractType != null and dto.contractType != ''">
-            and pi.contract_type = #{dto.contractType}
+        <if test="dto.projectServerType != null and dto.projectServerType != ''">
+            and pi.project_server_type = #{dto.projectServerType}
         </if>
-        <if test="dto.process != null and dto.process != ''">
-            and pi.process = #{dto.process}
+        <if test="dto.implementPrincipal != null and dto.implementPrincipal != ''">
+            and pi.implement_principal = #{dto.implementPrincipal}
+        </if>
+        <if test="dto.queryDate != null and dto.queryDate != ''">
+            and #{dto.queryDate} BETWEEN pi.start_time AND pi.end_time
         </if>
         <if test="dto.queryValue != null and dto.queryValue != ''">
             and pi.name like concat('%', #{dto.queryValue}, '%')
         </if>
-
-
     </select>
+
     <select id="getProjectInfoById" resultType="org.springblade.control.vo.ControlProjectInfoVO">
-        select pi.*
+        select
+            pi.*,
+            (select dict_name  from c_dict_info WHERE code = 'project_type' AND dict_value = pi.project_type) as projectTypeValue,
+            (select dict_name  from c_dict_info WHERE code = 'project_server_type' AND dict_value = pi.project_server_type) as projectServerTypeValue,
+            (select contract_money from c_control_contract_info WHERE project_id = pi.id)as contractMoney,
+            (select name from blade_user WHERE id = pi.project_principal) as projectPrincipalName,
+            (select name from blade_user WHERE id = pi.implement_principal) as implementPrincipalName,
+            (select name from blade_user WHERE id = pi.maintain_principal) as maintainPrincipalName
         from c_control_project_info pi
         where pi.is_deleted = 0 and pi.id = #{id}
     </select>
-    <select id="getProjectTypeDict" resultType="org.springblade.system.entity.DictBiz">
-        SELECT * FROM blade_dict_biz WHERE CODE = 'project_type' and parent_id > 0
+
+    <select id="getProjectTypeDict" resultType="org.springblade.control.entity.DictInfo">
+        SELECT dict_name,dict_value FROM c_dict_info WHERE CODE = 'project_type' order by sort
     </select>
-    <select id="getContractTypeDict" resultType="org.springblade.system.entity.DictBiz">
-        SELECT * FROM blade_dict_biz WHERE CODE = 'contract_type' and parent_id > 0
+
+    <select id="getProjectServerTypeDict" resultType="org.springblade.control.entity.DictInfo">
+        SELECT dict_name,dict_value FROM c_dict_info WHERE CODE = 'project_server_type' order by sort
     </select>
 
+
 </mapper>

+ 7 - 7
blade-service/blade-control/src/main/java/org/springblade/control/mapper/ProjectProcessMapper.xml

@@ -4,14 +4,14 @@
 
 
     <select id="getBaseProcess" resultType="org.springblade.control.vo.ProjectProcessVO">
-        SELECT bdb.dict_value as name, bdb.sort as sort
-        FROM blade_dict_biz bdb
-        WHERE bdb.code = 'project_process'
-          AND bdb.parent_id > 0
-        ORDER BY bdb.sort
+        SELECT dict_name as name, sort
+        FROM c_dict_info
+        WHERE code = 'project_process'
+        ORDER BY sort
     </select>
     <select id="getProjectProcess" resultType="org.springblade.control.vo.ProjectProcessVO">
-        SELECT * FROM c_control_project_process ccpp
-        WHERE ccpp.project_id = #{id}
+        SELECT * FROM c_project_process
+        WHERE project_id = #{id}
+        order by sort
     </select>
 </mapper>

+ 0 - 7
blade-service/blade-control/src/main/java/org/springblade/control/mapper/TaskInfoMapper.java

@@ -1,7 +0,0 @@
-package org.springblade.control.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.springblade.control.entity.TaskInfo;
-
-public interface TaskInfoMapper extends BaseMapper<TaskInfo> {
-}

+ 0 - 13
blade-service/blade-control/src/main/java/org/springblade/control/mapper/TaskInfoMapper.xml

@@ -1,13 +0,0 @@
-<?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="org.springblade.control.mapper.TaskInfoMapper">
-
-    <!-- 通用查询映射结果 -->
-    <resultMap id="resultMap" type="org.springblade.control.entity.TaskInfo">
-        <result column="id" property="id"/>
-        <result column="status" property="status"/>
-        <result column="is_deleted" property="isDeleted"/>
-    </resultMap>
-
-
-</mapper>

+ 35 - 0
blade-service/blade-control/src/main/java/org/springblade/control/service/IContractInfoService.java

@@ -0,0 +1,35 @@
+package org.springblade.control.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.control.dto.ControlProjectInfoDTO;
+import org.springblade.control.entity.ControlContractInfo;
+import org.springblade.control.entity.ControlProjectInfo;
+import org.springblade.control.entity.DictInfo;
+import org.springblade.control.vo.ControlContractInfoVO;
+import org.springblade.control.vo.ControlProjectInfoVO;
+import org.springblade.core.mp.base.BaseService;
+import org.springblade.core.mp.support.Query;
+import org.springblade.system.entity.DictBiz;
+
+import java.util.List;
+
+/**
+ * @Param
+ * @Author wangwl
+ * @Date 2023/5/12 9:41
+ **/
+public interface IContractInfoService extends BaseService<ControlContractInfo> {
+
+
+    void addContractInfo(ControlContractInfo contractInfo);
+
+    List<DictInfo> getContractTypeDict();
+
+    List<ControlProjectInfo> getNoConnectionProject();
+
+    void deleteContractInfoById(Long id);
+
+    void updateContractInfo(ControlContractInfo contractInfo);
+
+    ControlContractInfoVO getContractInfoById(Long id);
+}

+ 74 - 0
blade-service/blade-control/src/main/java/org/springblade/control/service/IDictInfoService.java

@@ -0,0 +1,74 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.control.service;
+
+import org.springblade.control.entity.DictInfo;
+import org.springblade.control.vo.DictInfoVO;
+import org.springblade.core.mp.base.BaseService;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.core.mp.support.Query;
+import org.springblade.system.entity.DictBiz;
+import org.springblade.system.vo.DictBizVO;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 参数信息表 服务类
+ *
+ * @author BladeX
+ * @since 2023-06-05
+ */
+public interface IDictInfoService extends BaseService<DictInfo> {
+
+    /**
+     * 自定义分页
+     *
+     * @param page
+     * @param dictInfo
+     * @return
+     */
+    IPage<DictInfoVO> selectDictInfoPage(IPage<DictInfoVO> page, DictInfoVO dictInfo);
+
+
+    /**
+     * 获取字典表
+     *
+     * @param code 字典编号
+     * @return
+     */
+    List<DictBiz> getList(String code, String notRoot);
+
+
+    /**
+     * 顶级列表
+     *
+     * @param dict
+     * @param query
+     * @return
+     */
+    IPage<DictInfoVO> parentList(Map<String, Object> dict, Query query);
+
+    /**
+     * 子列表
+     *
+     * @param dict
+     * @param parentId
+     * @return
+     */
+    List<DictInfoVO> childList(Map<String, Object> dict, Long parentId);
+}

+ 4 - 2
blade-service/blade-control/src/main/java/org/springblade/control/service/IProjectInfoService.java

@@ -3,6 +3,7 @@ package org.springblade.control.service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springblade.control.dto.ControlProjectInfoDTO;
 import org.springblade.control.entity.ControlProjectInfo;
+import org.springblade.control.entity.DictInfo;
 import org.springblade.control.vo.ControlProjectInfoVO;
 import org.springblade.core.mp.base.BaseService;
 import org.springblade.core.mp.support.Query;
@@ -26,7 +27,8 @@ public interface IProjectInfoService extends BaseService<ControlProjectInfo> {
 
     ControlProjectInfoVO getProjectInfoById(Long id);
 
-    List<DictBiz> getProjectTypeDict();
+    List<DictInfo> getProjectTypeDict();
+
+    List<DictInfo> getProjectServerTypeDict();
 
-    List<DictBiz> getContractTypeDict();
 }

+ 23 - 0
blade-service/blade-control/src/main/java/org/springblade/control/service/LogHistoryService.java

@@ -0,0 +1,23 @@
+package org.springblade.control.service;
+
+import org.springblade.control.dto.LogHistoryInfoDTO;
+import org.springblade.control.entity.LogHistoryInfo;
+import org.springblade.control.vo.LogHistoryInfoVO;
+import org.springblade.core.mp.base.BaseService;
+
+import java.util.List;
+import java.util.Map;
+
+public interface LogHistoryService extends BaseService<LogHistoryInfo> {
+
+    Map<String, List<LogHistoryInfoVO>> logList(LogHistoryInfoDTO dto);
+
+    boolean logSubmit(LogHistoryInfoDTO dto);
+
+    LogHistoryInfoVO logDetail(Long id);
+
+    boolean logTaskComplete(Long logId, Long taskId);
+
+    Object logTaskList(Long logId);
+
+}

+ 0 - 19
blade-service/blade-control/src/main/java/org/springblade/control/service/PlanInfoService.java

@@ -1,19 +0,0 @@
-package org.springblade.control.service;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import org.springblade.control.dto.PlanInfoDTO;
-import org.springblade.control.entity.PlanInfo;
-import org.springblade.control.vo.PlanInfoVO;
-import org.springblade.core.mp.base.BaseService;
-
-public interface PlanInfoService extends BaseService<PlanInfo> {
-
-    IPage<PlanInfoVO> planPage(IPage<PlanInfo> page, PlanInfoDTO dto);
-
-    boolean planSubmit(PlanInfoDTO dto);
-
-    boolean planRemove(String id);
-
-    PlanInfo planDetail(String id);
-
-}

+ 0 - 26
blade-service/blade-control/src/main/java/org/springblade/control/service/TaskInfoService.java

@@ -1,26 +0,0 @@
-package org.springblade.control.service;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import org.springblade.control.dto.TaskInfoDTO;
-import org.springblade.control.entity.TaskInfo;
-import org.springblade.control.vo.TaskPageVO;
-import org.springblade.core.mp.base.BaseService;
-import org.springblade.core.secure.BladeUser;
-
-import java.util.List;
-
-public interface TaskInfoService extends BaseService<TaskInfo> {
-
-    boolean taskSubmit(TaskInfo obj);
-
-    List<TaskInfo> taskList(String id);
-
-    boolean taskRemove(String id);
-
-    boolean taskRepeal(String id);
-
-    IPage<TaskPageVO> taskPage(IPage<TaskInfo> page, TaskInfoDTO dto);
-
-    boolean taskRelationSubmit(String taskIds, BladeUser user);
-
-}

+ 93 - 0
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/ContractInfoServiceImpl.java

@@ -0,0 +1,93 @@
+package org.springblade.control.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.AllArgsConstructor;
+import org.springblade.common.utils.SnowFlakeUtil;
+import org.springblade.control.dto.ControlProjectInfoDTO;
+import org.springblade.control.entity.ControlContractInfo;
+import org.springblade.control.entity.ControlProjectInfo;
+import org.springblade.control.entity.DictInfo;
+import org.springblade.control.mapper.ContractInfoMapper;
+import org.springblade.control.mapper.ProjectInfoMapper;
+import org.springblade.control.service.IContractInfoService;
+import org.springblade.control.service.IProjectInfoService;
+import org.springblade.control.service.IProjectProcessService;
+import org.springblade.control.vo.ControlContractInfoVO;
+import org.springblade.control.vo.ControlProjectInfoVO;
+import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.core.mp.support.Query;
+import org.springblade.system.entity.DictBiz;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * @Param
+ * @Author wangwl
+ * @Date 2023/5/12 9:43
+ **/
+@Service
+@AllArgsConstructor
+public class ContractInfoServiceImpl extends BaseServiceImpl<ContractInfoMapper, ControlContractInfo> implements IContractInfoService {
+
+    /**
+     * 添加合同信息
+     * @param contractInfo
+     */
+    @Override
+    public void addContractInfo(ControlContractInfo contractInfo) {
+        baseMapper.insert(contractInfo);
+    }
+
+    /**
+     * 获取合同类型字典
+     * @return
+     */
+    @Override
+    public List<DictInfo> getContractTypeDict() {
+        return baseMapper.getContractTypeDict();
+    }
+
+    /**
+     * 获取没有被关联的项目
+     * @return
+     */
+    @Override
+    public List<ControlProjectInfo> getNoConnectionProject() {
+        return baseMapper.getNoConnectionProject();
+    }
+
+    /**
+     * 删除合同
+     * @param id
+     */
+    @Override
+    @Transactional
+    public void deleteContractInfoById(Long id) {
+        //合同回款记录和合同开票记录一起删除
+        baseMapper.deleteById(id);
+    }
+
+    /**
+     * 修改合同
+     * @param contractInfo
+     */
+    @Override
+    public void updateContractInfo(ControlContractInfo contractInfo) {
+        baseMapper.updateById(contractInfo);
+    }
+
+    /**
+     * 根据id查询合同
+     * @param id
+     * @return
+     */
+    @Override
+    public ControlContractInfoVO getContractInfoById(Long id) {
+        return baseMapper.getContractInfoById(id);
+    }
+}

+ 73 - 0
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/DictInfoServiceImpl.java

@@ -0,0 +1,73 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.control.service.impl;
+
+import org.springblade.common.constant.CommonConstant;
+import org.springblade.control.entity.DictInfo;
+import org.springblade.control.vo.DictInfoVO;
+import org.springblade.control.mapper.DictInfoMapper;
+import org.springblade.control.service.IDictInfoService;
+import org.springblade.control.wrapper.DictInfoWrapper;
+import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.system.cache.DictBizCache;
+import org.springblade.system.entity.DictBiz;
+import org.springblade.system.vo.DictBizVO;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 参数信息表 服务实现类
+ *
+ * @author BladeX
+ * @since 2023-06-05
+ */
+@Service
+public class DictInfoServiceImpl extends BaseServiceImpl<DictInfoMapper, DictInfo> implements IDictInfoService {
+
+    @Override
+    public IPage<DictInfoVO> selectDictInfoPage(IPage<DictInfoVO> page, DictInfoVO dictInfo) {
+        return page.setRecords(baseMapper.selectDictInfoPage(page, dictInfo));
+    }
+
+    @Override
+    public List<DictBiz> getList(String code, String notRoot) {
+        return baseMapper.getList(code, notRoot);
+    }
+
+    @Override
+    public IPage<DictInfoVO> parentList(Map<String, Object> dict, Query query) {
+        IPage<DictInfo> page = this.page(Condition.getPage(query), Condition.getQueryWrapper(dict, DictInfo.class).lambda().eq(DictInfo::getParentId, CommonConstant.TOP_PARENT_ID).orderByAsc(DictInfo::getSort));
+        return DictInfoWrapper.build().pageVO(page);
+    }
+
+    @Override
+    public List<DictInfoVO> childList(Map<String, Object> dict, Long parentId) {
+        if (parentId < 0) {
+            return new ArrayList<>();
+        }
+        dict.remove("parentId");
+        DictBiz parentDict = DictBizCache.getById(parentId);
+        List<DictInfo> list = this.list(Condition.getQueryWrapper(dict, DictInfo.class).lambda().ne(DictInfo::getId, parentId).eq(DictInfo::getCode, parentDict.getCode()).orderByAsc(DictInfo::getSort));
+        return DictInfoWrapper.build().listNodeVO(list);
+    }
+}

+ 183 - 0
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/LogHistoryServiceImpl.java

@@ -0,0 +1,183 @@
+package org.springblade.control.service.impl;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import lombok.AllArgsConstructor;
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang.time.DateUtils;
+import org.springblade.common.utils.SnowFlakeUtil;
+import org.springblade.control.dto.LogHistoryInfoDTO;
+import org.springblade.control.entity.LogHistoryInfo;
+import org.springblade.control.mapper.LogHistoryMapper;
+import org.springblade.control.service.LogHistoryService;
+import org.springblade.control.vo.LogHistoryInfoReadVO;
+import org.springblade.control.vo.LogHistoryInfoVO;
+import org.springblade.core.log.exception.ServiceException;
+import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.core.secure.utils.SecureUtil;
+import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.core.tool.utils.DateUtil;
+import org.springblade.system.user.entity.User;
+import org.springblade.system.user.feign.IUserClient;
+import org.springframework.jdbc.core.BeanPropertyRowMapper;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
+import java.util.stream.Collectors;
+
+@Service
+@AllArgsConstructor
+public class LogHistoryServiceImpl extends BaseServiceImpl<LogHistoryMapper, LogHistoryInfo> implements LogHistoryService {
+
+    private final IUserClient iUserClient;
+    private final JdbcTemplate jdbcTemplate;
+
+    @Override
+    public Map<String, List<LogHistoryInfoVO>> logList(LogHistoryInfoDTO dto) {
+        LambdaQueryWrapper<LogHistoryInfo> queryWrapper = new LambdaQueryWrapper<>();
+        if (ObjectUtil.isNotEmpty(dto.getOrgDept())) {
+            queryWrapper.eq(LogHistoryInfo::getOrgDept, dto.getOrgDept());
+        }
+        if (ObjectUtil.isNotEmpty(dto.getUserId())) {
+            queryWrapper.eq(LogHistoryInfo::getUserId, dto.getUserId());
+        }
+        if (StringUtils.isNotEmpty(dto.getStartTime()) && StringUtils.isNotEmpty(dto.getEndTime())) {
+            String endTime = dto.getEndTime();
+            endTime = DateUtil.format(DateUtils.addDays(DateUtil.parse(endTime, "yyyy-MM-dd"), 1), "yyyy-MM-dd");
+            queryWrapper.between(LogHistoryInfo::getCreateTime, dto.getStartTime(), endTime);
+        } else {
+            //默认查询7天内日志
+            LocalDate today = LocalDate.now();
+            LocalDate tomorrow = today.plusDays(1);
+            LocalDate sevenDaysAgo = today.minusDays(6);
+            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+            String todayStr = tomorrow.format(formatter);
+            String sevenDaysAgoStr = sevenDaysAgo.format(formatter);
+            queryWrapper.between(LogHistoryInfo::getCreateTime, sevenDaysAgoStr, todayStr);
+        }
+        queryWrapper.orderByDesc(true, LogHistoryInfo::getCreateTime);
+        List<LogHistoryInfo> logHistoryInfos = baseMapper.selectList(queryWrapper);
+        List<LogHistoryInfoVO> voList = BeanUtil.copyProperties(logHistoryInfos, LogHistoryInfoVO.class);
+        List<Long> logIds = voList.stream().map(LogHistoryInfo::getId).collect(Collectors.toList());
+        if (logIds.size() > 0) {
+            //用户信息
+            List<User> userList = iUserClient.selectUserAll();
+            Map<Long, User> userMap = new HashMap<>();
+            for (User user : userList) {
+                userMap.put(user.getId(), user);
+            }
+            //7天内已读日志记录信息
+            List<LogHistoryInfoReadVO> infoReadVOS = jdbcTemplate.query("select * from c_log_history_read_record where log_id in(" + StringUtils.join(logIds, ",") + ")", new BeanPropertyRowMapper<>(LogHistoryInfoReadVO.class));
+            Map<String, LogHistoryInfoReadVO> readMap = new HashMap<>();
+            for (LogHistoryInfoReadVO readVO : infoReadVOS) {
+                readMap.put(readVO.getUserId() + readVO.getLogId() + "", readVO);
+            }
+
+            for (LogHistoryInfoVO vo : voList) {
+                User user = userMap.get(vo.getUserId());
+                if (user != null) {
+                    vo.setLogTitle(user.getRealName() + "的日志");
+                    vo.setHeadPicture(StringUtils.isNotEmpty(user.getAvatar()) ? user.getAvatar() : "");
+                }
+                String readIndex = SecureUtil.getUserId() + vo.getId() + "";
+                LogHistoryInfoReadVO readVO = readMap.get(readIndex);
+                if (readVO != null) {
+                    vo.setIsRead(1);
+                } else {
+                    vo.setIsRead(0);
+                }
+            }
+        }
+        return voList.stream()
+                .collect(Collectors.groupingBy(vo -> {
+                    LocalDateTime localDateTime = LocalDateTime.ofInstant(vo.getCreateTime().toInstant(), ZoneId.systemDefault());
+                    return localDateTime.toLocalDate().toString();
+                }, LinkedHashMap::new, Collectors.toList()));
+    }
+
+    @Override
+    public boolean logSubmit(LogHistoryInfoDTO dto) {
+        if (ObjectUtil.isEmpty(SecureUtil.getUserId())) {
+            throw new ServiceException("获取当前用户信息失败,请联系管理员");
+        }
+        dto.setUserId(SecureUtil.getUserId());
+        this.saveOrUpdate(dto);
+
+        if (ObjectUtil.isNotEmpty(dto.getTaskIds())){
+            //新增日志与任务关系信息 TODO
+        }
+
+        if (ObjectUtil.isNotEmpty(dto.getExpenseReimbursementAmount())) {
+            //报销金额不为空,在财务报销里面新增一条草稿箱内容 TODO
+        }
+
+        return true;
+    }
+
+    @Override
+    public LogHistoryInfoVO logDetail(Long id) {
+        if (ObjectUtil.isEmpty(SecureUtil.getUserId())) {
+            throw new ServiceException("获取当前用户信息失败,请联系管理员");
+        }
+        LogHistoryInfo obj = baseMapper.selectById(id);
+        if (obj != null) {
+            LogHistoryInfoVO vo = BeanUtil.copyProperties(obj, LogHistoryInfoVO.class);
+            if (vo != null) {
+                User user = iUserClient.userInfoById(vo.getUserId()).getData();
+                if (user != null) {
+                    vo.setLogTitle(user.getRealName() + "的日志");
+                    vo.setHeadPicture(StringUtils.isNotEmpty(user.getAvatar()) ? user.getAvatar() : "");
+                }
+
+                //处理当前用户查看当前日志信息为已读状态
+                Long row = jdbcTemplate.queryForObject("select count(1) from c_log_history_read_record where log_id = " + vo.getId() + " and user_id = " + SecureUtil.getUserId(), Long.class);
+                if (row == null || row == 0L) {
+                    jdbcTemplate.execute("insert into c_log_history_read_record(id,log_id,user_id) values (" + SnowFlakeUtil.getId() + "," + vo.getId() + "," + SecureUtil.getUserId() + ")");
+                    vo.setIsRead(1);
+                }
+
+                //处理当前日志taskList任务列表 TODO
+
+                //处理所有已读人信息
+                List<LogHistoryInfoReadVO> readUsersInfo = jdbcTemplate.query("select * from c_log_history_read_record where log_id = " + vo.getId(), new BeanPropertyRowMapper<>(LogHistoryInfoReadVO.class));
+                List<Long> userIds = readUsersInfo.stream().map(LogHistoryInfoReadVO::getUserId).distinct().collect(Collectors.toList());
+                if (userIds.size() > 0) {
+                    List<User> readUserInfoList = iUserClient.userInfoByIds(userIds);
+                    List<LogHistoryInfoVO.ReadUser> readUsers = new ArrayList<>();
+                    for (User userRead : readUserInfoList) {
+                        readUsers.add(new LogHistoryInfoVO.ReadUser(userRead.getAvatar(), userRead.getRealName()));
+                    }
+                    vo.setReadUsers(readUsers);
+                }
+
+                return vo;
+            }
+        }
+        return null;
+    }
+
+    @Override
+    public boolean logTaskComplete(Long logId, Long taskId) {
+        if (ObjectUtil.isEmpty(logId)) {
+            throw new ServiceException("请先提交日志后,再变更任务");
+        }
+        //修改计划任务的状态为已完成,推送到对应的当前部门负责人审批(此处修改的任务状态为计划任务,新增推送的任务为审批任务) TODO
+
+        return true;
+    }
+
+    @Override
+    public Object logTaskList(Long logId) {
+        if (ObjectUtil.isEmpty(SecureUtil.getUserId())) {
+            throw new ServiceException("获取当前用户信息失败,请联系管理员");
+        }
+        //获取当前用户当天的所有任务信息 TODO
+
+        return null;
+    }
+}

+ 0 - 131
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/PlanInfoServiceImpl.java

@@ -1,131 +0,0 @@
-package org.springblade.control.service.impl;
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import lombok.AllArgsConstructor;
-import org.apache.commons.lang.StringUtils;
-import org.springblade.common.utils.SnowFlakeUtil;
-import org.springblade.control.dto.PlanInfoDTO;
-import org.springblade.control.entity.PlanInfo;
-import org.springblade.control.entity.TaskInfo;
-import org.springblade.control.mapper.PlanInfoMapper;
-import org.springblade.control.service.PlanInfoService;
-import org.springblade.control.vo.PlanInfoVO;
-import org.springblade.control.vo.PlanTaskRecordVO;
-import org.springblade.core.mp.base.BaseServiceImpl;
-import org.springblade.core.mp.support.Condition;
-import org.springblade.core.secure.BladeUser;
-import org.springblade.core.secure.utils.SecureUtil;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.core.tool.utils.ObjectUtil;
-import org.springblade.system.entity.DictBiz;
-import org.springframework.beans.BeanUtils;
-import org.springframework.jdbc.core.BeanPropertyRowMapper;
-import org.springframework.jdbc.core.JdbcTemplate;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-
-@AllArgsConstructor
-@Service
-public class PlanInfoServiceImpl extends BaseServiceImpl<PlanInfoMapper, PlanInfo> implements PlanInfoService {
-
-    private final JdbcTemplate jdbcTemplate;
-
-    @Override
-    public IPage<PlanInfoVO> planPage(IPage<PlanInfo> page, PlanInfoDTO dto) {
-        QueryWrapper<PlanInfo> queryWrapper = Condition.getQueryWrapper(dto);
-        if (ObjectUtil.isNotEmpty(dto.getPlanType())) {
-            queryWrapper.lambda().eq(PlanInfo::getPlanType, dto.getPlanType());
-        }
-        if (ObjectUtil.isNotEmpty(dto.getPlanDept())) {
-            queryWrapper.lambda().eq(PlanInfo::getPlanDept, dto.getPlanDept());
-        }
-        if (ObjectUtil.isNotEmpty(dto.getPlanName())) {
-            queryWrapper.lambda().eq(PlanInfo::getPlanName, dto.getPlanName());
-        }
-        if (ObjectUtil.isNotEmpty(dto.getPlanStartDate()) && ObjectUtil.isNotEmpty(dto.getPlanEndDate())) {
-            queryWrapper.lambda().ge(PlanInfo::getPlanStartDate, dto.getPlanStartDate()).le(PlanInfo::getPlanEndDate, dto.getPlanEndDate());
-        }
-        IPage<PlanInfo> pages = this.page(page, queryWrapper.lambda().orderBy(true, true, PlanInfo::getCreateTime));
-        List<DictBiz> query = jdbcTemplate.query("select dict_key,dict_value from blade_dict_biz where code= 'plan_type' and parent_id != 0", new BeanPropertyRowMapper<>(DictBiz.class));
-        List<PlanInfo> records = pages.getRecords();
-
-        List<Long> planIds = records.stream().map(PlanInfo::getId).collect(Collectors.toList());
-        Map<Long, List<PlanTaskRecordVO>> mapsRecord = jdbcTemplate.queryForList("select plan_id,task_id from c_control_plan_task_record where plan_id in(" + StringUtils.join(planIds, ",") + ")", PlanTaskRecordVO.class).stream().collect(Collectors.groupingBy(PlanTaskRecordVO::getPlanId));
-
-        return pages.convert(planInfo -> {
-            PlanInfoVO vo = new PlanInfoVO();
-            BeanUtils.copyProperties(planInfo, vo);
-
-            vo.setId(planInfo.getId() + "");
-            vo.setPlanName(StringUtils.isNotEmpty(planInfo.getPlanName()) ? planInfo.getPlanName() : "");
-            vo.setPlanNumber(StringUtils.isNotEmpty(planInfo.getPlanNumber()) ? planInfo.getPlanNumber() : "");
-
-            for (DictBiz dictBiz : query) {
-                if (dictBiz.getDictKey().equals(planInfo.getPlanType() + "")) {
-                    vo.setPlanTypeName(dictBiz.getDictValue());
-                    break;
-                }
-            }
-
-            vo.setPlanStartAndEndDate(planInfo.getPlanStartDate() + "~" + planInfo.getPlanEndDate());
-
-            List<PlanTaskRecordVO> planTaskRecordVOS = mapsRecord.get(planInfo.getId());
-            if (planTaskRecordVOS != null && planTaskRecordVOS.size() > 0) {
-                //任务总数
-                vo.setTaskCount(planTaskRecordVOS.size() + "");
-                List<Long> taskIds = planTaskRecordVOS.stream().map(PlanTaskRecordVO::getTaskId).collect(Collectors.toList());
-                //已完成任务数
-                Long taskCompletedCount = jdbcTemplate.queryForObject("select count(1) from c_control_task_info where status = 2 and id in(" + StringUtils.join(taskIds, ",") + ")", Long.class);
-                vo.setTaskComplete(taskCompletedCount + "");
-                //未完成任务数
-                Long taskIncompleteCount = jdbcTemplate.queryForObject("select count(1) from c_control_task_info where status != 2 and id in(" + StringUtils.join(taskIds, ",") + ")", Long.class);
-                vo.setTaskIncomplete(taskIncompleteCount + "");
-            }
-            vo.setPlanFormulateUserName(StringUtils.isNotEmpty(SecureUtil.getUserName()) ? SecureUtil.getUserName() : "");
-            return vo;
-        });
-    }
-
-    @Override
-    public boolean planSubmit(PlanInfoDTO dto) {
-        this.saveOrUpdate(dto);
-        if (ObjectUtil.isNotEmpty(dto.getId()) && StringUtils.isNotEmpty(dto.getTaskIds()) && StringUtils.isNotEmpty(dto.getTaskDataStatus())) {
-            //绑定计划与任务关系
-            List<String> taskIds = Func.toStrList(dto.getTaskIds());
-            for (String taskId : taskIds) {
-                jdbcTemplate.execute("insert into c_control_plan_task_record(id,plan_id,task_id) values(" + SnowFlakeUtil.getId() + "," + dto.getId() + "," + taskId + ")");
-            }
-            //修改任务数据状态为提交或暂存(任务数据状态 1=提交数据 2=暂存数据)
-            jdbcTemplate.execute("update from c_control_task_info set is_submit_or_suspend = " + dto.getTaskDataStatus() + " where id in(" + StringUtils.join(taskIds, ",") + ")");
-            return true;
-        }
-        return false;
-    }
-
-    @Override
-    public boolean planRemove(String id) {
-        //删除计划
-        jdbcTemplate.execute("delete from c_control_plan_info where id = " + id);
-
-        //删除计划内任务
-        List<PlanTaskRecordVO> planTaskRecordVOS = jdbcTemplate.queryForList("select task_id from c_control_plan_task_record where plan_id = " + id, PlanTaskRecordVO.class);
-        List<Long> taskIds = planTaskRecordVOS.stream().map(PlanTaskRecordVO::getTaskId).collect(Collectors.toList());
-        jdbcTemplate.execute("delete from c_control_task_info where id in(" + StringUtils.join(taskIds, ",") + ")");
-
-        //删除关联关系
-        jdbcTemplate.execute("delete from c_control_plan_task_record where plan_id = " + id);
-        return true;
-    }
-
-    @Override
-    public PlanInfo planDetail(String id) {
-        return baseMapper.selectById(id);
-    }
-
-
-}

+ 25 - 6
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/ProjectInfoServiceImpl.java

@@ -1,11 +1,13 @@
 package org.springblade.control.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.AllArgsConstructor;
 import org.springblade.common.utils.SnowFlakeUtil;
 import org.springblade.control.dto.ControlProjectInfoDTO;
 import org.springblade.control.entity.ControlProjectInfo;
+import org.springblade.control.entity.DictInfo;
 import org.springblade.control.mapper.ProjectInfoMapper;
 import org.springblade.control.service.IProjectInfoService;
 import org.springblade.control.service.IProjectProcessService;
@@ -54,9 +56,15 @@ public class ProjectInfoServiceImpl extends BaseServiceImpl<ProjectInfoMapper, C
     public void addProjectInfo(ControlProjectInfoDTO dto) {
         Long id = SnowFlakeUtil.getId();
         dto.setId(id);
-        ControlProjectInfo info = new ControlProjectInfo();
-        BeanUtils.copyProperties(dto, info);
-        infoMapper.insert(info);
+        Long count = infoMapper.selectCount(new LambdaQueryWrapper<>());
+        if (count == 0){
+            dto.setNumber("GS-01");
+        }else if (count < 9){
+            dto.setNumber("GS-0"+(count+1));
+        }else {
+            dto.setNumber("GS-"+(count+1));
+        }
+        infoMapper.insert(dto);
         processService.addProjectProcess(dto);
     }
 
@@ -100,13 +108,24 @@ public class ProjectInfoServiceImpl extends BaseServiceImpl<ProjectInfoMapper, C
         return vo;
     }
 
+    /**
+     * 获取项目类型字典
+     * @return
+     */
     @Override
-    public List<DictBiz> getProjectTypeDict() {
+    public List<DictInfo> getProjectTypeDict() {
         return infoMapper.getProjectTypeDict();
     }
 
+    /**
+     * 获取项目服务类型字典
+     * @return
+     */
     @Override
-    public List<DictBiz> getContractTypeDict() {
-        return infoMapper.getContractTypeDict();
+    public List<DictInfo> getProjectServerTypeDict() {
+        return infoMapper.getProjectServerTypeDict();
     }
+
+
+
 }

+ 16 - 12
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/ProjectProcessServiceImpl.java

@@ -33,11 +33,13 @@ public class ProjectProcessServiceImpl extends BaseServiceImpl<ProjectProcessMap
     @Override
     public void addProjectProcess(ControlProjectInfoDTO dto) {
         List<ProjectProcess> list = dto.getProjectProcessList();
-        for (ProjectProcess process : list) {
-            process.setProjectId(dto.getId());
-            process.setId(SnowFlakeUtil.getId());
+        if (list != null && list.size() > 0) {
+            for (ProjectProcess process : list) {
+                process.setProjectId(dto.getId());
+                process.setId(SnowFlakeUtil.getId());
+            }
+            this.saveBatch(list);
         }
-        this.saveBatch(list);
     }
 
     /**
@@ -70,7 +72,7 @@ public class ProjectProcessServiceImpl extends BaseServiceImpl<ProjectProcessMap
     @Override
     public List<ProjectProcessVO> getBaseProcess() {
         List<ProjectProcessVO> list = processMapper.getBaseProcess();
-        list.stream().forEach(l -> l.setStatusValue("未开始"));
+//        list.stream().forEach(l -> l.setStatusValue("未开始"));
         return list;
     }
 
@@ -83,15 +85,17 @@ public class ProjectProcessServiceImpl extends BaseServiceImpl<ProjectProcessMap
     public List<ProjectProcessVO> getProjectProcess(Long id) {
         List<ProjectProcessVO> list = processMapper.getProjectProcess(id);
         list.stream().forEach(l -> {
-            //是否开始时间,在当前时间之前
-            if (l.getProcessStartTime().isBefore(LocalDate.now())) {
-                if (l.getProcessEndTime().isBefore(LocalDate.now())) {
-                    l.setStatusValue("已闭环");
+            if (l.getProcessStartTime() != null && l.getProcessEndTime() != null) {
+                //是否开始时间,在当前时间之前
+                if (l.getProcessStartTime().isBefore(LocalDate.now())) {
+                    if (l.getProcessEndTime().isBefore(LocalDate.now())) {
+                        l.setStatusValue("已闭环");
+                    } else {
+                        l.setStatusValue("进行中");
+                    }
                 } else {
-                    l.setStatusValue("进行中");
+                    l.setStatusValue("未开始");
                 }
-            } else {
-                l.setStatusValue("未开始");
             }
         });
         return list;

+ 0 - 161
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/TaskInfoServiceImpl.java

@@ -1,161 +0,0 @@
-package org.springblade.control.service.impl;
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import lombok.AllArgsConstructor;
-import org.apache.commons.lang.StringUtils;
-import org.springblade.control.dto.TaskInfoDTO;
-import org.springblade.control.entity.PlanInfo;
-import org.springblade.control.entity.TaskInfo;
-import org.springblade.control.mapper.TaskInfoMapper;
-import org.springblade.control.service.TaskInfoService;
-import org.springblade.control.vo.TaskPageVO;
-import org.springblade.core.log.exception.ServiceException;
-import org.springblade.core.mp.base.BaseServiceImpl;
-import org.springblade.core.mp.support.Condition;
-import org.springblade.core.secure.BladeUser;
-import org.springblade.core.secure.utils.SecureUtil;
-import org.springblade.core.tool.utils.ObjectUtil;
-import org.springblade.system.user.entity.User;
-import org.springframework.beans.BeanUtils;
-import org.springframework.jdbc.core.BeanPropertyRowMapper;
-import org.springframework.jdbc.core.JdbcTemplate;
-import org.springframework.stereotype.Service;
-
-import java.util.*;
-import java.util.stream.Collectors;
-
-@AllArgsConstructor
-@Service
-public class TaskInfoServiceImpl extends BaseServiceImpl<TaskInfoMapper, TaskInfo> implements TaskInfoService {
-
-    private final JdbcTemplate jdbcTemplate;
-    private final PlanInfoServiceImpl planInfoServiceImpl;
-
-    @Override
-    public boolean taskSubmit(TaskInfo obj) {
-        obj.setStatus(0); //默认未完成
-        return this.saveOrUpdate(obj);
-    }
-
-    @Override
-    public List<TaskInfo> taskList(String id) {
-        if (StringUtils.isNotEmpty(id)) {
-            List<Long> taskIds = jdbcTemplate.queryForList("select task_id from c_control_plan_task_record where plan_id = " + id, Long.class);
-            //List<TaskInfo> taskInfos = baseMapper.selectBatchIds(taskIds);
-
-            //TODO 项目名称、进度等,返回VO
-//            for (TaskInfo taskInfo : taskInfos) {
-//
-//            }
-            return null;
-        }
-        return null;
-    }
-
-    @Override
-    public boolean taskRemove(String id) {
-        if (StringUtils.isNotEmpty(id)) {
-            //物理删除
-            jdbcTemplate.execute("delete from c_control_task_info where id = " + id);
-            return true;
-        }
-        return false;
-    }
-
-    @Override
-    public boolean taskRepeal(String id) {
-        return this.update(Wrappers.<TaskInfo>lambdaUpdate().set(TaskInfo::getStatus, 3).eq(TaskInfo::getId, id));
-    }
-
-    @Override
-    public IPage<TaskPageVO> taskPage(IPage<TaskInfo> page, TaskInfoDTO dto) {
-        if (("1").equals(dto.getType()) || ("3").equals(dto.getType())) {
-            //我的任务、全部任务
-            List<Long> taskIds = null;
-            if (ObjectUtil.isNotEmpty(dto.getPlanDept())) {
-                //获取对应部门计划任务信息
-                List<PlanInfo> planInfos = planInfoServiceImpl.getBaseMapper().selectList(Wrappers.<PlanInfo>lambdaQuery().eq(PlanInfo::getPlanDept, dto.getPlanDept()));
-                List<Long> planIds = planInfos.stream().map(PlanInfo::getId).collect(Collectors.toList());
-                taskIds = jdbcTemplate.queryForList("select task_id from c_control_plan_task_record where plan_id in(" + StringUtils.join(planIds, ",") + ")", Long.class);
-            }
-            QueryWrapper<TaskInfo> queryWrapper = Condition.getQueryWrapper(dto);
-            if (("1").equals(dto.getType())) {
-                if (ObjectUtil.isEmpty(SecureUtil.getUserId())) {
-                    throw new ServiceException("未获取到当前用户信息,原因:userId is null");
-                }
-                //查询当前用户的任务,我的任务,否则查询全部任务
-                queryWrapper.lambda().eq(TaskInfo::getTaskUserId, SecureUtil.getUserId());
-            }
-            if (ObjectUtil.isNotEmpty(dto.getStatus())) {
-                //任务状态
-                queryWrapper.lambda().eq(TaskInfo::getStatus, dto.getStatus());
-            }
-            if (ObjectUtil.isNotEmpty(dto.getTaskStartDate()) && ObjectUtil.isNotEmpty(dto.getTaskEndDate())) {
-                //开始时间、结束时间
-                queryWrapper.lambda().ge(TaskInfo::getTaskStartDate, dto.getTaskStartDate()).le(TaskInfo::getTaskEndDate, dto.getTaskEndDate());
-            }
-            if (ObjectUtil.isNotEmpty(taskIds)) {
-                //部门对应的计划中的任务
-                queryWrapper.lambda().in(TaskInfo::getId, taskIds);
-            }
-            IPage<TaskInfo> taskInfoPage = this.page(page, queryWrapper.lambda().orderBy(true, true, TaskInfo::getCreateTime));
-
-            List<Long> taskIdsResult = taskInfoPage.getRecords().stream().map(TaskInfo::getId).collect(Collectors.toList());
-            String sql = "SELECT cctr.task_id, pi.plan_name FROM c_control_plan_task_record cctr LEFT JOIN plan_info pi ON cctr.plan_id = pi.id WHERE cctr.task_id IN (" + StringUtils.join(taskIdsResult, ",") + ")";
-            List<Map<String, Object>> result = jdbcTemplate.queryForList(sql);
-            Map<Long, String> taskPlanMap = new HashMap<>();
-            for (Map<String, Object> row : result) {
-                Long taskId = (Long) row.get("task_id");
-                String planName = (String) row.get("plan_name");
-                if (!taskPlanMap.containsKey(taskId)) {
-                    taskPlanMap.put(taskId, planName);
-                }
-            }
-
-            List<Long> taskUserIds = taskInfoPage.getRecords().stream().map(TaskInfo::getTaskUserId).collect(Collectors.toList());
-            List<Long> taskUserIdsAssist = taskInfoPage.getRecords().stream().map(TaskInfo::getTaskUserIdAssist).collect(Collectors.toList());
-            List<Long> taskUserIdsLeader = taskInfoPage.getRecords().stream().map(TaskInfo::getTaskUserIdLeader).collect(Collectors.toList());
-            taskUserIds.addAll(taskUserIdsAssist);
-            taskUserIds.addAll(taskUserIdsLeader);
-            Set<Long> sets = new HashSet<>(taskUserIds);
-            List<User> query = jdbcTemplate.query("select id,name from blade_user where id in(" + StringUtils.join(sets, ",") + ")", new BeanPropertyRowMapper<>(User.class));
-            Map<Long, String> idNameMap = new HashMap<>();
-            for (User user : query) {
-                idNameMap.put(user.getId(), user.getName());
-            }
-
-            return taskInfoPage.convert(taskInfo -> {
-                TaskPageVO vo = new TaskPageVO();
-                BeanUtils.copyProperties(taskInfo, vo);
-                vo.setId(taskInfo.getId() + "");
-                vo.setStatus(ObjectUtil.isNotEmpty(taskInfo.getStatus()) ? taskInfo.getStatus().toString() : "");
-                vo.setPlanName(StringUtils.isNotEmpty(taskPlanMap.get(taskInfo.getId())) ? taskPlanMap.get(taskInfo.getId()) : "");
-                vo.setTaskDesc(ObjectUtil.isNotEmpty(taskInfo.getTaskDesc()) ? taskInfo.getTaskDesc() : "");
-                vo.setTaskStandard(ObjectUtil.isNotEmpty(taskInfo.getTaskStandard()) ? taskInfo.getTaskStandard() : "");
-                vo.setTaskEndDate(ObjectUtil.isNotEmpty(taskInfo.getTaskEndDate()) ? taskInfo.getTaskEndDate() : null);
-                vo.setTaskUserName(StringUtils.isNotEmpty(idNameMap.get(taskInfo.getTaskUserId())) ? idNameMap.get(taskInfo.getTaskUserId()) : "");
-                vo.setTaskUserAssistName(StringUtils.isNotEmpty(idNameMap.get(taskInfo.getTaskUserIdAssist())) ? idNameMap.get(taskInfo.getTaskUserIdAssist()) : "");
-                vo.setTaskUserLeaderName(StringUtils.isNotEmpty(idNameMap.get(taskInfo.getTaskUserIdLeader())) ? idNameMap.get(taskInfo.getTaskUserIdLeader()) : "");
-                //TODO 项目环节、项目
-
-
-                return vo;
-            });
-
-        } else if (("2").equals(dto.getType())) {
-            //我关联的任务 TODO
-
-        }
-        return null;
-    }
-
-    @Override
-    public boolean taskRelationSubmit(String taskIds, BladeUser user) {
-        //TODO
-        return false;
-    }
-
-
-}

+ 62 - 0
blade-service/blade-control/src/main/java/org/springblade/control/wrapper/DictInfoWrapper.java

@@ -0,0 +1,62 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.control.wrapper;
+
+import org.springblade.control.entity.DictInfo;
+import org.springblade.control.vo.DictInfoVO;
+import org.springblade.core.mp.support.BaseEntityWrapper;
+import org.springblade.core.tool.constant.BladeConstant;
+import org.springblade.core.tool.node.ForestNodeMerger;
+import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.system.cache.DictCache;
+import org.springblade.system.entity.Dict;
+import org.springblade.system.vo.DictVO;
+
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+/**
+ * 包装类,返回视图层所需的字段
+ *
+ * @author Chill
+ */
+public class DictInfoWrapper extends BaseEntityWrapper<DictInfo, DictInfoVO> {
+
+    public static DictInfoWrapper build() {
+        return new DictInfoWrapper();
+    }
+
+    @Override
+    public DictInfoVO entityVO(DictInfo dictinfo) {
+        DictInfoVO dictInfoVO = Objects.requireNonNull(BeanUtil.copy(dictinfo, DictInfoVO.class));
+        if (Func.equals(dictinfo.getParentId(), BladeConstant.TOP_PARENT_ID)) {
+            dictInfoVO.setParentName(BladeConstant.TOP_PARENT_NAME);
+        } else {
+            Dict parent = DictCache.getById(dictinfo.getParentId());
+            dictInfoVO.setParentName(parent.getDictValue());
+        }
+        return dictInfoVO;
+    }
+
+    public List<DictInfoVO> listNodeVO(List<DictInfo> list) {
+        List<DictInfoVO> collect = list.stream().map(dict -> BeanUtil.copy(dict, DictInfoVO.class)).collect(Collectors.toList());
+        return ForestNodeMerger.merge(collect);
+    }
+
+}

+ 0 - 4
blade-service/blade-control/src/main/java/org/springblade/control/wrapper/test.java

@@ -1,4 +0,0 @@
-package org.springblade.control.wrapper;
-
-public class test {
-}

+ 1 - 1
blade-service/blade-manager/pom.xml

@@ -198,7 +198,7 @@
                     <target>${java.version}</target>
                     <encoding>${project.build.sourceEncoding}</encoding>
                     <compilerArguments>
-                        <bootclasspath>${java.home}/lib/rt.jar:${java.home}/lib/jce.jar:${java.home}/lib/jsse.jar
+                        <bootclasspath>${java.home}/lib/rt.jar;${java.home}/lib/jce.jar;${java.home}/lib/jsse.jar
                         </bootclasspath>
                     </compilerArguments>
                 </configuration>

+ 5 - 0
blade-service/blade-user/src/main/java/org/springblade/system/user/feign/UserClient.java

@@ -119,4 +119,9 @@ public class UserClient implements IUserClient {
         return service.selectUserAll();
     }
 
+    @Override
+    public List<User> userInfoByIds(List<Long> userIds) {
+        return service.getBaseMapper().selectBatchIds(userIds);
+    }
+
 }

+ 127 - 0
src/main/java/org/springblade/control/controller/DictInfoController.java

@@ -0,0 +1,127 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.control.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import lombok.AllArgsConstructor;
+import javax.validation.Valid;
+
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.control.entity.DictInfo;
+import org.springblade.control.vo.DictInfoVO;
+import org.springblade.control.service.IDictInfoService;
+import org.springblade.core.boot.ctrl.BladeController;
+
+/**
+ * 参数信息表 控制器
+ *
+ * @author BladeX
+ * @since 2023-06-05
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/dictinfo")
+@Api(value = "参数信息表", tags = "参数信息表接口")
+public class DictInfoController extends BladeController {
+
+	private final IDictInfoService dictInfoService;
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入dictInfo")
+	public R<DictInfo> detail(DictInfo dictInfo) {
+		DictInfo detail = dictInfoService.getOne(Condition.getQueryWrapper(dictInfo));
+		return R.data(detail);
+	}
+
+	/**
+	 * 分页 参数信息表
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入dictInfo")
+	public R<IPage<DictInfo>> list(DictInfo dictInfo, Query query) {
+		IPage<DictInfo> pages = dictInfoService.page(Condition.getPage(query), Condition.getQueryWrapper(dictInfo));
+		return R.data(pages);
+	}
+
+	/**
+	 * 自定义分页 参数信息表
+	 */
+	@GetMapping("/page")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "分页", notes = "传入dictInfo")
+	public R<IPage<DictInfoVO>> page(DictInfoVO dictInfo, Query query) {
+		IPage<DictInfoVO> pages = dictInfoService.selectDictInfoPage(Condition.getPage(query), dictInfo);
+		return R.data(pages);
+	}
+
+	/**
+	 * 新增 参数信息表
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "新增", notes = "传入dictInfo")
+	public R save(@Valid @RequestBody DictInfo dictInfo) {
+		return R.status(dictInfoService.save(dictInfo));
+	}
+
+	/**
+	 * 修改 参数信息表
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "修改", notes = "传入dictInfo")
+	public R update(@Valid @RequestBody DictInfo dictInfo) {
+		return R.status(dictInfoService.updateById(dictInfo));
+	}
+
+	/**
+	 * 新增或修改 参数信息表
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入dictInfo")
+	public R submit(@Valid @RequestBody DictInfo dictInfo) {
+		return R.status(dictInfoService.saveOrUpdate(dictInfo));
+	}
+
+	
+	/**
+	 * 删除 参数信息表
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 7)
+	@ApiOperation(value = "逻辑删除", notes = "传入ids")
+	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		return R.status(dictInfoService.deleteLogic(Func.toLongList(ids)));
+	}
+
+	
+}

+ 34 - 0
src/main/java/org/springblade/control/dto/DictInfoDTO.java

@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.control.dto;
+
+import org.springblade.control.entity.DictInfo;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 参数信息表数据传输对象实体类
+ *
+ * @author BladeX
+ * @since 2023-06-05
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class DictInfoDTO extends DictInfo {
+	private static final long serialVersionUID = 1L;
+
+}

+ 64 - 0
src/main/java/org/springblade/control/entity/DictInfo.java

@@ -0,0 +1,64 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.control.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import org.springblade.core.mp.base.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 参数信息表实体类
+ *
+ * @author BladeX
+ * @since 2023-06-05
+ */
+@Data
+@TableName("c_dict_info")
+@EqualsAndHashCode(callSuper = true)
+public class DictInfo extends BaseEntity {
+
+	private static final long serialVersionUID = 1L;
+
+	/**
+	* 父主键
+	*/
+		private Long parentId;
+	/**
+	* 字典名称
+	*/
+		private String dictName;
+	/**
+	* 字典值
+	*/
+		private String dictValue;
+	/**
+	* 排序
+	*/
+		private Integer sort;
+	/**
+	* 参数类型
+	*/
+		private Integer type;
+	/**
+	* 自定义码
+	*/
+		private String code;
+
+
+}

+ 42 - 0
src/main/java/org/springblade/control/mapper/DictInfoMapper.java

@@ -0,0 +1,42 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.control.mapper;
+
+import org.springblade.control.entity.DictInfo;
+import org.springblade.control.vo.DictInfoVO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import java.util.List;
+
+/**
+ * 参数信息表 Mapper 接口
+ *
+ * @author BladeX
+ * @since 2023-06-05
+ */
+public interface DictInfoMapper extends BaseMapper<DictInfo> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param dictInfo
+	 * @return
+	 */
+	List<DictInfoVO> selectDictInfoPage(IPage page, DictInfoVO dictInfo);
+
+}

+ 32 - 0
src/main/java/org/springblade/control/mapper/DictInfoMapper.xml

@@ -0,0 +1,32 @@
+<?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="org.springblade.control.mapper.DictInfoMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="dictInfoResultMap" type="org.springblade.control.entity.DictInfo">
+        <result column="id" property="id"/>
+        <result column="is_deleted" property="isDeleted"/>
+        <result column="parent_id" property="parentId"/>
+        <result column="dict_name" property="dictName"/>
+        <result column="dict_value" property="dictValue"/>
+        <result column="sort" property="sort"/>
+        <result column="type" property="type"/>
+        <result column="code" property="code"/>
+    </resultMap>
+
+
+    <select id="selectDictInfoPage" resultMap="dictInfoResultMap">
+        select *
+        from c_dict_info
+        where is_deleted = 0
+    </select>
+
+    <select id="getList" resultMap="dictInfoResultMap">
+        select * from c_dict_info where code = #{code}
+        <if test="notRoot != null and notRoot != ''">
+            and parent_id > 0
+        </if>
+        and is_deleted = 0
+        order by sort
+    </select>
+</mapper>

+ 41 - 0
src/main/java/org/springblade/control/service/IDictInfoService.java

@@ -0,0 +1,41 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.control.service;
+
+import org.springblade.control.entity.DictInfo;
+import org.springblade.control.vo.DictInfoVO;
+import org.springblade.core.mp.base.BaseService;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
+/**
+ * 参数信息表 服务类
+ *
+ * @author BladeX
+ * @since 2023-06-05
+ */
+public interface IDictInfoService extends BaseService<DictInfo> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param dictInfo
+	 * @return
+	 */
+	IPage<DictInfoVO> selectDictInfoPage(IPage<DictInfoVO> page, DictInfoVO dictInfo);
+
+}

+ 41 - 0
src/main/java/org/springblade/control/service/impl/DictInfoServiceImpl.java

@@ -0,0 +1,41 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.control.service.impl;
+
+import org.springblade.control.entity.DictInfo;
+import org.springblade.control.vo.DictInfoVO;
+import org.springblade.control.mapper.DictInfoMapper;
+import org.springblade.control.service.IDictInfoService;
+import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
+/**
+ * 参数信息表 服务实现类
+ *
+ * @author BladeX
+ * @since 2023-06-05
+ */
+@Service
+public class DictInfoServiceImpl extends BaseServiceImpl<DictInfoMapper, DictInfo> implements IDictInfoService {
+
+	@Override
+	public IPage<DictInfoVO> selectDictInfoPage(IPage<DictInfoVO> page, DictInfoVO dictInfo) {
+		return page.setRecords(baseMapper.selectDictInfoPage(page, dictInfo));
+	}
+
+}

+ 34 - 0
src/main/java/org/springblade/control/vo/DictInfoVO.java

@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.control.vo;
+
+import org.springblade.control.entity.DictInfo;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 参数信息表视图实体类
+ *
+ * @author BladeX
+ * @since 2023-06-05
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class DictInfoVO extends DictInfo {
+	private static final long serialVersionUID = 1L;
+
+}

+ 20 - 0
src/main/java/sql/dictinfo.menu.sql

@@ -0,0 +1,20 @@
+INSERT INTO `blade_menu`(`id`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`,
+                         `is_open`, `remark`, `is_deleted`)
+VALUES ('1665658060720152578', 1123598815738675201, 'dictinfo', '参数信息表', 'menu', '/control/dictinfo', NULL, 1, 1, 0, 1,
+        NULL, 0);
+INSERT INTO `blade_menu`(`id`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`,
+                         `is_open`, `remark`, `is_deleted`)
+VALUES ('1665658060720152579', '1665658060720152578', 'dictinfo_add', '新增', 'add', '/control/dictinfo/add', 'plus', 1,
+        2, 1, 1, NULL, 0);
+INSERT INTO `blade_menu`(`id`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`,
+                         `is_open`, `remark`, `is_deleted`)
+VALUES ('1665658060720152580', '1665658060720152578', 'dictinfo_edit', '修改', 'edit', '/control/dictinfo/edit', 'form',
+        2, 2, 2, 1, NULL, 0);
+INSERT INTO `blade_menu`(`id`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`,
+                         `is_open`, `remark`, `is_deleted`)
+VALUES ('1665658060720152581', '1665658060720152578', 'dictinfo_delete', '删除', 'delete',
+        '/api/blade-control/dictinfo/remove', 'delete', 3, 2, 3, 1, NULL, 0);
+INSERT INTO `blade_menu`(`id`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`,
+                         `is_open`, `remark`, `is_deleted`)
+VALUES ('1665658060720152582', '1665658060720152578', 'dictinfo_view', '查看', 'view', '/control/dictinfo/view',
+        'file-text', 4, 2, 2, 1, NULL, 0);