浏览代码

修改全过程咨询报告

[user3] 3 年之前
父节点
当前提交
9ef26acecd

+ 61 - 2
src/main/java/com/jeeplus/modules/projectConstruction/web/ContractController.java

@@ -28,12 +28,15 @@ import com.jeeplus.modules.projectcontentinfo.entity.*;
 import com.jeeplus.modules.projectcontentinfo.service.*;
 import com.jeeplus.modules.projectcontroltable.entity.ProjectControlTable;
 import com.jeeplus.modules.projectcontroltable.service.ProjectControlTableService;
+import com.jeeplus.modules.projectrecord.dao.monthly.MonthlyConsultationReportDao;
 import com.jeeplus.modules.projectrecord.entity.*;
 import com.jeeplus.modules.projectrecord.enums.ProjectStatusEnum;
 import com.jeeplus.modules.projectrecord.service.ProjectImplementEarlyService;
 import com.jeeplus.modules.projectrecord.service.ProjectRecordsService;
 import com.jeeplus.modules.projectrecord.service.early.ProjectEarlyReviewService;
 import com.jeeplus.modules.projectrecord.service.monthly.MonthlyConsultationReportService;
+import com.jeeplus.modules.projectreportnum.dao.ProjectReportNumDao;
+import com.jeeplus.modules.projectreportnum.entity.ReportNum;
 import com.jeeplus.modules.sys.entity.MainDictDetail;
 import com.jeeplus.modules.sys.entity.Office;
 import com.jeeplus.modules.sys.entity.Role;
