ylx 7 years ago
parent
commit
6bd205f84e

+ 6 - 1
ccb_fund_trusteeship/src/main/java/com/fuzamei/dao/ContractManagementDao.java

@@ -6,6 +6,7 @@ import java.util.Map;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Repository;
 
+import com.fuzamei.entity.ContractRecord;
 import com.fuzamei.entity.ContractStatusTracking;
 import com.fuzamei.mapperInterface.ContractManagementMapper;
 
@@ -23,11 +24,15 @@ public class ContractManagementDao {
 		return contractManagementMapper.findAllContractStatusTrackingInformation(map);
 	}
 
-	public List<ContractStatusTracking> queryContractRecord(Map<String, Object> map) {
+	public List<ContractRecord> queryContractRecord(Map<String, Object> map) {
 		return contractManagementMapper.queryContractRecord(map);
 	}
 
 	public int findAllContractRecordInformation(Map<String, Object> map) {
 		return contractManagementMapper.findAllContractRecordInformation(map);
 	}
+
+	public ContractStatusTracking getContractStatusTrackingByBusinessId(Integer businessId) {
+		return contractManagementMapper.getContractStatusTrackingByBusinessId(businessId);
+	}
 }

+ 28 - 13
ccb_fund_trusteeship/src/main/java/com/fuzamei/entity/ContractRecord.java

