|
@@ -1,8 +1,10 @@
|
|
|
package com.jeeplus.human.depart.handover.service;
|
|
|
|
|
|
import cn.hutool.extra.spring.SpringUtil;
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.google.common.collect.Lists;
|
|
|
import com.jeeplus.common.TokenProvider;
|
|
|
import com.jeeplus.flowable.feign.IFlowableApi;
|
|
|
import com.jeeplus.human.depart.handover.domain.Handover;
|
|
@@ -10,9 +12,17 @@ import com.jeeplus.human.depart.handover.domain.HandoverRecovery;
|
|
|
import com.jeeplus.human.depart.handover.mapper.HandoverMapper;
|
|
|
import com.jeeplus.human.depart.handover.mapper.HandoverRecoveryMapper;
|
|
|
import com.jeeplus.human.enrollment.enrollmentRegistration.mapper.EnrollmentRegistrationMapper;
|
|
|
+import com.jeeplus.human.signature.entity.Action;
|
|
|
+import com.jeeplus.human.signature.entity.Location;
|
|
|
+import com.jeeplus.human.signature.entity.SignatorieInfo;
|
|
|
+import com.jeeplus.human.signature.entity.SignatureContract;
|
|
|
+import com.jeeplus.human.signature.utils.Global;
|
|
|
+import com.jeeplus.human.signature.utils.SignaturePostUtil;
|
|
|
+import com.jeeplus.sys.domain.WorkAttachmentInfo;
|
|
|
import com.jeeplus.sys.feign.IPostApi;
|
|
|
import com.jeeplus.sys.feign.IRoleApi;
|
|
|
import com.jeeplus.sys.feign.IUserApi;
|
|
|
+import com.jeeplus.sys.feign.IWorkAttachmentApi;
|
|
|
import com.jeeplus.sys.service.dto.PostDTO;
|
|
|
import com.jeeplus.sys.service.dto.RoleDTO;
|
|
|
import com.jeeplus.sys.service.dto.UserDTO;
|
|
@@ -22,6 +32,7 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
+import java.io.File;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
import java.util.*;
|
|
|
|
|
@@ -34,6 +45,18 @@ import java.util.*;
|
|
|
@Transactional
|
|
|
public class HandoverRecoveryService extends ServiceImpl<HandoverRecoveryMapper, HandoverRecovery> {
|
|
|
|
|
|
+ private static final String HTTPTOP = Global.getConfig("signature_http_top");
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 离职盖章流程id
|
|
|
+ */
|
|
|
+ private static String DIMISSIONID = Global.getConfig("dimission_id");
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 会计公司印章
|
|
|
+ */
|
|
|
+ private static String COMPANYROUNDSEALFINANCEID = Global.getConfig("company_round_seal_finance_id");
|
|
|
+
|
|
|
@Resource
|
|
|
private HandoverRecoveryMapper recoveryMapper;
|
|
|
|
|
@@ -107,6 +130,11 @@ public class HandoverRecoveryService extends ServiceImpl<HandoverRecoveryMapper,
|
|
|
if (report.getType().equals("5")){
|
|
|
//根据用户id将在职状态改为离职
|
|
|
Handover handover = handoverMapper.getById(report.getHandoverId());
|
|
|
+ //获取当前登录人信息
|
|
|
+ UserDTO createUserDTO = SpringUtil.getBean ( IUserApi.class ).getById(handover.getCreateById());
|
|
|
+
|
|
|
+ List<WorkAttachmentInfo> attachmentInfoList = SpringUtil.getBean ( IWorkAttachmentApi.class ).selectListByAttachmentId(handover.getId());
|
|
|
+
|
|
|
registrationMapper.updateByUserId(handover.getCreateById());
|
|
|
//发送通知给岗位【考勤统计人】
|
|
|
PostDTO postInfo = SpringUtil.getBean(IPostApi.class).getPostDTOByName("考勤统计人");
|
|
@@ -131,20 +159,184 @@ public class HandoverRecoveryService extends ServiceImpl<HandoverRecoveryMapper,
|
|
|
//发送通知给员工,可下载盖电子章的离职证明
|
|
|
Map<String ,String > map2 = new HashMap<>();
|
|
|
|
|
|
+ if("1".equals(handover.getSignatureFlag())){
|
|
|
+ map2.put("title","离职交接审批完成,请点击下载离职证明");
|
|
|
+ map2.put("taskName","离职交接审批完成,请点击下载离职证明");
|
|
|
+ }else{
|
|
|
+ map2.put("title","离职交接审批完成,请点击下载离职证明,并到办公室进行盖章");
|
|
|
+ map2.put("taskName","离职交接审批完成,请点击下载离职证明,并到办公室进行盖章");
|
|
|
+ map2.put("dimissionProveUrl","离职交接审批完成,请点击下载离职证明");
|
|
|
+ }
|
|
|
+
|
|
|
+ if(attachmentInfoList.size()>0){
|
|
|
+ map2.put("dimissionProveUrl",attachmentInfoList.get(0).getUrl());
|
|
|
+ }else{
|
|
|
+ map2.put("dimissionProveUrl","");
|
|
|
+ }
|
|
|
map2.put("taskId",uuid);
|
|
|
- map2.put("title","离职交接审批完成,请点击下载离职证明");
|
|
|
+ map2.put("fileName",createUserDTO.getName() + "离职证明");
|
|
|
map2.put("defId",report.getHandoverId());
|
|
|
- map2.put("taskName","离职交接审批完成,请点击下载离职证明");
|
|
|
map2.put("createUser",userDTO.getLoginName());
|
|
|
map2.put("createTime",day);
|
|
|
map2.put("noticeName",userName);
|
|
|
map2.put("noticeId",handover.getCreateById());
|
|
|
map2.put("createById",userDTO.getId());
|
|
|
SpringUtil.getBean(IFlowableApi.class).add(map2);
|
|
|
+
|
|
|
+ //离职证明电子章处理
|
|
|
+ //对离职证明进行盖章操作
|
|
|
+ Map<String, Object> signatureContractIdMap = createSignatureContractId(handover.getWordFilePath());
|
|
|
+ boolean success = (boolean) signatureContractIdMap.get("success");
|
|
|
+ if(success){
|
|
|
+ handover.setSignatureContractId(signatureContractIdMap.get("contractId").toString());
|
|
|
+ handoverMapper.updateById(handover);
|
|
|
+ }else{
|
|
|
+ System.out.println(signatureContractIdMap);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
return report;
|
|
|
}
|
|
|
+ /**
|
|
|
+ * 生成并保存签章contractId 信息
|
|
|
+ * @param filePath 临时文件路径(需盖章文件)
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public Map<String,Object> createSignatureContractId(String filePath){
|
|
|
+ Map<String,Object> map = new HashMap<String,Object>();
|
|
|
+
|
|
|
+ //获取文件生成的documentId
|
|
|
+ List<String> documentList = Lists.newArrayList();
|
|
|
+
|
|
|
+ try{
|
|
|
+ //将下载下来的文件转换为file文件
|
|
|
+ File srcFile = new File(filePath);
|
|
|
+ //截取文件后缀名
|
|
|
+ String substring = srcFile.getName().substring(srcFile.getName().lastIndexOf(".")+1, srcFile.getName().length());
|
|
|
+ if(!"doc".equals(substring.toLowerCase()) && !"docx".equals(substring.toLowerCase()) && !"pdf".equals(substring.toLowerCase())){
|
|
|
+ map.put("success",false);
|
|
|
+ map.put("message","请上传doc、docx或者pdf的文件进行签章操作");
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+ //获取真签单的documentId
|
|
|
+ HashMap hashMap = new 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);
|
|
|
+ documentId = documentIdMap.get("documentId").toString();
|
|
|
+ if("".equals(documentId)){
|
|
|
+ map.put("success",false);
|
|
|
+ map.put("message","离职证明文件创建失败");
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ String message = hashMap.get("message").toString();
|
|
|
+ map.put("success",false);
|
|
|
+ map.put("message",message);
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+
|
|
|
+ documentList.add(documentId);
|
|
|
+
|
|
|
+ }catch (Exception e){
|
|
|
+
|
|
|
+ }finally {
|
|
|
+ if(StringUtils.isNotBlank(filePath)){
|
|
|
+ //根据路径创建文件对象
|
|
|
+ File file = new File(filePath);
|
|
|
+ //路径是个文件且不为空时删除文件
|
|
|
+ if(file.isFile()&&file.exists()){
|
|
|
+ file.delete();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //根据项目id 和 documentId生成合同id
|
|
|
+ HashMap contractIdHashMap = this.getSignatureContractIdByPageSign(documentList);
|
|
|
+ String contractIdCode = contractIdHashMap.get("code").toString();
|
|
|
+ String contractId = "";
|
|
|
+ if("0".equals(contractIdCode)){
|
|
|
+ contractId = contractIdHashMap.get("contractId").toString();
|
|
|
+ map.put("contractId",contractId);
|
|
|
+ if("".equals(contractId)){
|
|
|
+ map.put("success",false);
|
|
|
+ map.put("message","签章文件创建失败");
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+
|
|
|
+ }else{
|
|
|
+ map.put("success",false);
|
|
|
+ map.put("message",contractIdHashMap.get("message").toString());
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+
|
|
|
+ map.put("success",true);
|
|
|
+ map.put("message","生成签章contractId成功");
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 根据项目报告id 和 documentId生成合同id(页面签署生成)
|
|
|
+ * 个人签字章功能
|
|
|
+ * @param documentList
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public HashMap getSignatureContractIdByPageSign( List<String> documentList){
|
|
|
+ HashMap hashMap = new HashMap();
|
|
|
+ Set<String> serialIdSet = new HashSet<>();
|
|
|
+ //创建签署方信息
|
|
|
+ List<Action> actions = Lists.newArrayList();
|
|
|
+ Action companyAction = new Action();
|
|
|
+ companyAction.setType("CORPORATE");
|
|
|
+ companyAction.setName("公司印章");
|
|
|
+ companyAction.setSerialNo("1");
|
|
|
+ //添加盖章位置
|
|
|
+ List<Location> locations = Lists.newArrayList();
|
|
|
+ Location location = new Location();
|
|
|
+ location.setDocumentId(documentList.get(0));
|
|
|
+ location.setSealId(COMPANYROUNDSEALFINANCEID);
|
|
|
+ location.setRectType("SEAL_CORPORATE");
|
|
|
+ location.setKeyword("单位盖章");
|
|
|
+ location.setKeywordIndex(1);
|
|
|
+ locations.add(location);
|
|
|
+
|
|
|
+ List<String> serialIdList = new ArrayList<String>(serialIdSet);
|
|
|
+ companyAction.setSealIds("[" + String.join(",", serialIdList) + "]");
|
|
|
+ //判定该action是否采用自动签署
|
|
|
+ companyAction.setAutoSign("true");
|
|
|
+ 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(DIMISSIONID);
|
|
|
+ signatureContract.setSend(true);
|
|
|
+ signatureContract.setSignatories(signatories);
|
|
|
+ signatureContract.setSn("");
|
|
|
+ signatureContract.setSubject("" + "离职证明");//添加项目名称
|
|
|
+ net.sf.json.JSONObject json = net.sf.json.JSONObject.fromObject(signatureContract);
|
|
|
+ System.out.println(json.toString());
|
|
|
+ long s5=System.currentTimeMillis();
|
|
|
+ System.out.println(json.toString());
|
|
|
+ String contractIdMapStr = SignaturePostUtil.sendPostApplicationJson(HTTPTOP + "/contract/createbycategory", json.toString());
|
|
|
+ long s6=System.currentTimeMillis();
|
|
|
+ System.out.println("获取合同id获取时间:" + (s6 - s5));
|
|
|
+ hashMap = JSON.parseObject(contractIdMapStr, HashMap.class);
|
|
|
+
|
|
|
+ return hashMap;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
|
|
|
public String getAssignee(String roleId){
|
|
|
List<UserDTO> userDTOS = SpringUtil.getBean(IUserApi.class).findListFlowAbleByPostId(roleId);
|