Browse Source

报告、审定单签章代码提交

user5 1 year ago
parent
commit
328816677e
29 changed files with 1238 additions and 98 deletions
  1. 5 1
      src/main/java/com/jeeplus/modules/areaStaff/service/AreaStaffService.java
  2. 4 4
      src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralProjectSignatureOldMessageDisposeController.java
  3. 100 12
      src/main/java/com/jeeplus/modules/signature/projectReportSignatureWork/controller/ProjectReportSignatureCallBackController.java
  4. 194 11
      src/main/java/com/jeeplus/modules/signature/projectReportSignatureWork/controller/ProjectReportSignatureWorkController.java
  5. 40 0
      src/main/java/com/jeeplus/modules/signature/projectReportSignatureWork/dao/ProjectReportSignatureWorkDao.java
  6. 74 0
      src/main/java/com/jeeplus/modules/signature/projectReportSignatureWork/entity/ProjectReportSignatureWork.java
  7. 78 0
      src/main/java/com/jeeplus/modules/signature/projectReportSignatureWork/entity/ReportSignature.java
  8. 534 13
      src/main/java/com/jeeplus/modules/signature/projectReportSignatureWork/service/ProjectReportSignatureWorkService.java
  9. 2 2
      src/main/java/com/jeeplus/modules/workcontractinfo/dao/WorkContractInfoDao.java
  10. 9 2
      src/main/java/com/jeeplus/modules/workcontractinfo/service/WorkContractInfoService.java
  11. 2 2
      src/main/java/com/jeeplus/modules/workinvoice/dao/WorkInvoiceDao.java
  12. 13 1
      src/main/java/com/jeeplus/modules/workinvoice/service/WorkInvoiceService.java
  13. 1 1
      src/main/java/com/jeeplus/modules/workinvoice/web/WorkInvoiceController.java
  14. 9 7
      src/main/java/com/jeeplus/modules/workprojectnotify/web/WorkProjectNotifyController.java
  15. 2 2
      src/main/java/com/jeeplus/modules/workreimbursement/dao/WorkReimbursementDao.java
  16. 16 1
      src/main/java/com/jeeplus/modules/workreimbursement/service/WorkReimbursementService.java
  17. 3 0
      src/main/resources/jeeplus.properties
  18. 1 1
      src/main/resources/mappings/modules/ruralprojectrecords/RuralProjectRecordsDao.xml
  19. 101 1
      src/main/resources/mappings/modules/signature/projectReport/ProjectReportSignatureDao.xml
  20. 1 1
      src/main/resources/mappings/modules/sys/OfficeDao.xml
  21. 6 2
      src/main/resources/mappings/modules/workcontractinfo/WorkContractInfoDao.xml
  22. 6 2
      src/main/resources/mappings/modules/workinvoice/WorkInvoiceDao.xml
  23. 6 2
      src/main/resources/mappings/modules/workreimbursement/WorkReimbursementDao.xml
  24. 13 13
      src/main/webapp/webpage/modules/signature/projectRerpotSignatureWork/ProjectRerpotSignatureWorkAudit.jsp
  25. 13 13
      src/main/webapp/webpage/modules/signature/projectRerpotSignatureWork/ProjectRerpotSignatureWorkAuditApproval.jsp
  26. 1 1
      src/main/webapp/webpage/modules/signatureManagement/businessSignature/BusinessSignatureForm.jsp
  27. 1 1
      src/main/webapp/webpage/modules/signatureManagement/businessSignature/BusinessSignatureModify.jsp
  28. 2 1
      src/main/webapp/webpage/modules/signatureManagement/electronicSignature/ElectronicSignatureForm.jsp
  29. 1 1
      src/main/webapp/webpage/modules/signatureManagement/electronicSignature/ElectronicSignatureModify.jsp

+ 5 - 1
src/main/java/com/jeeplus/modules/areaStaff/service/AreaStaffService.java

@@ -482,7 +482,11 @@ public class AreaStaffService  extends TreeService<AreaStaffDao, AreaStaffInfo>
                 //如果部门不存在,则进行新增部门信息,区域信息,地区负责人信息
                 AreaStaffInfo areaOfficeInfo = this.saveOfficeType(directorApplication.getOffice().getId());
                 //如果地区为空则进行地区添加和地区负责人添加
-                AreaStaffInfo areaStaffInfo = this.saveAreaType(areaOfficeInfo, directorApplication.getArea().getId(),directorApplication);
+                String areaId = "";
+                if(null != directorApplication.getArea() && StringUtils.isNotBlank(directorApplication.getArea().getId())){
+                    areaId = directorApplication.getArea().getId();
+                }
+                AreaStaffInfo areaStaffInfo = this.saveAreaType(areaOfficeInfo, areaId,directorApplication);
             }
         }
         map.put("success",true);

+ 4 - 4
src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralProjectSignatureOldMessageDisposeController.java

@@ -189,10 +189,10 @@ public class RuralProjectSignatureOldMessageDisposeController extends BaseContro
         Integer month = 10; //第一个月从0开始,所以得到月份+1
         //当月最后一天
         //projectRecordsService.getBatchArchiveNotify();
-        /*logger.info("-----------公司级—月度报表(开始)------------------");
+        logger.info("-----------公司级—月度报表(开始)------------------");
         statementCompanyComprehensiveService.disposeStatementCompany(year,2,month);
-        logger.info("------------公司级—月度报表(结束)------------------");*/
-        logger.info("-----------部门级—月度报表(开始)------------------");
+        logger.info("------------公司级—月度报表(结束)------------------");
+        /*logger.info("-----------部门级—月度报表(开始)------------------");
         //statementCompanyComprehensiveService.disposeStatementOffice(year,2,month);
         logger.info("------------部门级—月度报表(结束)------------------");
         logger.info("------------公司级—年度报表(月报中年度信息)(开始)------------------");
@@ -203,7 +203,7 @@ public class RuralProjectSignatureOldMessageDisposeController extends BaseContro
         logger.info("------------部门级—年度报表(月报中年度信息)(结束)------------------");
         logger.info("-----------张静—月度报表(开始)------------------");
         // statementCompanyComprehensiveService.disposeReportDataStatementCompany(year,2,month);
-        logger.info("------------张静—月度报表(结束)------------------");
+        logger.info("------------张静—月度报表(结束)------------------");*/
 
         logger.info("-----------批量归档报表(开始)------------------");
         statementCompanyComprehensiveService.disposeFilingStatementCompany(year,2,month);

+ 100 - 12
src/main/java/com/jeeplus/modules/signature/projectReportSignatureWork/controller/ProjectReportSignatureCallBackController.java

@@ -8,6 +8,7 @@ import com.jeeplus.common.web.BaseController;
 import com.jeeplus.modules.ruralprojectrecords.entity.PresignCallBack;
 import com.jeeplus.modules.signature.projectReportSignatureWork.dao.ProjectReportSignatureWorkDao;
 import com.jeeplus.modules.signature.projectReportSignatureWork.entity.ProjectReportSignatureWork;
+import com.jeeplus.modules.signature.projectReportSignatureWork.entity.ReportSignature;
 import com.jeeplus.modules.signature.projectReportSignatureWork.service.ProjectReportSignatureWorkService;
 import com.jeeplus.modules.sys.entity.User;
 import com.jeeplus.modules.sys.utils.UserUtils;
