|
@@ -7,9 +7,7 @@ import org.apache.pdfbox.pdmodel.common.PDRectangle;
|
|
|
import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotation;
|
|
|
import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotationWidget;
|
|
|
import org.springblade.business.vo.ScrSignInfoVO;
|
|
|
-import org.springblade.business.vo.TaskSignInfoVO;
|
|
|
import org.springblade.common.utils.CommonUtil;
|
|
|
-import org.springblade.core.tool.utils.BeanUtil;
|
|
|
import org.springblade.core.tool.utils.CollectionUtil;
|
|
|
import org.springblade.core.tool.utils.Func;
|
|
|
import org.springblade.core.tool.utils.StringUtil;
|
|
@@ -74,7 +72,7 @@ public class ScrDataServiceImpl implements ScrDataService {
|
|
|
String sql2 = "UPDATE u_information_query set chek_status=3 where id='"+taskApp.getId()+"'";
|
|
|
jdbcTemplate.execute(sql2);
|
|
|
|
|
|
- RedisTemplate.delete("chek-" + taskApp.getId());
|
|
|
+ RedisTemplate.delete("chek-" + taskApp.getId() + taskApp.getProcessInstanceId());
|
|
|
System.out.println(taskApp.getProcessInstanceId()+"-"+"总共:" );
|
|
|
return;
|
|
|
}
|
|
@@ -222,7 +220,7 @@ public class ScrDataServiceImpl implements ScrDataService {
|
|
|
String sql2 = "UPDATE u_information_query set chek_status=3 where id='"+taskApp.getId()+"'";
|
|
|
jdbcTemplate.execute(sql2);
|
|
|
}
|
|
|
- RedisTemplate.delete("chek-" + taskApp.getId());
|
|
|
+ RedisTemplate.delete("chek-" + taskApp.getId() + taskApp.getProcessInstanceId());
|
|
|
// System.out.println(taskApp.getProcessInstanceId()+"-"+"总共:" );
|
|
|
// System.out.println(taskApp.getId() +"-"+"总共:" + positions.size() + "-剩下-" + differentElements.size());
|
|
|
}
|
|
@@ -417,14 +415,6 @@ public class ScrDataServiceImpl implements ScrDataService {
|
|
|
Map<String, String> dataMap = pdfSignIds.getDataMap();
|
|
|
|
|
|
Map<String, String> dataMap1 = checkSignByPdf(taskApp, pdfSignIds, pdfData);
|
|
|
- if (dataMap1 != null && !dataMap1.isEmpty()) {
|
|
|
- dataMap = dataMap1;
|
|
|
- } else {
|
|
|
- String sql2 = "UPDATE u_information_query set chek_status=2 where id='" + taskApp.getId() + "'";
|
|
|
- jdbcTemplate.execute(sql2);
|
|
|
- RedisTemplate.delete("chek-" + taskApp.getId());
|
|
|
- return;
|
|
|
- }
|
|
|
|
|
|
List<String> sucessUser = new ArrayList<>();
|
|
|
List<String> sucessCompan = new ArrayList<>();
|
|
@@ -440,10 +430,10 @@ public class ScrDataServiceImpl implements ScrDataService {
|
|
|
|
|
|
if (strategyListByDFZX == null || strategyListByDFZX.size() == 0) {
|
|
|
|
|
|
- String sql2 = "UPDATE u_information_query set chek_status=3 where id='" + taskApp.getId() + "'";
|
|
|
+ String sql2 = "UPDATE u_information_query set chek_status=3 where chek_status != 2 and id='" + taskApp.getId() + "'";
|
|
|
jdbcTemplate.execute(sql2);
|
|
|
|
|
|
- RedisTemplate.delete("chek-" + taskApp.getId());
|
|
|
+ RedisTemplate.delete("chek-" + taskApp.getId() + taskApp.getProcessInstanceId());
|
|
|
System.out.println(taskApp.getProcessInstanceId() + "-" + "总共:");
|
|
|
return;
|
|
|
}
|
|
@@ -586,8 +576,8 @@ public class ScrDataServiceImpl implements ScrDataService {
|
|
|
if (pkeyid.length() < 19) {
|
|
|
keyw = keyw - (float) (10 - pkeyid.length() / 2.0);
|
|
|
}
|
|
|
-// System.out.println("page = " + (i + 1) + ", type = " + type + ", keyid = " + pkeyid + ", imgX : " + imgX + ", keyw : " + keyw + ", imgY : "
|
|
|
-// + imgY + ", keyh : " + keyh + ", keyword =" + keyData.replace("\r", "\\r") + ", remarkType = " + taskApp.getRemarkType());
|
|
|
+ System.out.println("page = " + (i + 1) + ", type = " + type + ", keyid = " + pkeyid + ", imgX : " + imgX + ", keyw : " + keyw + ", imgY : "
|
|
|
+ + imgY + ", keyh : " + keyh + ", keyword =" + keyData.replace("\r", "\\r") + ", remarkType = " + taskApp.getRemarkType());
|
|
|
if (Math.abs(imgX - keyw) <= threshold && Math.abs(imgY - keyh) <= threshold) {
|
|
|
if (type.equals("1")) { //个人
|
|
|
sucessUser.add(pkeyid);
|
|
@@ -633,13 +623,47 @@ public class ScrDataServiceImpl implements ScrDataService {
|
|
|
for(String mapkey:dataMap.keySet()){
|
|
|
String mapval = dataMap.get(mapkey);
|
|
|
if(mapval != null && (mapval.equals(company) || mapval.equals(company+"\r"))){
|
|
|
-// if(mapval != null && mapval.contains(company)){
|
|
|
dataUserMap.remove(mapkey) ;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
if(!dataUserMap.isEmpty()){
|
|
|
- isSign = false ;
|
|
|
+ Map<String, float[]> allKeyPositions = getKeyPositions(pdfSignIds, pdfData);
|
|
|
+ Set<String> removeKeys = new HashSet<>();
|
|
|
+ dataUserMap.forEach((id, value) -> {
|
|
|
+ float[] floats = allKeyPositions.get(value);
|
|
|
+ if (floats == null || floats.length < 6) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ dataMap.forEach((key, value1) -> {
|
|
|
+ float[] floats1 = allKeyPositions.get(value);
|
|
|
+ if (floats1.length < 2) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (floats[0] != floats1[0]) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ PDPage page = document.getPage((int) floats[0] - 1);
|
|
|
+ float pageHeight = page.getMediaBox().getHeight();
|
|
|
+ float pageWidth = page.getMediaBox().getWidth();
|
|
|
+ if (Math.abs(floats[5] * pageHeight - floats1[3] * pageHeight) < 1 && Math.abs(floats[4] * pageWidth - floats1[1] * pageWidth) < 1 && !dataUserMap.containsKey(key)) {
|
|
|
+ removeKeys.add(id);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ });
|
|
|
+ if (!removeKeys.isEmpty()) {
|
|
|
+ dataUserMap.entrySet().removeIf(entry -> removeKeys.contains(entry.getKey()));
|
|
|
+ }
|
|
|
+ if (!dataUserMap.isEmpty()) {
|
|
|
+ if (dataMap1 == null) {
|
|
|
+ dataUserMap.entrySet().removeIf(item -> true);
|
|
|
+ } else {
|
|
|
+ dataUserMap.entrySet().removeIf(entry -> !dataMap1.containsKey(entry.getKey()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!dataUserMap.isEmpty()) {
|
|
|
+ isSign = false ;
|
|
|
+ }
|
|
|
}
|
|
|
System.out.println(taskApp.getId() +"-"+"个人总共:" + sucessUser.size() + "-剩下-" +dataUserMap.keySet().size());
|
|
|
}
|
|
@@ -647,11 +671,34 @@ public class ScrDataServiceImpl implements ScrDataService {
|
|
|
String sql2 = "UPDATE u_information_query set chek_status=2 where id='" + taskApp.getId() + "'";
|
|
|
jdbcTemplate.execute(sql2);
|
|
|
} else {
|
|
|
- String sql2 = "UPDATE u_information_query set chek_status=3 where id='" + taskApp.getId() + "'";
|
|
|
+ String sql2 = "UPDATE u_information_query set chek_status=3 where chek_status != 2 and id='" + taskApp.getId() + "'";
|
|
|
jdbcTemplate.execute(sql2);
|
|
|
}
|
|
|
- RedisTemplate.delete("chek-" + taskApp.getId());
|
|
|
+ RedisTemplate.delete("chek-" + taskApp.getId() + taskApp.getProcessInstanceId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取所有电签关键字的位置
|
|
|
+ */
|
|
|
+ public Map<String, float[]> getKeyPositions(SignKeyVO pdfSignIds,byte[] pdfData) throws Exception {
|
|
|
+ if (pdfSignIds == null) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ Map<String, String> dataMap = pdfSignIds.getDataMap();
|
|
|
+ Collection<String> keys = dataMap.values();
|
|
|
+ if (keys.isEmpty()) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ List<PDFIndexInfo> pdfIndexInfo = PdfAddimgUtil.findKeywordPostions(pdfData, String.join(",", keys));
|
|
|
+ if (pdfIndexInfo.isEmpty()) {
|
|
|
+ return null;
|
|
|
}
|
|
|
+ Map<String, float[]> map = new HashMap<>();
|
|
|
+ for (PDFIndexInfo info : pdfIndexInfo) {
|
|
|
+ map.put(info.getPkeyid(), info.getDataInfo());
|
|
|
+ }
|
|
|
+ return map;
|
|
|
}
|
|
|
|
|
|
public Map<String, String> checkSignByPdf(ScrSignInfoVO taskApp,SignKeyVO pdfSignIds,byte[] pdfData) throws Exception {
|
|
@@ -689,9 +736,23 @@ public class ScrDataServiceImpl implements ScrDataService {
|
|
|
float pyzbx = 0.0f;
|
|
|
float pyzby = 0.0f;
|
|
|
if (taskApp.getRemarkType().equals("3")) { //东方中讯
|
|
|
-
|
|
|
+ if (imgH >= 100) {
|
|
|
+ // 签章
|
|
|
+ keyw = keyw + pyzbx - 21;
|
|
|
+ keyh = keyh + pyzby - 16;
|
|
|
+ } else {
|
|
|
+ keyw = keyw + pyzbx + 10;
|
|
|
+ keyh = keyh + pyzby;
|
|
|
+ }
|
|
|
} else if (taskApp.getRemarkType().equals("2")) { //东方中讯
|
|
|
-
|
|
|
+ if (imgH >= 100) {
|
|
|
+ // 签章
|
|
|
+ keyw = keyw + pyzbx - 21;
|
|
|
+ keyh = keyh + pyzby - 15;
|
|
|
+ } else {
|
|
|
+ keyw = keyw + pyzbx + 10;
|
|
|
+ keyh = keyh + pyzby;
|
|
|
+ }
|
|
|
} else {
|
|
|
keyw = keyw + pyzbx + 5;
|
|
|
keyh = keyh + pyzby;
|
|
@@ -719,11 +780,8 @@ public class ScrDataServiceImpl implements ScrDataService {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- if (!dataUserMap.isEmpty()) {
|
|
|
- return dataUserMap;
|
|
|
- }
|
|
|
}
|
|
|
+ return dataUserMap;
|
|
|
}
|
|
|
- return null;
|
|
|
}
|
|
|
}
|