From acb89e5bc199742ee1a61a1cf0ff0003fddb2fe8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A7=9C=E7=8E=89=E7=90=A6?= <7507756+jiang_yuqi@user.noreply.gitee.com> Date: Sun, 9 Feb 2025 23:21:26 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yanzhu/system/api/RemoteProService.java | 10 + .../api/factory/RemoteProFallbackFactory.java | 6 + .../mapper/manage/BasTemplateMapper.xml | 2 + .../resources/mapper/system/SysUserMapper.xml | 2 +- .../listener/FlowComSignListener.java | 41 ++++ ...ProProjectInfoSubdeptsUsersController.java | 19 +- .../yanzhu/manage/enums/CraftPostEnums.java | 4 +- .../yanzhu/manage/enums/DeptGroupEnums.java | 3 +- .../yanzhu/manage/enums/UserPostEnums.java | 1 + .../IProProjectInfoSubdeptsUsersService.java | 6 + ...roProjectInfoSubdeptsUsersServiceImpl.java | 175 ++++++++++++------ .../manage/utils/pdf/PdfImageSignetUtil.java | 21 +-- .../miniprogram/pages/login/login.wxml | 2 +- .../miniprogram/pages/login/login.wxss | 1 + .../project_flowable/approveTask/index.wxml | 10 +- .../project_flowable/detailTask/index.wxml | 10 +- .../miniprogram/pages/project_info/index.js | 4 +- .../miniprogram/pages/project_info/index.wxml | 6 +- .../miniprogram/pages/project_more/index.wxml | 2 +- .../miniprogram/pages/project_qr/index.js | 83 +++++++-- .../miniprogram/pages/project_qr/index.wxml | 38 +++- .../miniprogram/pages/project_qr/index.wxss | 1 + .../miniprogram/project.private.config.json | 2 +- .../task/myProcess/detail/indexDrawer.vue | 6 +- .../flowable/task/todo/detail/indexDrawer.vue | 10 +- 25 files changed, 333 insertions(+), 132 deletions(-) create mode 100644 yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/listener/FlowComSignListener.java diff --git a/yanzhu-api/yanzhu-api-system/src/main/java/com/yanzhu/system/api/RemoteProService.java b/yanzhu-api/yanzhu-api-system/src/main/java/com/yanzhu/system/api/RemoteProService.java index 81064a49..3416af3f 100644 --- a/yanzhu-api/yanzhu-api-system/src/main/java/com/yanzhu/system/api/RemoteProService.java +++ b/yanzhu-api/yanzhu-api-system/src/main/java/com/yanzhu/system/api/RemoteProService.java @@ -41,6 +41,16 @@ public interface RemoteProService @GetMapping("/proProjectInfoSubdeptsUsers/approveSubDeptsUser/{busKey}") public R approveSubDeptsUser(@PathVariable("busKey") Long busKey, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + /** + * 公司安全承诺书文件签名章 + * + * @param busKey 业务主键 + * @param source 请求来源 + * @return 结果 + */ + @GetMapping("/proProjectInfoSubdeptsUsers/subDeptsUserComSign/{busKey}") + public R subDeptsUserComSign(@PathVariable("busKey") Long busKey, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + /** * 项目安全承诺书文件签名章 * diff --git a/yanzhu-api/yanzhu-api-system/src/main/java/com/yanzhu/system/api/factory/RemoteProFallbackFactory.java b/yanzhu-api/yanzhu-api-system/src/main/java/com/yanzhu/system/api/factory/RemoteProFallbackFactory.java index 79abcff8..a4e674a6 100644 --- a/yanzhu-api/yanzhu-api-system/src/main/java/com/yanzhu/system/api/factory/RemoteProFallbackFactory.java +++ b/yanzhu-api/yanzhu-api-system/src/main/java/com/yanzhu/system/api/factory/RemoteProFallbackFactory.java @@ -38,6 +38,12 @@ public class RemoteProFallbackFactory implements FallbackFactory subDeptsUserComSign(Long busKey, String source) + { + return R.fail("公司承诺书签名章失败:" + throwable.getMessage()); + } + @Override public R subDeptsUserProSign(Long busKey, String source) { diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/BasTemplateMapper.xml b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/BasTemplateMapper.xml index 978986e0..0d9d5c6b 100644 --- a/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/BasTemplateMapper.xml +++ b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/BasTemplateMapper.xml @@ -32,6 +32,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and bt.com_id = #{comId} and bt.project_id = #{projectId} + and bt.com_id = #{activeComId} + and bt.project_id = #{activeProjectId} and bt.tem_name like concat('%', #{temName}, '%') and bt.tem_type = #{temType} and bt.is_del = #{isDel} diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/system/SysUserMapper.xml b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/system/SysUserMapper.xml index 7c8e26f4..8f4d9d86 100644 --- a/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/system/SysUserMapper.xml +++ b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/system/SysUserMapper.xml @@ -80,7 +80,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" from sys_user u left join sys_dept d on u.dept_id = d.dept_id left join sys_user_ext ex on u.user_id=ex.user_id - where u.del_flag = '0' + where u.del_flag = '0' and u.user_type= '00' AND u.user_id = #{userId} diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/listener/FlowComSignListener.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/listener/FlowComSignListener.java new file mode 100644 index 00000000..c769fe9a --- /dev/null +++ b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/listener/FlowComSignListener.java @@ -0,0 +1,41 @@ +package com.yanzhu.flowable.listener; + +import com.yanzhu.common.core.constant.SecurityConstants; +import com.yanzhu.common.core.text.Convert; +import com.yanzhu.system.api.RemoteProService; +import lombok.extern.slf4j.Slf4j; +import org.flowable.engine.delegate.DelegateExecution; +import org.flowable.engine.delegate.ExecutionListener; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Component; + +/** + * 公司审批签名执行监听器 + * + * 执行监听器允许在执行过程中执行Java代码。 + * 执行监听器可以捕获事件的类型: + * 流程实例启动,结束 + * 输出流捕获 + * 获取启动,结束 + * 路由开始,结束 + * 中间事件开始,结束 + * 触发开始事件,触发结束事件 + * + * @author JiangYuQi + * @date 2024/12/16 + */ +@Slf4j +@Component +public class FlowComSignListener implements ExecutionListener { + + @Lazy + @Autowired + private RemoteProService remoteProService; + + @Override + public void notify(DelegateExecution execution) { + log.info("公司审批签名执行监听器:{}", execution.getProcessInstanceBusinessKey()); + remoteProService.subDeptsUserComSign(Convert.toLong(execution.getProcessInstanceBusinessKey(),null), SecurityConstants.INNER); + } +} diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/ProProjectInfoSubdeptsUsersController.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/ProProjectInfoSubdeptsUsersController.java index 5ae7d451..42492fbe 100644 --- a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/ProProjectInfoSubdeptsUsersController.java +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/ProProjectInfoSubdeptsUsersController.java @@ -160,13 +160,13 @@ public class ProProjectInfoSubdeptsUsersController extends BaseController } /** - * 班组安全承诺书文件签名章 + * 公司安全承诺书文件签名章 */ @InnerAuth - @GetMapping("/subDeptsUserGroSign/{busKey}") - public R subDeptsUserGroSign(@PathVariable("busKey") Long busKey) + @GetMapping("/subDeptsUserComSign/{busKey}") + public R subDeptsUserComSign(@PathVariable("busKey") Long busKey) { - proProjectInfoSubdeptsUsersService.approveSubDeptsUserGroSign(busKey); + proProjectInfoSubdeptsUsersService.approveSubDeptsUserComSign(busKey); return R.ok(AjaxResult.success()); } @@ -181,6 +181,17 @@ public class ProProjectInfoSubdeptsUsersController extends BaseController return R.ok(AjaxResult.success()); } + /** + * 班组安全承诺书文件签名章 + */ + @InnerAuth + @GetMapping("/subDeptsUserGroSign/{busKey}") + public R subDeptsUserGroSign(@PathVariable("busKey") Long busKey) + { + proProjectInfoSubdeptsUsersService.approveSubDeptsUserGroSign(busKey); + return R.ok(AjaxResult.success()); + } + /** * 修改人员进场状态 * @param ids diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/enums/CraftPostEnums.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/enums/CraftPostEnums.java index 9a9a7329..6dde05aa 100644 --- a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/enums/CraftPostEnums.java +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/enums/CraftPostEnums.java @@ -6,7 +6,9 @@ package com.yanzhu.manage.enums; public enum CraftPostEnums { WTDL("1022", "委托代理人"), - XMJL("1023", "项目经理"); + XMJL("1023", "项目经理"), + AQZY("1024", "安全专员"), + CLZY("1025", "材料专员"); private final String code; private final String info; diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/enums/DeptGroupEnums.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/enums/DeptGroupEnums.java index c4fd28f7..7ebf73d9 100644 --- a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/enums/DeptGroupEnums.java +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/enums/DeptGroupEnums.java @@ -5,7 +5,8 @@ package com.yanzhu.manage.enums; */ public enum DeptGroupEnums { - MANAGE("DEFAULT", "管理班组"); + MANAGE("DEFAULT", "管理班组"), + SPECIAL("SPECIAL", "特殊工种班组"); private final String code; private final String info; diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/enums/UserPostEnums.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/enums/UserPostEnums.java index 389266e3..30e493f8 100644 --- a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/enums/UserPostEnums.java +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/enums/UserPostEnums.java @@ -9,6 +9,7 @@ public enum UserPostEnums { XMJL("2", "项目经理"), BZZ("3", "班组长"), LWGR("4", "劳务工人"), + TSGZ("5", "特殊工种"), CLRY("6", "材料员"), AQRY("8", "安全员"), JSDWGL("66", "建设单位管理"), diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IProProjectInfoSubdeptsUsersService.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IProProjectInfoSubdeptsUsersService.java index 641b9fd8..c73bdb33 100644 --- a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IProProjectInfoSubdeptsUsersService.java +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IProProjectInfoSubdeptsUsersService.java @@ -124,6 +124,12 @@ public interface IProProjectInfoSubdeptsUsersService */ public void approveSubDeptsUserProSign(Long id); + /** + * 公司安全承诺书文件签名章 + * @param id + */ + public void approveSubDeptsUserComSign(Long id); + /** * 新增建设单位人员 * diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/ProProjectInfoSubdeptsUsersServiceImpl.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/ProProjectInfoSubdeptsUsersServiceImpl.java index d14424ef..822a2bee 100644 --- a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/ProProjectInfoSubdeptsUsersServiceImpl.java +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/ProProjectInfoSubdeptsUsersServiceImpl.java @@ -318,7 +318,7 @@ public class ProProjectInfoSubdeptsUsersServiceImpl implements IProProjectInfoSu // 班组信息处理 if(Objects.nonNull(proProjectInfoSubdeptsUsers.getUserPost())){ if(Objects.equals(proProjectInfoSubdeptsUsers.getUserPost(), UserPostEnums.XMJL.getCode())){ - //查询管理班组 + // 查询管理班组 ProProjectInfoSubdeptsGroup query = new ProProjectInfoSubdeptsGroup(); query.setProjectId(parUsers.getProjectId()); query.setSubDeptId(parUsers.getSubDeptId()); @@ -332,6 +332,39 @@ public class ProProjectInfoSubdeptsUsersServiceImpl implements IProProjectInfoSu proProjectInfoSubdeptsUsers.setCraftType(CraftTypeEnums.GLRY.getCode()); proProjectInfoSubdeptsUsers.setCraftPost(CraftPostEnums.XMJL.getCode()); sysUser.setUserType(UserTypeEnums.FBXMJL.getCode()); + + // 设置特殊工种班组 + ProProjectInfoSubdeptsGroup GroupQuery = new ProProjectInfoSubdeptsGroup(); + GroupQuery.setProjectId(parUsers.getProjectId()); + GroupQuery.setSubDeptId(parUsers.getSubDeptId()); + GroupQuery.setGroupCode(DeptGroupEnums.SPECIAL.getCode()); + List specialGroups = proProjectInfoSubdeptsGroupMapper.selectProProjectInfoSubdeptsGroupList(query); + + if(Objects.nonNull(specialGroups) && specialGroups.size()>0){ + ProProjectInfoSubdeptsGroup specialGroup = specialGroups.get(0); + specialGroup.setGroupLeaderName(proProjectInfoSubdeptsUsers.getUserName()); + specialGroup.setGroupLeaderCode(proProjectInfoSubdeptsUsers.getCardCode()); + specialGroup.setGroupLeaderPhone(proProjectInfoSubdeptsUsers.getUserPhone()); + proProjectInfoSubdeptsGroupMapper.updateProProjectInfoSubdeptsGroup(specialGroup); + }else{ + ProProjectInfoSubdeptsGroup specialGroup = new ProProjectInfoSubdeptsGroup(); + specialGroup.setComId(proProjectInfoSubdeptsUsers.getComId()); + specialGroup.setProjectId(proProjectInfoSubdeptsUsers.getProjectId()); + specialGroup.setSubDeptId(proProjectInfoSubdeptsUsers.getSubDeptId()); + specialGroup.setSubDeptName(proProjectInfoSubdeptsUsers.getSubDeptName()); + specialGroup.setSubDeptType(proProjectInfoSubdeptsUsers.getSubDeptType()); + specialGroup.setGroupCode(DeptGroupEnums.SPECIAL.getCode()); + specialGroup.setGroupName(DeptGroupEnums.SPECIAL.getInfo()); + specialGroup.setCraftType(CraftTypeEnums.TSGZ.getCode()); + specialGroup.setGroupLeaderName(proProjectInfoSubdeptsUsers.getUserName()); + specialGroup.setGroupLeaderCode(proProjectInfoSubdeptsUsers.getCardCode()); + specialGroup.setGroupLeaderPhone(proProjectInfoSubdeptsUsers.getUserPhone()); + specialGroup.setUseStatus(UseStateEnums.AW.getCode()); + specialGroup.setApproveStatus(ApproveStatus.await.getCode()); + specialGroup.setCreateBy(DataSourceEnuns.APP.getInfo()); + specialGroup.setCreateTime(DateUtils.getNowDate()); + proProjectInfoSubdeptsGroupMapper.insertProProjectInfoSubdeptsGroup(specialGroup); + } }else if(Objects.equals(proProjectInfoSubdeptsUsers.getUserPost(), UserPostEnums.BZZ.getCode())){ // 班组长新增班组 ProProjectInfoSubdeptsGroup query = new ProProjectInfoSubdeptsGroup(); @@ -364,7 +397,7 @@ public class ProProjectInfoSubdeptsUsersServiceImpl implements IProProjectInfoSu sysUser.setUserType(UserTypeEnums.FBBZZZ.getCode()); }else if(Objects.equals(proProjectInfoSubdeptsUsers.getUserPost(), UserPostEnums.CLRY.getCode())){ - //查询管理班组 + // 查询管理班组 ProProjectInfoSubdeptsGroup query = new ProProjectInfoSubdeptsGroup(); query.setProjectId(parUsers.getProjectId()); query.setSubDeptId(parUsers.getSubDeptId()); @@ -375,10 +408,11 @@ public class ProProjectInfoSubdeptsUsersServiceImpl implements IProProjectInfoSu proProjectInfoSubdeptsUsers.setSubDeptGroup(groups.get(0).getId()); proProjectInfoSubdeptsUsers.setSubDeptGroupName(groups.get(0).getGroupName()); } - + proProjectInfoSubdeptsUsers.setCraftType(CraftTypeEnums.GLRY.getCode()); + proProjectInfoSubdeptsUsers.setCraftPost(CraftPostEnums.CLZY.getCode()); sysUser.setUserType(UserTypeEnums.FBCLRY.getCode()); }else if(Objects.equals(proProjectInfoSubdeptsUsers.getUserPost(), UserPostEnums.AQRY.getCode())){ - //查询管理班组 + // 查询管理班组 ProProjectInfoSubdeptsGroup query = new ProProjectInfoSubdeptsGroup(); query.setProjectId(parUsers.getProjectId()); query.setSubDeptId(parUsers.getSubDeptId()); @@ -389,8 +423,22 @@ public class ProProjectInfoSubdeptsUsersServiceImpl implements IProProjectInfoSu proProjectInfoSubdeptsUsers.setSubDeptGroup(groups.get(0).getId()); proProjectInfoSubdeptsUsers.setSubDeptGroupName(groups.get(0).getGroupName()); } - + proProjectInfoSubdeptsUsers.setCraftType(CraftTypeEnums.GLRY.getCode()); + proProjectInfoSubdeptsUsers.setCraftPost(CraftPostEnums.AQZY.getCode()); sysUser.setUserType(UserTypeEnums.FBAQRY.getCode()); + }else if(Objects.equals(proProjectInfoSubdeptsUsers.getUserPost(), UserPostEnums.TSGZ.getCode())){ + // 查询特殊工种绑定班组信息 + ProProjectInfoSubdeptsGroup query = new ProProjectInfoSubdeptsGroup(); + query.setProjectId(parUsers.getProjectId()); + query.setSubDeptId(parUsers.getSubDeptId()); + query.setGroupCode(DeptGroupEnums.SPECIAL.getCode()); + List groups = proProjectInfoSubdeptsGroupMapper.selectProProjectInfoSubdeptsGroupList(query); + + if(Objects.nonNull(groups) && groups.size()>0){ + proProjectInfoSubdeptsUsers.setSubDeptGroup(groups.get(0).getId()); + proProjectInfoSubdeptsUsers.setSubDeptGroupName(groups.get(0).getGroupName()); + } + sysUser.setUserType(UserTypeEnums.FBLWRY.getCode()); }else if(Objects.equals(proProjectInfoSubdeptsUsers.getUserPost(), UserPostEnums.LWGR.getCode())){ // 劳务人员绑定班组信息 proProjectInfoSubdeptsUsers.setSubDeptGroup(parUsers.getSubDeptGroup()); @@ -839,24 +887,6 @@ public class ProProjectInfoSubdeptsUsersServiceImpl implements IProProjectInfoSu } } - // 审核文件签名 - String filePath = proProjectInfoSubdeptsUsers.getEduFilePath().replace(ProfileConfig.profile, ProfileConfig.profilePath); - BasSignet query = new BasSignet(); - query.setProjectId(proProjectInfoSubdeptsUsers.getProjectId()); - query.setUserId(SecurityUtils.getUserId()); - List signets = basSignetMapper.selectBasSignetList(query); - if(StringUtils.isEmpty(signets)){ - throw new ServiceException("获取签名异常"); - } - File pdfFile = org.apache.commons.io.FileUtils.getFile(filePath); - if (!pdfFile.getParentFile().exists()) { - boolean mkdirs = pdfFile.getParentFile().mkdirs(); - log.info("创建目录...{}...{}",mkdirs,filePath); - } - String newFilePath = filePath.replace(".pdf","-c.pdf"); - PdfImageSignetUtil.imageWaterMark(filePath, filePath, signets.get(0).getSignetPath().replace(ProfileConfig.profile, ProfileConfig.profilePath),SignetKeyEnums.COMPANY_SIGN.getCode()); - proProjectInfoSubdeptsUsers.setEduFilePath(newFilePath); - proProjectInfoSubdeptsUsers.setUseStatus(UseStateEnums.IN.getCode()); proProjectInfoSubdeptsUsers.setApproveStatus(ApproveStatus.exempt.getCode()); proProjectInfoSubdeptsUsersMapper.updateProProjectInfoSubdeptsUsers(proProjectInfoSubdeptsUsers); @@ -872,22 +902,29 @@ public class ProProjectInfoSubdeptsUsersServiceImpl implements IProProjectInfoSu public void approveSubDeptsUserGroSign(Long id){ ProProjectInfoSubdeptsUsers proProjectInfoSubdeptsUsers = proProjectInfoSubdeptsUsersMapper.selectProProjectInfoSubdeptsUsersById(id); String filePath = proProjectInfoSubdeptsUsers.getEduFilePath().replace(ProfileConfig.profile, ProfileConfig.profilePath); - BasSignet query = new BasSignet(); - query.setProjectId(proProjectInfoSubdeptsUsers.getProjectId()); - query.setUserId(SecurityUtils.getUserId()); - List signets = basSignetMapper.selectBasSignetList(query); - if(StringUtils.isEmpty(signets)){ - throw new ServiceException("获取签名异常"); + + // 查询班组长签名 + if(proProjectInfoSubdeptsUsers.getSubDeptGroup()!=null){ + ProProjectInfoSubdeptsGroup group = proProjectInfoSubdeptsGroupMapper.selectProProjectInfoSubdeptsGroupById(proProjectInfoSubdeptsUsers.getSubDeptGroup()); + if(group!=null && StringUtils.isNotEmpty(group.getGroupLeaderPhone())){ + ProProjectInfoSubdeptsUsers userQuery = new ProProjectInfoSubdeptsUsers(); + userQuery.setUserPhone(group.getGroupLeaderPhone()); + userQuery.setProjectId(group.getProjectId()); + List users = proProjectInfoSubdeptsUsersMapper.selectProProjectInfoSubdeptsUsersList(userQuery); + if(StringUtils.isNotEmpty(users)){ + BasSignet query = new BasSignet(); + query.setProjectId(users.get(0).getProjectId()); + query.setUserId(users.get(0).getUserId()); + List signets = basSignetMapper.selectBasSignetList(query); + if(StringUtils.isNotEmpty(signets)){ + String newFilePath = filePath.replace(".pdf","-g.pdf"); + PdfImageSignetUtil.imageWaterMark(filePath, newFilePath, signets.get(0).getSignetPath().replace(ProfileConfig.profile, ProfileConfig.profilePath),SignetKeyEnums.GROUP_SIGN.getCode()); + proProjectInfoSubdeptsUsers.setEduFilePath(newFilePath.replace(ProfileConfig.profilePath,ProfileConfig.profile)); + proProjectInfoSubdeptsUsersMapper.updateProProjectInfoSubdeptsUsers(proProjectInfoSubdeptsUsers); + } + } + } } - File pdfFile = org.apache.commons.io.FileUtils.getFile(filePath); - if (!pdfFile.getParentFile().exists()) { - boolean mkdirs = pdfFile.getParentFile().mkdirs(); - log.info("创建目录...{}...{}",mkdirs,filePath); - } - String newFilePath = filePath.replace(".pdf","-g.pdf"); - PdfImageSignetUtil.imageWaterMark(filePath, newFilePath, signets.get(0).getSignetPath().replace(ProfileConfig.profile, ProfileConfig.profilePath),SignetKeyEnums.GROUP_SIGN.getCode()); - proProjectInfoSubdeptsUsers.setEduFilePath(newFilePath); - proProjectInfoSubdeptsUsersMapper.updateProProjectInfoSubdeptsUsers(proProjectInfoSubdeptsUsers); } /** @@ -898,22 +935,56 @@ public class ProProjectInfoSubdeptsUsersServiceImpl implements IProProjectInfoSu public void approveSubDeptsUserProSign(Long id){ ProProjectInfoSubdeptsUsers proProjectInfoSubdeptsUsers = proProjectInfoSubdeptsUsersMapper.selectProProjectInfoSubdeptsUsersById(id); String filePath = proProjectInfoSubdeptsUsers.getEduFilePath().replace(ProfileConfig.profile, ProfileConfig.profilePath); - BasSignet query = new BasSignet(); - query.setProjectId(proProjectInfoSubdeptsUsers.getProjectId()); - query.setUserId(SecurityUtils.getUserId()); - List signets = basSignetMapper.selectBasSignetList(query); - if(StringUtils.isEmpty(signets)){ - throw new ServiceException("获取签名异常"); + ProProjectInfoSubdeptsUsers userQuery = new ProProjectInfoSubdeptsUsers(); + userQuery.setWorkType(18L); + userQuery.setProjectId(proProjectInfoSubdeptsUsers.getProjectId()); + List users = proProjectInfoSubdeptsUsersMapper.selectProProjectInfoSubdeptsUsersList(userQuery); + if(StringUtils.isNotEmpty(users)){ + BasSignet query = new BasSignet(); + query.setProjectId(users.get(0).getProjectId()); + query.setUserId(users.get(0).getUserId()); + List signets = basSignetMapper.selectBasSignetList(query); + if(StringUtils.isNotEmpty(signets)){ + String newFilePath = filePath.replace(".pdf","-p.pdf"); + PdfImageSignetUtil.imageWaterMark(filePath, newFilePath, signets.get(0).getSignetPath().replace(ProfileConfig.profile, ProfileConfig.profilePath),SignetKeyEnums.PROJECT_SIGN.getCode()); + proProjectInfoSubdeptsUsers.setEduFilePath(newFilePath.replace(ProfileConfig.profilePath,ProfileConfig.profile)); + proProjectInfoSubdeptsUsersMapper.updateProProjectInfoSubdeptsUsers(proProjectInfoSubdeptsUsers); + } } - File pdfFile = org.apache.commons.io.FileUtils.getFile(filePath); - if (!pdfFile.getParentFile().exists()) { - boolean mkdirs = pdfFile.getParentFile().mkdirs(); - log.info("创建目录...{}...{}",mkdirs,filePath); + } + + /** + * 公司安全承诺书文件签名章 + * @param id + */ + @Override + public void approveSubDeptsUserComSign(Long id){ + // 审核文件签名 + ProProjectInfoSubdeptsUsers proProjectInfoSubdeptsUsers = proProjectInfoSubdeptsUsersMapper.selectProProjectInfoSubdeptsUsersById(id); + String filePath = proProjectInfoSubdeptsUsers.getEduFilePath().replace(ProfileConfig.profile, ProfileConfig.profilePath); + ProProjectInfoSubdeptsUsers userQuery = new ProProjectInfoSubdeptsUsers(); + userQuery.setWorkType(18L); + userQuery.setProjectId(proProjectInfoSubdeptsUsers.getProjectId()); + List users = proProjectInfoSubdeptsUsersMapper.selectProProjectInfoSubdeptsUsersList(userQuery); + if(StringUtils.isNotEmpty(users)){ + BasSignet query = new BasSignet(); + query.setProjectId(users.get(0).getProjectId()); + query.setUserId(users.get(0).getUserId()); + List signets = basSignetMapper.selectBasSignetList(query); + if(StringUtils.isNotEmpty(signets)){ + String newFilePath = filePath.replace(".pdf","-c.pdf"); + PdfImageSignetUtil.imageWaterMark(filePath, newFilePath, signets.get(0).getSignetPath().replace(ProfileConfig.profile, ProfileConfig.profilePath),SignetKeyEnums.PROJECT_SIGN.getCode()); + proProjectInfoSubdeptsUsers.setEduFilePath(newFilePath.replace(ProfileConfig.profilePath,ProfileConfig.profile)); + proProjectInfoSubdeptsUsersMapper.updateProProjectInfoSubdeptsUsers(proProjectInfoSubdeptsUsers); + } } - String newFilePath = filePath.replace(".pdf","-p.pdf"); - PdfImageSignetUtil.imageWaterMark(filePath, filePath, signets.get(0).getSignetPath().replace(ProfileConfig.profile, ProfileConfig.profilePath),SignetKeyEnums.PROJECT_SIGN.getCode()); - proProjectInfoSubdeptsUsers.setEduFilePath(newFilePath); - proProjectInfoSubdeptsUsersMapper.updateProProjectInfoSubdeptsUsers(proProjectInfoSubdeptsUsers); + } + + public static void main(String[] args) { + String path = "D:\\meta\\test.pdf"; + String newPath = path.replace(".pdf","-c.pdf");; + String signPath = "D:\\meta\\sign.png.v1.png"; + PdfImageSignetUtil.imageWaterMark(path, newPath, signPath, SignetKeyEnums.PROJECT_SIGN.getCode()); } /** diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/utils/pdf/PdfImageSignetUtil.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/utils/pdf/PdfImageSignetUtil.java index a57b58d3..59d27247 100644 --- a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/utils/pdf/PdfImageSignetUtil.java +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/utils/pdf/PdfImageSignetUtil.java @@ -127,26 +127,7 @@ public class PdfImageSignetUtil { pdfReader = new PdfReader(srcPdfPath); FileOutputStream out = org.apache.commons.io.FileUtils.openOutputStream(org.apache.commons.io.FileUtils.getFile(newPdfPath)); pdfStamper = new PdfStamper(pdfReader, out); - BufferedImage bufferedImage = ImageIO.read(org.apache.commons.io.FileUtils.getFile(imagePath)); - // 这里裁剪图片可能报错,报错用原图 - int[] array = bufferedImageToIntArray(bufferedImage,bufferedImage.getWidth(),bufferedImage.getHeight()); - // blank是作为四周边距留白 - int blank = 20; - boolean cutResult = false; - try { - // 图片裁剪 - ImgUtil.cut(FileUtil.file(imagePath), - FileUtil.file(imagePath + ".v1.png"), new Rectangle(array[0]-blank,array[1]-blank,array[2]+blank*2, array[3]+blank*2)); - cutResult = true; - }catch (Exception ex){ - log.error("图片裁剪发生未知异常:" + ex); - } - // 图片压缩 - // ImgUtil.scale(FileUtil.file(cutResult?(imagePath + ".v0.png"):imagePath), - // FileUtil.file(imagePath + ".v1.png"), (float) (60.0/bufferedImage.getWidth())); - // 图片旋转 - ImgUtil.rotate(FileUtil.file(cutResult?(imagePath + ".v1.png"):imagePath),270,FileUtil.file(imagePath + ".v2.png")); - Image qrcodeImage = Image.getInstance(imagePath+".v2.png"); + Image qrcodeImage = Image.getInstance(imagePath); //设置图片宽高 qrcodeImage.scaleToFit(qrcodeImage.getWidth()/20, qrcodeImage.getHeight()/20); for(int i=0;i