@@ -100,6 +103,12 @@ public class ContractController extends BaseController {
     private ActTaskService actTaskService;
     @Autowired
     private UserService userService;
+    @Autowired
+    private MonthlyConsultationReportDao monthlyConsultationReportDao;
+    @Autowired
+    private ProjectReportNumDao projectReportNumDao;
+
+    private static byte[] SYN_BYTE = new byte[0];
 
     /*@ModelAttribute
     public ConstructionContract get(@RequestParam(required=false) String id) {
@@ -577,7 +586,35 @@ public class ContractController extends BaseController {
             }
             return "modules/projectrecord/workContentFromAndView/workFollowForm";
         }
-
+        //获取编号
+        //查询项目报告号前缀
+        String projectNumPrefix = monthlyConsultationReportDao.getProjectNum(projectFollowReport.getProject().getId());
+        projectNumPrefix += "-ZX-";
+
+        //获取最后一个报告号数据信息
+        ReportNum reportNum = new ReportNum();
+        reportNum.setNum(projectNumPrefix);
+        ReportNum lastReportNum = projectReportNumDao.getLastReportNum(reportNum);
+        //判断是否是新的报告号
+        if (null != lastReportNum){
+            //不是
+            lastReportNum.getNum().lastIndexOf("-");
+            //截取最后四位流水号
+            String substring = lastReportNum.getNum().substring(lastReportNum.getNum().lastIndexOf("-")+1, lastReportNum.getNum().length());
+            //转换为数字并递增
+            Integer substringInteger = Integer.parseInt(substring)+1;
+            //生成新的流水号
+            StringBuffer newSerialNum = new StringBuffer();
+            for(int x = 0; x < (4 - substringInteger.toString().length()); x++) {
+                newSerialNum.append("0");
+            }
+            newSerialNum.append(substringInteger);
+            reportNum.setNum(reportNum.getNum()+newSerialNum);
+        }else{
+            //是则在后面添加0001初始报告号
+            reportNum.setNum(reportNum.getNum()+"0001");
+        }
+        projectFollowReport.setProjectFollowId(reportNum.getNum());
         //查询真实总审人员信息
         List<User> auditUserList = userService.getAuditUserListByType("2");
         projectFollowReport.setBzshbUserList(auditUserList);
@@ -626,7 +663,29 @@ public class ContractController extends BaseController {
             projectImplementEarlyService.updateFollow(projectFollowReport);
         } else {
             //进行新增操作
-            projectImplementEarlyService.insertFollow(projectFollowReport);
+            synchronized (SYN_BYTE) {
+                projectImplementEarlyService.insertFollow(projectFollowReport);
+            }
+        }
+        return "redirect:" + Global.getAdminPath() + "/project/constructionContract/projectFollow";
+    }
+    /**
+     * 暂存操作
+     * @param projectFollowReport
+     * @param model
+     * @param redirectAttributes
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping(value = "storFollow")
+    public String storFollow(ProjectFollowReport projectFollowReport, Model model, RedirectAttributes redirectAttributes) throws Exception {
+        //查询项目信息
+        ProjectRecords records = projectRecordsService.getQueryProjectUsers(projectFollowReport.getProject().getId());
+        //将项目信息放入跟踪咨询报告中
+        projectFollowReport.setProject(records);
+        //进行新增操作
+        synchronized (SYN_BYTE) {
+            projectImplementEarlyService.storFollow(projectFollowReport);
         }
         return "redirect:" + Global.getAdminPath() + "/project/constructionContract/projectFollow";
     }

+ 79 - 0
src/main/java/com/jeeplus/modules/projectrecord/service/ProjectImplementEarlyService.java

@@ -318,6 +318,85 @@ public class ProjectImplementEarlyService extends CrudService<ProjectImplementEa
     }
 
     /**
+     * 暂存跟踪咨询报告信息
+     * @param projectFollowReport
+     * @throws Exception
+     */
+    @Transactional(readOnly = false)
+    public void storFollow(ProjectFollowReport projectFollowReport) throws Exception {
+        projectFollowReport.setStatus(ProjectStatusEnum.TSTORE.getValue());
+        //查询项目报告号前缀
+        String projectNumPrefix = monthlyConsultationReportDao.getProjectNum(projectFollowReport.getProject().getId());
+        projectNumPrefix += "-ZX-";
+
+        //获取最后一个报告号数据信息
+        ReportNum reportNum = new ReportNum();
+        reportNum.setNum(projectNumPrefix);
+        ReportNum lastReportNum = projectReportNumDao.getLastReportNum(reportNum);
+        //判断是否是新的报告号
+        if (null != lastReportNum){
+            //不是
+            lastReportNum.getNum().lastIndexOf("-");
+            //截取最后四位流水号
+            String substring = lastReportNum.getNum().substring(lastReportNum.getNum().lastIndexOf("-")+1, lastReportNum.getNum().length());
+            //转换为数字并递增
+            Integer substringInteger = Integer.parseInt(substring)+1;
+            //生成新的流水号
+            StringBuffer newSerialNum = new StringBuffer();
+            for(int x = 0; x < (4 - substringInteger.toString().length()); x++) {
+                newSerialNum.append("0");
+            }
+            newSerialNum.append(substringInteger);
+            reportNum.setNum(reportNum.getNum()+newSerialNum);
+        }else{
+            //是则在后面添加0001初始报告号
+            reportNum.setNum(reportNum.getNum()+"0001");
+        }
+        reportNum.preInsert();
+        //报告号进行新增操作
+        projectReportNumDao.insert(reportNum);
+        projectFollowReport.setProjectFollowId(reportNum.getNum());
+
+        //跟踪咨询报告信息进行新增操作
+        projectFollowReport.preInsert();
+        projectFollowReportDao.insertFollow(projectFollowReport);
+        //保存月报基本信息
+        ProjectContentData projectContentData = projectFollowReport.getProjectContentData();
+        //保存依据资料信息
+        if(projectContentData.getProjectBasedDataList()!=null&&!projectContentData.getProjectBasedDataList().isEmpty()){
+            for (ProjectBasedData data:projectContentData.getProjectBasedDataList()) {
+                if (data.getDelFlag().equals("0")){
+                    List<ProjectBasedData> projectBasedData = new ArrayList<>();
+                    projectBasedData.add(data);
+                    projectContentDataService.saveBasedData(projectFollowReport.getId(),projectBasedData);
+                }
+            }
+        }
+        if (projectFollowReport.getWorkAttachments()!=null && !projectFollowReport.getWorkAttachments().isEmpty()) {
+            //保存附件信息
+            for (Workattachment workattachment : projectFollowReport.getWorkAttachments()) {
+                if (workattachment.getId() == null) {
+                    continue;
+                }
+                if (workattachment.DEL_FLAG_NORMAL.equals(workattachment.getDelFlag())) {
+                    workattachment.setAttachmentId(projectFollowReport.getId());
+                    workattachment.setAttachmentUser(UserUtils.getUser().getId());
+                    if (StringUtils.isBlank(workattachment.getId()) || "null".equals(workattachment.getId())) {
+                        //新增
+                        workattachmentService.insertOnWorkAttachment(workattachment);
+                    } else {
+                        //修改
+                        workattachmentService.updateOnWorkAttachment(workattachment);
+                    }
+                } else {
+                    //删除
+                    workattachmentDao.delete(workattachment);
+                }
+            }
+        }
+    }
+
+    /**
      * 启动审批流程
      *
      * @param projectFollowReport

+ 56 - 2
src/main/webapp/webpage/modules/ProjectFollowReport/ProjectFollowReportList.jsp

@@ -496,7 +496,7 @@
 					}else if(d.status == 3){
 						return [
 							'<div class=\"layui-btn-group\">'+
-							'<a href="javascript:void(0)" onclick="openDialogreAudit(\'修改跟踪咨询报告内容\', \'${ctx}/project/constructionContract/followForm?id='+d.id+'&project.id='+d.pid+ '\',\'95%\',\'95%\')" class="layui-btn layui-btn-xs" >编辑</a>',
+							'<a href="javascript:void(0)" onclick="openDialogreModify(\'修改跟踪咨询报告内容\', \'${ctx}/project/constructionContract/followForm?id='+d.id+'&project.id='+d.pid+ '\',\'95%\',\'95%\')" class="layui-btn layui-btn-xs" >编辑</a>',
 							'<a href="${ctx}/project/constructionContract/deleteFollow?project.id='+d.pid+'&id='+d.id+'" onclick="return confirmxRefresh(\'确认要删除该跟踪咨询报告吗?\', this.href)"   class="layui-btn layui-btn-xs layui-bg-red"> 删除</a>',
 
 							+'</div>'
@@ -504,7 +504,7 @@
 					}else if(d.status == 4){
 						return [
 							'<div class=\"layui-btn-group\">'+
-							'<a href="javascript:void(0)" onclick="openDialogreModify(\'修改跟踪咨询报告内容\', \'${ctx}/project/constructionContract/modify?id='+d.id+'&project.id='+d.pid+ '\',\''+d.id+'\',\'95%\',\'95%\')" class="layui-btn layui-btn-xs" > 编辑</a>',
+							'<a href="javascript:void(0)" onclick="openDialogreModify(\'修改跟踪咨询报告内容\', \'${ctx}/project/constructionContract/modify?id='+d.id+'&project.id='+d.pid+ '\',\'95%\',\'95%\')" class="layui-btn layui-btn-xs" > 编辑</a>',
 							'<a href="${ctx}/project/constructionContract/deleteFollow?project.id='+d.pid+'&id='+d.id+'" onclick="return confirmxRefresh(\'确认要删除该跟踪咨询报告吗?\', this.href)"   class="layui-btn layui-btn-xs layui-bg-red"> 删除</a>',
 
 							+'</div>'
@@ -610,6 +610,60 @@
 			skin: 'three-btns',
 			maxmin: true, //开启最大化最小化按钮
 			content: url ,
+			btn: ['提交','暂存','关闭'],
+			btn1: function(index, layero){
+				var body = top.layer.getChildFrame('body', index);
+				var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+				var inputForm = body.find('#inputForm');
+				var top_iframe;
+				if(target){
+					top_iframe = target;//如果指定了iframe,则在改frame中跳转
+				}else{
+					top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+				}
+				inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+				if(iframeWin.contentWindow.doSubmit(1) ){
+					top.layer.close(index);//关闭对话框。
+					setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+				}
+			},
+			btn2: function(index, layero){
+				var body = top.layer.getChildFrame('body', index);
+				var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+				var inputForm = body.find('#inputForm');
+				var top_iframe;
+				if(target){
+					top_iframe = target;//如果指定了iframe,则在改frame中跳转
+				}else{
+					top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+				}
+				inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+				inputForm.attr("action","${ctx}/project/constructionContract/storFollow")
+				if(iframeWin.contentWindow.doSubmit(2) ){
+					top.layer.close(index);//关闭对话框。
+					setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+				}
+				return false;
+			},
+			btn3: function(index){
+			}
+		});
+	}
+	function openDialogreModify(title,url,width,height,target){
+
+		if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端,就使用自适应大小弹窗
+			width='auto';
+			height='auto';
+		}else{//如果是PC端,根据用户设置的width和height显示。
+
+		}
+		top.layer.open({
+			type: 2,
+			area: [width, height],
+			title: title,
+			skin: 'three-btns',
+			maxmin: true, //开启最大化最小化按钮
+			content: url ,
 			btn: ['提交','关闭'],
 			btn1: function(index, layero){
 				var body = top.layer.getChildFrame('body', index);

+ 30 - 18
src/main/webapp/webpage/modules/projectrecord/workContentFromAndView/workFollowForm.jsp

@@ -5,6 +5,7 @@
 	<title>跟踪咨询报告详情管理</title>
 	<meta name="decorator" content="default"/>
     <script src="${ctxStatic}/layer-v2.3/layui/xmSelect.js" charset="utf-8"></script>
+    <script src="${ctxStatic}/common/html/js/script.js"></script>
     <style>
         #projectContentDataType-error{
             left:0;
@@ -32,26 +33,37 @@
 
         var validateForm;
         var detailFlag =0;
-        function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+        function doSubmit(i){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
             if(validateForm.form()){
-                var bzshbUserId = $("#bzshbUserId").val();
-                if(bzshbUserId == undefined || bzshbUserId ==null || bzshbUserId ==''){
-                    parent.layer.msg("请选择审核人员!", {icon: 5});
-                    return false;
-                }
-                var length = document.getElementById("workBaseDataList");
-                var rows = length.rows.length;
-                var idList = [];
-                for (var i=0;i<rows;i++){
-                    var chooseCondition = $("#workBaseDataList"+i+"_chooseCondition").val();
-                    if(chooseCondition==1){
-                        var fileUrl = $("#workBaseDataList"+i+"_fileUrl").val();
-                        if(fileUrl == null || fileUrl == ''){
-                            layer.msg('请上传依据性资料必填文件', {icon: 5});
-                            return false;
+                if (i==1){
+                    var bzshbUserId = $("#bzshbUserId").val();
+                    if(bzshbUserId == undefined || bzshbUserId ==null || bzshbUserId ==''){
+                        parent.layer.msg("请选择审核人员!", {icon: 5});
+                        return false;
+                    }
+                    var length = document.getElementById("workBaseDataList");
+                    var rows = length.rows.length;
+                    var idList = [];
+                    for (var i=0;i<rows;i++){
+                        var chooseCondition = $("#workBaseDataList"+i+"_chooseCondition").val();
+                        if(chooseCondition==1){
+                            var fileUrl = $("#workBaseDataList"+i+"_fileUrl").val();
+                            if(fileUrl == null || fileUrl == ''){
+                                layer.msg('请上传依据性资料必填文件', {icon: 5});
+                                return false;
+                            }
                         }
                     }
+                    var flags=judgment();
+                    if (!flags){
+                        return flags;
+                    }
+                    $("#inputForm").attr("${ctx}/project/constructionContract/saveFollow?view=content&condition=${flag}");
                 }
+                if (i==2){
+                    $("#inputForm").attr("${ctx}/project/constructionContract/storFollow");
+                }
+
 
                 beforeSubmit();
                 $("#inputForm").submit();
@@ -592,7 +604,7 @@
                 <div class="layui-item layui-col-sm6">
                     <label class="layui-form-label"><span class="require-item">*</span>跟踪咨询名称:</label>
                     <div class="layui-input-block">
-                        <form:input path="projectFollowName" htmlEscape="false" class="form-control required layui-input"/>
+                        <form:input path="projectFollowName" htmlEscape="false" class="form-control judgment layui-input"/>
                     </div>
                 </div>
                 <div class="layui-item layui-col-sm6">
@@ -812,7 +824,7 @@
                 }
             </script>
             <div class="form-group layui-row">
-                <div class="form-group-label"><h2>附件信息</h2></div>
+                <div class="form-group-label"><h2>成果文件</h2></div>
                 <div class="layui-item nav-btns">
                     <a id="attachment_btn" class="nav-btn nav-btn-add" title="添加附件"><i class="fa fa-plus"></i>&nbsp;添加附件</a>
                 </div>

+ 2 - 2
src/main/webapp/webpage/modules/projectrecord/workContentFromAndView/workFollowModify.jsp

@@ -637,7 +637,7 @@
             <div class="form-group layui-row">
                 <div class="form-group-label"><h2>依据性资料明细</h2></div>
                 <div class="layui-item nav-btns">
-                    <%--<a href="javascript:void(0)" onclick="openDialogre('新增依据性资料', '${ctx}/projectcontentinfo/projectcontentinfo/form?view=basedData&dictType=${projectFollowReport.dictType}&id=${projectFollowReport.id}&parentIds=${projectFollowReport.parentIds}&project.id=${projectFollowReport.project.id}','90%','90%','inputForm')" class="nav-btn nav-btn-add" ><i class="fa fa-plus"></i> 新增</a>--%>
+                    <a href="javascript:void(0)" onclick="openDialogre('新增依据性资料', '${ctx}/projectcontentinfo/projectcontentinfo/form?view=basedData&dictType=${projectFollowReport.dictType}&id=${projectFollowReport.id}&parentIds=${projectFollowReport.parentIds}&project.id=${projectFollowReport.project.id}','90%','90%','inputForm')" class="nav-btn nav-btn-add" ><i class="fa fa-plus"></i> 新增</a>
 
                     <sys:gridselectBaseData url="${ctx}/projectcontentinfo/projectBasedData/selectList" id="baseData" title="选择依据资料"
                                             cssClass="form-control" projectId="${projectFollowReport.project.id}" fieldLabels="" fieldKeys=""  searchLabel="${fns:urlEncode('依据资料名称')}" searchKey="name"></sys:gridselectBaseData>
@@ -820,7 +820,7 @@
                 }
             </script>
             <div class="form-group layui-row">
-                <div class="form-group-label"><h2>附件信息</h2></div>
+                <div class="form-group-label"><h2>成果文件</h2></div>
                 <div class="layui-item nav-btns">
                     <a id="attachment_btn" class="nav-btn nav-btn-add" title="添加附件"><i class="fa fa-plus"></i>&nbsp;添加附件</a>
                 </div>

+ 1 - 1
src/main/webapp/webpage/modules/projectrecord/workContentFromAndView/workFollowView.jsp

@@ -786,7 +786,7 @@
                 }
             </script>
             <div class="form-group layui-row">
-                <div class="form-group-label"><h2>附件信息</h2></div>
+                <div class="form-group-label"><h2>成果文件</h2></div>
                 <div id="addFile_attachment" style="display: none" class="upload-progress">
                     <span id="fileName_attachment" ></span>
                     <b><span id="baifenbi_attachment" ></span></b>