Browse Source

子项目增加开启关闭功能 填写日报增加限制
钉钉初始化项目部分数据

yurk 2 years ago
parent
commit
c9778e7d10

+ 18 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/SubProjectController.java

@@ -17,6 +17,7 @@ import org.springframework.web.bind.annotation.RestController;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletRequest;
+import java.util.List;
 
 
 /**
 /**
  * <p>
  * <p>
@@ -42,9 +43,13 @@ public class SubProjectController {
      * 获取子项目列表
      * 获取子项目列表
      */
      */
     @RequestMapping("/list")
     @RequestMapping("/list")
-    public HttpRespMsg list(Integer projectId) {
+    public HttpRespMsg list(Integer projectId,Boolean isReport) {
         HttpRespMsg msg = new HttpRespMsg();
         HttpRespMsg msg = new HttpRespMsg();
-        msg.data = subProjectService.list(new QueryWrapper<SubProject>().eq("project_id", projectId));
+        QueryWrapper<SubProject> queryWrapper=new QueryWrapper<SubProject>().eq("project_id", projectId);
+        if(isReport!=null&&isReport){
+            queryWrapper.eq("status",1);
+        }
+        msg.data =subProjectService.list(queryWrapper);
         return msg;
         return msg;
     }
     }
 
 
@@ -91,5 +96,16 @@ public class SubProjectController {
     public HttpRespMsg getTimeCost(String startDate, String endDate, Integer id) {
     public HttpRespMsg getTimeCost(String startDate, String endDate, Integer id) {
         return subProjectService.getTimeCost(startDate, endDate,id);
         return subProjectService.getTimeCost(startDate, endDate,id);
     }
     }
+
+    @RequestMapping("/updateStatus")
+    public HttpRespMsg updateStatus(@RequestParam Integer id,Integer status){
+        HttpRespMsg httpRespMsg=new HttpRespMsg();
+        SubProject byId = subProjectService.getById(id);
+        byId.setStatus(status);
+        if(!subProjectService.updateById(byId)){
+            httpRespMsg.setError("验证失败");
+        }
+        return httpRespMsg;
+    }
 }
 }
 
 

+ 7 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/SubProject.java

@@ -15,7 +15,7 @@ import lombok.experimental.Accessors;
  * </p>
  * </p>
  *
  *
  * @author Seyason
  * @author Seyason
- * @since 2022-03-16
+ * @since 2023-03-27
  */
  */
 @Data
 @Data
 @EqualsAndHashCode(callSuper = false)
 @EqualsAndHashCode(callSuper = false)
