hongchuangyanfa 2 éve
szülő
commit
47cd482c0b

+ 7 - 1
blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java

@@ -1134,7 +1134,13 @@ public class InformationWriteQueryController extends BladeController {
                     //重塑primaryKeyId
                     newData.setPKeyId(SnowFlakeUtil.getId());
                     //设置旧ID
-                    newData.setOldId(node.getId().toString());
+                    if(StringUtils.isNotEmpty(node.getOldId())){
+                        newData.setOldId(node.getOldId().toString());
+                    }else{
+                        newData.setOldId(node.getId().toString());
+                    }
+
+
                     //设置新ID
                     if (new Integer("1").equals(node.getType())) {
                         //如果是节点类型才重塑ID

+ 8 - 0
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TaskServiceImpl.java

@@ -330,6 +330,13 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
     }
 
     //@Async
+
+    /**
+     *  批量电签接口
+     * @param taskApprovalVOS
+     * @param userId
+     * @throws FileNotFoundException
+     */
     @Override
     public void batchCompleteApprovalTask(List<TaskApprovalVO> taskApprovalVOS,Long userId) throws FileNotFoundException {
         List<String> taskIds = taskApprovalVOS.stream().map(TaskApprovalVO::getParallelProcessInstanceId).distinct().collect(Collectors.toList());
@@ -394,6 +401,7 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
         }
     }
 
