9060 2 天之前
父节点
当前提交
bd507af482

+ 1 - 1
src/com/kingdee/eas/custom/esign/util/SyncSignedFilesUtil.java

@@ -137,7 +137,7 @@ public class SyncSignedFilesUtil {
         UserInfo userInfo = (UserInfo) ctx.get("UserInfo");
         String userId = userInfo.getId().toString();
         // 遍历并保存签署生成的正式文件
-        for (int i = 0; i < attachments.size(); i++) {
+        for (int i = 0; null!=attachments && i < attachments.size(); i++) {
             JSONObject fileMap = attachments.getJSONObject(i);
             String fileName = fileMap.getString("fileName");
             String downloadUrl = fileMap.getString("downloadUrl");

+ 109 - 68
websrc/com/kingdee/eas/custom/esign/osf/Create_by_fileOSFService.java

@@ -550,7 +550,7 @@ public class Create_by_fileOSFService implements IHRMsfService {
                     Map<String, Object> transactorInfo = Maps.newHashMap();
                     transactorInfo.put("psnAccount", orgSignerInfo.getString("psnAccount"));
                     Map<String, Object> psnInfo = Maps.newHashMap();
-                    psnInfo.put("psnName", orgSignerInfo.getString("psnAccount"));
+                    psnInfo.put("psnName", orgSignerInfo.getString("psnName"));
                     transactorInfo.put("psnInfo", psnInfo);
                     orgPsnSignMap.put("transactorInfo", transactorInfo);
                     orgPsnSignMap.put("orgInfo", orgPsn.getJSONObject("orgInfo"));
@@ -589,60 +589,68 @@ public class Create_by_fileOSFService implements IHRMsfService {
         for (Map<String, Object> doc : docs) {
             Map<String, List<Map<String, Object>>> signListGroup = (Map<String, List<Map<String, Object>>>) doc.get("signListGroup");
             List<Map<String, Object>> fieldList = signListGroup.get(signName);
-            for (Map<String, Object> fieldMap : fieldList) {
-                Map<String, Object> field = Maps.newHashMap();
-                field.put("fileId", fieldMap.get("fileId"));
-                field.put("customBizNum", sourceId);
-                if (0 == ((int) fieldMap.get("signFieldType"))) {
-                    field.put("signFieldType", fieldMap.get("signFieldType"));
-                    //签章区配置项(指定signFieldType为 0 - 签章区时,该参数为必传项)
-                    Map<String, Object> normalSignFieldConfig = Maps.newHashMap();
-                    if (true == orgSignerInfo.getBoolean("isRadio")) {
-                        //企业/机构自动落章(autoSign为true),请不要传该参数。
-                        orgPsnSignMap.remove("transactorInfo");
-                        //自动落章
-                        normalSignFieldConfig.put("freeMode", false);
-                        normalSignFieldConfig.put("autoSign", true);
-                        //印章id
-                        normalSignFieldConfig.put("assignedSealId", orgSignerInfo.getString("sealId"));
-                        //印章类型:1印章,2骑缝章
-                        normalSignFieldConfig.put("signFieldStyle", fieldMap.get("signFieldStyle"));
-                        Map<String, Object> signFieldPosition = Maps.newHashMap();
-                        if (1 == ((int) fieldMap.get("signFieldStyle"))) {
-                            //正常章
-                            if (null != fieldMap.get("positionPage") && null != fieldMap.get("positionX") && null != fieldMap.get("positionY")) {
-                                signFieldPosition.put("positionPage", fieldMap.get("positionPage"));
-                                signFieldPosition.put("positionX", fieldMap.get("positionX"));
-                                signFieldPosition.put("positionY", fieldMap.get("positionY"));
-                                if (null != fieldMap.get("posX") ) {
-                                    signFieldPosition.put("positionX", fieldMap.get("posX"));
-                                }
-                                if (null != fieldMap.get("posY")) {
-                                    signFieldPosition.put("positionY", fieldMap.get("posY"));
+            if(null!=fieldList) {
+                for (Map<String, Object> fieldMap : fieldList) {
+                    Map<String, Object> field = Maps.newHashMap();
+                    field.put("fileId", fieldMap.get("fileId"));
+                    field.put("customBizNum", sourceId);
+                    if (0 == ((int) fieldMap.get("signFieldType"))) {
+                        field.put("signFieldType", fieldMap.get("signFieldType"));
+                        //签章区配置项(指定signFieldType为 0 - 签章区时,该参数为必传项)
+                        Map<String, Object> normalSignFieldConfig = Maps.newHashMap();
+                        if (true == orgSignerInfo.getBoolean("isRadio")) {
+                            //企业/机构自动落章(autoSign为true),请不要传该参数。
+                            orgPsnSignMap.remove("transactorInfo");
+                            //自动落章
+                            normalSignFieldConfig.put("freeMode", false);
+                            normalSignFieldConfig.put("autoSign", true);
+                            //印章id
+                            normalSignFieldConfig.put("assignedSealId", orgSignerInfo.getString("sealId"));
+                            //印章类型:1印章,2骑缝章
+                            normalSignFieldConfig.put("signFieldStyle", fieldMap.get("signFieldStyle"));
+                            Map<String, Object> signFieldPosition = Maps.newHashMap();
+                            if (1 == ((int) fieldMap.get("signFieldStyle"))) {
+                                //正常章
+                                if (null != fieldMap.get("positionPage") && null != fieldMap.get("positionX") && null != fieldMap.get("positionY")) {
+                                    signFieldPosition.put("positionPage", fieldMap.get("positionPage"));
+                                    signFieldPosition.put("positionX", fieldMap.get("positionX"));
+                                    signFieldPosition.put("positionY", fieldMap.get("positionY"));
+                                    if (null != fieldMap.get("posX")) {
+                                        signFieldPosition.put("positionX", fieldMap.get("posX"));
+                                    }
+                                    if (null != fieldMap.get("posY")) {
+                                        signFieldPosition.put("positionY", fieldMap.get("posY"));
+                                    }
                                 }
+                            } else {
+                                //骑缝章
                             }
+                            normalSignFieldConfig.put("signFieldPosition", signFieldPosition);
+                            Map<String, Object> signDateConfig = Maps.newHashMap();
+                            signDateConfig.put("showSignDate", 1);
+                            field.put("signDateConfig", signDateConfig);
                         } else {
-                            //骑缝章
+                            //手动签章
+                            normalSignFieldConfig.put("freeMode", true);
+                            normalSignFieldConfig.put("autoSign", false);
                         }
-                        normalSignFieldConfig.put("signFieldPosition", signFieldPosition);
-                        Map<String, Object> signDateConfig = Maps.newHashMap();
-                        signDateConfig.put("showSignDate", 1);
-                        field.put("signDateConfig", signDateConfig);
+                        field.put("normalSignFieldConfig", normalSignFieldConfig);
                     } else {
-                        //手动签章
-                        normalSignFieldConfig.put("freeMode", true);
-                        normalSignFieldConfig.put("autoSign", false);
+                        field.put("signFieldType", fieldMap.get("signFieldType"));
+                        //签章区配置项(指定signFieldType为 0 - 签章区时,该参数为必传项)
+                        Map<String, Object> remarkSignFieldConfig = Maps.newHashMap();
+                        remarkSignFieldConfig.put("freeMode", true);
+                        remarkSignFieldConfig.put("inputType", 2);
+                        field.put("remarkSignFieldConfig", remarkSignFieldConfig);
                     }
-                    field.put("normalSignFieldConfig", normalSignFieldConfig);
-                } else {
-                    field.put("signFieldType", fieldMap.get("signFieldType"));
-                    //签章区配置项(指定signFieldType为 0 - 签章区时,该参数为必传项)
-                    Map<String, Object> remarkSignFieldConfig = Maps.newHashMap();
-                    remarkSignFieldConfig.put("freeMode", true);
-                    remarkSignFieldConfig.put("inputType", 2);
-                    field.put("remarkSignFieldConfig", remarkSignFieldConfig);
+                    signFields.add(field);
                 }
-                signFields.add(field);
+            }else {
+                //失败
+                resul.put("文件模板:"+doc.get("fileName"),signName+",未匹配到签署区,请检查模板的签署区命名规范。签署区命名规则:如(“甲方:(盖章)_签署方1_X50_Y50“)根据“_”分割字符串,第一个是要盖章的内容位置标识;第二个是签署方用来判断这个签署区是谁的;X50表示:印章位置向右移动50;Y50表示:印章位置向上移动50");
+
+                // resul.put("data",signListGroup);
+                throw new EsignException(JSON.toJSONString(resul));
             }
         }
         signMapInfo.put("signFields", signFields);
@@ -713,27 +721,60 @@ public class Create_by_fileOSFService implements IHRMsfService {
         for (Map<String, Object> doc : docs) {
             Map<String, List<Map<String, Object>>> signListGroup = (Map<String, List<Map<String, Object>>>) doc.get("signListGroup");
             List<Map<String, Object>> fieldList = signListGroup.get(signName);
-            for (Map<String, Object> fieldMap : fieldList) {
-                Map<String, Object> field = Maps.newHashMap();
-                field.put("fileId", fieldMap.get("fileId"));
-                field.put("customBizNum", sourceId);
-                if (0 == ((int) fieldMap.get("signFieldType"))) {
-                    field.put("signFieldType", fieldMap.get("signFieldType"));
-                    //签章区配置项(指定signFieldType为 0 - 签章区时,该参数为必传项)
-                    Map<String, Object> normalSignFieldConfig = Maps.newHashMap();
-                    //手动签章
-                    normalSignFieldConfig.put("freeMode", true);
-                    normalSignFieldConfig.put("autoSign", false);
-                    field.put("normalSignFieldConfig", normalSignFieldConfig);
-                } else {
-                    field.put("signFieldType", fieldMap.get("signFieldType"));
-                    //签章区配置项(指定signFieldType为 0 - 签章区时,该参数为必传项)
-                    Map<String, Object> remarkSignFieldConfig = Maps.newHashMap();
-                    remarkSignFieldConfig.put("freeMode", true);
-                    remarkSignFieldConfig.put("inputType", 2);
-                    field.put("remarkSignFieldConfig", remarkSignFieldConfig);
+            if(null!=fieldList) {
+                for (Map<String, Object> fieldMap : fieldList) {
+                    Map<String, Object> field = Maps.newHashMap();
+                    field.put("fileId", fieldMap.get("fileId"));
+                    field.put("customBizNum", sourceId);
+                    if (0 == ((int) fieldMap.get("signFieldType"))) {
+                        field.put("signFieldType", fieldMap.get("signFieldType"));
+                        //签章区配置项(指定signFieldType为 0 - 签章区时,该参数为必传项)
+                        Map<String, Object> normalSignFieldConfig = Maps.newHashMap();
+                        //手动签章
+                        normalSignFieldConfig.put("freeMode", true);
+                        normalSignFieldConfig.put("autoSign", false);
+                        //印章id
+                        //normalSignFieldConfig.put("assignedSealId", orgSignerInfo.getString("sealId"));
+                        //印章类型:1印章,2骑缝章
+                        normalSignFieldConfig.put("signFieldStyle", fieldMap.get("signFieldStyle"));
+                        Map<String, Object> signFieldPosition = Maps.newHashMap();
+                        if (1 == ((int) fieldMap.get("signFieldStyle"))) {
+                            //正常章
+                            if (null != fieldMap.get("positionPage") && null != fieldMap.get("positionX") && null != fieldMap.get("positionY")) {
+                                signFieldPosition.put("positionPage", fieldMap.get("positionPage"));
+                                signFieldPosition.put("positionX", fieldMap.get("positionX"));
+                                signFieldPosition.put("positionY", fieldMap.get("positionY"));
+                                if (null != fieldMap.get("posX")) {
+                                    signFieldPosition.put("positionX", fieldMap.get("posX"));
+                                }
+                                if (null != fieldMap.get("posY")) {
+                                    signFieldPosition.put("positionY", fieldMap.get("posY"));
+                                }
+                            }
+                        } else {
+                            //骑缝章
+                        }
+                        normalSignFieldConfig.put("signFieldPosition", signFieldPosition);
+                        Map<String, Object> signDateConfig = Maps.newHashMap();
+                        signDateConfig.put("showSignDate", 1);
+                        field.put("signDateConfig", signDateConfig);
+                        field.put("normalSignFieldConfig", normalSignFieldConfig);
+                    } else {
+                        field.put("signFieldType", fieldMap.get("signFieldType"));
+                        //签章区配置项(指定signFieldType为 0 - 签章区时,该参数为必传项)
+                        Map<String, Object> remarkSignFieldConfig = Maps.newHashMap();
+                        remarkSignFieldConfig.put("freeMode", true);
+                        remarkSignFieldConfig.put("inputType", 2);
+                        field.put("remarkSignFieldConfig", remarkSignFieldConfig);
+                    }
+                    signFields.add(field);
                 }
-                signFields.add(field);
+            }else {
+                //失败
+                resul.put("文件模板:"+doc.get("fileName"),signName+",未匹配到签署区,请检查模板的签署区命名规范。签署区命名规则:如(“甲方:(盖章)_签署方1_X50_Y50“)根据“_”分割字符串,第一个是要盖章的内容位置标识;第二个是签署方用来判断这个签署区是谁的;X50表示:印章位置向右移动50;Y50表示:印章位置向上移动50");
+
+                resul.put("data",signListGroup);
+                throw new EsignException(JSON.toJSONString(resul));
             }
         }
         signMapInfo.put("signFields", signFields);