Explorar el Código

开发下载项目方位报告模板功能扫描二维码展示项目基础数据

user5 hace 4 años
padre
commit
53f24bf438

+ 7 - 0
src/main/java/com/jeeplus/modules/projectcontentinfo/dao/ProjectReportDataDao.java

@@ -109,4 +109,11 @@ public interface ProjectReportDataDao extends CrudDao<ProjectReportData> {
      * @return
      */
     ProjectReportData findInfoByStatus(ProjectReportData projectReportData);
+
+    /**
+     * 根据项目id查询报告信息
+     * @param projectId
+     * @return
+     */
+    ProjectReportData getProjectReportData(String projectId);
 }

+ 9 - 0
src/main/java/com/jeeplus/modules/projectcontentinfo/entity/ProjectReportData.java

@@ -59,6 +59,7 @@ public class ProjectReportData extends ActEntity<ProjectReportData> {
 	private List<WorkReviewAudit> projectReviewList;
 	private String reportId;
 	private String numberPath;
+	private String tempType;    //模板类型
 
 	public String getNumberPath() {
 		return numberPath;
@@ -589,4 +590,12 @@ public class ProjectReportData extends ActEntity<ProjectReportData> {
 	public void setConditionType(String conditionType) {
 		this.conditionType = conditionType;
 	}
+
+	public String getTempType() {
+		return tempType;
+	}
+
+	public void setTempType(String tempType) {
+		this.tempType = tempType;
+	}
 }

+ 10 - 0
src/main/java/com/jeeplus/modules/projectcontentinfo/service/ProjectReportDataService.java

@@ -1538,4 +1538,14 @@ public class ProjectReportDataService extends CrudService<ProjectReportDataDao,
 			return projectRecordTreeDataList;
 	}
 
+	/**
+	 * 根据项目id查询报告信息
+	 * @param projectId
+	 * @return
+	 */
+	public ProjectReportData getReportDataByProjectId(String projectId) {
+		ProjectReportData projectReportData = dao.getProjectReportData(projectId);
+		return projectReportData;
+	}
+
 }

+ 9 - 7
src/main/java/com/jeeplus/modules/ruralprojectrecords/service/RuralProjectMessageService.java

@@ -1097,11 +1097,6 @@ public class RuralProjectMessageService extends CrudService<RuralProjectMessageD
                         ""
                 );
         List<User> users = new ArrayList<>();
-        if (insert) {
-            projectReportDataService.insert(projectReportData);
-        }else {
-            projectReportDataService.save(projectReportData);
-        }
         //总工
         List<User> bzshbsList = UserUtils.getByRoleActivityEnname("bzshb",3,recordsOffice.getId(),"12",projectReportData.getCreateBy());
         List<User> bzshbs = new ArrayList<>();
@@ -1114,11 +1109,18 @@ public class RuralProjectMessageService extends CrudService<RuralProjectMessageD
                 }
             }
             if(bzshbs.size()==0){
-                return "流程总审审批人不能为空,请联系管理员!";
+                return "流程总审审批人不能为空,请联系管理员变更!";
             }
         }else{
-            return "流程总审审批人不能为空,请联系管理员!";
+            return "流程总审审批人不能为空,请联系管理员变更!";
+        }
+
+        if (insert) {
+            projectReportDataService.insert(projectReportData);
+        }else {
+            projectReportDataService.save(projectReportData);
         }
