Prechádzať zdrojové kódy

项目报告签章设置回调接口

user5 3 rokov pred
rodič
commit
4af4e393a2

+ 7 - 0
src/main/java/com/jeeplus/modules/ruralprojectrecords/dao/RuralProjectRecordsDao.java

@@ -282,4 +282,11 @@ public interface RuralProjectRecordsDao extends CrudDao<RuralProjectRecords> {
      * @return
      */
     String getBelongingDepartmentNameByBelongingDepartment(String belongingDepartment);
+
+    /**
+     * 根据签章的documentId查询报告信息
+     * @param documentId
+     * @return
+     */
+    RuralProjectRecords getSignatureByDocumentId(String documentId);
 }

+ 5 - 1
src/main/java/com/jeeplus/modules/ruralprojectrecords/service/RuralProjectMessageElectronicSealService.java

@@ -1832,10 +1832,14 @@ public class RuralProjectMessageElectronicSealService extends CrudService<RuralP
         data.put("projectMaster",ruralProjectRecords.getLeaderNameStr());
 
         //咨询员信息
-        if(null != consultants){
+        if(null != consultants && consultants.size()>0){
             data.put("consultantName0",consultants.get(0).getZixunyuanName());
             data.put("consultantProfession0",consultants.get(0).getMajor());
             data.put("consultantQualification0",consultants.get(0).getZhucezigezh());
+        }else{
+            data.put("consultantName0","");
+            data.put("consultantProfession0","");
+            data.put("consultantQualification0","");
         }
         //根据咨询员id查询咨询员信息以及咨询员的专业和资格
         if(null != projectReportSignatureInfo && StringUtils.isNotBlank(projectReportSignatureInfo.getConsultant())){

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

@@ -2841,4 +2841,15 @@ public class RuralProjectRecordsService extends CrudService<RuralProjectRecordsD
 		return belongingDepartmentName;
 	}
 
+	/**
+	 * 根据签章documentId查询报告信息
+	 * @param documentId
+	 * @return
+	 */
+	@Transactional(readOnly = false)
+	public RuralProjectRecords getSignatureByDocumentId(String documentId) {
+		return dao.getSignatureByDocumentId(documentId);
+	}
+
+
 }

+ 22 - 4
src/main/java/com/jeeplus/modules/ruralprojectrecords/thread/SignatureThread.java