+    // 电签主流程业务
     private void completeApprovalTask(TaskApprovalVO taskApprovalVO) {
         //获取流程ID
         String taskId = taskApprovalVO.getTaskId();

+ 83 - 11
blade-service/blade-e-visa/src/main/java/org/springblade/evisa/service/impl/EVisaServiceImpl.java

@@ -23,6 +23,7 @@ import cfca.paperless.dto.response.responsebody.tx40.VerifyPdfSealResponseBody;
 import cfca.paperless.dto.response.tx20.MakeSealResponse;
 import cfca.paperless.dto.response.tx40.CompoundSealPdfListDetachedResponse;
 import cfca.paperless.dto.response.tx40.VerifyPdfSealResponse;
+import cn.hutool.core.io.file.FileReader;
 import com.alibaba.fastjson.JSONObject;
 import lombok.AllArgsConstructor;
 import org.apache.commons.io.IOUtils;
@@ -50,8 +51,12 @@ import org.springblade.manager.feign.ContractClient;
 import org.springblade.manager.feign.SignPfxClient;
 import org.springblade.resource.feign.NewIOSSClient;
 import org.springblade.system.cache.ParamCache;
+import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
+import org.springframework.http.converter.HttpMessageConverter;
+import org.springframework.http.converter.StringHttpMessageConverter;
 import org.springframework.mock.web.MockMultipartFile;
 import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.imageio.*;
@@ -60,12 +65,10 @@ import javax.imageio.metadata.IIOMetadata;
 import javax.imageio.metadata.IIOMetadataNode;
 import javax.imageio.stream.ImageOutputStream;
 import java.awt.image.BufferedImage;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
+import java.io.*;
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 
@@ -167,7 +170,7 @@ public class EVisaServiceImpl implements EVisaService {
                 result = null;
             } else {
                 //普通文件签章
-                result = this.signPdf(pdfVO, fileByte);
+                result = this.signPdfByAXQZ(pdfVO, fileByte);
             }
             if(result != null){
                 if(result[0] != null){
@@ -196,9 +199,15 @@ public class EVisaServiceImpl implements EVisaService {
         return null;
     }
 
+    /**
+     * 合同章 签字
+     * @param task
+     * @param finalPdfUrl
+     * @return
+     */
     @Override
     public String eVisaContractSeal(EVisaTaskApprovalVO task, String finalPdfUrl) {
-        //获取任务对应表格的电签配置
+        //获取任务对应表格的电签配置(合同张)
         List<JSONObject> eVisaConfigList = this.taskClient.queryBusinessTableEVisaConfig(task.getParallelProcessInstanceId(), "true");
         if(eVisaConfigList == null || eVisaConfigList.size() == 0){
             //没有电签配置,默认当前任务为不签字审批,返回成功
@@ -258,7 +267,7 @@ public class EVisaServiceImpl implements EVisaService {
                 //获取字节
                 byte[] fileByte = CommonUtil.InputStreamToBytes(CommonUtil.getOSSInputStream(finalPdfUrl));
                 //执行电签
-                Object[] result = this.signPdf(pdfVO, fileByte);
+                Object[] result = this.signPdfByAXQZ(pdfVO, fileByte);
                 if(result != null){
                     if(result[0] != null){
                         MultipartFile newFiles = new MockMultipartFile("file", SnowFlakeUtil.getId() + ".pdf", "text/plain", IOUtils.toByteArray(new ByteArrayInputStream((byte[])result[0])));
@@ -281,7 +290,7 @@ public class EVisaServiceImpl implements EVisaService {
 
 
     /**
-     * 电签信息
+     * 个人-电签信息
      * @param task
      * @return
      */
@@ -347,7 +356,7 @@ public class EVisaServiceImpl implements EVisaService {
                     //获取字节
                     byte[] fileByte = CommonUtil.InputStreamToBytes(CommonUtil.getOSSInputStream(file.getFileUrl()));
                     //执行电签
-                    Object[] result = this.signPdf(pdfVO, fileByte);
+                    Object[] result = this.signPdfByAXQZ(pdfVO, fileByte);
                     if(result != null){
                         if(result[0] != null){
                             MultipartFile newFiles = new MockMultipartFile("file", SnowFlakeUtil.getId() + ".pdf", "text/plain", IOUtils.toByteArray(new ByteArrayInputStream((byte[])result[0])));
@@ -378,9 +387,72 @@ public class EVisaServiceImpl implements EVisaService {
     }
 
     /**
-     * 签章
+     * 东方 中讯
+     * @throws Exception
+     */
+    public static void signPdfByDFZX(SealPdfVO pdfVO, byte[] fileByte) throws Exception {
+        String url = "http://192.168.0.120:9125/FrontSys/SealServicezx/FileSignByPoint";
+        HashMap<String, Object> request = new HashMap<>();
+        String picFilePath = "/Users/hongchuangyanfa/Desktop/pdf/1606191494346047488.pdf".toLowerCase();//测试文件的绝对路径
+
+        FileReader fileReader = new FileReader(picFilePath);
+        String originalFileB64 = Base64.toBase64String(fileReader.readBytes());
+        request.put("sealId", "abb54d49555b479b8216b0f3b03bf41f");
+        request.put("fileB64", originalFileB64);
+        request.put("pointX", 100);
+        request.put("pointY", 100);
+        request.put("showHeight", 1000);
+        request.put("showWidth", 600);
+        request.put("lastSignFlag", false);
+
+        HttpComponentsClientHttpRequestFactory httpRequestFactory = new HttpComponentsClientHttpRequestFactory();
+        httpRequestFactory.setConnectionRequestTimeout(30000);
+        httpRequestFactory.setConnectTimeout(30000);
+        httpRequestFactory.setReadTimeout(30000);
+        RestTemplate restTemplate = new RestTemplate(httpRequestFactory);
+        // 设置编码格式为UTF-8
+        List<HttpMessageConverter<?>> converterList = restTemplate.getMessageConverters();
+        HttpMessageConverter<?> converterTarget = null;
+        for (HttpMessageConverter<?> item : converterList) {
+            if (item.getClass() == StringHttpMessageConverter.class) {
+                converterTarget = item;
+                break;
+            }
+        }
+
+        if (converterTarget != null) {
+            converterList.remove(converterTarget);
+        }
+        HttpMessageConverter<?> converter = new StringHttpMessageConverter(StandardCharsets.UTF_8);
+        converterList.add(1, converter);
+
+        HashMap<String, Object> retData = restTemplate.postForObject(url, request, HashMap.class);
+
+        String code = retData.get("code").toString();
+        String msg = retData.get("msg").toString();
+
+        if (!"0".equals(code)) {
+            return;
+        }
+
+        String fileB64 = retData.get("fileB64").toString();
+
+        try {
+            FileOutputStream fout = new FileOutputStream(picFilePath.replace(".pdf", "-签名后.pdf"));
+            fout.write(Base64.decode(fileB64));//生成base64字符串格式文件
+            fout.close();
+            System.out.println("文件保存成功");
+        } catch (Exception e) {
+            System.out.println("文件保存失败");
+            e.printStackTrace();
+        }
+    }
+
+
+    /**
+     * 安心 - 签章
      */
-    private Object[] signPdf(SealPdfVO pdfVO, byte[] fileByte){
+    private Object[] signPdfByAXQZ(SealPdfVO pdfVO, byte[] fileByte){
         Object[] result = new Object[3];
         try{
             PaperlessClient paperlessClient = new PaperlessClient(SIGN_HOST, SIGN_PORT, 300000, 36000000);

+ 13 - 5
blade-service/blade-user/src/main/java/org/springblade/system/user/controller/UserController.java

@@ -491,7 +491,7 @@ public class UserController {
      * 定时同步白马项目用户信息
      */
     @Scheduled(cron = "0 0 4 * * ?")
-    //@Scheduled(cron = "0 */5 * * * ?")
+  //  @Scheduled(cron = "0 */5 * * * ?")
     public void syncProjectUserInfo() throws ParseException, IOException {
         JSONObject json = new JSONObject();
         json.put("fn", "all");
@@ -502,6 +502,7 @@ public class UserController {
         String da = AesInfoUtil.sendPost(url, json, encoding);
         if (da != null) {
             JSONObject userInfo = JSONObject.parseObject(da);
+            System.out.println(userInfo);
             int code = userInfo.getInteger("status");
             if (code == 200) {
                 JSONArray list = userInfo.getJSONArray("list");
@@ -520,7 +521,14 @@ public class UserController {
                         String projectName = jsonObject.getString("projectName") + ""; //公司名称
                         String status = jsonObject.getString("status"); //状态(1:启用  2:冻结  3:删除)
                         User newUser = new User();
-                        if(projectName.indexOf("白马项目") >= 0 || constructionCompany.equals("重庆白马航运发展有限公司") || companyName.equals("重庆白马航运发展有限公司"))  {
+                        if(projectName.indexOf("白马项目") >= 0
+                                || constructionCompany.equals("重庆白马航运发展有限公司")
+                                || constructionCompany.equals("中国水利水电第八工程局有限公司")
+                                || constructionCompany.equals("中国水利水电第四工程局中电建路桥集团联合体")
+                                || companyName.equals("重庆白马航运发展有限公司")
+                                || companyName.equals("中国水利水电第八工程局有限公司")
+                                || companyName.equals("中国水利水电第四工程局中电建路桥集团联合体")
+                        )  {
                             User sysUser = userService.getOne(Wrappers.<User>lambdaQuery().eq(User::getSysId, id).eq(User::getSysType, 2));
                             if (sysUser != null) {
                                 newUser = sysUser;
@@ -536,7 +544,7 @@ public class UserController {
                                 newUser.setCreateTime(new Date());
                             }
 
-                            newUser.setUserType("1");
+                            newUser.setUserType("1,2");
                             newUser.setAccount(account);
                             newUser.setRealName(name);
                             newUser.setName(name);
@@ -549,8 +557,8 @@ public class UserController {
                             userService.saveOrUpdate(newUser);
                             userService.submitUserDept(newUser);
 
-                            //绑定项目,设置默认角色信息 白马项目id:1578599210897772545;第二期合同段id:1579773037233184770;角色施工-资料员id:1537249581371707394
-                            saveUserInfoByProjectClient.saveInfoRelation(newUser.getId(), 1578599210897772545L, 1579773037233184770L, 1537249581371707394L);
+                            //绑定项目,设置默认角色信息 白马项目id:1612329251049537537;第二期合同段id:1612335077269143554;角色施工-资料员id:1537249581371707394
+                            saveUserInfoByProjectClient.saveInfoRelation(newUser.getId(), 1612329251049537537L, 1612335077269143554L, 1537249581371707394L);
 
                         }
                     }