@@ -48,6 +48,12 @@ public class SubProject extends Model<SubProject> {
     @TableField("code")
     @TableField("code")
     private String code;
     private String code;
 
 
+    /**
+     * 0-关闭 1-开启
+     */
+    @TableField("status")
+    private Integer status;
+
 
 
     @Override
     @Override
     protected Serializable pkVal() {
     protected Serializable pkVal() {

+ 59 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/DingDingServiceImpl.java

@@ -378,6 +378,27 @@ public class DingDingServiceImpl implements DingDingService {
                 setting.setCompanyId(company.getId());
                 setting.setCompanyId(company.getId());
                 projectBasecostSettingMapper.insert(setting);
                 projectBasecostSettingMapper.insert(setting);
             }
             }
+            //直接授权默认人员
+            User user = userMapper.selectList(new QueryWrapper<User>().eq("company_id", company.getId()).eq("is_active", 1)).get(0);
+            //todo: 生成初始测试项目及任务
+            Project project=new Project();
+            project.setCompanyId(company.getId());
+            project.setInchargerId(user.getId());
+            project.setInchargerName(user.getName());
+            project.setCreatorId(user.getId());
+            project.setCreatorName(user.getName());
+            project.setCreateDate(LocalDate.now());
+            project.setProjectCode("example");
+            project.setProjectName("示例项目");
+            //设置为公共项目,这样测试的用户都能填报
+            project.setIsPublic(1);
+            projectMapper.insert(project);
+            //todo: 生成初始项目相关日报审核人
+            ProjectAuditor projectAuditor=new ProjectAuditor();
+            projectAuditor.setAuditorId(user.getId());
+            projectAuditor.setAuditorName(user.getName());
+            projectAuditor.setProjectId(project.getId());
+            projectAuditorMapper.insert(projectAuditor);
             //todo: 生成项目报表服务默认条目
             //todo: 生成项目报表服务默认条目
             Integer[] arrayInteger=new Integer[]{1,2,3,4,7};
             Integer[] arrayInteger=new Integer[]{1,2,3,4,7};
             for (Integer integerItem : arrayInteger) {
             for (Integer integerItem : arrayInteger) {
@@ -386,9 +407,45 @@ public class DingDingServiceImpl implements DingDingService {
                 companyReport.setReportFormId(integerItem);
                 companyReport.setReportFormId(integerItem);
                 companyReportMapper.insert(companyReport);
                 companyReportMapper.insert(companyReport);
             }
             }
+            //todo: 生成初始项目相关示例任务分组/任务阶段以及示例任务
+            TaskGroup taskGroup = new TaskGroup();
+            taskGroup.setProjectId(project.getId())
+                    .setInchargerId(user.getId())
+                    .setName("项目阶段");
+            taskGroupMapper.insert(taskGroup);
+            Stages stage = new Stages();
+            stage.setGroupId(taskGroup.getId());
+            stage.setSequence(1);
+            stage.setProjectId(project.getId());
+            stage.setStagesName("工作开展");
+            stagesMapper.insert(stage);
+            Task task=new Task();
+            Integer oneDayHours = 8;
+            task.setCreateDate(LocalDate.now());
+            task.setProjectId(project.getId());
+            task.setCompanyId(company.getId());
+            task.setCreaterId(user.getId());
+            task.setCreaterName(user.getName());
+            task.setCreatorColor(user.getColor());
+            task.setExecutorId(user.getId());
+            task.setExecutorColor(user.getColor());
+            task.setExecutorName(user.getName());
+            task.setPlanHours(oneDayHours);
+            task.setStagesId(stage.getId());
+            task.setGroupId(taskGroup.getId());
+            task.setSeq(0);
+            task.setName("示例任务");
+            taskMapper.insert(task);
+            //任务执行人表也要插入,不然会导致编辑任务的时候执行人为空
+            TaskExecutor executor = new TaskExecutor();
+            executor.setTaskId(task.getId());
+            executor.setPlanHours(oneDayHours);
+            executor.setProjectId(project.getId());
+            executor.setExecutorId(user.getId());
+            executor.setExecutorColor(user.getColor());
+            executor.setExecutorName(user.getName());
+            taskExecutorMapper.insert(executor);
         }
         }
-
-
         //钉钉企业外部关系表
         //钉钉企业外部关系表
         CompanyDingding dingding = new CompanyDingding();
         CompanyDingding dingding = new CompanyDingding();
         dingding.setCompanyId(company.getId());
         dingding.setCompanyId(company.getId());

+ 2 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/SubProjectMapper.xml

@@ -9,11 +9,12 @@
         <result column="project_id" property="projectId" />
         <result column="project_id" property="projectId" />
         <result column="company_id" property="companyId" />
         <result column="company_id" property="companyId" />
         <result column="code" property="code" />
         <result column="code" property="code" />
+        <result column="status" property="status" />
     </resultMap>
     </resultMap>
 
 
     <!-- 通用查询结果列 -->
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
     <sql id="Base_Column_List">
-        id, name, project_id, company_id, code
+        id, name, project_id, company_id, code, status
     </sql>
     </sql>
     <!--获取某个项目内子项目的工时成本统计-->
     <!--获取某个项目内子项目的工时成本统计-->
     <select id="getTimeCost" resultType="java.util.Map">
     <select id="getTimeCost" resultType="java.util.Map">

+ 44 - 3
fhKeeper/formulahousekeeper/timesheet/src/views/project/list.vue

@@ -827,8 +827,15 @@
             </el-table-column> -->
             </el-table-column> -->
             <el-table-column width="120" :label="$t('subprojectno')" prop="code"></el-table-column>
             <el-table-column width="120" :label="$t('subprojectno')" prop="code"></el-table-column>
             <el-table-column prop="name" :label="$t('names')" ></el-table-column>
             <el-table-column prop="name" :label="$t('names')" ></el-table-column>
-            <el-table-column :label="$t('operation')" width="150">
-                <template slot-scope="scope" >
+            <el-table-column :label="$t('operation')" width="220">
+                <template  slot-scope="scope" >
+                    <el-switch
+                    @change="changSubStatus(scope.row)"
+                    v-model="scope.row.status"
+                    active-color="#13ce66"
+                    inactive-color="#ff4949"
+                    style="margin-right: 20px;">
+                    </el-switch>
                     <el-button size="small" type="primary" @click="addNewSubProject(scope.row)">{{ $t('bian-ji') }}</el-button>
                     <el-button size="small" type="primary" @click="addNewSubProject(scope.row)">{{ $t('bian-ji') }}</el-button>
                     <el-button size="small" type="danger" @click="deleteSubPro(scope.row)">{{ $t('btn.delete') }}</el-button>
                     <el-button size="small" type="danger" @click="deleteSubPro(scope.row)">{{ $t('btn.delete') }}</el-button>
                 </template>
                 </template>
@@ -3599,6 +3606,9 @@ a {
                 res => {
                 res => {
                     if (res.code == "ok") {
                     if (res.code == "ok") {
                         this.subProjectList = res.data;
                         this.subProjectList = res.data;
+                        for(let i = 0; i < this.subProjectList.length; i++){
+                            this.subProjectList[i].status=this.subProjectList[i].status==1?true:false
+                        }
                     } else {
                     } else {
                         this.$message({
                         this.$message({
                         message: res.msg,
                         message: res.msg,
@@ -4592,7 +4602,35 @@ a {
                     arr.push(obj.id)
                     arr.push(obj.id)
                     this.addForm.bu = arr.join(",")
                     this.addForm.bu = arr.join(",")
                 }
                 }
-            }
+            },
+            changSubStatus(subProject) {
+                this.http.post('/sub-project/updateStatus',{ 
+                    id: subProject.id,
+                    status: subProject.status?1:0
+                },
+                res => {
+                    this.listLoading = false;
+                    if (res.code == "ok") {
+                        this.$message({
+                            message: subProject.status?"开启成功":"关闭成功",
+                            type: "success"
+                        });
+                        this.subProject(this.currentProject);
+                    } else {
+                        this.$message({
+                            message: res.msg,
+                            type: "error"
+                        });
+                    }
+                },
+                error => {
+                    this.$message({
+                        message: error,
+                        type: "error"
+                    });
+                    }
+                );
+            },
         },
         },
         created() {
         created() {
             let height = window.innerHeight;
             let height = window.innerHeight;
@@ -4687,6 +4725,9 @@ a {
     overflow: hidden;
     overflow: hidden;
     text-overflow: ellipsis;
     text-overflow: ellipsis;
 }
 }
+.dialogSwitch {
+    
+}
 
 
 // 111
 // 111
 
 

+ 2 - 1
fhKeeper/formulahousekeeper/timesheet/src/views/workReport/daily.vue

@@ -3432,7 +3432,8 @@
                 // console.log('projectId===',domain.projectId);
                 // console.log('projectId===',domain.projectId);
                 domain.projectName = this.fillProjectList.filter(p=>p.id == domain.projectId)[0].projectName;
                 domain.projectName = this.fillProjectList.filter(p=>p.id == domain.projectId)[0].projectName;
                 this.http.post('/sub-project/list',{
                 this.http.post('/sub-project/list',{
-                    projectId: domain.projectId
+                    projectId: domain.projectId,
+                    isReport: true
                 },
                 },
                 res => {
                 res => {
                     //清空之前选中的子项目
                     //清空之前选中的子项目