quyueting 5 lat temu
rodzic
commit
ed988d516f
20 zmienionych plików z 633 dodań i 160 usunięć
  1. 2 0
      cloud-model/src/main/java/com/hssx/cloudmodel/constant/Constant.java
  2. 8 0
      cloud-model/src/main/java/com/hssx/cloudmodel/controller/ProjectController.java
  3. 64 0
      cloud-model/src/main/java/com/hssx/cloudmodel/controller/ProjectFileController.java
  4. 28 0
      cloud-model/src/main/java/com/hssx/cloudmodel/controller/ProjectOperationDynamicsController.java
  5. 138 0
      cloud-model/src/main/java/com/hssx/cloudmodel/entity/ProjectOperationDynamics.java
  6. 1 0
      cloud-model/src/main/java/com/hssx/cloudmodel/entity/vo/ProjectVO.java
  7. 2 2
      cloud-model/src/main/java/com/hssx/cloudmodel/entity/vo/UserVO.java
  8. 16 0
      cloud-model/src/main/java/com/hssx/cloudmodel/mapper/ProjectOperationDynamicsMapper.java
  9. 8 0
      cloud-model/src/main/java/com/hssx/cloudmodel/service/ProjectFileService.java
  10. 16 0
      cloud-model/src/main/java/com/hssx/cloudmodel/service/ProjectOperationDynamicsService.java
  11. 4 1
      cloud-model/src/main/java/com/hssx/cloudmodel/service/impl/PowerServiceImpl.java
  12. 96 0
      cloud-model/src/main/java/com/hssx/cloudmodel/service/impl/ProjectFileServiceImpl.java
  13. 20 0
      cloud-model/src/main/java/com/hssx/cloudmodel/service/impl/ProjectOperationDynamicsServiceImpl.java
  14. 41 19
      cloud-model/src/main/java/com/hssx/cloudmodel/service/impl/ProjectServiceImpl.java
  15. 26 0
      cloud-model/src/main/java/com/hssx/cloudmodel/util/FileUtil.java
  16. 1 1
      cloud-model/src/main/resources/application.properties
  17. 3 3
      cloud-model/src/main/resources/mapper/MouldMapper.xml
  18. 66 3
      cloud-model/src/main/resources/mapper/ProjectMapper.xml
  19. 21 0
      cloud-model/src/main/resources/mapper/ProjectOperationDynamicsMapper.xml
  20. 72 131
      ys_vue/src/views/mold/moldDownload.vue

+ 2 - 0
cloud-model/src/main/java/com/hssx/cloudmodel/constant/Constant.java

@@ -14,4 +14,6 @@ public class Constant {
     public static final Integer SYS_ID = 1;//系统管理员的id
     public static final String MOULD_PREFIX = "YMMJ";//模具编号前缀
     public static final String PROJECT_PREFIX = "YMXM";//项目编号
+    public static final String UPLOAD = "上传";//上传
+    public static final String DOWNLOAD = "下载";//下载
 }

+ 8 - 0
cloud-model/src/main/java/com/hssx/cloudmodel/controller/ProjectController.java

@@ -3,18 +3,25 @@ package com.hssx.cloudmodel.controller;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.hssx.cloudmodel.entity.Project;
 import com.hssx.cloudmodel.entity.User;
+import com.hssx.cloudmodel.entity.vo.UserVO;
 import com.hssx.cloudmodel.service.ProjectService;
 import com.hssx.cloudmodel.service.UserService;
 import com.hssx.cloudmodel.util.HttpRespMsg;
 import com.hssx.cloudmodel.util.PageUtil;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.IOException;
+import java.util.UUID;
 
 
 /**
@@ -99,5 +106,6 @@ public class ProjectController {
         msg = projectService.getListByUser(token);
         return msg;
     }
+
 }
 

+ 64 - 0
cloud-model/src/main/java/com/hssx/cloudmodel/controller/ProjectFileController.java

@@ -1,9 +1,25 @@
 package com.hssx.cloudmodel.controller;
 
 
+import com.hssx.cloudmodel.entity.ProjectFile;
+import com.hssx.cloudmodel.entity.vo.UserVO;
+import com.hssx.cloudmodel.service.ProjectFileService;
+import com.hssx.cloudmodel.util.HttpRespMsg;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.RequestMapping;
 
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.IOException;
+import java.util.UUID;
 
 /**
  * <p>
@@ -17,5 +33,53 @@ import org.springframework.web.bind.annotation.RestController;
 @RequestMapping("/projectfile")
 public class ProjectFileController {
 
+    @Value("${upload.path}")
+    private String path;
+    @Autowired
+    private ProjectFileService projectFileService;
+
+    /**
+     * 项目文档的上传
+     * 参数: token 用户身份凭证,projectId 项目id ,file 文件信息
+     *
+     * @return
+     */
+    @ApiOperation("项目文档的上传")
+    @RequestMapping("/uploadFile")
+    @ResponseBody
+    public HttpRespMsg uploadFile(@RequestParam(required = false) MultipartFile file,
+                             HttpServletResponse response, HttpServletRequest request, UserVO userVO) throws Exception {
+        System.out.println("开始上传文件" + "file+" + file.getOriginalFilename());
+        HttpRespMsg msg = new HttpRespMsg();
+        msg = projectFileService.addFile(userVO,file,path);
+        return msg;
+    }
+    /**
+     * 项目文档的上传
+     * 参数: token 用户身份凭证,id
+     *
+     * @return
+     */
+    @ApiOperation("项目文档的下载")
+    @RequestMapping("/dowloadFile")
+    @ResponseBody
+    public HttpRespMsg dowloadFile(ProjectFile projectFile,String token){
+        HttpRespMsg msg = projectFileService.dowloadFile(projectFile,token);
+        return null;
+    }
+
+    /**
+     * 项目文档的列表
+     * 参数: token 用户身份凭证,projectId 项目id
+     *
+     * @return
+     */
+    @ApiOperation("项目文档的列表")
+    @RequestMapping("/list")
+    @ResponseBody
+    public HttpRespMsg list(UserVO userVO){
+        HttpRespMsg msg = projectFileService.getFileList(userVO);
+        return msg;
+    }
 }
 