@@ -2,28 +2,36 @@ package com.fuzamei.entity;
 
 public class ContractRecord {
 	private Integer id;					//主键id号
-	private Integer businessId;			//合同对应的业务id号
+	private Integer business_id;		//合同对应的业务id号
 	private Integer contract_id;		//合同附件的id号
 	private String contract_name;		//合同名称?================>>就是文件名
-	private String version;				//版本信息?格式是v1.0这样?
+	private Integer version;			//版本信息?格式是v1.0这样?我再数据库改成了int字段了
 	private String contract_party;		//签约方名字
 	private String upload_department;	//上传部门
 	private String upload_person;		//上传人
 	private String modify_opinion;		//修改意见
 	private String unconfirm_department;//待确认部门(初始状态肯定是三个部门--->省分行业务部门&管理人&省分行法律部门)
-	private Integer statusId;			//
+	private Integer status_id;			//状态id号
+	private String status_name;			//状态名称
 	private Long commit_time;			//更新时间,提交时间
+	private String hash;				//hash值?
+	public String getStatus_name() {
+		return status_name;
+	}
+	public void setStatus_name(String status_name) {
+		this.status_name = status_name;
+	}
 	public Integer getId() {
 		return id;
 	}
 	public void setId(Integer id) {
 		this.id = id;
 	}
-	public Integer getBusinessId() {
-		return businessId;
+	public Integer getBusiness_id() {
+		return business_id;
 	}
-	public void setBusinessId(Integer businessId) {
-		this.businessId = businessId;
+	public void setBusiness_id(Integer business_id) {
+		this.business_id = business_id;
 	}
 	public Integer getContract_id() {
 		return contract_id;
@@ -37,10 +45,10 @@ public class ContractRecord {
 	public void setContract_name(String contract_name) {
 		this.contract_name = contract_name;
 	}
-	public String getVersion() {
+	public Integer getVersion() {
 		return version;
 	}
-	public void setVersion(String version) {
+	public void setVersion(Integer version) {
 		this.version = version;
 	}
 	public String getContract_party() {
@@ -73,16 +81,23 @@ public class ContractRecord {
 	public void setUnconfirm_department(String unconfirm_department) {
 		this.unconfirm_department = unconfirm_department;
 	}
+	public Integer getStatus_id() {
+		return status_id;
+	}
+	public void setStatus_id(Integer status_id) {
+		this.status_id = status_id;
+	}
 	public Long getCommit_time() {
 		return commit_time;
 	}
 	public void setCommit_time(Long commit_time) {
 		this.commit_time = commit_time;
 	}
-	public Integer getStatusId() {
-		return statusId;
+	public String getHash() {
+		return hash;
 	}
-	public void setStatusId(Integer statusId) {
-		this.statusId = statusId;
+	public void setHash(String hash) {
+		this.hash = hash;
 	}
+	
 }

+ 15 - 2
ccb_fund_trusteeship/src/main/java/com/fuzamei/entity/ContractStatusTracking.java

@@ -3,11 +3,25 @@ package com.fuzamei.entity;
 public class ContractStatusTracking {
 	private Integer id;						//主键id
 	private Integer business_id;			//合同对应的业务id号
-	private String contract_name;			//合同名称
+	private Integer contract_id;			//合同id号
+	private String contract_name;			//合同名称(通过附件名获取)
+	private String url;						//合同下载地址
 	private String contract_party;			//签约方
 	private Long update_time;				//更新时间
 	private Integer status_id;				//状态id号
 	private String status_name;				//状态名
+	public String getUrl() {
+		return url;
+	}
+	public void setUrl(String url) {
+		this.url = url;
+	}
+	public Integer getContract_id() {
+		return contract_id;
+	}
+	public void setContract_id(Integer contract_id) {
+		this.contract_id = contract_id;
+	}
 	public Integer getId() {
 		return id;
 	}
@@ -50,5 +64,4 @@ public class ContractStatusTracking {
 	public void setUpdate_time(Long update_time) {
 		this.update_time = update_time;
 	}
-	
 }

+ 6 - 4
ccb_fund_trusteeship/src/main/java/com/fuzamei/mapper/BusinessDeclareMapper.xml

@@ -278,7 +278,8 @@
 							upload_department,
 							upload_person,
 							modify_opinion,
-							confirm_department,
+							unconfirm_department,
+							status_id,
 							commit_time,
 							hash)
 		values(#{businessId},
@@ -289,7 +290,8 @@
 			   #{uploadDepartment},
 			   #{uploadPerson},
 			   #{modifyOpinion},
-			   #{comfirmDepartment},
+			   #{uncomfirmDepartment},
+			   #{statusId}
 			   #{commitTime},
 			   #{hash})
 	</insert>
@@ -298,12 +300,12 @@
 	<insert id="insertContractInformationToContractStatusTracking">
 		insert into 
 			contract_status_tracking(business_id,
-									 contract_name,
+									 contract_id,
 									 contract_party,
 									 update_time,
 									 status_id)
 		values(#{businessId},
-			   #{contractName},
+			   #{contractId},
 			   #{contractParty},
 			   #{updateTime},
 			   #{statusId})

+ 67 - 4
ccb_fund_trusteeship/src/main/java/com/fuzamei/mapper/ContractManagementMapper.xml

@@ -7,7 +7,9 @@
 		select
 			sct.id,
 			sct.business_id,
-			sct.contract_name,
+			sct.contract_id,
+			att.attachment_name as contract_name,
+			att.url as url,
 			sct.contract_party,
 			sct.update_time,
 			sct.status_id,
@@ -18,6 +20,10 @@
 			status s
 		on
 			sct.status_id=s.status_id
+		left join 
+			attachment att
+		on 
+			sct.contract_id=att.attachment_id
 		<where>
 			<if test="businessId!=null">
 				sct.business_id=#{businessId}
@@ -56,12 +62,69 @@
 	
 	<!-- 根据条件查询所有符合条件的合同记录表(contract_record)表信息 -->
 	<select id="queryContractRecord" resultType="com.fuzamei.entity.ContractRecord">
-		
+		select 
+			cr.id,
+			cr.business_id,
+			cr.contract_id,
+			cr.contract_name,
+			cr.version,
+			cr.contract_party,
+			cr.upload_department,
+			cr.upload_person,
+			cr.modify_opinion,
+			cr.unconfirm_department,
+			s.status_name,
+			cr.status_id,
+			cr.commit_time,
+			cr.hash
+		from 
+			contract_record cr 
+		left join 
+			status s
+		on 
+			s.status_id=cr.status_id
+		where 
+			cr.business_id=#{businessId}
+		order by
+			cr.commit_time desc
+		limit
+			 #{startPage},#{rowNum}
 	</select>
 	
 	<!-- 根据条件查询所有符合条件的合同记录表(contract_record)信息条数 -->
-	<select id="" resultType="int">
-		
+	<select id="findAllContractRecordInformation" resultType="int">
+		select 
+			count(*)
+		from 
+			contract_record
+		where 
+			business_id=#{businessId}
+	</select>
+	
+	<!-- 根据业务id查询ContractStatusTracking的详细信息 -->
+	<select id="getContractStatusTrackingByBusinessId" resultType="com.fuzamei.entity.ContractStatusTracking">
+		select
+			sct.id,
+			sct.business_id,
+			sct.contract_id,
+			att.attachment_name as contract_name,
+			att.url as url,
+			sct.contract_party,
+			sct.update_time,
+			sct.status_id,
+			s.status_name
+		from
+			contract_status_tracking sct
+		left join
+			status s
+		on
+			sct.status_id=s.status_id
+		left join 
+			attachment att
+		on 
+			sct.contract_id=att.attachment_id
+		where
+			sct.business_id=#{businessId}
 	</select>
 	
 </mapper>

+ 4 - 1
ccb_fund_trusteeship/src/main/java/com/fuzamei/mapperInterface/ContractManagementMapper.java

@@ -3,6 +3,7 @@ package com.fuzamei.mapperInterface;
 import java.util.List;
 import java.util.Map;
 
+import com.fuzamei.entity.ContractRecord;
 import com.fuzamei.entity.ContractStatusTracking;
 
 public interface ContractManagementMapper {
@@ -11,8 +12,10 @@ public interface ContractManagementMapper {
 
 	int findAllContractStatusTrackingInformation(Map<String, Object> map);
 
-	List<ContractStatusTracking> queryContractRecord(Map<String, Object> map);
+	List<ContractRecord> queryContractRecord(Map<String, Object> map);
 
 	int findAllContractRecordInformation(Map<String, Object> map);
+
+	ContractStatusTracking getContractStatusTrackingByBusinessId(Integer businessId);
 	
 }

+ 5 - 3
ccb_fund_trusteeship/src/main/java/com/fuzamei/service/BusinessDeclareService.java

@@ -287,7 +287,7 @@ public class BusinessDeclareService {
 		UserDetail userDetail = (UserDetail) map.get("userDetail");
 		Integer businessId=(Integer) map.get("businessId");
 		Integer contractId=(Integer) map.get("contractId");
-		String contractName=(String) map.get("contractName");
+		String contractName=(String) map.get("contractName");	//就是上传的文件的文件名
 		String contractParty=(String) map.get("contractParty");
 		String hash=(String) map.get("hash");
 		String url=(String) map.get("url");
@@ -296,12 +296,14 @@ public class BusinessDeclareService {
 		mapToContractRecord.put("businessId", businessId);
 		mapToContractRecord.put("contractId", contractId);
 		mapToContractRecord.put("contractName", contractName);
-		mapToContractRecord.put("version", "v1.0");						//版本号先写死
+		mapToContractRecord.put("version", 1);						//版本号先写死,版本号已经改成int字段了
 		mapToContractRecord.put("contractParty", contractParty);
 		mapToContractRecord.put("uploadDepartment", userDetail.getOrganization_name());
 		mapToContractRecord.put("uploadPerson", userDetail.getPerson_name());
 		mapToContractRecord.put("modifyOpinion", "初始版本合同");			//这个先写死
-		mapToContractRecord.put("comfirmDepartment", "管理人");			//这个先写死
+		//这个按照这个格式【管理人&省分行业务主管部门&省分行法律部】先写死
+		mapToContractRecord.put("uncomfirmDepartment", Role.ADMIN+"&"+Role.BUSINESS_CHIEF_DEP_OF_PBB+"&"+Role.LAW_DEP_OF_PBB);
+		mapToContractRecord.put("statusId", StatusId.INVALID);						//刚刚提交必定是未生效(19)
 		mapToContractRecord.put("commitTime", currentTime);
 		mapToContractRecord.put("hash", hash);
 		businessDeclareDao.insertContractInformationToContractRecord(mapToContractRecord);					//将合同信息插入到【合同提交记录表】

+ 10 - 1
ccb_fund_trusteeship/src/main/java/com/fuzamei/service/ContractManagementService.java

@@ -7,6 +7,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import com.fuzamei.dao.ContractManagementDao;
+import com.fuzamei.entity.ContractRecord;
 import com.fuzamei.entity.ContractStatusTracking;
 import com.fuzamei.utils.PageDTO;
 
@@ -30,11 +31,19 @@ public class ContractManagementService {
 	public PageDTO queryContractRecord(Map<String, Object> map) {
 		PageDTO pageDTO = new PageDTO();
 		//分页信息
-		List<ContractStatusTracking> list = contractManagementDao.queryContractRecord(map);
+		List<ContractRecord> list = contractManagementDao.queryContractRecord(map);
 		//查询符合map中条件的条数
 		int count = contractManagementDao.findAllContractRecordInformation(map);
 		pageDTO.setRows(list);
 		pageDTO.setTotal(count);
 		return pageDTO;
 	}
+
+	public ContractStatusTracking getContractStatusTrackingByBusinessId(Integer businessId) {
+		return contractManagementDao.getContractStatusTrackingByBusinessId(businessId);
+	}
+
+	public void uploadContractByUser(Map<String, Object> mapToService) {
+		long currentTime = System.currentTimeMillis();
+	}
 }

+ 2 - 8
ccb_fund_trusteeship/src/main/java/com/fuzamei/web/BusinessDeclareAction.java

@@ -358,15 +358,11 @@ public class BusinessDeclareAction {
 			int userId=ValidationUtil.checkAndAssignInt(uId);
 			UserDetail userDetail = userAuthoricationService.checkUserAuthority(userId,Role.BUSINESS_DEP_OF_PBB);//查看用户非空和权限(只有【经办支行】有这个权限操作)
 			//首先保证文件不能为空
-			if(file.isEmpty()){
-				throw new RuntimeException("上传文件不能为空");
-			}
+			if(file.isEmpty()) throw new RuntimeException("上传文件不能为空");
 			//合同文件名
 			String filename = file.getOriginalFilename();				
 			//判断上传文件格式是否正确
-			if(!(filename.endsWith(".xls")||filename.endsWith("xlsx"))){
-				throw new RuntimeException("上传文件格式不对");
-			}
+			if(!(filename.endsWith(".xls")||filename.endsWith("xlsx")))	throw new RuntimeException("上传文件格式不对");
 			//确定好上传的文件的顶级父级路径=======================================================================>>待定TODO
 			String path = request.getServletContext().getRealPath("");			//SP是系统分隔符
 			String relativePath = RelativePathUtil.formatPath("/"+userId, "");	//生成文件的相对保存路径
@@ -377,8 +373,6 @@ public class BusinessDeclareAction {
 			Map<String, Object> mapToService =new LinkedHashMap<String, Object>();		//这个map用于存储所有要去service的数据
 			mapToService.put("businessId", businessId);									//将业务id先写死,到时候还要再进行修改。。。。。TODO
 			mapToService.put("contractParty", "建行省分行&信托公司");						//合同的签约方。。。TODO。。。。【这里先写死,可能通过上传的合同文件获取签约方的信息】
-//			mapToService.put("uploadDepartment", userDetail.getOrganization_name());		//上传部门按照组织名来写
-//			mapToService.put("uploadPerson", userDetail.getPerson_name());				//上传人员写活♥
 			mapToService.put("contractId", attachmentId);								//将合同的id写活♥
 			mapToService.put("contractName",filename);									//合同名称,用于存在attachment中的附件名=====================>>和同名到底是文件名还是文件里面的标题?TODO
 			mapToService.put("url", relativePath+filename);								//将文件下载路径url通过map传到service层进行校验

+ 77 - 1
ccb_fund_trusteeship/src/main/java/com/fuzamei/web/ContractManagementAction.java

@@ -1,23 +1,32 @@
 package com.fuzamei.web;
 
+import java.io.File;
 import java.util.LinkedHashMap;
 import java.util.Map;
 
+import javax.servlet.http.HttpServletRequest;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.multipart.MultipartFile;
 
 import com.alibaba.fastjson.JSON;
 import com.fuzamei.constant.HintMSG;
 import com.fuzamei.constant.Role;
+import com.fuzamei.constant.StatusId;
+import com.fuzamei.entity.ContractStatusTracking;
 import com.fuzamei.entity.UserDetail;
+import com.fuzamei.service.AttachmentService;
 import com.fuzamei.service.ContractManagementService;
 import com.fuzamei.service.UserAuthoricationService;
 import com.fuzamei.utils.JSONUtil;
 import com.fuzamei.utils.PageDTO;
+import com.fuzamei.utils.RelativePathUtil;
 import com.fuzamei.utils.ValidationUtil;
 
 /**
@@ -35,6 +44,9 @@ public class ContractManagementAction {
 	@Autowired
 	private UserAuthoricationService userAuthoricationService;
 	
+	@Autowired
+	private AttachmentService attachmentService;
+	
 	private static final int ROW_NUM = 10; // 分页每页显示数据的数量
 	/**
 	 * 
@@ -109,7 +121,7 @@ public class ContractManagementAction {
 	 */
 	@RequestMapping(value="/queryContractRecordByBusinessId",method=RequestMethod.POST)
 	@ResponseBody
-	public Map<String, Object> queryContractRecordByBusinessId(@RequestBody String data){
+	private Map<String, Object> queryContractRecordByBusinessId(@RequestBody String data){
 		try {
 			System.out.println("查询合同状态跟踪表....");
 			@SuppressWarnings("unchecked")
@@ -131,5 +143,69 @@ public class ContractManagementAction {
 		}
 	}
 	
+	/**
+	 * 上传新版本合同操作
+	* @Title: uploadNewVersionContract
+	* @Description: TODO(这里用一句话描述这个方法的作用)
+	* @param @return    设定文件
+	* @return Map<String,Object>    返回类型
+	* @author ylx
+	* @date 2018年1月8日 下午7:40:51
+	* @throws
+	 */
+	@RequestMapping(value="/uploadNewVersionContract")
+	@ResponseBody
+	private Map<String, Object> uploadNewVersionContract(@RequestParam("file") MultipartFile file,
+														 @RequestParam("userId") Object uId,
+														 @RequestParam("modifyOpinion") String mOpinion,
+														 @RequestParam("businessId") Object bId,
+														 HttpServletRequest request){
+		try {
+			System.out.println("上传新版本合同操作....");
+			if(file.isEmpty()) throw new RuntimeException("文件不能为空");
+			String filename = file.getOriginalFilename();
+			if(!filename.endsWith(".pdf")||!filename.endsWith(".doc")||!filename.endsWith(".docx")) throw new RuntimeException("文件上传格式不正确");
+			int userId = ValidationUtil.checkAndAssignInt(uId);
+			//只有管理员,省分行业务主管部门,省分行法律部才有权限可以查看
+			UserDetail userDetail = userAuthoricationService.checkUserAuthority(userId, Role.ADMIN,Role.BUSINESS_CHIEF_DEP_OF_PBB,Role.LAW_DEP_OF_PBB);
+			//这里的businessId是必查条件,所以不能默认为null,应该强制转换成int类型
+			Integer businessId = ValidationUtil.checkAndAssignInt(bId);
+			String modifyOpinion = ValidationUtil.checkBlankAndAssignString(mOpinion);
+			ContractStatusTracking contractStatusTracking = contractManagementService.getContractStatusTrackingByBusinessId(businessId);
+			if(contractStatusTracking==null) throw new RuntimeException("无该合同信息");
+			//如果已经确认过报错
+			if(contractStatusTracking.getStatus_id()==StatusId.CONFIRMED) throw new RuntimeException("合同已确认");//已确认id是8
+			
+			//确定好上传的文件的顶级父级路径=======================================================================>>待定TODO
+			String path = request.getServletContext().getRealPath("");			//SP是系统分隔符
+			String relativePath = RelativePathUtil.formatPath("/"+userId, "");	//生成文件的相对保存路径
+			
+			int contractId = attachmentService.generateAtachmentId();//生成不重复的附件id号
+			
+			Map<String, Object> mapToService = new LinkedHashMap<String, Object>();
+			mapToService.put("contractId", contractId);
+			mapToService.put("contractName", filename);
+			mapToService.put("modifyOpinion", modifyOpinion);
+			mapToService.put("userDetail", userDetail);
+			mapToService.put("hash", "to be calculated");	//文件hash待定
+			contractManagementService.uploadContractByUser(mapToService);
+			
+			String pathFile=path+relativePath+filename;
+			File newFile = new File(pathFile);
+			//==========文件上传开始============
+			File dir=new File(path+relativePath);
+			if(!dir.exists()){
+				dir.mkdirs();
+			}
+			file.transferTo(newFile);											//将---合同---文件上传到指定的文件夹下
+			//==========文件上传结束============
+			
+			return JSONUtil.getJsonMap(200, true, HintMSG.UPLOAD_SUCCESS, null);
+		} catch (Exception e) {
+			return JSONUtil.getJsonMap(500, false, HintMSG.UPLOAD_FAIL+":"+e.getMessage(), null);
+		}
+	}
+	
+	
 	
 }

+ 1 - 1
ccb_fund_trusteeship/src/main/java/com/fuzamei/web/OperationHistoryAction.java

@@ -49,7 +49,7 @@ public class OperationHistoryAction {
 	 */
 	@RequestMapping(value="/queryOperationHistoryInformation",method=RequestMethod.POST)
 	@ResponseBody
-	public Map<String,Object> queryOperationHistoryInformation(@RequestBody String data){
+	private Map<String,Object> queryOperationHistoryInformation(@RequestBody String data){
 		try {
 			System.out.println("查询操作记录信息....");
 			@SuppressWarnings("unchecked")

+ 5 - 5
ccb_fund_trusteeship/src/main/java/com/fuzamei/web/ProjectFileAction.java

@@ -71,7 +71,7 @@ public class ProjectFileAction {
 	 */
 	@RequestMapping(value = "/queryProjectFileInformation")
 	@ResponseBody
-	public Map<String, Object> queryProjectFileInformation(@RequestBody String data) {
+	private Map<String, Object> queryProjectFileInformation(@RequestBody String data) {
 		try {
 			System.out.println("查询项目文档记录信息....");
 			@SuppressWarnings("unchecked")
@@ -120,7 +120,7 @@ public class ProjectFileAction {
 	@SuppressWarnings("unchecked")
 	@RequestMapping(value = "/checkoutProjectFiles")
 	@ResponseBody
-	public Map<String, Object> checkoutProjectFiles(@RequestBody String data){
+	private Map<String, Object> checkoutProjectFiles(@RequestBody String data){
 		try {
 			System.out.println("项目文档查看....");
 			Map<String, Object> map = JSON.parseObject(data, Map.class);	// 将前端传过来的json数据转化为map对象,并将map对象传入service层进行数据校验
@@ -152,7 +152,7 @@ public class ProjectFileAction {
 	 */
 	@RequestMapping(value="/downloadProjectFile")
 	@ResponseBody
-	public Map<String, Object> download(HttpServletRequest request,HttpServletResponse response,@RequestParam("url") String url,@RequestParam("userId") Object uId) {
+	private Map<String, Object> download(HttpServletRequest request,HttpServletResponse response,@RequestParam("url") String url,@RequestParam("userId") Object uId) {
 		try {
 			int userId=ValidationUtil.checkAndAssignInt(uId);
 //			userAuthoricationService.checkUserAuthority(userId,Role.SUPERVISION_AGENCY,Role.ARCHIVE_KEEPING_POS_OF_PBBTBC);//查看用户是否为空及是否有权限下载项目文档文件
@@ -200,7 +200,7 @@ public class ProjectFileAction {
 	@SuppressWarnings("unchecked")
 	@RequestMapping(value = "/showUploadProjectFileInterface")
 	@ResponseBody
-	public Map<String, Object> showUploadProjectFileInterface(@RequestBody String data){
+	private Map<String, Object> showUploadProjectFileInterface(@RequestBody String data){
 		try {
 			Map<String,Object> map = JSON.parseObject(data, Map.class);
 			int userId = ValidationUtil.checkAndAssignInt(map.get("userId"));									//userId只要是一个int类型即可
@@ -235,7 +235,7 @@ public class ProjectFileAction {
 	 */
 	@RequestMapping(value="/uploadProjetcFile",method=RequestMethod.POST)
 	@ResponseBody
-	public Map<String, Object> upload(@RequestParam("file") MultipartFile file,//================================>>多文件上传?待定TODO
+	private Map<String, Object> upload(@RequestParam("file") MultipartFile file,//================================>>多文件上传?待定TODO
 									@RequestParam("projectId") String pId,
 									@RequestParam("projectName") String pName,
 									@RequestParam("userId") Object uId,