@@ -39,14 +40,14 @@ public class ProjectReportSignatureCallBackController extends BaseController {
 
     private final ProjectReportSignatureWorkDao projectReportSignatureWorkDao = SpringContextHolder.getBean(ProjectReportSignatureWorkDao.class);
 
-    @ModelAttribute
-    public ProjectReportSignatureWork get(@RequestParam(required=false) String id) {
-        ProjectReportSignatureWork entity = null;
+    //@ModelAttribute
+    public ReportSignature get(@RequestParam(required=false) String id) {
+        ReportSignature entity = null;
         if (StringUtils.isNotBlank(id)){
-            entity = projectReportSignatureService.get(id);
+            entity = projectReportSignatureService.getApproval(id);
         }
         if (entity == null){
-            entity = new ProjectReportSignatureWork();
+            entity = new ReportSignature();
         }
         return entity;
     }
@@ -56,14 +57,14 @@ public class ProjectReportSignatureCallBackController extends BaseController {
      * @param presignCallBack  回调参数
      * @return
      */
-    @RequestMapping(value = "/getProjectReportSignatureWorkCoordinates", method=RequestMethod.POST)
-    public String getProjectReportSignatureWorkCoordinates(PresignCallBack presignCallBack, HttpServletRequest request , HttpServletResponse response) {
+    @RequestMapping(value = "/getApprovalSignatureWorkCoordinates", method=RequestMethod.POST)
+    public String getApprovalSignatureWorkCoordinates(PresignCallBack presignCallBack, HttpServletRequest request , HttpServletResponse response) {
         long t1 = System.currentTimeMillis();
         //根据contractId查询对应的报告信息
         String[] documentIds = presignCallBack.getDocumentId().split(",");
 
         //根据contractId查询对应的报告信息
-        ProjectReportSignatureWork projectReportSignatureWork = projectReportSignatureService.getByDocumentId(documentIds[0]);
+        ReportSignature projectReportSignatureWork = projectReportSignatureService.getByDocumentReportId(documentIds[0]);
 
         if(5 == projectReportSignatureWork.getStatus()){
             return null;
@@ -101,7 +102,7 @@ public class ProjectReportSignatureCallBackController extends BaseController {
 
         }
         //修改签章对应信息文件
-        projectReportSignatureWorkDao.updateSignatureInfo(projectReportSignatureWork);
+        projectReportSignatureWorkDao.updateReportSignatureInfo(projectReportSignatureWork);
 
         return null;
     }
@@ -112,11 +113,98 @@ public class ProjectReportSignatureCallBackController extends BaseController {
      * @param response
      * @return
      */
-    @RequestMapping(value = "/getProjectReportSignatureWorkCallBackAccomplish", method= RequestMethod.POST)
-    public String getProjectReportSignatureWorkCallBackAccomplish(PresignCallBack presignCallBack, HttpServletResponse response) {
+    @RequestMapping(value = "/getApprovalSignatureWorkCallBackAccomplish", method= RequestMethod.POST)
+    public String getApprovalSignatureWorkCallBackAccomplish(PresignCallBack presignCallBack, HttpServletResponse response) {
 
         //根据contractId查询对应的报告信息
-        ProjectReportSignatureWork projectReportSignatureWork = projectReportSignatureService.getByContractId(presignCallBack.getContractId());
+        ReportSignature projectReportSignatureWork = projectReportSignatureService.getByContractReportId(presignCallBack.getContractId());
+        if(5 == projectReportSignatureWork.getStatus()){
+            return null;
+        }
+
+        String json = JSON.toJSONString(presignCallBack);
+        Jedis jedis = null;
+        try {
+            jedis = JedisUtils.getResource();
+            //将页面签数据转json保存到redis中,并设置有效时间为1天
+            jedis.set("projectReportSignatureWorkSignatureSign" + projectReportSignatureWork.getId(),json);
+            jedis.expire("projectReportSignatureWorkSignatureSign" + projectReportSignatureWork.getId(), 86400);
+            jedis.set("projectReportSignatureWorkSignatureSignStatus" + projectReportSignatureWork.getId(),"true");
+            jedis.expire("projectReportSignatureWorkSignatureSignStatus" + projectReportSignatureWork.getId(),86400);
+        } catch (Exception e) {
+            logger.error("projectReportSignatureWorkSignatureSign", e);
+        } finally {
+            JedisUtils.returnResource(jedis);
+        }
+        return null;
+    }
+
+    /**
+     * 审定单签章回调操作
+     * @param presignCallBack  回调参数
+     * @return
+     */
+    @RequestMapping(value = "/getReportSignatureWorkCoordinates", method=RequestMethod.POST)
+    public String getReportSignatureWorkCoordinates(PresignCallBack presignCallBack, HttpServletRequest request , HttpServletResponse response) {
+        long t1 = System.currentTimeMillis();
+        //根据contractId查询对应的报告信息
+        String[] documentIds = presignCallBack.getDocumentId().split(",");
+
+        //根据contractId查询对应的报告信息
+        ReportSignature projectReportSignatureWork = projectReportSignatureService.getByDocumentApprovalId(documentIds[0]);
+
+        if(5 == projectReportSignatureWork.getStatus()){
+            return null;
+        }
+
+        if(StringUtils.isBlank(presignCallBack.getContractId())){
+
+            return null;
+        }
+        //修改签章信息
+        //签章完成则进行数据的保存
+        projectReportSignatureWork.setSignatureFlag(1);
+        projectReportSignatureWork.setSignatureContractId(presignCallBack.getContractId());
+        projectReportSignatureWork.setSignatureUploadDate(new Date());
+        //对文件回调路径进行处理并保存
+        String signatureUrl = null;
+        if(StringUtils.isNotBlank(presignCallBack.getStoragePath())){
+            signatureUrl = presignCallBack.getStoragePath().replace("oss:/","");
+
+            projectReportSignatureWork.setSignatureUrl(signatureUrl);
+            projectReportSignatureWork.setSignatureUrlFlag(1);
+
+            String input = signatureUrl;
+            int lastSlashIndex = input.lastIndexOf('/');
+            int lastDotIndex = input.lastIndexOf('.');
+
+            // 检查是否存在 / 和 .,以及 . 是否在 / 之后
+            if (lastSlashIndex != -1 && lastDotIndex != -1 && lastSlashIndex < lastDotIndex) {
+                String result = input.substring(lastSlashIndex + 1, input.length());
+                //添加文件名称
+                projectReportSignatureWork.setSignatureFileName(result);
+            }
+            User userName = UserUtils.getByUserName("管理员");
+            projectReportSignatureWork.setSignatureUploadFileUser(userName);
+
+        }
+        //修改签章对应信息文件
+        projectReportSignatureWorkDao.updateApprovalSignatureInfo(projectReportSignatureWork);
+
+        return null;
+    }
+
+    /**
+     * 日常签章每个节点处理方法
+     * @param presignCallBack
+     * @param response
+     * @return
+     */
+    @RequestMapping(value = "/getReportSignatureWorkCallBackAccomplish", method= RequestMethod.POST)
+    public String getReportSignatureWorkCallBackAccomplish(PresignCallBack presignCallBack, HttpServletResponse response) {
+
+        //根据contractId查询对应的报告信息
+        ReportSignature projectReportSignatureWork = projectReportSignatureService.getByContractApprovalId(presignCallBack.getContractId());
         if(5 == projectReportSignatureWork.getStatus()){
             return null;
         }

+ 194 - 11
src/main/java/com/jeeplus/modules/signature/projectReportSignatureWork/controller/ProjectReportSignatureWorkController.java

@@ -471,6 +471,7 @@ public class ProjectReportSignatureWorkController extends BaseController {
             return form(projectReportSignature, model);
         }
         try {
+            String str = "";
             if (StringUtils.isBlank(projectReportSignature.getSignatureType())){
                 addMessage(redirectAttributes, "签章类型未选择,无法保存");
                 return "redirect:"+Global.getAdminPath()+"/projectReport/projectReportSignature/?repage";
@@ -487,12 +488,12 @@ public class ProjectReportSignatureWorkController extends BaseController {
                 }
                 MyBeanUtils.copyBeanNotNull2Bean(projectReportSignature, t);//将编辑表单中的非NULL值覆盖数据库记录中的值
                 t.setStatus(1);
-                projectReportSignatureService.saveInfo(t);//保存
+                str = projectReportSignatureService.saveInfo(t);//保存
             } else {//新增表单保存
                 projectReportSignature.setStatus(1);
-                projectReportSignatureService.saveInfo(projectReportSignature);//保存
+                str = projectReportSignatureService.saveInfo(projectReportSignature);//保存
             }
-            addMessage(redirectAttributes, "保存报告签章申请成功");
+            addMessage(redirectAttributes, str);
         }catch (Exception e){
             logger.error("保存报告签章申请异常:",e);
             addMessage(redirectAttributes, "保存报告签章申请异常:"+e.getMessage());
@@ -549,7 +550,7 @@ public class ProjectReportSignatureWorkController extends BaseController {
             return form(projectReportSignature, model);
         }
         try {
-
+            String str = "";
             if (!projectReportSignature.getIsNewRecord()) {//编辑表单保存
                 ProjectReportSignatureWork t = projectReportSignatureService.get(projectReportSignature.getId());//从数据库取出记录的值
                 ReportSignature reportBySigId = projectReportSignatureService.getReportBySigId(t.getId());
@@ -563,11 +564,11 @@ public class ProjectReportSignatureWorkController extends BaseController {
                     }
                 }
                 MyBeanUtils.copyBeanNotNull2Bean(projectReportSignature, t);//将编辑表单中的非NULL值覆盖数据库记录中的值
-                projectReportSignatureService.save(t, ProjectStatusEnum.SIGNED);//保存
+                str = projectReportSignatureService.save(t, ProjectStatusEnum.SIGNED);//保存
             } else {//新增表单保存
-                projectReportSignatureService.save(projectReportSignature, ProjectStatusEnum.SIGNED);//保存
+                str = projectReportSignatureService.save(projectReportSignature, ProjectStatusEnum.SIGNED);//保存
             }
-            addMessage(redirectAttributes, "保存报告签章申请成功");
+            addMessage(redirectAttributes, str);
         }catch (Exception e){
             logger.error("保存报告签章申请异常:",e);
             addMessage(redirectAttributes, "保存报告签章申请异常:"+e.getMessage());
@@ -586,7 +587,7 @@ public class ProjectReportSignatureWorkController extends BaseController {
             return form(projectReportSignature, model);
         }
         try {
-
+            String str = "";
             if (!projectReportSignature.getIsNewRecord()) {//编辑表单保存
                 ProjectReportSignatureWork t = projectReportSignatureService.get(projectReportSignature.getId());//从数据库取出记录的值
                 ReportSignature approvalBySigId = projectReportSignatureService.getApprovalBySigId(t.getId());
@@ -601,11 +602,11 @@ public class ProjectReportSignatureWorkController extends BaseController {
 
                 }
                 MyBeanUtils.copyBeanNotNull2Bean(projectReportSignature, t);//将编辑表单中的非NULL值覆盖数据库记录中的值
-                projectReportSignatureService.saveApproval(t, ProjectStatusEnum.SIGNED);//保存
+                str = projectReportSignatureService.saveApproval(t, ProjectStatusEnum.SIGNED);//保存
             } else {//新增表单保存
-                projectReportSignatureService.saveApproval(projectReportSignature, ProjectStatusEnum.SIGNED);//保存
+                str = projectReportSignatureService.saveApproval(projectReportSignature, ProjectStatusEnum.SIGNED);//保存
             }
-            addMessage(redirectAttributes, "保存报告签章申请成功");
+            addMessage(redirectAttributes, str);
         }catch (Exception e){
             logger.error("保存报告签章申请异常:",e);
             addMessage(redirectAttributes, "保存报告签章申请异常:"+e.getMessage());
@@ -757,6 +758,117 @@ public class ProjectReportSignatureWorkController extends BaseController {
         return map;
     }
 
+    /**
+     * 查询签证审核页面url
+     * @param id
+     * @param redirectAttributes
+     * @return
+     */
+    @RequestMapping(value = "getApprovalSignatureUrl")
+    @ResponseBody
+    public HashMap<String, Object> getApprovalSignatureUrl( String id, RedirectAttributes redirectAttributes) {
+        HashMap<String, Object> map = Maps.newHashMap();
+        map.put("contractUrl","");
+        map.put("success",false);
+        try {
+
+            //根据项目id查询是否已经提交过了报告签章
+            /*ProjectReportSignatureWork projectReportSignature = projectReportSignatureService.get(id);
+            if(null == projectReportSignature || StringUtils.isBlank(projectReportSignature.getId())){
+                map.put("str","查询不到该项目信息");
+                map.put("success",false);
+                return map;
+            }*/
+            //根据项目关联id查询审定单签章信息
+            ReportSignature approvalBySigId = projectReportSignatureService.getApproval(id);
+
+            if(null == approvalBySigId || StringUtils.isBlank(approvalBySigId.getId())){
+                map.put("str","查询不到该项目下审定单签章信息");
+                map.put("success",false);
+                return map;
+            }
+            if(null!= approvalBySigId.getSignatureFlag() && 1 == approvalBySigId.getSignatureFlag()){
+                map.put("str","该审定单签章申请已经盖章完成。请直接进行审核");
+                map.put("success",false);
+                return map;
+            }
+
+
+            //获取contractUrl路径
+            String contractUrl = projectReportSignatureService.getSignatureContractUrl(approvalBySigId.getSignatureContractId());
+            if("".equals(contractUrl)){
+                map.put("str","审定单签章文件创建失败");
+                map.put("success",false);
+                return map;
+            }else{
+                map.put("contractUrl",contractUrl);
+                map.put("success",true);
+                return map;
+            }
+        } catch (Exception e) {
+            addMessage(redirectAttributes, "审定单签章申请审核页面信息获取失败");
+        }
+
+
+        return map;
+    }
+
+    /**
+     * 查询签证审核页面url
+     * @param id
+     * @param redirectAttributes
+     * @return
+     */
+    @RequestMapping(value = "getReportSignatureUrl")
+    @ResponseBody
+    public HashMap<String, Object> getReportSignatureUrl( String id, RedirectAttributes redirectAttributes) {
+        HashMap<String, Object> map = Maps.newHashMap();
+        map.put("contractUrl","");
+        map.put("success",false);
+        try {
+
+            //根据项目id查询是否已经提交过了报告签章
+            //根据项目id查询是否已经提交过了报告签章
+            /*ProjectReportSignatureWork projectReportSignature = projectReportSignatureService.get(id);
+            if(null == projectReportSignature || StringUtils.isBlank(projectReportSignature.getId())){
+                map.put("str","查询不到该项目信息");
+                map.put("success",false);
+                return map;
+            }*/
+            //根据项目关联id查询审定单签章信息
+            ReportSignature reportBySigId = projectReportSignatureService.getReport(id);
+
+            if(null == reportBySigId || StringUtils.isBlank(reportBySigId.getId())){
+                map.put("str","查询不到该项目下报告签章信息");
+                map.put("success",false);
+                return map;
+            }
+            if(null!= reportBySigId.getSignatureFlag() && 1 == reportBySigId.getSignatureFlag()){
+                map.put("str","该报告签章申请已经盖章完成。请直接进行审核");
+                map.put("success",false);
+                return map;
+            }
+
+
+            //获取contractUrl路径
+            String contractUrl = projectReportSignatureService.getSignatureContractUrl(reportBySigId.getSignatureContractId());
+            if("".equals(contractUrl)){
+                map.put("str","报告签章文件创建失败");
+                map.put("success",false);
+                return map;
+            }else{
+                map.put("contractUrl",contractUrl);
+                map.put("success",true);
+                return map;
+            }
+        } catch (Exception e) {
+            addMessage(redirectAttributes, "报告签章申请审核页面信息获取失败");
+        }
+
+
+        return map;
+    }
+
 
     /**
      * 查询页面签署状态
@@ -790,6 +902,77 @@ public class ProjectReportSignatureWorkController extends BaseController {
         return map;
     }
 
+
+    /**
+     * 查询页面签署状态
+     * @param id
+     * @return
+     */
+    @RequestMapping(value = "getApprovalSignatureStatus")
+    @ResponseBody
+    public Map<String, Object> getApprovalSignatureStatus(String id) {
+        Map<String, Object> map = new HashMap();
+        map.put("success",false);
+
+        //根据项目id查询对应的审定单数据状态是否是已经被送审或者 是否存在值
+        //ProjectReportSignatureWork projectReportSignature = projectReportSignatureService.get(id);
+
+        //根据项目关联id查询审定单签章信息
+        ReportSignature approvalBySigId = projectReportSignatureService.getApproval(id);
+
+        Jedis jedis = null;
+        try {
+            jedis = JedisUtils.getResource();
+            if(1 == approvalBySigId.getSignatureFlag()){
+                map.put("success",true);
+            }else{
+                String status = jedis.get("projectReportSignatureWorkSignatureSignStatus" + approvalBySigId.getId());
+                map.put("success",status);
+            }
+        } catch (Exception e) {
+            logger.error("projectReportSignatureWorkSignatureSignStatus", e);
+        } finally {
+            JedisUtils.returnResource(jedis);
+        }
+
+        return map;
+    }
+
+
+    /**
+     * 查询页面签署状态
+     * @param id
+     * @return
+     */
+    @RequestMapping(value = "getReportSignatureStatus")
+    @ResponseBody
+    public Map<String, Object> getReportSignatureStatus(String id) {
+        Map<String, Object> map = new HashMap();
+        map.put("success",false);
+
+        //根据项目id查询对应的审定单数据状态是否是已经被送审或者 是否存在值
+        //ProjectReportSignatureWork projectReportSignature = projectReportSignatureService.get(id);
+        //根据项目关联id查询审定单签章信息
+        ReportSignature reportBySigId = projectReportSignatureService.getReport(id);
+
+        Jedis jedis = null;
+        try {
+            jedis = JedisUtils.getResource();
+            if(1 == reportBySigId.getSignatureFlag()){
+                map.put("success",true);
+            }else{
+                String status = jedis.get("projectReportSignatureWorkSignatureSignStatus" + reportBySigId.getId());
+                map.put("success",status);
+            }
+        } catch (Exception e) {
+            logger.error("projectReportSignatureWorkSignatureSignStatus", e);
+        } finally {
+            JedisUtils.returnResource(jedis);
+        }
+
+        return map;
+    }
+
     /**
      * 审批
      * @param projectReportSignature

+ 40 - 0
src/main/java/com/jeeplus/modules/signature/projectReportSignatureWork/dao/ProjectReportSignatureWorkDao.java

@@ -19,6 +19,18 @@ public interface ProjectReportSignatureWorkDao extends CrudDao<ProjectReportSign
      * @return
      */
     ProjectReportSignatureWork getByDocumentId(String documentId);
+    /**
+     * 根据签章documentId(报告) 查询信息
+     * @param documentId
+     * @return
+     */
+    ReportSignature getByDocumentReportId(String documentId);
+    /**
+     * 根据签章documentId(报告) 查询信息
+     * @param documentId
+     * @return
+     */
+    ReportSignature getByDocumentApprovalId(String documentId);
 
     /**
      * 根据签章contractId 查询信息
@@ -27,6 +39,20 @@ public interface ProjectReportSignatureWorkDao extends CrudDao<ProjectReportSign
      */
     ProjectReportSignatureWork getByContractId(String contractId);
 
+    /**
+     * 根据签章contractId 查询信息
+     * @param contractId
+     * @return
+     */
+    ReportSignature getByContractReportId(String contractId);
+
+    /**
+     * 根据签章contractId 查询信息
+     * @param contractId
+     * @return
+     */
+    ReportSignature getByContractApprovalId(String contractId);
+
 
     /**
      * 修改状态值和流程id
@@ -48,6 +74,20 @@ public interface ProjectReportSignatureWorkDao extends CrudDao<ProjectReportSign
     Integer updateSignatureInfo(ProjectReportSignatureWork projectReportSignature);
 
     /**
+     * 修改签章信息
+     * @param projectReportSignature
+     * @return
+     */
+    Integer updateApprovalSignatureInfo(ReportSignature projectReportSignature);
+
+    /**
+     * 修改签章信息
+     * @param projectReportSignature
+     * @return
+     */
+    Integer updateReportSignatureInfo(ReportSignature projectReportSignature);
+
+    /**
      * 删除关联报告信息
      * @param id
      * @return

+ 74 - 0
src/main/java/com/jeeplus/modules/signature/projectReportSignatureWork/entity/ProjectReportSignatureWork.java

@@ -52,6 +52,16 @@ public class ProjectReportSignatureWork extends ActEntity<ProjectReportSignature
     private String reportStatus; //报告签章-状态
     private String approvalStatus; //审定单签章-状态
 
+
+    private Integer signatureReportFlag;		//是否已签章(报告)(1为已签章)
+    private String signatureReportDocumentId;		//签章documentid(报告)
+    private String signatureReportContractId;		//签章contractid(报告)
+    private String signatureReportUrl;		//签章附件url(报告)
+    private String signatureReportFileName;		//签章附件名称(报告)
+    private Integer signatureReportUrlFlag;		//签章完成值判定条件(报告)
+    private Date signatureReportUploadDate;		//签章完成时间(报告)
+    private User signatureReportUploadFileUser;		//签章文件上传人信息(报告)
+
     private ProjectReportSignatureRelation reportSignatureRelation;
 
 
@@ -350,4 +360,68 @@ public class ProjectReportSignatureWork extends ActEntity<ProjectReportSignature
     public void setProjectName(String projectName) {
         this.projectName = projectName;
     }
+
+    public Integer getSignatureReportFlag() {
+        return signatureReportFlag;
+    }
+
+    public void setSignatureReportFlag(Integer signatureReportFlag) {
+        this.signatureReportFlag = signatureReportFlag;
+    }
+
+    public String getSignatureReportDocumentId() {
+        return signatureReportDocumentId;
+    }
+
+    public void setSignatureReportDocumentId(String signatureReportDocumentId) {
+        this.signatureReportDocumentId = signatureReportDocumentId;
+    }
+
+    public String getSignatureReportContractId() {
+        return signatureReportContractId;
+    }
+
+    public void setSignatureReportContractId(String signatureReportContractId) {
+        this.signatureReportContractId = signatureReportContractId;
+    }
+
+    public String getSignatureReportUrl() {
+        return signatureReportUrl;
+    }
+
+    public void setSignatureReportUrl(String signatureReportUrl) {
+        this.signatureReportUrl = signatureReportUrl;
+    }
+
+    public String getSignatureReportFileName() {
+        return signatureReportFileName;
+    }
+
+    public void setSignatureReportFileName(String signatureReportFileName) {
+        this.signatureReportFileName = signatureReportFileName;
+    }
+
+    public Integer getSignatureReportUrlFlag() {
+        return signatureReportUrlFlag;
+    }
+
+    public void setSignatureReportUrlFlag(Integer signatureReportUrlFlag) {
+        this.signatureReportUrlFlag = signatureReportUrlFlag;
+    }
+
+    public Date getSignatureReportUploadDate() {
+        return signatureReportUploadDate;
+    }
+
+    public void setSignatureReportUploadDate(Date signatureReportUploadDate) {
+        this.signatureReportUploadDate = signatureReportUploadDate;
+    }
+
+    public User getSignatureReportUploadFileUser() {
+        return signatureReportUploadFileUser;
+    }
+
+    public void setSignatureReportUploadFileUser(User signatureReportUploadFileUser) {
+        this.signatureReportUploadFileUser = signatureReportUploadFileUser;
+    }
 }

+ 78 - 0
src/main/java/com/jeeplus/modules/signature/projectReportSignatureWork/entity/ReportSignature.java

@@ -6,6 +6,7 @@ import com.jeeplus.modules.sys.entity.Office;
 import com.jeeplus.modules.sys.entity.User;
 import com.jeeplus.modules.workclientinfo.entity.WorkClientAttachment;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -26,6 +27,19 @@ public class ReportSignature extends ActEntity<ReportSignature> {
     private List<WorkClientAttachment> workAttachments = Lists.newArrayList();//签章附件
     private List<User> dutyPersonList; //签章责任人
 
+    private Integer signatureFlag;		//是否已签章(1为已签章)
+    private String signatureDocumentId;		//签章documentid
+    private String signatureContractId;		//签章contractid
+    private String signatureUrl;		//签章附件url
+    private String signatureFileName;		//签章附件名称
+    private Integer signatureUrlFlag;		//签章完成值判定条件
+    private Date signatureUploadDate;		//签章完成时间
+    private User signatureUploadFileUser;		//签章文件上传人信息
+
+
+
+
+
     public List<User> getDutyPersonList() {
         return dutyPersonList;
     }
@@ -121,4 +135,68 @@ public class ReportSignature extends ActEntity<ReportSignature> {
     public void setSignatureId(String signatureId) {
         this.signatureId = signatureId;
     }
+
+    public Integer getSignatureFlag() {
+        return signatureFlag;
+    }
+
+    public void setSignatureFlag(Integer signatureFlag) {
+        this.signatureFlag = signatureFlag;
+    }
+
+    public String getSignatureDocumentId() {
+        return signatureDocumentId;
+    }
+
+    public void setSignatureDocumentId(String signatureDocumentId) {
+        this.signatureDocumentId = signatureDocumentId;
+    }
+
+    public String getSignatureContractId() {
+        return signatureContractId;
+    }
+
+    public void setSignatureContractId(String signatureContractId) {
+        this.signatureContractId = signatureContractId;
+    }
+
+    public String getSignatureUrl() {
+        return signatureUrl;
+    }
+
+    public void setSignatureUrl(String signatureUrl) {
+        this.signatureUrl = signatureUrl;
+    }
+
+    public String getSignatureFileName() {
+        return signatureFileName;
+    }
+
+    public void setSignatureFileName(String signatureFileName) {
+        this.signatureFileName = signatureFileName;
+    }
+
+    public Integer getSignatureUrlFlag() {
+        return signatureUrlFlag;
+    }
+
+    public void setSignatureUrlFlag(Integer signatureUrlFlag) {
+        this.signatureUrlFlag = signatureUrlFlag;
+    }
+
+    public Date getSignatureUploadDate() {
+        return signatureUploadDate;
+    }
+
+    public void setSignatureUploadDate(Date signatureUploadDate) {
+        this.signatureUploadDate = signatureUploadDate;
+    }
+
+    public User getSignatureUploadFileUser() {
+        return signatureUploadFileUser;
+    }
+
+    public void setSignatureUploadFileUser(User signatureUploadFileUser) {
+        this.signatureUploadFileUser = signatureUploadFileUser;
+    }
 }

+ 534 - 13
src/main/java/com/jeeplus/modules/signature/projectReportSignatureWork/service/ProjectReportSignatureWorkService.java

@@ -9,22 +9,28 @@ import com.jeeplus.common.persistence.Page;
 import com.jeeplus.common.service.CrudService;
 import com.jeeplus.common.utils.IdGen;
 import com.jeeplus.common.utils.MenuStatusEnum;
+import com.jeeplus.common.utils.MyBeanUtils;
 import com.jeeplus.modules.act.entity.Act;
 import com.jeeplus.modules.act.service.ActTaskService;
+import com.jeeplus.modules.projectcontentinfo.entity.ProjectReportData;
+import com.jeeplus.modules.projectcontentinfo.service.ProjectReportDataService;
 import com.jeeplus.modules.projectrecord.entity.ProjectRecords;
 import com.jeeplus.modules.ruralprojectrecords.entity.*;
 import com.jeeplus.modules.ruralprojectrecords.enums.ProjectStatusEnum;
+import com.jeeplus.modules.ruralprojectrecords.service.RuralProjectMessageService;
 import com.jeeplus.modules.ruralprojectrecords.service.RuralProjectRecordsService;
 import com.jeeplus.modules.serialnum.service.SerialNumTplService;
 import com.jeeplus.modules.signature.projectReportSignatureWork.dao.ProjectReportSignatureWorkDao;
 import com.jeeplus.modules.signature.projectReportSignatureWork.entity.ProjectReportSignatureRelation;
 import com.jeeplus.modules.signature.projectReportSignatureWork.entity.ProjectReportSignatureWork;
+import com.jeeplus.modules.sys.entity.MainDictDetail;
 import com.jeeplus.modules.signature.projectReportSignatureWork.entity.ReportSignature;
 import com.jeeplus.modules.sys.entity.Office;
 import com.jeeplus.modules.sys.entity.User;
 import com.jeeplus.modules.sys.entity.Workattachment;
 import com.jeeplus.modules.sys.service.OfficeService;
 import com.jeeplus.modules.sys.service.WorkattachmentService;
+import com.jeeplus.modules.sys.utils.DictUtils;
 import com.jeeplus.modules.sys.utils.UserUtils;
 import com.jeeplus.modules.tools.utils.SignaturePostUtil;
 import com.jeeplus.modules.workactivity.dao.WorkActivityProcessDao;
@@ -42,6 +48,7 @@ import com.jeeplus.modules.workinvoice.entity.WorkInvoiceProjectRelation;
 import com.jeeplus.modules.workprojectnotify.entity.WorkProjectNotify;
 import com.jeeplus.modules.workprojectnotify.service.WorkProjectNotifyService;
 import com.jeeplus.modules.workprojectnotify.util.UtilNotify;
+import com.jeeplus.modules.workstaff.entity.WorkStaffCertificate;
 import org.activiti.engine.ActivitiObjectNotFoundException;
 import org.activiti.engine.IdentityService;
 import org.activiti.engine.RuntimeService;
@@ -68,8 +75,12 @@ public class ProjectReportSignatureWorkService extends CrudService<ProjectReport
      * 公司圆章-横
      */
     private static final String COMPANYROUNDSEALID = Global.getConfig("company_round_seal_id");
-    //日常签章申请流程id
+    //日常签章报告申请流程id
     private static final String PROJECTREPORTWORK = Global.getConfig("signature_project_report_work");
+    //日常签章审定单申请流程id
+    private static final String PROJECTAPPROVALWORK = Global.getConfig("signature_project_approval_work");
+
+    private static final String CUSTOMAPPROVALCATEGORYID = Global.getConfig("custom_approval_category_id");
 
     @Autowired
     private OfficeService officeService;
@@ -97,6 +108,10 @@ public class ProjectReportSignatureWorkService extends CrudService<ProjectReport
     private ActivityService activityService;
     @Autowired
     private RuralProjectRecordsService ruralProjectRecordsService;
+    @Autowired
+    private ProjectReportDataService projectReportDataService;
+    @Autowired
+    private RuralProjectMessageService ruralProjectMessageService;
 
 
 
@@ -161,11 +176,31 @@ public class ProjectReportSignatureWorkService extends CrudService<ProjectReport
         return projectReportSignature;
     }
 
+    public ReportSignature getByDocumentReportId(String documentId) {
+        ReportSignature projectReportSignature = dao.getByDocumentReportId(documentId);
+        return projectReportSignature;
+    }
+
+    public ReportSignature getByDocumentApprovalId(String documentId) {
+        ReportSignature projectReportSignature = dao.getByDocumentApprovalId(documentId);
+        return projectReportSignature;
+    }
+
     public ProjectReportSignatureWork getByContractId(String contractId) {
         ProjectReportSignatureWork projectReportSignature = dao.getByContractId(contractId);
         return projectReportSignature;
     }
 
+    public ReportSignature getByContractReportId(String contractId) {
+        ReportSignature projectReportSignature = dao.getByContractReportId(contractId);
+        return projectReportSignature;
+    }
+
+    public ReportSignature getByContractApprovalId(String contractId) {
+        ReportSignature projectReportSignature = dao.getByContractApprovalId(contractId);
+        return projectReportSignature;
+    }
+
 
     public List<ProjectReportSignatureWork> findList(ProjectReportSignatureWork projectReportSignature) {
         return super.findList(projectReportSignature);
@@ -200,7 +235,7 @@ public class ProjectReportSignatureWorkService extends CrudService<ProjectReport
      * @param projectReportSignature
      */
     @Transactional(readOnly = false)
-    public void saveInfo(ProjectReportSignatureWork projectReportSignature) {
+    public String saveInfo(ProjectReportSignatureWork projectReportSignature) {
 
         projectReportSignature.setStatus(1);
         User createBy = projectReportSignature.getCreateBy();
@@ -296,6 +331,7 @@ public class ProjectReportSignatureWorkService extends CrudService<ProjectReport
 
         //处理需要签章的报告信息
         //this.disposeProjectReportRelevance(projectReportSignature);
+        return null;
     }
 
     @Transactional(readOnly = false)
@@ -406,7 +442,7 @@ public class ProjectReportSignatureWorkService extends CrudService<ProjectReport
      * @throws Exception
      */
     @Transactional(readOnly = false)
-    public void save(ProjectReportSignatureWork projectReportSignature, ProjectStatusEnum status) throws Exception {
+    public String save(ProjectReportSignatureWork projectReportSignature, ProjectStatusEnum status) throws Exception {
         projectReportSignature.setCompany(UserUtils.getUser().getCompany());
         projectReportSignature.setOffice(UserUtils.getUser().getOffice());
 
@@ -517,7 +553,14 @@ public class ProjectReportSignatureWorkService extends CrudService<ProjectReport
 
 
         //发起签章申请
-//        this.getManualSignatureUrl(projectReportSignature.getId());
+        HashMap<String, Object> map = this.getManualSignatureUrl(projectReportSignature.getId() ,signature);
+        Boolean success = (Boolean) map.get("success");
+        //如果数据报错,则数据撤回到暂存环节
+        if(!success){
+            String message = (String) map.get("message");
+            return message;
+        }
+        return "保存签章申请成功";
     }
 
     /**
@@ -527,7 +570,7 @@ public class ProjectReportSignatureWorkService extends CrudService<ProjectReport
      * @throws Exception
      */
     @Transactional(readOnly = false)
-    public void saveApproval(ProjectReportSignatureWork projectReportSignature, ProjectStatusEnum status) throws Exception {
+    public String saveApproval(ProjectReportSignatureWork projectReportSignature, ProjectStatusEnum status) throws Exception {
         projectReportSignature.setCompany(UserUtils.getUser().getCompany());
         projectReportSignature.setOffice(UserUtils.getUser().getOffice());
 
@@ -598,7 +641,14 @@ public class ProjectReportSignatureWorkService extends CrudService<ProjectReport
 
 
         //发起签章申请
-//        this.getManualSignatureUrl(projectReportSignature.getId());
+        HashMap<String, Object> map = this.getManualSignatureUrl(projectReportSignature.getId(),signature);
+        Boolean success = (Boolean) map.get("success");
+        //如果数据报错,则数据撤回到暂存环节
+        if(!success){
+            String message = (String) map.get("message");
+            return message;
+        }
+        return "保存签章申请成功";
     }
 
     /**
@@ -956,7 +1006,7 @@ public class ProjectReportSignatureWorkService extends CrudService<ProjectReport
      * @param dailyOfficeWorkId
      * @return
      */
-    public HashMap<String, Object> getManualSignatureUrl( String dailyOfficeWorkId) {
+    public HashMap<String, Object> getManualSignatureUrl( String dailyOfficeWorkId, ReportSignature signature) {
         HashMap<String, Object> map = Maps.newHashMap();
         map.put("contractUrl","");
         map.put("success",false);
@@ -977,8 +1027,21 @@ public class ProjectReportSignatureWorkService extends CrudService<ProjectReport
                 return map;
             }
             Workattachment workClientAttachment = new Workattachment();
-            workClientAttachment.setAttachmentFlag("173");
-            workClientAttachment.setAttachmentId(dailyOfficeWorkId);
+            if(projectReportSignature.getSignatureType().equals("2")){
+                //获取审定单信息
+                //ReportSignature approvalSignature = dao.getApprovalBySigId(projectReportSignature.getId());
+
+                workClientAttachment.setAttachmentFlag("174");
+                workClientAttachment.setAttachmentId(signature.getId());
+            }else{
+                //获取报告信息
+                //ReportSignature reportSignature = dao.getReportBySigId(projectReportSignature.getId());
+
+                workClientAttachment.setAttachmentFlag("173");
+                workClientAttachment.setAttachmentId(signature.getId());
+
+            }
+
             List<Workattachment> fileList = workattachmentService.findList(workClientAttachment);
 
             //创建一个用于存放签章文件documentId的集合
@@ -1053,7 +1116,20 @@ public class ProjectReportSignatureWorkService extends CrudService<ProjectReport
             }
 
             //根据项目id 和 documentId生成合同id
-            HashMap contractIdHashMap = this.getManualSignatureContractId(documentList,projectReportSignature);
+            //HashMap contractIdHashMap = this.getManualSignatureContractId(documentList,projectReportSignature);
+            //根据项目id 和 documentId生成合同id
+
+            //区分是审定单签章申请 还是 报告签章申请
+            HashMap contractIdHashMap = new HashMap();
+            //审定单
+            if(projectReportSignature.getSignatureType().equals("2")){
+                contractIdHashMap = this.getManualApprovalSignatureContractId(projectReportSignature.getProjectId(), documentList);
+            }else{
+                //报告
+                contractIdHashMap = this.getManualReportSignatureContractId(projectReportSignature.getProjectId(), documentList);
+
+            }
+
             String contractIdCode = contractIdHashMap.get("code").toString();
             String contractId = "";
             if("0".equals(contractIdCode)){
@@ -1067,13 +1143,29 @@ public class ProjectReportSignatureWorkService extends CrudService<ProjectReport
                 map.put("str",contractIdHashMap.get("message").toString());
             }
 
-
             String documents = String.join(",", documentList);
             //修改报告信息中对应的签章contractId
-            projectReportSignature.setSignatureDocumentId(documents);
+            /*projectReportSignature.setSignatureDocumentId(documents);
             projectReportSignature.setSignatureContractId(contractId);
             //修改签章对应信息文件
-            dao.updateSignatureInfo(projectReportSignature);
+            dao.updateSignatureInfo(projectReportSignature);*/
+
+            //判断是审定单  还是报告签章申请
+            if(projectReportSignature.getSignatureType().equals("2")){
+                //修改信息中对应的签章contractId(审定单)
+                signature.setSignatureDocumentId(documents);
+                signature.setSignatureContractId(contractId);
+                //修改签章对应信息文件
+                dao.updateApprovalSignatureInfo(signature);
+            }else{
+                //修改信息中对应的签章contractId(报告)
+                signature.setSignatureDocumentId(documents);
+                signature.setSignatureContractId(contractId);
+                //修改签章对应信息文件
+                dao.updateReportSignatureInfo(signature);
+            }
+
+
 
             map.put("success",true);
             return map;
@@ -2115,6 +2207,435 @@ public class ProjectReportSignatureWorkService extends CrudService<ProjectReport
         return projectRelationList;
     }
 
+
+
+
+
+    /**
+     * 根据项目id 和 documentId生成合同id(手动签生成签署合同)(页面签)
+     * @param projectId
+     * @param documentList
+     * @return
+     */
+    public HashMap getManualApprovalSignatureContractId(String projectId, List<String> documentList){
+        HashMap hashMap = new HashMap();
+        //创建签署方信息
+        List<Action> actions = Lists.newArrayList();
+        Set<String> serialIdSet = new HashSet<>();
+        //根据项目id查询项目信息
+        RuralProjectRecords ruralProjectRecords = ruralProjectRecordsService.get(projectId);
+        Action companyAction = new Action();
+        companyAction.setType("CORPORATE");
+        companyAction.setName("公司印章");
+        companyAction.setSerialNo("1");
+        //公司圆章
+        serialIdSet.add(COMPANYROUNDSEALID);
+        //添加盖章位置
+        List<Location> locations = Lists.newArrayList();
+        for (String documentId: documentList) {
+            Location location = new Location();
+            location.setSealId(COMPANYROUNDSEALID);
+            location.setDocumentId(documentId);
+            location.setPage("0");
+            location.setRectType("SEAL_CORPORATE");
+            location.setKeywordIndex(-1);
+            location.setOffsetX("0.6787");
+            location.setOffsetY("0.4664");
+            locations.add(location);
+        }
+
+        //根据角色信息录入签署方信息
+        //负责人
+        if(StringUtils.isNotBlank(ruralProjectRecords.getProjectMasterId())){
+            User user = UserUtils.get(ruralProjectRecords.getProjectMasterId());
+            if(null != user){
+                //获取成员印章id信息
+                String userSealId = SignaturePostUtil.getUserSealByMobile(user.getMobile(),"",user.getName() + "一级注册造价工程师章");
+                if(StringUtils.isNotBlank(userSealId)){
+                    for (String documentId: documentList) {
+                        //添加盖章位置
+                        Location principalLocation = new Location();
+                        serialIdSet.add(userSealId);
+                        principalLocation.setSealId(userSealId);
+                        principalLocation.setDocumentId(documentId);
+                        principalLocation.setPage("0");
+                        principalLocation.setRectType("SEAL_CORPORATE");
+                        principalLocation.setKeywordIndex(-1);
+                        principalLocation.setOffsetX("0.5376");
+                        principalLocation.setOffsetY("0.2771");
+                        locations.add(principalLocation);
+                    }
+                }else{
+                    hashMap.put("code","2");
+                    hashMap.put("message","查询不到项目负责人 "+ user.getName() + " 的印章信息!请联系管理员");
+                    return hashMap;
+                }
+
+                //获取成员个人签名章印章id信息
+                String userSignatureSealId = SignaturePostUtil.getUserSealByMobile(user.getMobile(),"",user.getName() + "个人签名章");
+                if(StringUtils.isNotBlank(userSignatureSealId)){
+                    for (String documentId: documentList) {
+                        //添加盖章位置
+                        Location principalLocation = new Location();
+                        serialIdSet.add(userSignatureSealId);
+                        principalLocation.setSealId(userSignatureSealId);
+                        principalLocation.setDocumentId(documentId);
+                        principalLocation.setPage("0");
+                        principalLocation.setRectType("SEAL_CORPORATE");
+                        principalLocation.setKeywordIndex(-1);
+                        principalLocation.setOffsetX("0.6476");
+                        principalLocation.setOffsetY("0.2671");
+                        locations.add(principalLocation);
+                    }
+                }else{
+                    hashMap.put("code","2");
+                    hashMap.put("message","查询不到项目负责人 "+ user.getName() + " 的个人签名章信息!请联系管理员");
+                    return hashMap;
+                }
+            }
+        }else{
+            hashMap.put("code","2");
+            hashMap.put("message","查询不到项目负责人信息!请联系管理员");
+            return hashMap;
+        }
+        //总经理
+        User technologyPrincipalUser = UserUtils.getByLoginName("陈红星");
+        if(null != technologyPrincipalUser){
+            //获取成员印章id信息
+            String userSealId = SignaturePostUtil.getUserSealByMobile(technologyPrincipalUser.getMobile(),"","陈红星个人签名章");
+            if(StringUtils.isNotBlank(userSealId)){
+                for (String documentId: documentList) {
+                    //添加盖章位置
+                    Location principalLocation = new Location();
+                    serialIdSet.add(userSealId);
+                    principalLocation.setSealId(userSealId);
+                    principalLocation.setDocumentId(documentId);
+                    principalLocation.setPage("0");
+                    principalLocation.setRectType("SEAL_CORPORATE");
+                    principalLocation.setKeywordIndex(-1);
+                    principalLocation.setOffsetX("0.6958");
+                    principalLocation.setOffsetY("0.4009");
+                    locations.add(principalLocation);
+                }
+
+            }else{
+                hashMap.put("code","2");
+                hashMap.put("message","查询不到技术负责人 陈红星 的印章信息!请联系管理员");
+                return hashMap;
+            }
+        }else{
+            hashMap.put("code","2");
+            hashMap.put("message","查询不到技术负责人信息!请联系管理员");
+            return hashMap;
+        }
+        List<String> serialIdList = new ArrayList<String>(serialIdSet);
+        companyAction.setSealIds("[" + String.join(",", serialIdList) + "]");
+        companyAction.setAutoSign("false");
+        companyAction.setLocations(locations);
+        actions.add(companyAction);
+
+
+        //创建签署方信息表
+        List<SignatorieInfo> signatories = Lists.newArrayList();
+        SignatorieInfo signatorieInfo1 = new SignatorieInfo();
+        signatorieInfo1.setSerialNo("1");
+        signatorieInfo1.setTenantName("江苏兴光项目管理有限公司");
+        signatorieInfo1.setTenantType("COMPANY");
+        signatorieInfo1.setActions(actions);
+        signatories.add(signatorieInfo1);
+        SignatureContract signatureContract = new SignatureContract();
+        signatureContract.setDocuments(documentList);
+        //(自定义(页面签))审定单用印流程id
+        signatureContract.setCategoryId(PROJECTAPPROVALWORK);
+
+        signatureContract.setSend(true);
+        signatureContract.setSignatories(signatories);
+        signatureContract.setSn("");
+        ProjectReportData reportData = projectReportDataService.getReportDataByProjectId(ruralProjectRecords.getId());
+        if(null != reportData && StringUtils.isNotBlank(reportData.getNumber())){
+            signatureContract.setSubject(reportData.getNumber() + "。" + ruralProjectRecords.getProjectName());//添加项目名称
+        }else{
+            signatureContract.setSubject(ruralProjectRecords.getProjectName());//添加项目名称
+        }
+        net.sf.json.JSONObject json = net.sf.json.JSONObject.fromObject(signatureContract);
+        String contractIdMapStr = SignaturePostUtil.sendPostApplicationJson(HTTPTOP + "/contract/createbycategory", json.toString());
+        hashMap = JSON.parseObject(contractIdMapStr, HashMap.class);
+
+        return hashMap;
+    }
+
+
+    /**
+     * 根据项目id 和 documentId生成合同id(手动签生成签署合同)(页面签)
+     * @param projectId
+     * @param documentList
+     * @return
+     */
+    public HashMap getManualReportSignatureContractId(String projectId, List<String> documentList){
+        HashMap hashMap = new HashMap();
+        //创建签署方信息
+        List<Action> actions = Lists.newArrayList();
+        Set<String> serialIdSet = new HashSet<>();
+        //根据项目id查询项目信息
+        RuralProjectRecords ruralProjectRecords = ruralProjectRecordsService.get(projectId);
+
+        ProjectReportData projectReportData = projectReportDataService.getReportDataByProjectId(ruralProjectRecords.getId());
+
+        Action companyAction = new Action();
+        companyAction.setType("CORPORATE");
+        companyAction.setName("公司印章");
+        companyAction.setSerialNo("1");
+        //公司圆章
+        serialIdSet.add(COMPANYROUNDSEALID);
+        //添加盖章位置
+        List<Location> locations = Lists.newArrayList();
+        for (String documentId: documentList) {
+            Location location = new Location();
+            location.setSealId(COMPANYROUNDSEALID);
+            location.setDocumentId(documentId);
+            location.setPage("0");
+            location.setRectType("SEAL_CORPORATE");
+            location.setKeywordIndex(-1);
+            location.setOffsetX("0.6787");
+            location.setOffsetY("0.4664");
+            locations.add(location);
+        }
+
+        //根据角色信息录入签署方信息
+        //负责人
+        if(StringUtils.isNotBlank(ruralProjectRecords.getProjectMasterId())){
+            User user = UserUtils.get(ruralProjectRecords.getProjectMasterId());
+            if(null != user){
+                //获取成员印章id信息
+                String userSealId = SignaturePostUtil.getUserSealByMobile(user.getMobile(),"",user.getName() + "一级注册造价工程师章");
+                if(StringUtils.isNotBlank(userSealId)){
+                    for (String documentId: documentList) {
+                        //添加盖章位置
+                        Location principalLocation = new Location();
+                        serialIdSet.add(userSealId);
+                        principalLocation.setSealId(userSealId);
+                        principalLocation.setDocumentId(documentId);
+                        principalLocation.setPage("0");
+                        principalLocation.setRectType("SEAL_CORPORATE");
+                        principalLocation.setKeywordIndex(-1);
+                        principalLocation.setOffsetX("0.5376");
+                        principalLocation.setOffsetY("0.2771");
+                        locations.add(principalLocation);
+                    }
+                }else{
+                    hashMap.put("code","2");
+                    hashMap.put("message","查询不到项目负责人 "+ user.getName() + " 的印章信息!请联系管理员");
+                    return hashMap;
+                }
+
+                //获取成员个人签名章印章id信息
+                String userSignatureSealId = SignaturePostUtil.getUserSealByMobile(user.getMobile(),"",user.getName() + "个人签名章");
+                if(StringUtils.isNotBlank(userSignatureSealId)){
+                    for (String documentId: documentList) {
+                        //添加盖章位置
+                        Location principalLocation = new Location();
+                        serialIdSet.add(userSignatureSealId);
+                        principalLocation.setSealId(userSignatureSealId);
+                        principalLocation.setDocumentId(documentId);
+                        principalLocation.setPage("0");
+                        principalLocation.setRectType("SEAL_CORPORATE");
+                        principalLocation.setKeywordIndex(-1);
+                        principalLocation.setOffsetX("0.6476");
+                        principalLocation.setOffsetY("0.2671");
+                        locations.add(principalLocation);
+                    }
+                }else{
+                    hashMap.put("code","2");
+                    hashMap.put("message","查询不到项目负责人 "+ user.getName() + " 的个人签名章信息!请联系管理员");
+                    return hashMap;
+                }
+            }
+        }else{
+            hashMap.put("code","2");
+            hashMap.put("message","查询不到项目负责人信息!请联系管理员");
+            return hashMap;
+        }
+
+        //咨询员签字章和造价师章
+        //查询咨询员信息
+        List<User> consultantUserList = this.getConsultantUserList(ruralProjectRecords, projectReportData);
+        if(null != consultantUserList && consultantUserList.size()>0){
+            for(int i = 0; i<consultantUserList.size(); i ++){
+                User user = consultantUserList.get(i);
+                if(null != user) {
+                    //获取成员印章id信息
+                    String userSealId = SignaturePostUtil.getUserSealByMobile(user.getMobile(),"",user.getName() + "一级注册造价工程师章");
+                    if(StringUtils.isNotBlank(userSealId)){
+                        for (String documentId: documentList) {
+                            //添加盖章位置
+                            Location principalLocation = new Location();
+                            serialIdSet.add(userSealId);
+                            principalLocation.setSealId(userSealId);
+                            principalLocation.setDocumentId(documentId);
+                            principalLocation.setPage("0");
+                            principalLocation.setRectType("SEAL_CORPORATE");
+                            principalLocation.setKeywordIndex(-1);
+                            principalLocation.setOffsetX("0.5376");
+                            principalLocation.setOffsetY("0.2771");
+                            locations.add(principalLocation);
+                        }
+                    }else{
+                        hashMap.put("code","2");
+                        hashMap.put("message","查询不到咨询员 "+ user.getName() + " 的印章信息!请联系管理员");
+                        return hashMap;
+                    }
+
+                    //获取成员个人签名章印章id信息
+                    String userSignatureSealId = SignaturePostUtil.getUserSealByMobile(user.getMobile(),"",user.getName() + "个人签名章");
+                    if(StringUtils.isNotBlank(userSignatureSealId)){
+                        for (String documentId: documentList) {
+                            //添加盖章位置
+                            Location principalLocation = new Location();
+                            serialIdSet.add(userSignatureSealId);
+                            principalLocation.setSealId(userSignatureSealId);
+                            principalLocation.setDocumentId(documentId);
+                            principalLocation.setPage("0");
+                            principalLocation.setRectType("SEAL_CORPORATE");
+                            principalLocation.setKeywordIndex(-1);
+                            principalLocation.setOffsetX("0.6476");
+                            principalLocation.setOffsetY("0.2671");
+                            locations.add(principalLocation);
+                        }
+                    }else{
+                        hashMap.put("code","2");
+                        hashMap.put("message","查询不到咨询员 "+ user.getName() + " 的个人签名章信息!请联系管理员");
+                        return hashMap;
+                    }
+                }else{
+                    hashMap.put("code","2");
+                    hashMap.put("message","查询不到咨询员信息!请联系管理员");
+                    return hashMap;
+                }
+            }
+        }
+
+        //总经理
+        User technologyPrincipalUser = UserUtils.getByLoginName("陈红星");
+        if(null != technologyPrincipalUser){
+            //获取成员印章id信息
+            String userSealId = SignaturePostUtil.getUserSealByMobile(technologyPrincipalUser.getMobile(),"","陈红星个人签名章");
+            if(StringUtils.isNotBlank(userSealId)){
+                for (String documentId: documentList) {
+                    //添加盖章位置
+                    Location principalLocation = new Location();
+                    serialIdSet.add(userSealId);
+                    principalLocation.setSealId(userSealId);
+                    principalLocation.setDocumentId(documentId);
+                    principalLocation.setPage("0");
+                    principalLocation.setRectType("SEAL_CORPORATE");
+                    principalLocation.setKeywordIndex(-1);
+                    principalLocation.setOffsetX("0.6958");
+                    principalLocation.setOffsetY("0.4009");
+                    locations.add(principalLocation);
+                }
+
+            }else{
+                hashMap.put("code","2");
+                hashMap.put("message","查询不到技术负责人 陈红星 的印章信息!请联系管理员");
+                return hashMap;
+            }
+        }else{
+            hashMap.put("code","2");
+            hashMap.put("message","查询不到技术负责人信息!请联系管理员");
+            return hashMap;
+        }
+
+
+        List<String> serialIdList = new ArrayList<String>(serialIdSet);
+        //法人章
+        User representativeUser = UserUtils.getByLoginName("杨荣华");
+        if(null != representativeUser){
+            //获取成员印章id信息
+            String userSealId = SignaturePostUtil.getUserSealByMobile(representativeUser.getMobile(),"","杨荣华个人签名章");
+            if(StringUtils.isNotBlank(userSealId)){
+
+                serialIdList.add(userSealId);
+                //添加盖章位置
+                Location principalLocation = new Location();
+                principalLocation.setDocumentId(documentList.get(0));
+                principalLocation.setSealId(userSealId);
+                principalLocation.setPage("0");
+                principalLocation.setRectType("SEAL_CORPORATE");
+                principalLocation.setKeywordIndex(-1);
+                principalLocation.setOffsetX("0.07");
+                principalLocation.setOffsetY("0.03");
+                locations.add(principalLocation);
+            }else{
+                hashMap.put("code","2");
+                hashMap.put("message","查询不到技术负责人 杨荣华 的印章信息!请联系管理员");
+                return hashMap;
+            }
+        }else{
+            hashMap.put("code","2");
+            hashMap.put("message","查询不到技术负责人 杨荣华 的信息!请联系管理员");
+            return hashMap;
+        }
+
+
+        companyAction.setSealIds("[" + String.join(",", serialIdList) + "]");
+        companyAction.setAutoSign("false");
+        companyAction.setLocations(locations);
+        actions.add(companyAction);
+
+
+        //创建签署方信息表
+        List<SignatorieInfo> signatories = Lists.newArrayList();
+        SignatorieInfo signatorieInfo1 = new SignatorieInfo();
+        signatorieInfo1.setSerialNo("1");
+        signatorieInfo1.setTenantName("江苏兴光项目管理有限公司");
+        signatorieInfo1.setTenantType("COMPANY");
+        signatorieInfo1.setActions(actions);
+        signatories.add(signatorieInfo1);
+        SignatureContract signatureContract = new SignatureContract();
+        signatureContract.setDocuments(documentList);
+        //(自定义(页面签))审定单用印流程id
+        signatureContract.setCategoryId(PROJECTREPORTWORK);
+
+        signatureContract.setSend(true);
+        signatureContract.setSignatories(signatories);
+        signatureContract.setSn("");
+        ProjectReportData reportData = projectReportDataService.getReportDataByProjectId(ruralProjectRecords.getId());
+        if(null != reportData && StringUtils.isNotBlank(reportData.getNumber())){
+            signatureContract.setSubject(reportData.getNumber() + "。" + ruralProjectRecords.getProjectName());//添加项目名称
+        }else{
+            signatureContract.setSubject(ruralProjectRecords.getProjectName());//添加项目名称
+        }
+        net.sf.json.JSONObject json = net.sf.json.JSONObject.fromObject(signatureContract);
+        String contractIdMapStr = SignaturePostUtil.sendPostApplicationJson(HTTPTOP + "/contract/createbycategory", json.toString());
+        hashMap = JSON.parseObject(contractIdMapStr, HashMap.class);
+
+        return hashMap;
+    }
+
+
+    /**
+     * 查询咨询员信息
+     * @param ruralProjectRecords
+     * @param projectReportData
+     * @return
+     */
+    public List<User> getConsultantUserList(RuralProjectRecords ruralProjectRecords,ProjectReportData projectReportData) {
+        List<User> userList = Lists.newArrayList();
+        //根据项目id查找报告咨询员信息
+        List<RuralReportConsultant> consultantList = ruralProjectMessageService.getConsultantsList(ruralProjectRecords.getId());
+        //遍历质量复核咨询员表信息
+        for (RuralReportConsultant consultant : consultantList) {
+            //如果咨询员信息中的人员id不是项目负责人 并且不是技术负责人,则他就是咨询员
+            if(!consultant.getZixunyuan().equals(ruralProjectRecords.getProjectMasterId()) && !consultant.getZixunyuan().equals(projectReportData.getBzshbUserId())){
+                User user = UserUtils.get(consultant.getZixunyuan());
+                if(null != user){
+                    userList.add(user);
+                }
+            }
+        }
+        return userList;
+    }
+
     /**
      * 根据签章id查询报告签章信息
      * @param id 签章id

+ 2 - 2
src/main/java/com/jeeplus/modules/workcontractinfo/dao/WorkContractInfoDao.java

@@ -108,9 +108,9 @@ public interface WorkContractInfoDao extends CrudDao<WorkContractInfo> {
     WorkContractInfo getByContractNum(String contractNum);
 
     //公司级 查询合同信息
-    List<WorkContractInfo> findContractStatementPage(@Param("workContractInfo")WorkContractInfo workContractInfo,@Param("officeIdd") String officeIdd, @Param("beginDate")String beginDate, @Param("endDate")String endDate,@Param("contractRecordState")String contractRecordState);
+    List<WorkContractInfo> findContractStatementPage(@Param("workContractInfo")WorkContractInfo workContractInfo,@Param("officeId") String officeIdd, @Param("beginDate")String beginDate, @Param("endDate")String endDate,@Param("contractRecordState")String contractRecordState);
     //公司级 查询合同信息的条数
-    Integer findContractStatementPageCount(@Param("workContractInfo")WorkContractInfo workContractInfo,@Param("officeIdd") String officeIdd, @Param("beginDate")String beginDate, @Param("endDate")String endDate,@Param("contractRecordState")String contractRecordState);
+    Integer findContractStatementPageCount(@Param("workContractInfo")WorkContractInfo workContractInfo,@Param("officeId") String officeIdd, @Param("beginDate")String beginDate, @Param("endDate")String endDate,@Param("contractRecordState")String contractRecordState);
 
     void updateContractRecordStatus(WorkContractInfo workContractInfo);
 

+ 9 - 2
src/main/java/com/jeeplus/modules/workcontractinfo/service/WorkContractInfoService.java

@@ -4050,11 +4050,18 @@ public class WorkContractInfoService extends CrudService<WorkContractInfoDao, Wo
 		}
 		workContractInfo.setPage(page);
 
+		Office office = officeService.get(officeId);
+		//如果访问的是2023年4月份之后的月报信息,则获取新的office信息
 		if(StringUtils.isBlank(isThisMonth) || !"1".equals(isThisMonth)){
-			workContractInfo.getSqlMap().put("officeId"," or parent_ids like concat('%',#{officeIdd},'%')");
+			workContractInfo.getSqlMap().put("officeId", "or parent_ids like concat('%',#{officeId},'%')");
 		}else{
-			workContractInfo.getSqlMap().put("officeId","");
+			if(null != office && StringUtils.isNotBlank(office.getName()) && office.getName().equals("工程五部")){
+				workContractInfo.getSqlMap().put("officeId", "or parent_ids like concat('%',#{officeId},'%')");
+			}else{
+				workContractInfo.getSqlMap().put("officeId", "");
+			}
 		}
+
 		int count = dao.findContractStatementPageCount(workContractInfo,officeId,beginDate,endDate,contractRecordState);
 		List<WorkContractInfo> list = dao.findContractStatementPage(workContractInfo,officeId,beginDate,endDate,contractRecordState);
 		page.setCount(count);

+ 2 - 2
src/main/java/com/jeeplus/modules/workinvoice/dao/WorkInvoiceDao.java

@@ -134,10 +134,10 @@ public interface WorkInvoiceDao extends CrudDao<WorkInvoice> {
 	Integer getProjectRelationListByProjectId(String projectId);
 
 	//公司级 查询开票报表
-	List<WorkInvoice> findBillingReportPage(@Param("WorkInvoice") WorkInvoice workInvoice,@Param("officeIdd") String officeIdd, @Param("beginDate")String beginDate, @Param("endDate")String endDate,@Param("newlyAdded")String newlyAdded,@Param("collectionThisMonth")String collectionThisMonth);
+	List<WorkInvoice> findBillingReportPage(@Param("WorkInvoice") WorkInvoice workInvoice,@Param("officeId") String officeIdd, @Param("beginDate")String beginDate, @Param("endDate")String endDate,@Param("newlyAdded")String newlyAdded,@Param("collectionThisMonth")String collectionThisMonth);
 
 	//公司级 查询开票报表的条数
-	Integer findBillingReportPageCount(@Param("WorkInvoice") WorkInvoice workInvoice,@Param("officeIdd") String officeIdd, @Param("beginDate")String beginDate, @Param("endDate")String endDate,@Param("newlyAdded")String newlyAdded,@Param("collectionThisMonth")String collectionThisMonth);
+	Integer findBillingReportPageCount(@Param("WorkInvoice") WorkInvoice workInvoice,@Param("officeId") String officeIdd, @Param("beginDate")String beginDate, @Param("endDate")String endDate,@Param("newlyAdded")String newlyAdded,@Param("collectionThisMonth")String collectionThisMonth);
 
 
 	//部门级 查询开票报表

+ 13 - 1
src/main/java/com/jeeplus/modules/workinvoice/service/WorkInvoiceService.java

@@ -3554,10 +3554,22 @@ public class WorkInvoiceService extends CrudService<WorkInvoiceDao, WorkInvoice>
 			workInvoice.setOfficeIdList(officeIdList);
 		}
 
-		if(StringUtils.isBlank(isThisMonth) || !"1".equals(isThisMonth)){
+		/*if(StringUtils.isBlank(isThisMonth) || !"1".equals(isThisMonth)){
 			workInvoice.getSqlMap().put("officeId"," or parent_ids like concat('%',#{officeIdd},'%')");
 		}else{
 			workInvoice.getSqlMap().put("officeId","");
+		}*/
+
+		Office office = officeService.get(officeId);
+		//如果访问的是2023年4月份之后的月报信息,则获取新的office信息
+		if(StringUtils.isBlank(isThisMonth) || !"1".equals(isThisMonth)){
+			workInvoice.getSqlMap().put("officeId", "or parent_ids like concat('%',#{officeId},'%')");
+		}else{
+			if(null != office && StringUtils.isNotBlank(office.getName()) && office.getName().equals("工程五部")){
+				workInvoice.getSqlMap().put("officeId", "or parent_ids like concat('%',#{officeId},'%')");
+			}else{
+				workInvoice.getSqlMap().put("officeId", "");
+			}
 		}
 
 		//为了方便后台 limit 的显示,将页面传入的page暂存

+ 1 - 1
src/main/java/com/jeeplus/modules/workinvoice/web/WorkInvoiceController.java

@@ -592,8 +592,8 @@ public class WorkInvoiceController extends BaseController {
 			}
 		} catch (Exception e) {
 			addMessage(redirectAttributes, "发票申请提交失败!");
-			addMessage(redirectAttributes, "系统内部错误");
 			logger.error("Exception e:"+e);
+			System.out.println("发票申请提交失败!失败原因:" + e);
 		}
 		switch (showFlag){
 			case "1":

+ 9 - 7
src/main/java/com/jeeplus/modules/workprojectnotify/web/WorkProjectNotifyController.java

@@ -1600,7 +1600,7 @@ public class WorkProjectNotifyController extends BaseController {
 				} else if (workProjectNotify.getType().equals("173")) {    //报告签章
 					return this.disposeProjectReportSignatureWork(workProjectNotify, model);
 
-				} else if (workProjectNotify.getType().equals("174")) {    //报告签章
+				} else if (workProjectNotify.getType().equals("174")) {    //审定单签章
 					return this.disposeProjectReportSignatureWorkApproval(workProjectNotify, model);
 
 				}  else if (workProjectNotify.getType().equals("192")) {    //电子用章申请
@@ -9704,7 +9704,7 @@ public class WorkProjectNotifyController extends BaseController {
 			reportSignature.setHome("home");
 		}
 		//判定当前流程页面签署是否已经签署过,若签署过,则auditFlag 赋值 1
-//		model.addAttribute("auditFlag",reportSignature.getSignatureFlag());
+		model.addAttribute("auditFlag",reportSignature.getSignatureFlag());
 //
 		model.addAttribute("processInstanceId", reportSignature.getProcessInstanceId());
 		model.addAttribute("projectReportSignature", reportSignature);
@@ -9749,9 +9749,10 @@ public class WorkProjectNotifyController extends BaseController {
 
 			String taskDefKey = reportSignature.getAct().getTaskDefKey();
 
-			if (StringUtils.isNotBlank(taskDefKey) && ("bmzr".equals(taskDefKey))) {
+			/*if (StringUtils.isNotBlank(taskDefKey) && ("bmzr".equals(taskDefKey))) {
 				return "modules/signature/projectRerpotSignatureWork/ProjectRerpotSignatureWorkAudit";
-			}
+			}*/
+			return "modules/signature/projectRerpotSignatureWork/ProjectRerpotSignatureWorkAudit";
 
 		} else if (workProjectNotify.getRemarks().contains("重新申请") && !"1".equals(workProjectNotify.getStatus())) {
 			return "modules/signature/projectRerpotSignatureWork/ProjectRerpotSignatureWorkModify";
@@ -9826,7 +9827,7 @@ public class WorkProjectNotifyController extends BaseController {
 			reportSignature.setHome("home");
 		}
 		//判定当前流程页面签署是否已经签署过,若签署过,则auditFlag 赋值 1
-//		model.addAttribute("auditFlag",reportSignature.getSignatureFlag());
+		model.addAttribute("auditFlag",reportSignature.getSignatureFlag());
 //
 		model.addAttribute("processInstanceId", reportSignature.getProcessInstanceId());
 		model.addAttribute("projectReportSignature", reportSignature);
@@ -9871,10 +9872,11 @@ public class WorkProjectNotifyController extends BaseController {
 
 			String taskDefKey = reportSignature.getAct().getTaskDefKey();
 
-			if (StringUtils.isNotBlank(taskDefKey) && ("bmzr".equals(taskDefKey))) {
+			/*if (StringUtils.isNotBlank(taskDefKey) && ("bmzr".equals(taskDefKey))) {
 				return "modules/signature/projectRerpotSignatureWork/ProjectRerpotSignatureWorkAuditApproval";
-			}
+			}*/
 
+			return "modules/signature/projectRerpotSignatureWork/ProjectRerpotSignatureWorkAuditApproval";
 		} else if (workProjectNotify.getRemarks().contains("重新申请") && !"1".equals(workProjectNotify.getStatus())) {
 			return "modules/signature/projectRerpotSignatureWork/ProjectRerpotSignatureWorkModifyApproval";
 		}

+ 2 - 2
src/main/java/com/jeeplus/modules/workreimbursement/dao/WorkReimbursementDao.java

@@ -45,10 +45,10 @@ public interface WorkReimbursementDao extends CrudDao<WorkReimbursement> {
     public WorkReimbursement getByProcessInstanceId(String processInstanceId);
 
     //公司级 报销报表、
-	List<WorkReimbursement> findReimbursementReportPage(@Param("workReimbursement")WorkReimbursement workReimbursement,@Param("officeIdd") String officeIdd, @Param("beginDate")String beginDate, @Param("endDate")String endDate);
+	List<WorkReimbursement> findReimbursementReportPage(@Param("workReimbursement")WorkReimbursement workReimbursement,@Param("officeId") String officeIdd, @Param("beginDate")String beginDate, @Param("endDate")String endDate);
 
 	//公司级 报销表条数
-	Integer findReimbursementReportPageCount(@Param("workReimbursement")WorkReimbursement workReimbursement,@Param("officeIdd") String officeIdd, @Param("beginDate")String beginDate, @Param("endDate")String endDate);
+	Integer findReimbursementReportPageCount(@Param("workReimbursement")WorkReimbursement workReimbursement,@Param("officeId") String officeIdd, @Param("beginDate")String beginDate, @Param("endDate")String endDate);
 
 
 	//部门级 报销报表、

+ 16 - 1
src/main/java/com/jeeplus/modules/workreimbursement/service/WorkReimbursementService.java

@@ -1665,11 +1665,26 @@ public class WorkReimbursementService extends CrudService<WorkReimbursementDao,
             //查询报销类型parentIds
             workReimbursement.setBusinessTypeParentIds(workReimbursement.getBusinessType()+",");
         }
-        if(StringUtils.isBlank(isThisMonth) || !"1".equals(isThisMonth)){
+        /*if(StringUtils.isBlank(isThisMonth) || !"1".equals(isThisMonth)){
             workReimbursement.getSqlMap().put("officeId"," or parent_ids like concat('%',#{officeIdd},'%')");
         }else{
             workReimbursement.getSqlMap().put("officeId","");
+        }*/
+
+
+        Office office = officeService.get(officeId);
+        //如果访问的是2023年4月份之后的月报信息,则获取新的office信息
+        if(StringUtils.isBlank(isThisMonth) || !"1".equals(isThisMonth)){
+            workReimbursement.getSqlMap().put("officeId", "or parent_ids like concat('%',#{officeId},'%')");
+        }else{
+            if(null != office && StringUtils.isNotBlank(office.getName()) && office.getName().equals("工程五部")){
+                workReimbursement.getSqlMap().put("officeId", "or parent_ids like concat('%',#{officeId},'%')");
+            }else{
+                workReimbursement.getSqlMap().put("officeId", "");
+            }
         }
+
+
         //为了方便后台 limit 的显示,将页面传入的page暂存
         Integer oldPageNo = page.getPageNo();
         if((page.getPageNo()-1) >= 0) {

+ 3 - 0
src/main/resources/jeeplus.properties

@@ -367,6 +367,9 @@ signature_daily_office_work = 3190218693018722598
 #괩멩푯覽직넋id
 signature_project_report_work = 3196710189708420066
 
+#�땍데푯覽직넋id
+signature_project_approval_work = 3245192847945704016
+
 
 
 

+ 1 - 1
src/main/resources/mappings/modules/ruralprojectrecords/RuralProjectRecordsDao.xml

@@ -2854,7 +2854,7 @@
 	</select>
 
 	<select id="getBelongingDepartmentByBelongingDepartmentName" parameterType="java.lang.String" resultType="java.lang.String">
-		select id from sys_office where name = #{belongingDepartmentName}
+		select id from sys_office where name = #{belongingDepartmentName} and del_flag = 0
 	</select>
 
 	<select id="getBelongingDepartmentNameByBelongingDepartment" parameterType="java.lang.String" resultType="java.lang.String">

+ 101 - 1
src/main/resources/mappings/modules/signature/projectReport/ProjectReportSignatureDao.xml

@@ -47,12 +47,22 @@
 		a.status as "status",
 		a.process_instance_id as "processInstanceId",
 		a.duty_person as "dutyPerson",
-		a.signature_id as "signatureId"
+		a.signature_id as "signatureId",
+		a.signature_contract_id as "signatureContractId",
+		a.signature_document_id as "signatureDocumentId",
+		a.signature_url as "signatureUrl",
+		a.signature_url_flag as "signatureUrlFlag",
+		a.signature_file_name as "signatureFileName",
+		a.signature_upload_date as "signatureUploadDate",
+		a.signature_upload_file_user as "signatureUploadFileUser.id",
+		sus.name as "signatureUploadFileUser.name",
+		a.signature_flag as "signatureFlag"
 	</sql>
 
 	<sql id="signatureJoin">
         LEFT JOIN sys_user su ON su.id = a.create_by
 		LEFT JOIN sys_office o ON o.id = a.office_id
+        LEFT JOIN sys_user sus ON sus.id = a.signature_upload_file_user
 	</sql>
 
 	<sql id="dailyOfficeWorkLeftColumns">
@@ -77,6 +87,22 @@
 		WHERE a.signature_document_id like concat ('%',#{documentId},'%') and a.del_flag = 0
 	</select>
 
+	<select id="getByDocumentReportId" resultType="ReportSignature" >
+		SELECT
+			<include refid="signatureColumns"/>
+        FROM report_signature_report a
+		<include refid="dailyOfficeWorkLeftColumns"/>
+		WHERE a.signature_document_id like concat ('%',#{documentId},'%') and a.del_flag = 0
+	</select>
+
+	<select id="getByDocumentApprovalId" resultType="ReportSignature" >
+		SELECT
+			<include refid="signatureColumns"/>
+        FROM report_signature_approval a
+		<include refid="dailyOfficeWorkLeftColumns"/>
+		WHERE a.signature_document_id like concat ('%',#{documentId},'%') and a.del_flag = 0
+	</select>
+
 	<select id="getByContractId" resultType="ProjectReportSignatureWork" >
 		SELECT
 			<include refid="dailyOfficeWorkColumns"/>
@@ -85,6 +111,22 @@
 		WHERE a.signature_contract_id =#{contractId} and a.del_flag = 0
 	</select>
 
+	<select id="getByContractReportId" resultType="ReportSignature" >
+		SELECT
+			<include refid="signatureColumns"/>
+        FROM report_signature_report a
+		<include refid="dailyOfficeWorkLeftColumns"/>
+		WHERE a.signature_contract_id =#{contractId} and a.del_flag = 0
+	</select>
+
+	<select id="getByContractApprovalId" resultType="ReportSignature" >
+		SELECT
+			<include refid="signatureColumns"/>
+        FROM report_signature_approval a
+		<include refid="dailyOfficeWorkLeftColumns"/>
+		WHERE a.signature_contract_id =#{contractId} and a.del_flag = 0
+	</select>
+
 
 	<select id="findList" resultType="ProjectReportSignatureWork" >
 		SELECT
@@ -383,6 +425,64 @@
 		WHERE id = #{id}
 	</update>
 
+	<update id="updateApprovalSignatureInfo" >
+		UPDATE report_signature_approval SET
+		<if test="signatureDocumentId != null and signatureDocumentId != ''">
+			signature_document_id = #{signatureDocumentId}
+		</if>
+		<if test="signatureUrl != null">
+			,signature_url = #{signatureUrl}
+		</if>
+		<if test="signatureUrlFlag != null">
+			,signature_url_flag = #{signatureUrlFlag}
+		</if>
+		<if test="signatureContractId != null and signatureContractId != ''">
+			,signature_contract_id = #{signatureContractId}
+		</if>
+		<if test="signatureFlag != null">
+			,signature_flag = #{signatureFlag}
+		</if>
+		<if test="signatureFileName != null and signatureFileName != ''">
+			,signature_file_name = #{signatureFileName}
+		</if>
+		<if test="signatureUploadFileUser != null and signatureUploadFileUser.id != null and signatureUploadFileUser.id != ''">
+			,signature_upload_file_user = #{signatureUploadFileUser.id}
+		</if>
+		<if test="signatureUploadDate != null">
+			,signature_upload_date = #{signatureUploadDate}
+		</if>
+		WHERE id = #{id}
+	</update>
+
+	<update id="updateReportSignatureInfo" >
+		UPDATE report_signature_report SET
+		<if test="signatureDocumentId != null and signatureDocumentId != ''">
+			signature_document_id = #{signatureDocumentId}
+		</if>
+		<if test="signatureUrl != null">
+			,signature_url = #{signatureUrl}
+		</if>
+		<if test="signatureUrlFlag != null">
+			,signature_url_flag = #{signatureUrlFlag}
+		</if>
+		<if test="signatureContractId != null and signatureContractId != ''">
+			,signature_contract_id = #{signatureContractId}
+		</if>
+		<if test="signatureFlag != null">
+			,signature_flag = #{signatureFlag}
+		</if>
+		<if test="signatureFileName != null and signatureFileName != ''">
+			,signature_file_name = #{signatureFileName}
+		</if>
+		<if test="signatureUploadFileUser != null and signatureUploadFileUser.id != null and signatureUploadFileUser.id != ''">
+			,signature_upload_file_user = #{signatureUploadFileUser.id}
+		</if>
+		<if test="signatureUploadDate != null">
+			,signature_upload_date = #{signatureUploadDate}
+		</if>
+		WHERE id = #{id}
+	</update>
+
 	<delete id="deleteProjectReportRelevanceBySignatureId">
 		delete from signature_project_report_relevance_number where signature_project_report_id = #{id}
 	</delete>

+ 1 - 1
src/main/resources/mappings/modules/sys/OfficeDao.xml

@@ -783,7 +783,7 @@
 		FROM sys_office a
 		<include refid="officeJoins"/>
 		WHERE a.del_flag = #{DEL_FLAG_NORMAL} AND a.useable = '1' AND (
-		a.id = #{id} or a.code between 10001008 and 10001014 and a.code != 10001012)
+		a.id = #{id} or (a.CODE BETWEEN 10001008 AND 10001014 or a.code = 10001020) and a.code != 10001012)
 		<if test="oldName != null and oldName != ''">
 			and a.name like concat('%',#{oldName},'%')
 		</if>

+ 6 - 2
src/main/resources/mappings/modules/workcontractinfo/WorkContractInfoDao.xml

@@ -1572,7 +1572,9 @@
 		<where>
 			a.del_flag=0
 			and a.contract_state = 5
-			and a.office_id in(select id  from sys_office where id = #{officeIdd} ${workContractInfo.sqlMap.officeId})
+			<if test="officeId != null and officeId != ''">
+				and a.office_id in(select id  from sys_office where id = #{officeId} ${workContractInfo.sqlMap.officeId})
+			</if>
 
 			<choose>
 				<when test="contractRecordState == '5'.toString() ">
@@ -1665,7 +1667,9 @@
 		<where>
 			a.del_flag=0
 			and a.contract_state = 5
-			and a.office_id in(select id  from sys_office where id = #{officeIdd} ${workContractInfo.sqlMap.officeId})
+			<if test="officeId != null and officeId != ''">
+				and a.office_id in(select id  from sys_office where id = #{officeId} ${workContractInfo.sqlMap.officeId})
+			</if>
 
 			<choose>
 				<when test="contractRecordState == '5'.toString() ">

+ 6 - 2
src/main/resources/mappings/modules/workinvoice/WorkInvoiceDao.xml

@@ -2132,7 +2132,9 @@
 		<where>
 			a.del_flag=0
 			and a.invoice_state = 5
-			and a.office_id in(select id  from sys_office where id = #{officeIdd} ${WorkInvoice.sqlMap.officeId})
+			<if test="officeId != null and officeId != ''">
+				and a.office_id in(select id  from sys_office where id = #{officeId} ${WorkInvoice.sqlMap.officeId})
+			</if>
 			<if test="newlyAdded == '5'.toString() ">
 				and a.invoice_date >= #{beginDate}
 				and a.invoice_date &lt;= #{endDate}
@@ -2283,7 +2285,9 @@
 		<where>
 			a.del_flag=0
 			and a.invoice_state = 5
-			and a.office_id in(select id  from sys_office where id = #{officeIdd} ${WorkInvoice.sqlMap.officeId})
+			<if test="officeId != null and officeId != ''">
+				and a.office_id in(select id  from sys_office where id = #{officeId} ${WorkInvoice.sqlMap.officeId})
+			</if>
 			<if test="newlyAdded == '5'.toString() ">
 				and a.invoice_date >= #{beginDate}
 				and a.invoice_date &lt;= #{endDate}

+ 6 - 2
src/main/resources/mappings/modules/workreimbursement/WorkReimbursementDao.xml

@@ -558,7 +558,9 @@
 
 				 a.del_flag=0
 				and a.status = 5
-				and a.office_id in(select id  from sys_office where id = #{officeIdd} ${workReimbursement.sqlMap.officeId})
+				<if test="officeId != null and officeId != ''">
+					and a.office_id in(select id  from sys_office where id = #{officeId} ${workReimbursement.sqlMap.officeId})
+				</if>
 				and a.accomplish_date >= #{beginDate}
 				and a.accomplish_date &lt;= #{endDate}
 
@@ -655,7 +657,9 @@
 
 			a.del_flag=0
 			and a.status = 5
-			and a.office_id in(select id  from sys_office where id = #{officeIdd} ${workReimbursement.sqlMap.officeId})
+			<if test="officeId != null and officeId != ''">
+				and a.office_id in(select id  from sys_office where id = #{officeId} ${workReimbursement.sqlMap.officeId})
+			</if>
 			and a.accomplish_date >= #{beginDate}
 			and a.accomplish_date &lt;= #{endDate}
 

+ 13 - 13
src/main/webapp/webpage/modules/signature/projectRerpotSignatureWork/ProjectRerpotSignatureWorkAudit.jsp

@@ -15,15 +15,15 @@
 		var validateForm;
 		function doSubmit(obj){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
 			if(validateForm.form()){
-				// var ss= document.getElementById("iframe").contentWindow.document.getElementById("opinion").value
-				// $("#opinion").val(ss);
+				var ss= document.getElementById("iframe").contentWindow.document.getElementById("opinion").value
+				$("#opinion").val(ss);
 				if(obj == 1) {
-				//
-				// 	var auditFlag = $("#auditFlag").val();
-				// 	if(auditFlag != 1){
-				// 		top.layer.msg('报告签章未审核完成,请审核后点击同意', {icon: 0});
-				// 		return false;
-				// 	}
+
+					var auditFlag = $("#auditFlag").val();
+					if(auditFlag != 1){
+						top.layer.msg('报告签章未审核完成,请审核后点击同意', {icon: 0});
+						return false;
+					}
 					$("#flag").val("yes");
 				}else {
 					if(obj == 2){
@@ -107,7 +107,7 @@
 		function getManualSignatureUrl(id){
 			$.ajax({
 				type:"post",
-				url:'${ctx}/projectReport/projectReportSignature/getSignatureUrl',
+				url:'${ctx}/projectReport/projectReportSignature/getReportSignatureUrl',
 				data:{"id": id},
 				dataType:"json",
 				success:function(data){
@@ -117,7 +117,7 @@
 						var interVal = setInterval(function (){
 									$.ajax({
 										type:"post",
-										url:'${ctx}/projectReport/projectReportSignature/getSignatureStatus',
+										url:'${ctx}/projectReport/projectReportSignature/getReportSignatureStatus',
 										data:{"id": id},
 										dataType:"json",
 										success:function(data){
@@ -475,9 +475,9 @@
 
 
 			<div class="form-group layui-row">
-<%--				<c:if test="${auditFlag != 1}">--%>
-<%--					<div style="float: right"> <a id="approvaButton" href=javascript:void(0);  onclick="getManualSignatureUrl('${projectReportSignature.id}')" class="layui-btn layui-btn-sm" >签章审核</a></div>--%>
-<%--				</c:if>--%>
+				<c:if test="${auditFlag != 1}">
+					<div style="float: right"> <a id="approvaButton" href=javascript:void(0);  onclick="getManualSignatureUrl('${projectReportSignature.id}')" class="layui-btn layui-btn-sm" >签章审核</a></div>
+				</c:if>
 				<div class="form-group-label"><h2>签章申请附件信息</h2></div>
 				<div class="layui-item layui-col-xs12" style="padding:0 16px;">
 					<table id="listAttachment" class="table table-bordered table-condensed details">

+ 13 - 13
src/main/webapp/webpage/modules/signature/projectRerpotSignatureWork/ProjectRerpotSignatureWorkAuditApproval.jsp

@@ -15,15 +15,15 @@
 		var validateForm;
 		function doSubmit(obj){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
 			if(validateForm.form()){
-				// var ss= document.getElementById("iframe").contentWindow.document.getElementById("opinion").value
-				// $("#opinion").val(ss);
+				var ss= document.getElementById("iframe").contentWindow.document.getElementById("opinion").value
+				$("#opinion").val(ss);
 				if(obj == 1) {
-				//
-				// 	var auditFlag = $("#auditFlag").val();
-				// 	if(auditFlag != 1){
-				// 		top.layer.msg('报告签章未审核完成,请审核后点击同意', {icon: 0});
-				// 		return false;
-				// 	}
+
+					var auditFlag = $("#auditFlag").val();
+					if(auditFlag != 1){
+						top.layer.msg('审定单签章未审核完成,请审核后点击同意', {icon: 0});
+						return false;
+					}
 					$("#flag").val("yes");
 				}else {
 					if(obj == 2){
@@ -107,7 +107,7 @@
 		function getManualSignatureUrl(id){
 			$.ajax({
 				type:"post",
-				url:'${ctx}/projectReport/projectReportSignature/getSignatureUrl',
+				url:'${ctx}/projectReport/projectReportSignature/getApprovalSignatureUrl',
 				data:{"id": id},
 				dataType:"json",
 				success:function(data){
@@ -117,7 +117,7 @@
 						var interVal = setInterval(function (){
 									$.ajax({
 										type:"post",
-										url:'${ctx}/projectReport/projectReportSignature/getSignatureStatus',
+										url:'${ctx}/projectReport/projectReportSignature/getApprovalSignatureStatus',
 										data:{"id": id},
 										dataType:"json",
 										success:function(data){
@@ -475,9 +475,9 @@
 
 
 			<div class="form-group layui-row">
-<%--				<c:if test="${auditFlag != 1}">--%>
-<%--					<div style="float: right"> <a id="approvaButton" href=javascript:void(0);  onclick="getManualSignatureUrl('${projectReportSignature.id}')" class="layui-btn layui-btn-sm" >签章审核</a></div>--%>
-<%--				</c:if>--%>
+				<c:if test="${auditFlag != 1}">
+					<div style="float: right"> <a id="approvaButton" href=javascript:void(0);  onclick="getManualSignatureUrl('${projectReportSignature.id}')" class="layui-btn layui-btn-sm" >签章审核</a></div>
+				</c:if>
 				<div class="form-group-label"><h2>签章申请附件信息</h2></div>
 				<div class="layui-item layui-col-xs12" style="padding:0 16px;">
 					<table id="listAttachment" class="table table-bordered table-condensed details">

+ 1 - 1
src/main/webapp/webpage/modules/signatureManagement/businessSignature/BusinessSignatureForm.jsp

@@ -241,7 +241,7 @@
             </div>
 
             <div class="form-group layui-row">
-                <div class="form-group-label"><h2><span class="require-item">*</span>业务用章申请附件信息</h2></div>
+                <div class="form-group-label"><h2><span class="require-item">*</span>业务用章申请附件信息<span style="font-size: 14px;color: red"> (注:请上传签字审核过的申请)</span></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>
                     <a class="nav-btn nav-btn-export" title="下载业务用章承诺书模板"  onclick="window.location.href='${ctx}/businessSignature/businessSignature/downloadTemplate';"><i class="fa fa-download"></i>&nbsp;下载承诺书模板</a>

+ 1 - 1
src/main/webapp/webpage/modules/signatureManagement/businessSignature/BusinessSignatureModify.jsp

@@ -246,7 +246,7 @@
             </div>
 
             <div class="form-group layui-row">
-                <div class="form-group-label"><h2><span class="require-item">*</span>业务用章申请附件信息</h2></div>
+                <div class="form-group-label"><h2><span class="require-item">*</span>业务用章申请附件信息<span style="font-size: 14px;color: red"> (注:请上传签字审核过的申请)</span></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>
                     <a class="nav-btn nav-btn-export" title="下载业务用章承诺书模板"  onclick="window.location.href='${ctx}/businessSignature/businessSignature/downloadTemplate';"><i class="fa fa-download"></i>&nbsp;下载承诺书模板</a>

+ 2 - 1
src/main/webapp/webpage/modules/signatureManagement/electronicSignature/ElectronicSignatureForm.jsp

@@ -304,10 +304,11 @@
             </div>
 
             <div class="form-group layui-row">
-                <div class="form-group-label"><h2><span class="require-item">*</span>电子印章申请附件信息</h2></div>
+                <div class="form-group-label"><h2><span class="require-item">*</span>电子印章申请附件信息<span style="font-size: 14px;color: red"> (注:请上传签字审核过的申请)</span></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>
                     <a class="nav-btn nav-btn-export" title="下载电子印章承诺书模板"  onclick="window.location.href='${ctx}/electronicSignature/electronicSignature/downloadTemplate';"><i class="fa fa-download"></i>&nbsp;下载模板</a>
+
                 </div>
                 <div id="addFile_attachment" style="display: none" class="upload-progress">
                     <span id="fileName_attachment"></span>

+ 1 - 1
src/main/webapp/webpage/modules/signatureManagement/electronicSignature/ElectronicSignatureModify.jsp

@@ -257,7 +257,7 @@
             </div>
 
             <div class="form-group layui-row">
-                <div class="form-group-label"><h2><span class="require-item">*</span>电子印章申请附件信息</h2></div>
+                <div class="form-group-label"><h2><span class="require-item">*</span>电子印章申请附件信息<span style="font-size: 14px;color: red"> (注:请上传签字审核过的申请)</span></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>
                     <a class="nav-btn nav-btn-export" title="下载电子印章承诺书模板"  onclick="window.location.href='${ctx}/electronicSignature/electronicSignature/downloadTemplate';"><i class="fa fa-download"></i>&nbsp;下载模板</a>