+
         //盖章人
         //List<User> gzrs = UserUtils.getByRoleActivityEnname("gzr",3,recordsOffice.getId(),"12",projectReportData.getCreateBy());
         if (com.jeeplus.common.utils.StringUtils.isNotBlank(workActivityMenu.getId())) {

+ 4 - 0
src/main/java/com/jeeplus/modules/ruralprojectrecords/service/RuralProjectRecordsService.java

@@ -720,10 +720,12 @@ public class RuralProjectRecordsService extends CrudService<RuralProjectRecordsD
 					if ("yes".equals(projectRecords.getAct().getFlag())) {
 						workActivityProcess.setIsApproval("1");
 						vars.put("pass", true);
+						vars.put("passs", true);
 						notifyRole = "审批通过";
 					} else {
 						workActivityProcess.setIsApproval("2");
 						vars.put("pass", false);
+						vars.put("passs", false);
 						user = createUser;
 						notifyRole = "调整项目";
 					}
@@ -736,10 +738,12 @@ public class RuralProjectRecordsService extends CrudService<RuralProjectRecordsD
 					if("yes".equals(projectRecords.getAct().getFlag())){
 						workActivityProcess.setIsApproval("1");
 						vars.put("pass",true);
+						vars.put("passs",true);
 					}else{
 						workActivityProcess.setIsApproval("2");
 						projectRecords.setProjectStatus(ProjectStatusEnum.RECALL.getValue());
 						vars.put("pass",false);
+						vars.put("passs",false);
 					}
 					break;
 				}

+ 15 - 2
src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralProjectMessageController.java