+ 28 - 0
cloud-model/src/main/java/com/hssx/cloudmodel/controller/ProjectOperationDynamicsController.java

@@ -0,0 +1,28 @@
+package com.hssx.cloudmodel.controller;
+
+
+import com.hssx.cloudmodel.service.ProjectOperationDynamicsService;
+import com.hssx.cloudmodel.util.HttpRespMsg;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author 吴涛涛
+ * @since 2019-08-07
+ */
+@Controller
+@RequestMapping("/projectoperationdynamics")
+public class ProjectOperationDynamicsController {
+    @Autowired
+    private ProjectOperationDynamicsService projectOperationDynamicsService;
+
+}
+

+ 138 - 0
cloud-model/src/main/java/com/hssx/cloudmodel/entity/ProjectOperationDynamics.java

@@ -0,0 +1,138 @@
+package com.hssx.cloudmodel.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 吴涛涛
+ * @since 2019-08-07
+ */
+@TableName("tb_project_operation_dynamics")
+public class ProjectOperationDynamics extends Model<ProjectOperationDynamics> {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 项目操作记录表主键
+     */
+    @TableField("id")
+    private Integer id;
+
+    /**
+     * 操作人名字
+     */
+    @TableField("operator")
+    private String operator;
+
+    /**
+     * 操作人id
+     */
+    @TableField("operator_id")
+    private Integer operatorId;
+
+    /**
+     * 操作时间
+     */
+    @TableField("indate")
+    private LocalDateTime indate;
+
+    /**
+     * 文档名称
+     */
+    @TableField("file_name")
+    private String fileName;
+
+    /**
+     * 内容
+     */
+    @TableField("content")
+    private String content;
+
+    /**
+     * 项目id
+     */
+    @TableField("project_id")
+    private Integer projectId;
+
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getOperator() {
+        return operator;
+    }
+
+    public void setOperator(String operator) {
+        this.operator = operator;
+    }
+
+    public Integer getOperatorId() {
+        return operatorId;
+    }
+
+    public void setOperatorId(Integer operatorId) {
+        this.operatorId = operatorId;
+    }
+
+    public LocalDateTime getIndate() {
+        return indate;
+    }
+
+    public void setIndate(LocalDateTime indate) {
+        this.indate = indate;
+    }
+
+    public String getFileName() {
+        return fileName;
+    }
+
+    public void setFileName(String fileName) {
+        this.fileName = fileName;
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+    public Integer getProjectId() {
+        return projectId;
+    }
+
+    public void setProjectId(Integer projectId) {
+        this.projectId = projectId;
+    }
+
+    @Override
+    protected Serializable pkVal() {
+        return null;
+    }
+
+    @Override
+    public String toString() {
+        return "ProjectOperationDynamics{" +
+        "id=" + id +
+        ", operator=" + operator +
+        ", operatorId=" + operatorId +
+        ", indate=" + indate +
+        ", fileName=" + fileName +
+        ", content=" + content +
+        ", projectId=" + projectId +
+        "}";
+    }
+}

+ 1 - 0
cloud-model/src/main/java/com/hssx/cloudmodel/entity/vo/ProjectVO.java

@@ -24,6 +24,7 @@ public class ProjectVO extends Project {
     private Integer userId;
     private String companyName;
     private String powerString;
+    private String username;
 
 
 }

+ 2 - 2
cloud-model/src/main/java/com/hssx/cloudmodel/entity/vo/UserVO.java

@@ -11,14 +11,14 @@ import lombok.Data;
  * Version: 1.0
  */
 @Data
-@Builder
 public class UserVO extends User {
     private String companyName;
     private String roleName;
     private String keyName;//项目名称
     private Integer searchType;//搜索类型0-模具编号,1-模具名称
     private Integer projectId;
-    private Integer companyId;
+    private Integer cId;
+    private String token;
     private Integer isManager = 0;
     private String powers;
 }

+ 16 - 0
cloud-model/src/main/java/com/hssx/cloudmodel/mapper/ProjectOperationDynamicsMapper.java

@@ -0,0 +1,16 @@
+package com.hssx.cloudmodel.mapper;
+
+import com.hssx.cloudmodel.entity.ProjectOperationDynamics;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 吴涛涛
+ * @since 2019-08-07
+ */
+public interface ProjectOperationDynamicsMapper extends BaseMapper<ProjectOperationDynamics> {
+
+}

+ 8 - 0
cloud-model/src/main/java/com/hssx/cloudmodel/service/ProjectFileService.java

@@ -2,6 +2,9 @@ package com.hssx.cloudmodel.service;
 
 import com.hssx.cloudmodel.entity.ProjectFile;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.hssx.cloudmodel.entity.vo.UserVO;
+import com.hssx.cloudmodel.util.HttpRespMsg;
+import org.springframework.web.multipart.MultipartFile;
 
 /**
  * <p>
@@ -13,4 +16,9 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface ProjectFileService extends IService<ProjectFile> {
 
+    HttpRespMsg addFile(UserVO userVO, MultipartFile file, String path);
+
+    HttpRespMsg dowloadFile(ProjectFile projectFile, String token);
+
+    HttpRespMsg getFileList(UserVO userVO);
 }

+ 16 - 0
cloud-model/src/main/java/com/hssx/cloudmodel/service/ProjectOperationDynamicsService.java

@@ -0,0 +1,16 @@
+package com.hssx.cloudmodel.service;
+
+import com.hssx.cloudmodel.entity.ProjectOperationDynamics;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 吴涛涛
+ * @since 2019-08-07
+ */
+public interface ProjectOperationDynamicsService extends IService<ProjectOperationDynamics> {
+
+}

+ 4 - 1
cloud-model/src/main/java/com/hssx/cloudmodel/service/impl/PowerServiceImpl.java

@@ -48,20 +48,23 @@ public class PowerServiceImpl extends ServiceImpl<PowerMapper, Power> implements
         HttpRespMsg msg = new HttpRespMsg();
         List<ProjectVO> list = new ArrayList<>();
         Integer type = 0;
-        PageHelper.startPage(page.getPageNum(), page.getPageSize());
         User user = userMapper.selectOne(new QueryWrapper<User>().eq("head_imgurl", token));
+        System.out.println("user"+user);
         QueryWrapper<Project> qw = new QueryWrapper<>();
         Integer count = projectMapper.selectCount(qw.eq("manager_id", user.getId()));
         BeanUtils.copyProperties(user, userVO);
+        System.out.println("userVO"+userVO);
         if (user != null) {
             if (Constant.SYS_PARENT_ID == user.getParentId()) {
                 //平台超级管理员
                 msg.setError("对不起你不具备该项权限!");
             } else if (Constant.SYS_ID == user.getParentId()) {
                 //资产方管理员,展示此人创建所有项目对应的权限
+                PageHelper.startPage(page.getPageNum(), page.getPageSize());
                 list = projectMapper.selectUserPowerList(userVO, type);
             } else if (count > 0) {
                 //项目经理
+                PageHelper.startPage(page.getPageNum(), page.getPageSize());
                 type = 1;
                 list = projectMapper.selectUserPowerList(userVO, type);
             } else {

+ 96 - 0
cloud-model/src/main/java/com/hssx/cloudmodel/service/impl/ProjectFileServiceImpl.java

@@ -1,10 +1,27 @@
 package com.hssx.cloudmodel.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.hssx.cloudmodel.constant.Constant;
 import com.hssx.cloudmodel.entity.ProjectFile;
+import com.hssx.cloudmodel.entity.ProjectOperationDynamics;
+import com.hssx.cloudmodel.entity.User;
+import com.hssx.cloudmodel.entity.vo.UserVO;
 import com.hssx.cloudmodel.mapper.ProjectFileMapper;
+import com.hssx.cloudmodel.mapper.ProjectOperationDynamicsMapper;
+import com.hssx.cloudmodel.mapper.UserMapper;
 import com.hssx.cloudmodel.service.ProjectFileService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.hssx.cloudmodel.service.ProjectOperationDynamicsService;
+import com.hssx.cloudmodel.util.FileUtil;
+import com.hssx.cloudmodel.util.HttpRespMsg;
 import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+import java.util.UUID;
 
 /**
  * <p>
@@ -17,4 +34,83 @@ import org.springframework.stereotype.Service;
 @Service
 public class ProjectFileServiceImpl extends ServiceImpl<ProjectFileMapper, ProjectFile> implements ProjectFileService {
 
+    @Resource
+    UserMapper userMapper;
+    @Resource
+    ProjectFileMapper projectFileMapper;
+    @Resource
+    ProjectOperationDynamicsMapper projectOperationDynamicsMapper;
+
+    @Override
+    public HttpRespMsg addFile(UserVO userVO, MultipartFile file, String path) {
+        HttpRespMsg msg = new HttpRespMsg();
+        User user = userMapper.selectOne(new QueryWrapper<User>().eq("head_imgurl", userVO.getToken()));
+        if(user != null){
+            if (file != null && !file.isEmpty()) {
+                ProjectFile projectFile = new ProjectFile();
+                projectFile.setUploaderId(user.getId());
+                projectFile.setUploader(user.getUsername());
+                projectFile.setProjectId(userVO.getProjectId());
+                File dir = null;
+                dir = new File(path);
+                // D://cloud/upload 文件上传后所存储的位置,部署到服务器上时配置服务器地址即可
+                if (!dir.exists()) {
+                    dir.mkdirs();
+                }
+                String fileName = "";
+                if (file != null && !file.isEmpty()) {
+                    fileName = file.getOriginalFilename();
+                    projectFile.setFileName(fileName);
+                    projectFile.setFileSize(FileUtil.getReadableFileSize(file.getSize()));
+                    System.out.println("上传文件名称" + file.getName() + ", dir = " + dir.getAbsolutePath());
+                    int pos = fileName.lastIndexOf(".");
+                    String rand = UUID.randomUUID().toString().replaceAll("-", "");
+                    String sufix = fileName.substring(pos);
+                    fileName = rand + sufix;
+                    projectFile.setFileType(sufix);//文件后缀
+                    projectFile.setUrl("/upload/"+fileName);
+                    File saveFile = new File(dir, fileName);
+                    projectFileMapper.insert(projectFile);
+                    try {
+                        saveFile.createNewFile();
+                        file.transferTo(saveFile);
+                    } catch (IOException e) {
+                        e.printStackTrace();
+                        projectFile = null;
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                        projectFile = null;
+                    }
+                    //添加上传记录
+                    ProjectOperationDynamics dynamics = new ProjectOperationDynamics();
+                    dynamics.setContent(Constant.UPLOAD);
+                    dynamics.setFileName(file.getOriginalFilename());
+                    dynamics.setOperatorId(user.getId());
+                    dynamics.setOperator(user.getUsername());
+                    dynamics.setProjectId(userVO.getProjectId());
+                    projectOperationDynamicsMapper.insert(dynamics);
+                }
+                msg.data = projectFile;
+            }
+        }else{
+            msg.setError("当前用户不存在或者未登录");
+        }
+        return msg;
+    }
+
+    @Override
+    public HttpRespMsg dowloadFile(ProjectFile projectFile, String token) {
+        HttpRespMsg msg = new HttpRespMsg();
+        User user = userMapper.selectOne(new QueryWrapper<User>().eq("head_imgurl", token));
+        return null;
+    }
+
+    @Override
+    public HttpRespMsg getFileList(UserVO userVO) {
+        HttpRespMsg msg = new HttpRespMsg();
+        User user = userMapper.selectOne(new QueryWrapper<User>().eq("head_imgurl", userVO.getToken()));
+        List<ProjectFile> list = projectFileMapper.selectList(new QueryWrapper<ProjectFile>().eq("project_id", userVO.getProjectId()).orderByDesc("id"));
+        msg.data = list;
+        return msg;
+    }
 }

+ 20 - 0
cloud-model/src/main/java/com/hssx/cloudmodel/service/impl/ProjectOperationDynamicsServiceImpl.java

@@ -0,0 +1,20 @@
+package com.hssx.cloudmodel.service.impl;
+
+import com.hssx.cloudmodel.entity.ProjectOperationDynamics;
+import com.hssx.cloudmodel.mapper.ProjectOperationDynamicsMapper;
+import com.hssx.cloudmodel.service.ProjectOperationDynamicsService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 吴涛涛
+ * @since 2019-08-07
+ */
+@Service
+public class ProjectOperationDynamicsServiceImpl extends ServiceImpl<ProjectOperationDynamicsMapper, ProjectOperationDynamics> implements ProjectOperationDynamicsService {
+
+}

+ 41 - 19
cloud-model/src/main/java/com/hssx/cloudmodel/service/impl/ProjectServiceImpl.java

@@ -93,29 +93,51 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 }
             } else if (flag == 1) {
                 projectMapper.updateById(project);
+                //删除之前添加的生产方公司
+                customCompanyMapper.delete(new QueryWrapper<CustomCompany>().eq("project_id",project.getId()));
+                //重新添加生产方公司
+                if (customerCompanyIds != null && !"".equals(customerCompanyIds) && customerCompanyNames != null && !"".equals(customerCompanyNames)) {
+                    List<Integer> ides = ListUtil.convertIntegerIdsArrayToList(customerCompanyIds);
+                    String[] split = customerCompanyNames.split(",");
+                    int index = 0;
+                    for (String cusCompany : split) {
+                        CustomCompany customCompany = new CustomCompany();
+                        customCompany.setCompanyId(ides.get(index));
+                        customCompany.setCompanyName(cusCompany);
+                        customCompany.setProjectId(project.getId());
+                        customCompanyMapper.insert(customCompany);
+                        index++;
+                    }
+                }
                 //删除之前的项目审批人
                 projectApproveMapper.delete(new QueryWrapper<ProjectApprove>().eq("project_id", project.getId()));
                 //重新添加审批人
                 //1.添加资产方审批人
-                User customerExaminer = userMapper.selectById(customerApproverId);
-                Company company = companyMapper.selectById(customerExaminer.getCompanyId());
-                ProjectApprove projectApprove = new ProjectApprove();
-                projectApprove.setApproverName(customerExaminer.getUsername());
-                projectApprove.setCompanyId(customerExaminer.getCompanyId());
-                projectApprove.setCompanyName(company.getCompanyName());
-                projectApprove.setProjectId(project.getId());
-                projectApprove.setSubordinateType(customerExaminer.getSubordinateType());
-                projectApproveMapper.insert(projectApprove);
-                //2.添加生产方审批人
-                User ownerExaminer = userMapper.selectById(ownerApproverId);
-                company = companyMapper.selectById(ownerExaminer.getCompanyId());
-                ProjectApprove ownerProjectApprove = new ProjectApprove();
-                ownerProjectApprove.setApproverName(ownerExaminer.getUsername());
-                ownerProjectApprove.setCompanyId(ownerExaminer.getCompanyId());
-                ownerProjectApprove.setCompanyName(company.getCompanyName());
-                ownerProjectApprove.setProjectId(project.getId());
-                ownerProjectApprove.setSubordinateType(ownerExaminer.getSubordinateType());
-                projectApproveMapper.insert(ownerProjectApprove);
+                if(null != customerApproverId){
+                    User customerExaminer = userMapper.selectById(customerApproverId);
+                    Company company = companyMapper.selectById(customerExaminer.getCompanyId());
+                    ProjectApprove projectApprove = new ProjectApprove();
+                    projectApprove.setApproverId(customerExaminer.getId());
+                    projectApprove.setApproverName(customerExaminer.getUsername());
+                    projectApprove.setCompanyId(customerExaminer.getCompanyId());
+                    projectApprove.setCompanyName(company.getCompanyName());
+                    projectApprove.setProjectId(project.getId());
+                    projectApprove.setSubordinateType(customerExaminer.getSubordinateType());
+                    projectApproveMapper.insert(projectApprove);
+                }
+                if(null != ownerApproverId){
+                    //2.添加生产方审批人
+                    User ownerExaminer = userMapper.selectById(ownerApproverId);
+                    Company company = companyMapper.selectById(ownerExaminer.getCompanyId());
+                    ProjectApprove ownerProjectApprove = new ProjectApprove();
+                    ownerProjectApprove.setApproverId(ownerExaminer.getId());
+                    ownerProjectApprove.setApproverName(ownerExaminer.getUsername());
+                    ownerProjectApprove.setCompanyId(ownerExaminer.getCompanyId());
+                    ownerProjectApprove.setCompanyName(company.getCompanyName());
+                    ownerProjectApprove.setProjectId(project.getId());
+                    ownerProjectApprove.setSubordinateType(ownerExaminer.getSubordinateType());
+                    projectApproveMapper.insert(ownerProjectApprove);
+                }
                 //删除之前分配的人员
                 QueryWrapper<ProjectUser> qwPro = new QueryWrapper<>();
                 qwPro.eq("project_id", project.getId());

+ 26 - 0
cloud-model/src/main/java/com/hssx/cloudmodel/util/FileUtil.java

@@ -0,0 +1,26 @@
+package com.hssx.cloudmodel.util;
+
+public class FileUtil {
+
+	/**
+	 * 获取容易识别的文件大小,比如KB, MB, GB
+	 * @param size
+	 * @return
+	 */
+	public static String getReadableFileSize(long size) {
+		if (size < 1024) {//1K以内
+			return size + "byte";
+		} else if (size < 1024 * 1024) {//1M以内
+			return String.format("%.1fKB", (size*1.0f/1024));
+		} else if (size < 1024 * 1024 * 1024) {//1G以内
+			return String.format("%.1fMB", (size*1.0f/1024/1024));
+		} else {
+			return String.format("%.1fGB", (size*1.0f/1024/1024/1024));
+		}
+	}
+	
+	public static void main(String[] args) {
+		long l = 1024*1024*1*1024;
+		System.out.println(getReadableFileSize(l));
+	}
+}

+ 1 - 1
cloud-model/src/main/resources/application.properties

@@ -34,7 +34,7 @@ spring.thymeleaf.prefix=classpath:/static/
 #spring.redis.port=6379
 ######################################################################################################
 # 文件上传路径
-upload.path=D:/cloud/upload/
+upload.path=D:/mould/upload/
 #######################################################################################################
 # 配置上传文件的大小设置
 # Single file max size  即单个文件大小

+ 3 - 3
cloud-model/src/main/resources/mapper/MouldMapper.xml

@@ -75,7 +75,7 @@
         select
         tbm.id id,tbm.model_no model_no, tbm.model_name model_name,tbm.initial_modulus initial_modulus,tbm.rfid rfid,
         tbmp.end_time endTime,tbm.state state,tbp.project_name projectName,tbc.company_name companyName,
-        tbp.manager mangerName,tbm.factory_name factory_name,tbm.area area,tbmp.hill_number hillNumber,
+        tbp.manager mangerName,tbm.factory_name factory_name,tbm.area area,tbmp.hill_number hillNumber,tbm.oc_cycle oc_cycle,
         tbmp.equipment_no equipmentNo,tbm.setting_life setting_life,tbp.owner_company_name ownerCompanyName,tbm.run_times run_times
         from
         tb_mould tbm
@@ -109,7 +109,7 @@
         select
         tbm.id id,tbm.model_no model_no, tbm.model_name model_name,tbm.initial_modulus initial_modulus,tbm.rfid rfid,
         tbmp.end_time endTime,tbm.state state,tbp.project_name projectName,tbc.company_name companyName,
-        tbp.manager mangerName,tbm.factory_name factory_name,tbm.area area,tbmp.hill_number hillNumber,
+        tbp.manager mangerName,tbm.factory_name factory_name,tbm.area area,tbmp.hill_number hillNumber,tbm.oc_cycle oc_cycle,
         tbmp.equipment_no equipmentNo,tbm.setting_life setting_life,tbp.owner_company_name ownerCompanyName,tbm.run_times run_times
         from
         tb_mould tbm
@@ -144,7 +144,7 @@
     select
         tbm.id id,tbm.model_no model_no, tbm.model_name,tbm.initial_modulus initial_modulus,
         tbmp.end_time endTime,tbm.state state,tbp.project_name projectName,
-        tbp.manager mangerName,tbm.factory_name factory_name,tbm.area area,tbm.rfid rfid,
+        tbp.manager mangerName,tbm.factory_name factory_name,tbm.area area,tbm.rfid rfid,tbm.oc_cycle oc_cycle,
         tbmp.equipment_no equipmentNo,tbmp.hill_number hillNumber,tbm.setting_life setting_life,tbm.run_times run_times
         from
         tb_mould tbm

+ 66 - 3
cloud-model/src/main/resources/mapper/ProjectMapper.xml

@@ -36,7 +36,7 @@
         <result column="manager" property="manager" />
         <!--以下是分页插件的一对多-->
         <collection property="customCompanies" javaType="java.util.List" ofType="com.hssx.cloudmodel.entity.CustomCompany"
-                    select="queryCustomCompaniesId" column="id" notNullColumn="company_id">
+                    select="queryCustomCompaniesId" column="id">
         </collection>
     </resultMap>
 <!-- 以上一对多的映射-->
@@ -159,7 +159,7 @@
         <result column="company_name" property="companyName" />
         <result column="powerString" property="powerString" />
     </resultMap>
-    <select id="selectUserPowerList" resultMap="BaseResultMapPowerList">
+    <select id="selectUserPowerList1" resultMap="BaseResultMapPowerList">
       SELECT
       tbpu.user_id ,tbpu.project_id ,GROUP_CONCAT(tbpu.power_type) powerString,
         tbu.username ,tbc.company_name,
@@ -179,7 +179,7 @@
                 tbpu.project_id = #{user.projectId}
             </if>
             <if test="user.companyId != null">
-                tbpu.project_id = #{user.companyId}
+                tbu.company_id = #{user.companyId}
             </if>
             <if test="user.keyName != null and user.keyName != ''">
                 tbu.username like concat('%',#{user.keyName},'%')
@@ -194,4 +194,67 @@
       GROUP BY tbpu.user_id ,tbpu.project_id;
       order by tbpu.user_id
     </select>
+
+    <resultMap id="BaseResultMapPower" type="com.hssx.cloudmodel.entity.vo.ProjectVO">
+        <id column="id" property="id" />
+        <result column="project_name" property="projectName" />
+        <result column="project_id" property="projectId" />
+        <result column="user_id" property="userId" />
+        <result column="username" property="username" />
+        <result column="company_name" property="companyName" />
+        <result column="powerString" property="powerString" />
+        <collection property="powers" javaType="java.util.List" ofType="com.hssx.cloudmodel.entity.Power"
+                    select="queryPowerByUserIdAndProject" column="{userId = user_id,projectId = project_id}">
+        </collection>
+    </resultMap>
+    <resultMap id="BasePower" type="com.hssx.cloudmodel.entity.Power">
+        <result column="power_type" property="powerType" />
+        <result column="user_id" property="userId" />
+        <result column="project_id" property="projectId" />
+    </resultMap>
+    
+    <select id="selectUserPowerList" resultMap="BaseResultMapPower">
+        SELECT
+        tbpu.user_id user_id,tbpu.project_id project_id,tbu.username username,tbc.company_name,
+        tbp.project_name
+        FROM
+        `tb_project_user` tbpu
+        LEFT JOIN
+        tb_project tbp
+        ON tbp.id = tbpu.project_id
+        LEFT JOIN
+        tb_user tbu
+        ON tbpu.user_id = tbu.id
+        LEFT JOIN
+        tb_company tbc
+        ON tbc.id = tbu.company_id
+        <where>
+            <if test="user.projectId != null and user.projectId !=''">
+               AND tbpu.project_id = #{user.projectId}
+            </if>
+            <if test="user.cId != null and user.cId !=''">
+                AND tbu.company_id = #{user.cId}
+            </if>
+            <if test="user.keyName != null and user.keyName != ''">
+                AND tbu.username like concat('%',#{user.keyName},'%')
+            </if>
+            <if test="type == 0">
+                AND tbp.creator_id = #{user.id}
+            </if>
+            <if test="type == 1">
+                AND tbp.manager_id = #{user.id}
+            </if>
+        </where>
+    </select>
+    <!--一对多的子查询 queryCustomCompaniesId-->
+    <select id="queryPowerByUserIdAndProject" resultMap="BasePower" parameterType="java.util.Map">
+    SELECT
+    tbpw.user_id,tbpw.project_id,tbpw.power_type
+     from
+     `tb_power` tbpw
+    WHERE
+    tbpw.project_id = #{projectId}
+    and
+    tbpw.user_id  =#{userId}
+    </select>
 </mapper>

+ 21 - 0
cloud-model/src/main/resources/mapper/ProjectOperationDynamicsMapper.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="com.hssx.cloudmodel.mapper.ProjectOperationDynamicsMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.hssx.cloudmodel.entity.ProjectOperationDynamics">
+        <result column="id" property="id" />
+        <result column="operator" property="operator" />
+        <result column="operator_id" property="operatorId" />
+        <result column="indate" property="indate" />
+        <result column="file_name" property="fileName" />
+        <result column="content" property="content" />
+        <result column="project_id" property="projectId" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, operator, operator_id, indate, file_name, content, project_id
+    </sql>
+
+</mapper>

+ 72 - 131
ys_vue/src/views/mold/moldDownload.vue

@@ -21,7 +21,20 @@
           <el-button type="primary">查询</el-button>
         </el-form-item>
         <el-form-item style="float: right;">
-          <el-button type="primary">下载</el-button>
+          <el-dropdown>
+            <el-button type="primary">
+              下载
+              <i class="el-icon-arrow-down el-icon--right"></i>
+            </el-button>
+            <el-dropdown-menu slot="dropdown">
+              <el-dropdown-item @click.native="download(0)">全部下载</el-dropdown-item>
+              <el-dropdown-item @click.native="download(1)" divided>模具3D图档</el-dropdown-item>
+              <el-dropdown-item @click.native="download(2)">模具2D图档</el-dropdown-item>
+              <el-dropdown-item @click.native="download(3)">零件3D图档</el-dropdown-item>
+              <el-dropdown-item @click.native="download(4)">零件2D图档</el-dropdown-item>
+              <el-dropdown-item @click.native="download(5)">保养方案</el-dropdown-item>
+            </el-dropdown-menu>
+          </el-dropdown>
         </el-form-item>
       </el-form>
     </el-col>
@@ -33,106 +46,44 @@
       highlight-current-row
       v-loading="listLoading"
       style="width: 100%;"
+      @selection-change="selectionChanged"
     >
+      <el-table-column type="selection" width="40"></el-table-column>
       <el-table-column type="index" width="60"></el-table-column>
-      <el-table-column width="200">
-        <template slot="header" slot-scope="scope">
-          <el-checkbox :model="checkBoxArray[0][0].value" @change="checkChanged(0,0)">
-            <span>模具名称</span>
-          </el-checkbox>
-        </template>
+      <el-table-column width="200" label="模具名称" prop="name"></el-table-column>
+      <el-table-column width="200" label="模具3D图档">
         <template slot-scope="scope">
-          <el-checkbox
-            :model="checkBoxArray[scope.row.id][0].value"
-            @change="checkChanged(scope.$index+1,0)"
-          >
-            <span>{{scope.row.name}}</span>
-          </el-checkbox>
+          <span v-if="scope.row.states[0] == 0">未上传</span>
+          <span v-else-if="scope.row.states[0] == 1">审批中</span>
+          <span v-else>已通过</span>
         </template>
       </el-table-column>
-      <el-table-column width="200">
-        <template slot="header" slot-scope="scope">
-          <el-checkbox :model="checkBoxArray[0][1].value" @change="checkChanged(0,1)">
-            <span>模具3D图档</span>
-          </el-checkbox>
-        </template>
+      <el-table-column width="200" label="模具2D图档">
         <template slot-scope="scope">
-          <span v-if="scope.row.states[0] == 0" style="padding-left: 24px;">未上传</span>
-          <span v-else-if="scope.row.states[0] == 1" style="padding-left: 24px;">审批中</span>
-          <span v-else>
-            <el-checkbox
-              :model="checkBoxArray[scope.row.id][1].value"
-              @change="checkChanged(scope.$index+1,1)"
-            >已通过</el-checkbox>
-          </span>
+          <span v-if="scope.row.states[1] == 0">未上传</span>
+          <span v-else-if="scope.row.states[1] == 1">审批中</span>
+          <span v-else>已通过</span>
         </template>
       </el-table-column>
-      <el-table-column width="200">
-        <template slot="header" slot-scope="scope">
-          <el-checkbox :model="checkBoxArray[0][2].value" @change="checkChanged(0,2)">
-            <span>模具2D图档</span>
-          </el-checkbox>
-        </template>
+      <el-table-column width="200" label="零件3D图档">
         <template slot-scope="scope">
-          <span v-if="scope.row.states[1] == 0" style="padding-left: 24px;">未上传</span>
-          <span v-else-if="scope.row.states[1] == 1" style="padding-left: 24px;">审批中</span>
-          <span v-else>
-            <el-checkbox
-              :model="checkBoxArray[scope.row.id][2].value"
-              @change="checkChanged(scope.$index+1,2)"
-            >已通过</el-checkbox>
-          </span>
+          <span v-if="scope.row.states[2] == 0">未上传</span>
+          <span v-else-if="scope.row.states[2] == 1">审批中</span>
+          <span v-else>已通过</span>
         </template>
       </el-table-column>
-      <el-table-column width="200">
-        <template slot="header" slot-scope="scope">
-          <el-checkbox :model="checkBoxArray[0][3].value" @change="checkChanged(0,3)">
-            <span>零件3D图档</span>
-          </el-checkbox>
-        </template>
+      <el-table-column width="200" label="零件2D图档">
         <template slot-scope="scope">
-          <span v-if="scope.row.states[2] == 0" style="padding-left: 24px;">未上传</span>
-          <span v-else-if="scope.row.states[2] == 1" style="padding-left: 24px;">审批中</span>
-          <span v-else>
-            <el-checkbox
-              :model="checkBoxArray[scope.row.id][3].value"
-              @change="checkChanged(scope.$index+1,3)"
-            >已通过</el-checkbox>
-          </span>
+          <span v-if="scope.row.states[3] == 0">未上传</span>
+          <span v-else-if="scope.row.states[3] == 1">审批中</span>
+          <span v-else>已通过</span>
         </template>
       </el-table-column>
-      <el-table-column width="200">
-        <template slot="header" slot-scope="scope">
-          <el-checkbox :model="checkBoxArray[0][4].value" @change="checkChanged(0,4)">
-            <span>零件2D图档</span>
-          </el-checkbox>
-        </template>
+      <el-table-column width="200" label="保养方案">
         <template slot-scope="scope">
-          <span v-if="scope.row.states[3] == 0" style="padding-left: 24px;">未上传</span>
-          <span v-else-if="scope.row.states[3] == 1" style="padding-left: 24px;">审批中</span>
-          <span v-else>
-            <el-checkbox
-              :model="checkBoxArray[scope.row.id][4].value"
-              @change="checkChanged(scope.$index+1,4)"
-            >已通过</el-checkbox>
-          </span>
-        </template>
-      </el-table-column>
-      <el-table-column width="200">
-        <template slot="header" slot-scope="scope">
-          <el-checkbox :model="checkBoxArray[0][5].value" @change="checkChanged(0,5)">
-            <span>保养方案</span>
-          </el-checkbox>
-        </template>
-        <template slot-scope="scope">
-          <span v-if="scope.row.states[4] == 0" style="padding-left: 24px;">未上传</span>
-          <span v-else-if="scope.row.states[4] == 1" style="padding-left: 24px;">审批中</span>
-          <span v-else>
-            <el-checkbox
-              :model="checkBoxArray[scope.row.id][5].value"
-              @change="checkChanged(scope.$index+1,5)"
-            >已通过</el-checkbox>
-          </span>
+          <span v-if="scope.row.states[4] == 0">未上传</span>
+          <span v-else-if="scope.row.states[4] == 1">审批中</span>
+          <span v-else>已通过</span>
         </template>
       </el-table-column>
     </el-table>
@@ -166,27 +117,18 @@ export default {
         { id: 5, name: "墨盒类型5", states: [2, 0, 1, 2, 0] },
         { id: 6, name: "墨盒类型6", states: [2, 2, 2, 2, 2] }
       ],
-      checkBoxArray: [],
-      defaultItem: { value: false, able: true },
-      defaultLine: [
-        { value: false, able: true },
-        { value: false, able: true },
-        { value: false, able: true },
-        { value: false, able: true },
-        { value: false, able: true },
-        { value: false, able: true }
-      ],
       filters: {
         name: "",
         value: ""
       },
       listLoading: false,
       total: 0,
-      tableHeight: 0
+      tableHeight: 0,
+      selectedArray: []
     };
   },
   methods: {
-    //  分页
+    //分页
     handleCurrentChange(val) {
       this.page = val;
       // this.getUsers();
@@ -195,45 +137,44 @@ export default {
       this.size = val;
       // this.getUsers();
     },
-    selsChange(sels) {
-      this.sels = sels;
+    selectionChanged(row) {
+      this.selectedArray = [];
+      row.forEach(item => {
+        this.selectedArray.push(item.id);
+      });
+      console.log(this.selectedArray);
     },
-    // 点击复选框事件
-    checkChanged(y, x) {
-      this.checkBoxArray[y][x].value = !this.checkBoxArray[y][x].value;
-      // if (x == 0 && y == 0 && this.checkBoxArray[0][0].value == true) {
-      //   for (var i = 0; i < this.checkBoxArray.length; i++) {
-      //     for (var j = 0; j < this.checkBoxArray[i].length; j++) {
-      //       if (this.checkBoxArray[i][j].able == true) {
-      //         // this.checkBoxArray[i][j].value = true;
-      //         this.$set(this.checkBoxArray[i], j, {value:true,able:true});
-      //       }
-      //     }
-      //   }
-      // }
-      console.log("(" + x + ", " + y + ") " + this.checkBoxArray[y][x].value);
-      // console.log(this.checkBoxArray);
+    //下载
+    download(type) {
+      if (this.selectedArray == []) {
+        this.$message("请选择要下载的文档");
+      } else {
+        switch (type) {
+          case 0:
+            console.log("点击了下载全部");
+            break;
+          case 1:
+            console.log("点击了下载模具3D图档");
+            break;
+          case 2:
+            console.log("点击了下载模具2D图档");
+            break;
+          case 3:
+            console.log("点击了下载零件3D图档");
+            break;
+          case 4:
+            console.log("点击了下载零件2D图档");
+            break;
+          case 5:
+            console.log("点击了下载保养方案");
+            break;
+        }
+      }
     }
   },
   created() {
     let height = window.innerHeight;
     this.tableHeight = height - 210;
-
-    //向checkBoxArray中push信息
-    this.checkBoxArray = [];
-    this.checkBoxArray.push(this.defaultLine);
-    this.moulds.forEach(mould => {
-      var checkBoxLine = [];
-      checkBoxLine.push(this.defaultItem);
-      for (var i = 0; i < 6; i++) {}
-      mould.states.forEach(state => {
-        var value = false;
-        var able = state == 2;
-        var item = { value, able };
-        checkBoxLine.push(item);
-      });
-      this.checkBoxArray.push(checkBoxLine);
-    });
   },
   mounted() {}
 };