@@ -47,6 +47,7 @@ public class SignatureThread extends Thread {
     private ProjectReportSignature projectReportSignature;
     private ProjectReportData projectReportData;
     private Office office;
+    String documentId = "";
 
 
     public SignatureThread(RuralProjectRecords ruralProjectRecords,ProjectReportSignature projectReportSignature,ProjectReportData projectReportData,Office office)
@@ -126,7 +127,7 @@ public class SignatureThread extends Thread {
                 //获取真签单的documentId
                 HashMap hashMap = SignaturePostUtil.getDocument(srcFile);
                 String code = hashMap.get("code").toString();
-                String documentId = "";
+
                 if("0".equals(code)){
                     String result = hashMap.get("result").toString();
                     HashMap documentIdMap = JSON.parseObject(result, HashMap.class);
@@ -140,6 +141,20 @@ public class SignatureThread extends Thread {
                     disposeResult =  message;
                     bool = false;
                 }
+
+                //先将数据进行保存
+                //签章完成则进行数据的保存
+                ruralProjectRecords.setReportSignatureFlag(0);
+                ruralProjectRecords.setReportSignatureDocumentId(documentId);
+                ruralProjectRecords.setReportSignatureContractId("");
+                ruralProjectRecords.setReportSignatureFileName(srcFileName);
+                ruralProjectRecords.setReportSignatureUploadFileUser(UserUtils.getUser());
+                ruralProjectRecords.setReportSignatureUploadDate(new Date());
+                //修改签章对应信息文件
+                projectReportDataService.updateReportSignatureInfo(ruralProjectRecords);
+
+
+
                 List<String> documentList = Lists.newArrayList();
                 documentList.add(documentId);
                 //根据项目id 和 documentId生成合同id
@@ -173,7 +188,7 @@ public class SignatureThread extends Thread {
                 }
                 long s4 = System.currentTimeMillis();
                 System.out.println("进行静默签署用时:" + (s4-s3));*/
-                notification(bool,disposeResult,documentId,contractId,srcFileName);
+                //notification(bool,disposeResult,documentId,contractId,srcFileName);
                 //将documentId 和contractId存储到质量复核对应的数据种
             }else{
                 disposeResult =  "报告文件未找到,无法进行签章操作";
@@ -181,8 +196,11 @@ public class SignatureThread extends Thread {
                 notification(bool,disposeResult,"","","");
             }
         }catch (Exception e){
-            bool = false;
-            notification(bool,disposeResult,"","","");
+            if(StringUtils.isBlank(documentId)){
+                bool = false;
+                disposeResult = e.getMessage();
+                notification(bool,disposeResult,"","","");
+            }
         }finally {
             if(StringUtils.isNotBlank(deleteFile)){
                 //根据路径创建文件对象

+ 149 - 1
src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralProjectSignatureCallBackController.java

@@ -7,6 +7,7 @@ import com.google.gson.Gson;
 import com.jeeplus.common.config.Global;
 import com.jeeplus.common.persistence.Page;
 import com.jeeplus.common.utils.MyBeanUtils;
+import com.jeeplus.common.utils.SpringContextHolder;
 import com.jeeplus.common.utils.StringUtils;
 import com.jeeplus.common.web.BaseController;
 import com.jeeplus.modules.act.entity.Act;
@@ -32,11 +33,13 @@ import com.jeeplus.modules.projectcontentinfo.service.ProjectReportDataService;
 import com.jeeplus.modules.projectcontentinfo.service.ProjectReportRecordService;
 import com.jeeplus.modules.projectcontentinfo.service.ProjectcontentinfoService;
 import com.jeeplus.modules.projectrecord.entity.ProjectRecords;
-import com.jeeplus.modules.projectrecord.enums.ProjectStatusEnum;
 import com.jeeplus.modules.projectrecord.service.ProjectPlanService;
 import com.jeeplus.modules.projectrecord.service.ProjectRecordsService;
+import com.jeeplus.modules.ruralprojectrecords.dao.RuralProjectMessageElectronicSealDao;
 import com.jeeplus.modules.ruralprojectrecords.dao.RuralProjectRecordsReportedDao;
 import com.jeeplus.modules.ruralprojectrecords.entity.*;
+import com.jeeplus.modules.ruralprojectrecords.enums.ProjectStatusEnum;
+import com.jeeplus.modules.ruralprojectrecords.service.RuralProjectMessageElectronicSealService;
 import com.jeeplus.modules.ruralprojectrecords.service.RuralProjectMessageService;
 import com.jeeplus.modules.ruralprojectrecords.service.RuralProjectRecordsService;
 import com.jeeplus.modules.ruralprojectrecords.utils.FileUtil;
@@ -44,11 +47,16 @@ import com.jeeplus.modules.sys.entity.Area;
 import com.jeeplus.modules.sys.entity.MainDictDetail;
 import com.jeeplus.modules.sys.entity.User;
 import com.jeeplus.modules.sys.service.UserService;
+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.service.WorkActivityProcessService;
 import com.jeeplus.modules.workclientinfo.entity.WorkClientLinkman;
 import com.jeeplus.modules.workcontractinfo.entity.WorkContractInfo;
+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 net.sf.json.JSONArray;
 import net.sf.json.JSONObject;
@@ -116,6 +124,13 @@ public class RuralProjectSignatureCallBackController extends BaseController {
     private RuralProjectRecordsReportedDao ruralProjectRecordsReportedDao;
     @Autowired
     private ProjectEngineeringService engineeringService;
+    @Autowired
+    private RuralProjectMessageElectronicSealService ruralProjectMessageElectronicSealService;
+
+
+    private WorkActivityProcessService workActivityProcessService = SpringContextHolder.getBean(WorkActivityProcessService.class);
+    private WorkProjectNotifyService workProjectNotifyService = SpringContextHolder.getBean(WorkProjectNotifyService.class);
+    private RuralProjectMessageElectronicSealDao dao = SpringContextHolder.getBean(RuralProjectMessageElectronicSealDao.class);
 
     private static byte[] SYN_BYTE = new byte[0];
 
@@ -137,6 +152,8 @@ public class RuralProjectSignatureCallBackController extends BaseController {
         return entity;
     }
 
+
+
     /**
      * 预签署回调操作
      * @param presignCallBack  回调参数
@@ -226,6 +243,137 @@ public class RuralProjectSignatureCallBackController extends BaseController {
         return null;
     }
 
+    /**
+     * 报告签章签署完成回调操作
+     * @param presignCallBack  回调参数
+     * @return
+     */
+    @RequestMapping(value = "/getSignatureCoordinates", method=RequestMethod.POST)
+    public String getSignatureCoordinates(PresignCallBack presignCallBack) {
+        long t1 = System.currentTimeMillis();
+        //根据contractId查询对应的报告信息
+        RuralProjectRecords records = projectRecordsService.getSignatureByDocumentId(presignCallBack.getDocumentId());
+        if(null == records){
+            return null;
+        }
+        ProjectReportData projectReportData = projectReportDataService.getReportDataByProjectId(records.getId());
+        ProjectReportSignature projectReportSignature = ruralProjectMessageElectronicSealService.getProjectReportSignature(records.getId());
+        //如果没有返回contractId 则进行数据暂存处理
+        if(StringUtils.isBlank(presignCallBack.getContractId())){
+            String title = "报告号【"+projectReportData.getNumber()+"】报告签章失败。请重新签章";
+            String content = "报告号【"+projectReportData.getNumber()+"】报告签章失败。请重新签章";
+            if ("yes".equals(projectReportSignature.getAct().getFlag())) {
+                projectReportSignature.setStatus(com.jeeplus.modules.ruralprojectrecords.enums.ProjectStatusEnum.SIGNED.getValue());
+                WorkProjectNotify notify = new WorkProjectNotify();
+                notify.setNotifyId(projectReportSignature.getId());
+                //userList = workProjectNotifyService.readByNotifyId(notify);
+                //users.add(projectReportSignature.getCreateBy());
+                //查询是否已经进行发送通知,没有发送则进行发送,否则  直接跳过
+                List<WorkProjectNotify> byTitle = workProjectNotifyService.getByTitle(title);
+                if(byTitle.size() == 0){
+                    workProjectNotifyService
+                            .save(UtilNotify
+                                    .saveNotify(projectReportSignature.getId(),
+                                            projectReportSignature.getCreateBy(),
+                                            projectReportSignature.getCompany().getId(),
+                                            title,
+                                            content,
+                                            "145",
+                                            "0",
+                                            "待通知",
+                                            "审批通过"));
+                    //给苏州质控中的人员发送通知
+                    List<User> szzks = UserUtils.getByRoleActivityEnname("XHMDZGS1551886525850szzk",3,projectReportSignature.getOffice().getId(),"4",projectReportSignature.getCreateBy());
+                    for (User szzk: szzks) {
+                        if(org.apache.commons.lang3.StringUtils.isNotBlank(szzk.getId())){
+                            workProjectNotifyService
+                                    .save(UtilNotify
+                                            .saveNotify(projectReportSignature.getId(),
+                                                    szzk,
+                                                    projectReportSignature.getCompany().getId(),
+                                                    title,
+                                                    content,
+                                                    "145",
+                                                    "0",
+                                                    "待通知",
+                                                    "审批通过"));
+                        }
+                    }
+                }
+
+            }
+
+            workActivityProcessService.deleteProcessIdAuditUsers(projectReportSignature.getProcessInstanceId());
+
+            projectReportSignature.setStatus(1);
+            dao.updateReportSignature(projectReportSignature);
+
+        }
+        //修改签章信息
+
+        //签章完成则进行数据的保存
+        records.setReportSignatureFlag(1);
+        records.setReportSignatureContractId(presignCallBack.getContractId());
+        records.setReportSignatureUploadDate(new Date());
+        //修改签章对应信息文件
+        projectReportDataService.updateReportSignatureInfo(records);
+
+        //发送通知
+        String title = "报告号【"+projectReportData.getNumber()+"】报告签章审批登记完成";
+        String content = "报告号【"+projectReportData.getNumber()+"】报告签章审批登记完成,项目编号:"+records.getProjectId();
+        projectReportSignature.setStatus(com.jeeplus.modules.ruralprojectrecords.enums.ProjectStatusEnum.SIGNED.getValue());
+        WorkProjectNotify notify = new WorkProjectNotify();
+        notify.setNotifyId(projectReportSignature.getId());
+        //userList = workProjectNotifyService.readByNotifyId(notify);
+        //users.add(projectReportSignature.getCreateBy());
+        //查询是否已经进行发送通知,没有发送则进行发送,否则  直接跳过
+        List<WorkProjectNotify> byTitle = workProjectNotifyService.getByTitle(title);
+        if(byTitle.size() == 0){
+            workProjectNotifyService
+                    .save(UtilNotify
+                            .saveNotify(projectReportSignature.getId(),
+                                    projectReportSignature.getCreateBy(),
+                                    projectReportSignature.getCompany().getId(),
+                                    title,
+                                    content,
+                                    "145",
+                                    "0",
+                                    "待通知",
+                                    "审批通过"));
+            //给苏州质控中的人员发送通知
+            List<User> szzks = UserUtils.getByRoleActivityEnnameSignature("XHMDZGS1551886525850szzk",3,projectReportSignature.getOffice().getId(),"4",projectReportSignature.getCreateBy());
+            for (User szzk: szzks) {
+                if(org.apache.commons.lang3.StringUtils.isNotBlank(szzk.getId())){
+                    workProjectNotifyService
+                            .save(UtilNotify
+                                    .saveNotify(projectReportSignature.getId(),
+                                            szzk,
+                                            projectReportSignature.getCompany().getId(),
+                                            title,
+                                            content,
+                                            "145",
+                                            "0",
+                                            "待通知",
+                                            "审批通过"));
+                }
+            }
+
+            workActivityProcessService.deleteProcessIdAuditUsers(projectReportSignature.getProcessInstanceId());
+
+            projectReportSignature.setStatus(5);
+            dao.updateReportSignature(projectReportSignature);
+
+        }
+
+
+
+        long t2 = System.currentTimeMillis();
+        System.out.println("报告签章回调运行耗时:" + (t2-t1) + " 毫秒");
+        return null;
+    }
+
+
+
 
     /**
      * 下载附件

+ 73 - 0
src/main/java/com/jeeplus/modules/sys/utils/UserUtils.java

@@ -1231,6 +1231,79 @@ public class UserUtils {
 		return users;
 	}
 
+
+	/**
+	 * 回调使用的查询角色人员信息接口
+	 * @param enname
+	 * @param type
+	 * @param officeId
+	 * @param businessType
+	 * @param userId
+	 * @return
+	 */
+	public static List<User> getByRoleActivityEnnameSignature(String enname,int type,String officeId,String businessType,User userId){
+		//businessType 1:全平台   2:合同模块 	3:合同归档 	4:项目登记 	5:开票管理
+		// 6:退票管理 	7:收入管理 	8:报销管理 	9:月度计划管理 10:案例管理 11:行政管理 12 报告管理13 采购合同管理 14采购管理  15报废管理
+		//16借用管理  17 领用管理 18劳动关系管理 19 加班申请 20 出差申请 21外勤申请 22 转正申请 23 职级调整 24 部门调整 25 请假申请
+		//26 补卡申请 27 考勤审批
+
+		Role role = new Role();
+		role.setEnname(enname);
+		Office office = officeDao.get(officeId);
+		if (StringUtils.isNotBlank(office.getBranchOffice()) || type == 2) {
+			if (type == 2) {
+				role.setOffice(new Office(officeId));
+			} else if (type == 3) {
+				role.setBranchCompany(new Office(office.getBranchOffice()));
+			} else if(type == 1){
+				Office branchOffice =  officeDao.get(office.getBranchOffice());
+				if (StringUtils.isNotBlank(branchOffice.getParentId())&& !"0".equals(branchOffice.getParentId())){
+					Office topCompany = officeDao.get(branchOffice.getParentId());
+					if ("1".equals(topCompany.getType())){
+						Office office1 = new Office();
+						office1.setName("总公司");
+						role.setBranchCompany(office1);
+					}else{
+						role.setBranchCompany(new Office(branchOffice.getParentId()));
+					}
+				}else {
+					Office office1 = new Office();
+					office1.setName("总公司");
+					role.setBranchCompany(office1);
+				}
+			} else {
+				Office office1 = new Office();
+				office1.setName("总公司");
+				role.setBranchCompany(office1);
+			}
+		}else {
+			Office office1 = new Office();
+			office1.setName("总公司");
+			role.setBranchCompany(office1);
+		}
+		String roleIds = "";
+		List<Role> roles = roleDao.getByRoleActivityEnname(role);
+		for (Role r : roles) {
+			roleIds += r.getId() + ",";
+		}
+		User user = new User();
+		user.setRoleIds(roleIds);
+		List<User> list = userDao.findListByRoleList(user);
+		List<User> users = new ArrayList<>();
+		Set<String> set = new HashSet<>();
+		for (User u:list){
+			if (!set.contains(u.getId())) {
+				users.add(u);
+			}
+			set.add(u.getId());
+		}
+		//暂时删除
+		/*if(users==null || users.size()==0){
+			users = null;
+		}*/
+		return users;
+	}
+
 	public static List<User> getByRoleActivityEnname(String enname,int type,String officeId,String companyId,String businessType){
 		//businessType 1:全平台   2:合同模块 	3:合同归档 	4:项目登记 	5:开票管理
 		// 6:退票管理 	7:收入管理 	8:报销管理 	9:月度计划管理 10:案例管理 11:行政管理 12 报告管理13 采购合同管理 14采购管理  15报废管理

+ 8 - 1
src/main/java/com/jeeplus/modules/workprojectnotify/dao/WorkProjectNotifyDao.java

@@ -22,6 +22,13 @@ public interface WorkProjectNotifyDao extends CrudDao<WorkProjectNotify> {
     //确认定投标之后给送标员发送通知
     WorkProjectNotify getByWorkBidingDocument(@Param("workBidingDocumentId") String workBidingDocumentId);
     WorkProjectNotify getByNotifyId(@Param("notifyId") String notifyId);
+
+    /**
+     * 根据title查询通知信息
+     * @param title
+     * @return
+     */
+    List<WorkProjectNotify> getByTitle(@Param("title") String title);
     List<WorkProjectNotify> findListByAPP(WorkProjectNotify workProjectNotify);
 
     //更新阅读状态
@@ -90,4 +97,4 @@ public interface WorkProjectNotifyDao extends CrudDao<WorkProjectNotify> {
      * @param workProjectNotify
      */
     void deleteByNotifyId(WorkProjectNotify workProjectNotify);
-}
+}

+ 9 - 0
src/main/java/com/jeeplus/modules/workprojectnotify/service/WorkProjectNotifyService.java

@@ -46,6 +46,15 @@ public class WorkProjectNotifyService extends CrudService<WorkProjectNotifyDao,
 		return dao.getByNotifyId(id);
 	}
 
+	/**
+	 * 根据title查询通知信息
+	 * @param title
+	 * @return
+	 */
+	public List<WorkProjectNotify> getByTitle(String title) {
+		return dao.getByTitle(title);
+	}
+
 	public List<WorkProjectNotify> findList(WorkProjectNotify workProjectNotify) {
 		//workProjectNotify.getSqlMap().put("dsf", dataScopeFilterOR(workProjectNotify.getCurrentUser(), "o", "u","s", MenuStatusEnum.PROJECT_NOTIFY.getValue()));
 		return super.findList(workProjectNotify);

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

@@ -102,6 +102,20 @@
 		WHERE a.id = #{id}
 	</select>
 
+
+	<select id="getSignatureByDocumentId" resultType="RuralProjectRecords" >
+		SELECT
+			<include refid="projectRecordsColumns"/>
+		,a.file_num AS "fileNum"
+	    ,a.check_process_instance_id AS "checkProcessInstanceId"
+		,a.project_master_id as "projectMasterId"
+		,a.submit_money as "submitMoney"
+		,a.engineering_type as "engineeringType"
+        FROM rural_project_records a
+        <include refid="projectRecordsJoins"/>
+		WHERE a.report_signature_document_id = #{documentId}
+	</select>
+
 	<select id="getProjectRecordsByContractId" resultType="RuralProjectRecords" >
 		SELECT
 			<include refid="projectRecordsColumns"/>

+ 7 - 0
src/main/resources/mappings/modules/workprojectnotify/WorkProjectNotifyDao.xml

@@ -56,6 +56,13 @@
 		<include refid="workProjectNotifyJoins"/>
 		WHERE a.notify_id = #{notifyId}
 	</select>
+	<select id="getByTitle" resultType="WorkProjectNotify" >
+		SELECT
+			<include refid="workProjectNotifyColumns"/>
+		FROM work_project_notify a
+		<include refid="workProjectNotifyJoins"/>
+		WHERE a.title = #{title}
+	</select>
 
 	<select id="getByNotifyIdAndNotifyUser" resultType="WorkProjectNotify">
 		SELECT <include refid="workProjectNotifyColumns"/>