@@ -207,7 +207,11 @@ public class RuralProjectMessageController extends BaseController {
     public String saveReport(Projectcontentinfo projectcontentinfo, Model model,RedirectAttributes redirectAttributes) {
         try{
             String str = ruralProjectMessageService.saveData(projectcontentinfo,2);
-            addMessage(redirectAttributes, "发起报告审批"+(str.equals("true")?"成功":"失败"));
+            if(str.equals("true") || str.equals("false")){
+                addMessage(redirectAttributes, "发起报告审批"+(str.equals("true")?"成功":"失败"));
+            } else{
+                addMessage(redirectAttributes, str);
+            }
             ProjectReportData projectReportData = projectcontentinfo.getProjectReportData();
             if (projectReportData!=null){
                 if (StringUtils.isNotBlank(projectcontentinfo.getEdit()) && projectcontentinfo.getEdit().equals("edit")){
@@ -681,5 +685,14 @@ public class RuralProjectMessageController extends BaseController {
         }
         return "redirect:"+Global.getAdminPath()+"/ruralProject/ruralProjectMessage/?repage";
     }
-
+    /**
+     * 编辑项目表单页面
+     */
+    @RequestMapping(value = "skipDownloadFtl")
+    public String skipDownloadFtl(RuralProjectRecords projectRecords, Model model) {
+        ProjectReportData projectReportData = projectReportDataService.getReportDataByProjectId(projectRecords.getId());
+        model.addAttribute("projectReportData", projectReportData);
+        model.addAttribute("projectId", projectRecords.getId());
+        return "modules/ruralprojectrecords/ruralporjectmessage/downloadType/downloadForm";
+    }
 }

+ 16 - 0
src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralProjectRecordsController.java

@@ -643,4 +643,20 @@ public class RuralProjectRecordsController extends BaseController {
 		}
 		return null;
 	}
+
+
+	/**
+	 * 获取下载文件的项目信息接口
+	 * @param projectRecords
+	 * @param model
+	 * @return
+	 */
+	@RequestMapping(value = "getDownloadProjectView")
+	public String getDownloadProjectView(RuralProjectRecords projectRecords, Model model) {
+		if (projectRecords!=null&&StringUtils.isNotBlank(projectRecords.getId())) {
+			projectRecordsService.queryProjectDetail(projectRecords);
+		}
+		model.addAttribute("projectRecords", projectRecords);
+		return "modules/ruralprojectrecords/ruralporjectmessage/downloadType/downloadProjectView";
+	}
 }

+ 83 - 4
src/main/java/com/jeeplus/modules/workfullmanage/web/WorkFullManageController.java

@@ -11,17 +11,16 @@ import com.jeeplus.common.config.Global;
 import com.jeeplus.common.mapper.JsonMapper;
 import com.jeeplus.common.oss.OSSClientUtil;
 import com.jeeplus.common.persistence.Page;
-import com.jeeplus.common.utils.DateUtils;
-import com.jeeplus.common.utils.IdGen;
-import com.jeeplus.common.utils.MyBeanUtils;
-import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.common.utils.*;
 import com.jeeplus.common.utils.excel.ExportExcel;
 import com.jeeplus.common.utils.excel.ImportExcel;
 import com.jeeplus.common.web.BaseController;
+import com.jeeplus.modules.projectcontentinfo.entity.ProjectReportData;
 import com.jeeplus.modules.sys.entity.Role;
 import com.jeeplus.modules.sys.service.SystemService;
 import com.jeeplus.modules.sys.utils.DictUtils;
 import com.jeeplus.modules.sys.utils.UserUtils;
+import com.jeeplus.modules.tools.utils.TwoDimensionCode;
 import com.jeeplus.modules.workclientinfo.entity.WorkClientAttachment;
 import com.jeeplus.modules.workclientinfo.entity.WorkClientInfo;
 import com.jeeplus.modules.workclientinfo.entity.WorkClientLinkman;
@@ -37,10 +36,12 @@ import com.jeeplus.modules.workproject.entity.WorkProject;
 import com.jeeplus.modules.workproject.service.WorkProjectService;
 import com.jeeplus.modules.workprojectnotify.service.WorkProjectNotifyService;
 import com.jeeplus.modules.workprojectnotify.util.UtilNotify;
+import freemarker.template.Configuration;
 import org.apache.commons.lang.ArrayUtils;
 import org.apache.shiro.authz.annotation.Logical;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.*;
@@ -50,6 +51,7 @@ import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
 import javax.validation.ConstraintViolationException;
 import java.io.*;
 import java.net.HttpURLConnection;
@@ -57,6 +59,7 @@ import java.net.URL;
 import java.net.URLDecoder;
 import java.net.URLEncoder;
 import java.util.*;
+import freemarker.template.Template;
 
 /**
  * 全过程管理Controller
@@ -94,6 +97,12 @@ public class WorkFullManageController extends BaseController {
 	@Autowired
 	private WorkFullSurveyService workFullSurveyService;
 
+	//生产环境域名
+	@Value("${serverDomain}")
+	private String serverDomain;
+
+	private static final String FILE_NAME = "防伪报告模板.doc";
+
 	@ModelAttribute
 	public WorkFullManage get(@RequestParam(required=false) String id) {
 		WorkFullManage entity = null;
@@ -742,4 +751,74 @@ public class WorkFullManageController extends BaseController {
 		return result;
 
 	}
+
+	@RequestMapping(value="downloadDoc")
+	@ResponseBody
+	public void downloadDoc(HttpServletResponse response, ProjectReportData projectReportData)  {
+		String number = projectReportData.getNumber();
+		String[] numFront=number.split("【");
+		List list = new ArrayList();
+		for (int i = 0; i<numFront.length;i++){
+			if(!numFront[i].contains("】")){
+				list.add(numFront[i]);
+			}else{
+				String[] numLater=numFront[i].split("】");
+				if(numLater.length>0){
+					for (int j = 0; j<numLater.length;j++){
+						list.add(numLater[j]);
+					}
+				}
+			}
+		}
+
+		String reportNo = projectReportData.getNumber();
+		try {
+			reportNo = URLEncoder.encode(URLEncoder.encode(reportNo,"utf-8"),"utf-8");
+		} catch (UnsupportedEncodingException e) {
+			e.printStackTrace();
+		}
+		String querySite = serverDomain+"/ruralProject/ruralProjectRecords/getDownloadProjectView?id="+projectReportData.getProject().getId();
+		//模板对象
+		Template template=null;
+		//freemaker模板路径
+		File path = new File(this.getClass().getResource("/").getPath()+"/freemarker");
+		Configuration cfg = new Configuration();
+		try {
+			cfg.setDirectoryForTemplateLoading(path);
+//            前台传入的tempType即是对应ftl模板的文件名
+			template = cfg.getTemplate(projectReportData.getTempType()+".ftl","UTF-8");
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+		//freemarker参数值准备
+		Map<String,Object> data  = new HashMap<>();
+		data.put("repType",list.get(0));
+		data.put("repYear",list.get(1));
+		data.put("repNum",list.get(2));
+		data.put("querySite","re.xgccpm.com/ccpm_query");
+
+		//生成二维码图片和doc文档 缓存文件的共用名称
+		String commonFileName = UUID.randomUUID().toString();
+		String tempPath = this.getClass().getResource("/").getPath()+"/temp/";
+		File temP = new File(tempPath);
+		if(!temP.exists()){
+			temP.mkdirs();
+		}
+		String qrCodePath = tempPath + commonFileName + ".png";
+		TwoDimensionCode.encoderQRCode(querySite, qrCodePath, "png");//执行生成二维码
+		String imageStr = ImageUtil.getImageStr(qrCodePath);
+		data.put("qrcode",imageStr);
+		String pa = this.getClass().getResource("/").getPath();
+
+		File docFile = new File(tempPath+commonFileName+".doc");
+		FreemarkerUtil.generateFile(data,template,docFile);
+
+		ResponseUtil.docResponse(FILE_NAME,docFile,response);
+
+		if(docFile != null) docFile.delete(); // 删除doc临时文件
+		File imageFile = new File(qrCodePath);
+		if(imageFile.exists() && imageFile.isFile()) {
+			imageFile.delete();//删除二维码图片临时文件
+		}
+	}
 }

+ 9 - 0
src/main/resources/mappings/modules/projectcontentinfo/ProjectReportDataDao.xml

@@ -767,4 +767,13 @@
 		</choose>
 	</select>
 
+	<select id="getProjectReportData" resultType="com.jeeplus.modules.projectcontentinfo.entity.ProjectReportData">
+		select a.id,a.name,a.number,a.type as pid,a.report_type as reportType,
+		a.review_standard as reviewStandard,a.achievement_type as achievementType,
+		a.create_date as createDate,a.status as fileStatus,a.create_by as createBy
+		from project_report_data a
+		where a.del_flag = 0 AND a.project_id = #{projectId}
+		limit 1
+	</select>
+
 </mapper>

+ 1 - 0
src/main/resources/spring-context-shiro.xml

@@ -18,6 +18,7 @@
                 /userfiles/** = anon
                 ${adminPath}/workMaterialCollect/total/** = anon
                 ${adminPath}/weChatCallBack/** = anon
+                ${adminPath}/ruralProject/ruralProjectMessage/skipDownloadFtl = anon
                 ${adminPath}/weXin/theOrder/** = anon
                 ${adminPath}/webpage/weixin/orderMeal.jsp = anon
                 ${adminPath}/webpage/weixin/error.jsp = anon

+ 5 - 0
src/main/webapp/static/common/css/style.css

@@ -9499,6 +9499,11 @@ a.attention-info.a_visited{
 .single-form{
     min-width: 940px;
 }
+
+/*设置form表单宽度*/
+.single-form-small{
+    min-width: 500px;
+}
 .container1,
 .container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}
 /*默认最小宽度940,所以最小设为940 - 15 * 2*/

+ 1 - 0
src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/ruralProjectMessageList.jsp

@@ -343,6 +343,7 @@
 
 						/*归档相关按钮*/
 						if(d.projectReportStatus == 5){
+							xml+="<a href=\"#\" style='background-color: #FFB800' onclick=\"openDialogre('下载报告模板', '${ctx}/ruralProject/ruralProjectMessage/skipDownloadFtl?id=" + d.id +"','35%', '35%','','下载,关闭')\" class=\"op-btn\" > 下载报告模板</a>";
 							if(d.recordAdd != undefined && d.recordAdd =="1")
 							{
 								xml+="<a href=\"#\" onclick=\"openDialogre('新增归档信息', '${ctx}/ruralProject/ruralProjectMessage/formRecord?reportId=" + d.id +"','95%', '95%','','送审,暂存,关闭')\" class=\"op-btn layui-bg-green\" ><i class=\"fa fa-plus\"></i> 新增归档信息</a>";