Merge remote-tracking branch 'origin/main' into main
This commit is contained in:
		
						commit
						aea0c54900
					
				| 
						 | 
				
			
			@ -63,16 +63,16 @@ public class CreateToDoHandler {
 | 
			
		|||
 | 
			
		||||
   public boolean
 | 
			
		||||
    sendCreateToDoNew(String messageInfo, String title, String appRecordId, String userId, String number) {
 | 
			
		||||
        logger.info("###进入待办推送接口数据组装");
 | 
			
		||||
        logger.info("###新eoss进入待办推送接口数据组装");
 | 
			
		||||
        try {
 | 
			
		||||
            //调用接口结果
 | 
			
		||||
            String result = RequestClient.getInstance().callServiceNew(ToDoCenterConstant.URI_send_addNew, messageInfo);
 | 
			
		||||
            logger.info("###接口返回结果" + result);
 | 
			
		||||
            logger.info("###新eoss接口返回结果" + result);
 | 
			
		||||
            //接口调用结果
 | 
			
		||||
            JSONObject jsonObject = JSONObject.parseObject(result);
 | 
			
		||||
            if (jsonObject == null) {
 | 
			
		||||
                RequestClient.getInstance().saveCreateToDoNew(title, ToDoCenterConstant.URI_send_addNew, false, result, messageInfo, appRecordId, userId, number);
 | 
			
		||||
                logger.info("###响应报文为空");
 | 
			
		||||
                logger.info("###新eoss响应报文为空");
 | 
			
		||||
                return false;
 | 
			
		||||
            } else {
 | 
			
		||||
                if (Objects.equals("success", jsonObject.getString("status"))) {
 | 
			
		||||
| 
						 | 
				
			
			@ -84,7 +84,7 @@ public class CreateToDoHandler {
 | 
			
		|||
                    //调用保存操作
 | 
			
		||||
                    RequestClient.getInstance().saveCreateToDoNew(title, ToDoCenterConstant.URI_send_addNew, false, result, messageInfo, appRecordId, userId, number);
 | 
			
		||||
                    //发送失败
 | 
			
		||||
                    logger.error("###接口调通失败");
 | 
			
		||||
                    logger.error("###新eoss接口调通失败");
 | 
			
		||||
                    return false;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -195,18 +195,18 @@ public class RequestClient {
 | 
			
		|||
     * @param number 单据编码
 | 
			
		||||
     */
 | 
			
		||||
    public void saveCreateToDoNew(String title,String url, boolean isTrue,String result,String jsonMessage,String appRecordId,String userId,String number){
 | 
			
		||||
        logger.info("###开始调用待办保存日志方法");
 | 
			
		||||
        logger.info("###新eoss开始调用待办保存日志方法");
 | 
			
		||||
        StringBuffer urlStr = new StringBuffer();
 | 
			
		||||
        urlStr.append(this.protocal).append("://").append(this.newIp);
 | 
			
		||||
        if (!StringUtils.isEmpty(this.newPort)) {
 | 
			
		||||
            urlStr.append(":").append(this.newPort);
 | 
			
		||||
        }
 | 
			
		||||
        urlStr.append(url);;
 | 
			
		||||
        logger.info("###保存时,环境参数,protocal:"+this.protocal+",ip:"+this.newIp+",this.port:"+this.newPort);
 | 
			
		||||
        logger.info("###新eoss保存时,环境参数,protocal:"+this.protocal+",ip:"+this.newIp+",this.port:"+this.newPort);
 | 
			
		||||
        try{
 | 
			
		||||
            DynamicObject dynamicObject = BusinessDataServiceHelper.newDynamicObject("shkd_backlog1");
 | 
			
		||||
            logger.info("###保存日志表id"+dynamicObject.getPkValue());
 | 
			
		||||
            dynamicObject.set("shkd_url","测试环境:"+urlStr);
 | 
			
		||||
            logger.info("###新eoss保存日志表id"+dynamicObject.getPkValue());
 | 
			
		||||
            dynamicObject.set("shkd_url","新eoss:"+urlStr);
 | 
			
		||||
            CodeRuleInfo codeRule = CodeRuleServiceHelper.getCodeRule(dynamicObject.getDataEntityType().getName(), dynamicObject, null);
 | 
			
		||||
            dynamicObject.set("billno",CodeRuleServiceHelper.getNumber(codeRule,dynamicObject));
 | 
			
		||||
            dynamicObject.set("shkd_traceid",appRecordId);
 | 
			
		||||
| 
						 | 
				
			
			@ -221,11 +221,11 @@ public class RequestClient {
 | 
			
		|||
                dynamicObject.set("shkd_number",number);
 | 
			
		||||
            }
 | 
			
		||||
            Object[] save = SaveServiceHelper.save(new DynamicObject[]{dynamicObject});
 | 
			
		||||
            logger.info("###保存日志表后id"+dynamicObject.getPkValue());
 | 
			
		||||
            logger.info("save结果"+save.toString());
 | 
			
		||||
            logger.info("###结束调用待办保存日志方法");
 | 
			
		||||
            logger.info("###新eoss保存日志表后id"+dynamicObject.getPkValue());
 | 
			
		||||
            logger.info("新eosssave结果"+save.toString());
 | 
			
		||||
            logger.info("###新eoss结束调用待办保存日志方法");
 | 
			
		||||
        }catch (Exception execution){
 | 
			
		||||
            logger.info("###保存日志失败"+execution.getMessage());
 | 
			
		||||
            logger.info("###新eoss保存日志失败"+execution.getMessage());
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			@ -285,7 +285,7 @@ public class RequestClient {
 | 
			
		|||
     * @param status 类型 2:已办 5:撤销
 | 
			
		||||
     */
 | 
			
		||||
    public void saveDeLToDoNew(Long appRecordId,String userId,String url,boolean isTrue,String result,String jsonMessage,String status,String number){
 | 
			
		||||
        logger.info("###开始调用已办、撤销保存日志方法");
 | 
			
		||||
        logger.info("###开始新eoss调用已办、撤销保存日志方法");
 | 
			
		||||
        StringBuffer urlStr = new StringBuffer();
 | 
			
		||||
        urlStr.append(this.protocal).append("://").append(this.newIp);
 | 
			
		||||
        if (!StringUtils.isEmpty(this.newPort)) {
 | 
			
		||||
| 
						 | 
				
			
			@ -294,7 +294,7 @@ public class RequestClient {
 | 
			
		|||
        urlStr.append(url);
 | 
			
		||||
        try{
 | 
			
		||||
            DynamicObject dynamicObject = BusinessDataServiceHelper.newDynamicObject("shkd_backlog1");
 | 
			
		||||
            dynamicObject.set("shkd_url","测试环境:"+urlStr.toString());
 | 
			
		||||
            dynamicObject.set("shkd_url","新eoss:"+urlStr.toString());
 | 
			
		||||
            CodeRuleInfo codeRule = CodeRuleServiceHelper.getCodeRule(dynamicObject.getDataEntityType().getName(), dynamicObject, null);
 | 
			
		||||
            dynamicObject.set("billno",CodeRuleServiceHelper.getNumber(codeRule,dynamicObject));
 | 
			
		||||
            dynamicObject.set("shkd_traceid",appRecordId);
 | 
			
		||||
| 
						 | 
				
			
			@ -309,11 +309,11 @@ public class RequestClient {
 | 
			
		|||
                dynamicObject.set("shkd_number",number);
 | 
			
		||||
            }
 | 
			
		||||
            Object[] save = SaveServiceHelper.save(new DynamicObject[]{dynamicObject});
 | 
			
		||||
            logger.info("###保存日志表id"+dynamicObject.getPkValue());
 | 
			
		||||
            logger.info("save结果"+save.toString());
 | 
			
		||||
            logger.info("###结束调用已办、撤销保存日志方法");
 | 
			
		||||
            logger.info("###新eoss保存日志表id"+dynamicObject.getPkValue());
 | 
			
		||||
            logger.info("新eosssave结果"+save.toString());
 | 
			
		||||
            logger.info("###新eoss结束调用已办、撤销保存日志方法");
 | 
			
		||||
        }catch (Exception execution){
 | 
			
		||||
            logger.info("###保存日志失败"+execution.getMessage());
 | 
			
		||||
            logger.info("###新eoss保存日志失败"+execution.getMessage());
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -46,6 +46,7 @@ import org.springframework.http.HttpHeaders;
 | 
			
		|||
import org.springframework.http.MediaType;
 | 
			
		||||
import org.springframework.http.ResponseEntity;
 | 
			
		||||
import org.springframework.web.client.RestTemplate;
 | 
			
		||||
 | 
			
		||||
import java.nio.file.Path;
 | 
			
		||||
import java.nio.file.Paths;
 | 
			
		||||
import java.nio.file.Files;
 | 
			
		||||
| 
						 | 
				
			
			@ -190,6 +191,8 @@ public class ApiService {
 | 
			
		|||
     *
 | 
			
		||||
     * @param dynamic    某个单据的 某条需要推送的数据 注:映射字段必须包含在其中,缺失字段会报错
 | 
			
		||||
     * @param systemName 推送系统标识
 | 
			
		||||
     * @param dynamicObjects 反写单据数据
 | 
			
		||||
     * @param requestBody 请求体数据
 | 
			
		||||
     * @return 推送结果
 | 
			
		||||
     */
 | 
			
		||||
    public static String paymentSlipsJson(DynamicObject dynamic, String systemName, List<DynamicObject> dynamicObjects, String requestBody) {
 | 
			
		||||
| 
						 | 
				
			
			@ -244,6 +247,7 @@ public class ApiService {
 | 
			
		|||
                jsonObject = JSON.parseObject(saveResponseBody);
 | 
			
		||||
                code = jsonObject.getString("code");
 | 
			
		||||
                if ("200".equals(code)) {
 | 
			
		||||
                    LogService.newLog("INFO", "付款单", dynamic.getString("billno"), "付款处理 → BIP保存接口 → 成功", "请求数据:" + saveRequestBody + "\n推送成功接口返回数据:" + saveResponseBody);
 | 
			
		||||
                    logger.info("付款处理 → BIP保存接口 → 成功\n失败单据编号:{}\n推送失败接口返回数据:{}", dynamic.getString("billno"), saveResponseBody);
 | 
			
		||||
                    data = jsonObject.getJSONObject("data");
 | 
			
		||||
                    dynamic.set("shkd_businessnumber", data.getString("code"));
 | 
			
		||||
| 
						 | 
				
			
			@ -260,6 +264,7 @@ public class ApiService {
 | 
			
		|||
                    logger.info("付款处理 → BIP提交接口 → 返回结果:{}", submitResponseBody);
 | 
			
		||||
                    result = "推送 → 付款处理单 → 成功";
 | 
			
		||||
                } else {
 | 
			
		||||
                    LogService.newLog("ERROR", "付款单", dynamic.getString("billno"), "付款处理 → BIP保存接口 → 失败", "请求数据:" + saveRequestBody + "\n推送失败接口返回数据:" + saveResponseBody);
 | 
			
		||||
                    logger.info("付款处理 → BIP保存接口 → 失败\n失败单据编号:{}\n推送失败接口返回数据:{}", dynamic.getString("billno"), saveResponseBody);
 | 
			
		||||
                    result = "推送 → 付款处理单 → 失败";
 | 
			
		||||
                }
 | 
			
		||||
| 
						 | 
				
			
			@ -272,6 +277,8 @@ public class ApiService {
 | 
			
		|||
                jsonObject = JSON.parseObject(saveResponseBody);
 | 
			
		||||
                code = jsonObject.getString("code");
 | 
			
		||||
                if ("200".equals(code)) {
 | 
			
		||||
                    LogService.newLog("INFO", "收款单", dynamic.getString("billno"), "收款处理 → BIP保存接口 → 成功", "请求数据:" + saveRequestBody + "\n推送成功接口返回数据:" + saveResponseBody);
 | 
			
		||||
 | 
			
		||||
                    logger.info("收款处理 → BIP保存接口 → 成功\n失败单据编号:{}\n推送失败接口返回数据:{}", dynamic.getString("billno"), saveResponseBody);
 | 
			
		||||
                    data = jsonObject.getJSONObject("data");
 | 
			
		||||
                    dynamic.set("shkd_businessnumber", data.getString("code"));
 | 
			
		||||
| 
						 | 
				
			
			@ -287,7 +294,9 @@ public class ApiService {
 | 
			
		|||
                    logger.info("收款处理 → BIP提交接口 → 返回结果:{}", submitResponseBody);
 | 
			
		||||
                    result = "推送 → 收款处理 → 成功";
 | 
			
		||||
                } else {
 | 
			
		||||
                    logger.info("收款处理 → BIP保存接口 → 成功\n失败单据编号:{}\n推送失败接口返回数据:{}", dynamic.getString("billno"), saveResponseBody);
 | 
			
		||||
                    LogService.newLog("ERROR", "收款单", dynamic.getString("billno"), "收款处理 → BIP保存接口 → 失败", "请求数据:" + saveRequestBody + "\n推送失败接口返回数据:" + saveResponseBody);
 | 
			
		||||
 | 
			
		||||
                    logger.info("收款处理 → BIP保存接口 → 失败\n失败单据编号:{}\n推送失败接口返回数据:{}", dynamic.getString("billno"), saveResponseBody);
 | 
			
		||||
                    result = "推送 → 收款处理 → 失败";
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -301,9 +310,13 @@ public class ApiService {
 | 
			
		|||
                    dynamic.set("shkd_pushstatus", "已推送");
 | 
			
		||||
                    dynamic.set("shkd_businessname", "共享系统");
 | 
			
		||||
                    dynamicObjects.add(dynamic);
 | 
			
		||||
                    LogService.newLog("INFO", "银行收付处理", dynamic.getString("billno"), "银行收付处理 → BIP推送接口 → 成功", "请求数据:" + saveRequestBody + "\n推送成功接口返回数据:" + saveResponseBody);
 | 
			
		||||
 | 
			
		||||
                    logger.info("银行收付处理 → BIP推送接口 → 成功\n成功单据编号:{}\n成功请求体:{}\n推送成功接口返回数据:{}", dynamic.getString("billno"), saveRequestBody, saveResponseBody);
 | 
			
		||||
                    result = "推送 → 银行收付处理 → 成功";
 | 
			
		||||
                } else {
 | 
			
		||||
                    LogService.newLog("ERROR", "银行收付处理", dynamic.getString("billno"), "银行收付处理 → BIP推送接口 → 失败", "请求数据:" + saveRequestBody + "\n推送失败接口返回数据:" + saveResponseBody);
 | 
			
		||||
 | 
			
		||||
                    logger.info("银行收付处理 → BIP推送接口 → 失败\n失败单据编号:{}\n失败请求体:{}\n推送失败接口返回数据:{}", dynamic.getString("billno"), saveRequestBody, saveResponseBody);
 | 
			
		||||
                    result = "推送 → 银行收付处理 → 失败";
 | 
			
		||||
                }
 | 
			
		||||
| 
						 | 
				
			
			@ -318,20 +331,21 @@ public class ApiService {
 | 
			
		|||
                jsonObject = JSON.parseObject(saveResponseBody);
 | 
			
		||||
                code = jsonObject.getString("code");
 | 
			
		||||
                if ("200".equals(code)) {
 | 
			
		||||
                    if ("TF、NC、OF".contains(dynamic.getString("bankpaystatus"))) {
 | 
			
		||||
                        dynamic.set("billstatus", "A");
 | 
			
		||||
                        dynamic.set("shkd_pushstatus", "结算失败");
 | 
			
		||||
                    } else if ("TS".equals(dynamic.getString("bankpaystatus"))) {
 | 
			
		||||
                    if ("TS".equals(dynamic.getString("bankpaystatus"))) {
 | 
			
		||||
                        dynamic.set("shkd_pushstatus", "已结算");
 | 
			
		||||
                    } else {
 | 
			
		||||
                        dynamic.set("shkd_pushstatus", "结算失败");
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    dynamicObjects.add(dynamic);
 | 
			
		||||
                    LogService.newLog("INFO", "付款单(结算结果)", dynamic.getString("billno"), "付款处理(支付结果) → BIP推送接口 → 成功", "请求数据:" + saveRequestBody + "\n推送成功接口返回数据:" + saveResponseBody);
 | 
			
		||||
 | 
			
		||||
                    logger.info("付款处理(支付结果) → BIP推送接口 → 成功\n成功单据编号:{}\n成功请求体:{}\n推送成功接口返回数据:{}",
 | 
			
		||||
                            dynamic.getString("billno"), saveRequestBody, saveResponseBody);
 | 
			
		||||
                    result = "推送 → 付款处理(支付结果) → 成功,返回信息:";
 | 
			
		||||
                } else {
 | 
			
		||||
                    LogService.newLog("ERROR", "付款单(结算结果)", dynamic.getString("billno"), "付款处理(支付结果) → BIP推送接口 → 失败", "请求数据:" + saveRequestBody + "\n推送失败接口返回数据:" + saveResponseBody);
 | 
			
		||||
 | 
			
		||||
                    logger.info("付款处理(支付结果) → BIP推送接口 → 失败\n失败单据编号:{}\n失败请求体:{}\n推送失败接口返回数据:{}",
 | 
			
		||||
                            dynamic.getString("billno"), saveRequestBody, saveResponseBody);
 | 
			
		||||
                    result = "推送 → 付款处理(支付结果) → 失败,返回信息:" + JSON.parseObject(saveResponseBody).getString("message");
 | 
			
		||||
| 
						 | 
				
			
			@ -372,8 +386,12 @@ public class ApiService {
 | 
			
		|||
                    String attachmentRequestBody = getAttachmentRequestBody(hashMap);
 | 
			
		||||
                    String pushResult = pushBill(token, "https://10.1.9.43/iuap-api-auth//yonbip/ctm/bank/tran/update", attachmentRequestBody);
 | 
			
		||||
                    logger.info("电子回单查询 → BIP推送附件接口 → 请求返回结果:\n{}", pushResult);
 | 
			
		||||
                    LogService.newLog("INFO", "电子回单", dynamic.getString("billno"), "电子回单查询 → BIP推送接口 → 成功", "请求数据:" + saveRequestBody + "\n推送成功接口返回数据:" + saveResponseBody + "\n推送附件URL:" + pdfUrl + "\n推送附件接口返回数据:" + pushResult);
 | 
			
		||||
 | 
			
		||||
                    result = "推送 → 电子回单和附件 → 成功";
 | 
			
		||||
                } else {
 | 
			
		||||
                    LogService.newLog("ERROR", "电子回单", dynamic.getString("billno"), "电子回单查询 → BIP推送接口 → 失败", "请求数据:" + saveRequestBody + "\n推送失败接口返回数据:" + saveResponseBody);
 | 
			
		||||
 | 
			
		||||
                    logger.info("电子回单查询 → BIP推送接口 → 失败\n失败单据编号:{}\n失败请求体:{}\n推送失败接口返回数据:{}",
 | 
			
		||||
                            dynamic.getString("billno"), saveRequestBody, saveResponseBody);
 | 
			
		||||
                    result = "推送 → 电子回单和附件 → 失败";
 | 
			
		||||
| 
						 | 
				
			
			@ -423,13 +441,13 @@ public class ApiService {
 | 
			
		|||
            JSONArray jsonArray = new JSONArray();
 | 
			
		||||
            JSONObject json = new JSONObject();
 | 
			
		||||
            for (DynamicObject dynamicObject : dynamicObjectCollection) {
 | 
			
		||||
                valueAssignment(dynamicObject, dynamic, json, floors);
 | 
			
		||||
                valueAssignment(dynamicObject, dynamic, json, floors, 0);
 | 
			
		||||
            }
 | 
			
		||||
            jsonArray.add(json);
 | 
			
		||||
            return jsonArray.toJSONString();
 | 
			
		||||
        } else {
 | 
			
		||||
            JSONObject resultJson = new JSONObject();
 | 
			
		||||
            processFloor(resultJson, "data", floors.get(0), floors, dynamic);
 | 
			
		||||
            processFloor(resultJson, "data", floors.get(0), floors, dynamic, 0);
 | 
			
		||||
            return resultJson.toJSONString();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			@ -443,33 +461,33 @@ public class ApiService {
 | 
			
		|||
     * @param floors       所有楼层对象(List<List>)
 | 
			
		||||
     * @param dynamic      源单据对象
 | 
			
		||||
     */
 | 
			
		||||
    private static void processFloor(JSONObject parentJson, String parentKey, List<DynamicObject> currentFloor, List<List<DynamicObject>> floors, DynamicObject dynamic) {
 | 
			
		||||
    private static void processFloor(JSONObject parentJson, String parentKey, List<DynamicObject> currentFloor, List<List<DynamicObject>> floors, DynamicObject dynamic, int i) {
 | 
			
		||||
        logger.info("进入processFloor方法");
 | 
			
		||||
        if (currentFloor.isEmpty()) {
 | 
			
		||||
            logger.info("currentFloor.isEmpty()");
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (currentFloor.size() == 1 && "object".equals(currentFloor.get(0).getString("shkd_tartype"))) {
 | 
			
		||||
        if (currentFloor.size() == 1 && "对象".equals(currentFloor.get(0).getString("shkd_tartype"))) {
 | 
			
		||||
            parentJson.put(parentKey, new JSONObject());
 | 
			
		||||
            processFloor(parentJson.getJSONObject(parentKey), parentKey, getChildren(floors, currentFloor.get(0).getString("shkd_tarfield")), floors, dynamic);
 | 
			
		||||
            processFloor(parentJson.getJSONObject(parentKey), parentKey, getChildren(floors, currentFloor.get(0).getString("shkd_tarfield")), floors, dynamic, 0);
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if ("arrayList".equals(currentFloor.get(0).getString("shkd_tartype"))) {
 | 
			
		||||
        if ("数组".equals(currentFloor.get(0).getString("shkd_tartype"))) {
 | 
			
		||||
            logger.info("进入数组");
 | 
			
		||||
            JSONArray jsonArray = new JSONArray();
 | 
			
		||||
            //目前JSONArray都是一层
 | 
			
		||||
            JSONObject json = new JSONObject();
 | 
			
		||||
            for (DynamicObject dynamicObject : currentFloor) {
 | 
			
		||||
                valueAssignment(dynamicObject, dynamic, json, floors);
 | 
			
		||||
                valueAssignment(dynamicObject, dynamic, json, floors, 0);
 | 
			
		||||
            }
 | 
			
		||||
            jsonArray.add(json);
 | 
			
		||||
            parentJson.put(parentKey, jsonArray);
 | 
			
		||||
        } else {
 | 
			
		||||
            logger.info("进入对象");
 | 
			
		||||
            for (DynamicObject dynamicObject : currentFloor) {
 | 
			
		||||
                valueAssignment(dynamicObject, dynamic, parentJson, floors);
 | 
			
		||||
                valueAssignment(dynamicObject, dynamic, parentJson, floors, i);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			@ -482,7 +500,7 @@ public class ApiService {
 | 
			
		|||
     * @param jsonObject    JSON对象
 | 
			
		||||
     * @param floors        层集合
 | 
			
		||||
     */
 | 
			
		||||
    private static void valueAssignment(DynamicObject dynamicObject, DynamicObject billObject, JSONObject jsonObject, List<List<DynamicObject>> floors) {
 | 
			
		||||
    private static void valueAssignment(DynamicObject dynamicObject, DynamicObject billObject, JSONObject jsonObject, List<List<DynamicObject>> floors, int i) {
 | 
			
		||||
 | 
			
		||||
        String key = dynamicObject.getString("shkd_tarfield");
 | 
			
		||||
        Object value = null;
 | 
			
		||||
| 
						 | 
				
			
			@ -580,7 +598,7 @@ public class ApiService {
 | 
			
		|||
            } else if (parts.length == 2) {
 | 
			
		||||
                if ("entry".equals(parts[0])) {
 | 
			
		||||
                    DynamicObjectCollection dynamicObjectCollection1 = billObject.getDynamicObjectCollection(parts[0]);
 | 
			
		||||
                    value = dynamicObjectCollection1.get(0).get(parts[1]);
 | 
			
		||||
                    value = dynamicObjectCollection1.get(i).get(parts[1]);
 | 
			
		||||
                } else {
 | 
			
		||||
                    DynamicObject object = billObject.getDynamicObject(parts[0]);
 | 
			
		||||
                    if (object != null) {
 | 
			
		||||
| 
						 | 
				
			
			@ -590,7 +608,7 @@ public class ApiService {
 | 
			
		|||
            } else if (parts.length == 3) {
 | 
			
		||||
                if ("entry".equals(parts[0])) {
 | 
			
		||||
                    DynamicObjectCollection dynamicObjectCollection1 = billObject.getDynamicObjectCollection(parts[0]);
 | 
			
		||||
                    DynamicObject object = dynamicObjectCollection1.get(0).getDynamicObject(parts[1]);
 | 
			
		||||
                    DynamicObject object = dynamicObjectCollection1.get(i).getDynamicObject(parts[1]);
 | 
			
		||||
                    if (object != null) {
 | 
			
		||||
                        value = object.get(parts[2]);
 | 
			
		||||
                    }
 | 
			
		||||
| 
						 | 
				
			
			@ -620,13 +638,19 @@ public class ApiService {
 | 
			
		|||
            jsonObject.put(key, new BigDecimal(String.valueOf(value)));
 | 
			
		||||
        } else if ("对象".equals(tartype)) {
 | 
			
		||||
            JSONObject childJson = new JSONObject();
 | 
			
		||||
            processFloor(childJson, key, getChildren(floors, dynamicObject.getString("shkd_tarfield")), floors, billObject);
 | 
			
		||||
            processFloor(childJson, key, getChildren(floors, dynamicObject.getString("shkd_tarfield")), floors, billObject, 0);
 | 
			
		||||
            jsonObject.put(key, childJson);
 | 
			
		||||
        } else if ("数组".equals(tartype)) {
 | 
			
		||||
            JSONArray childJsonArray = new JSONArray();
 | 
			
		||||
            JSONObject childJson = new JSONObject();
 | 
			
		||||
            processFloor(childJson, key, getChildren(floors, dynamicObject.getString("shkd_tarfield")), floors, billObject);
 | 
			
		||||
            childJsonArray.add(childJson);
 | 
			
		||||
 | 
			
		||||
            DynamicObjectCollection dynamicObjectCollection = billObject.getDynamicObjectCollection("entry");
 | 
			
		||||
            logger.info("分录长度:" + dynamicObjectCollection.size());
 | 
			
		||||
            for (int j = 0; j < dynamicObjectCollection.size(); j++) {
 | 
			
		||||
                JSONObject childJson = new JSONObject();
 | 
			
		||||
                processFloor(childJson, key, getChildren(floors, dynamicObject.getString("shkd_tarfield")), floors, billObject, j);
 | 
			
		||||
                childJsonArray.add(childJson);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            jsonObject.put(key, childJsonArray);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,29 @@
 | 
			
		|||
package shkd.sys.sys.mservice;
 | 
			
		||||
 | 
			
		||||
import kd.bos.dataentity.entity.DynamicObject;
 | 
			
		||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
 | 
			
		||||
import kd.bos.servicehelper.operation.SaveServiceHelper;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @Description
 | 
			
		||||
 * @Author Tao
 | 
			
		||||
 * @Date 2025/4/9
 | 
			
		||||
 */
 | 
			
		||||
public class LogService {
 | 
			
		||||
    /**
 | 
			
		||||
     * @param shkd_loglevel   日志级别
 | 
			
		||||
     * @param shkd_billtype   单据类型
 | 
			
		||||
     * @param shkd_billnumber 推送单据编码
 | 
			
		||||
     * @param shkd_logdetails 日志摘要
 | 
			
		||||
     * @param shkd_logdetails_tag 日志详情
 | 
			
		||||
     */
 | 
			
		||||
    public static void newLog(String shkd_loglevel, String shkd_billtype, String shkd_billnumber, String shkd_logdetails, String shkd_logdetails_tag) {
 | 
			
		||||
        DynamicObject dynamicObject = BusinessDataServiceHelper.newDynamicObject("shkd_log");
 | 
			
		||||
        dynamicObject.set("shkd_loglevel", shkd_loglevel);
 | 
			
		||||
        dynamicObject.set("shkd_billtype", shkd_billtype);
 | 
			
		||||
        dynamicObject.set("shkd_billnumber", shkd_billnumber);
 | 
			
		||||
        dynamicObject.set("shkd_logdetails", shkd_logdetails);// 大文本摘要
 | 
			
		||||
        dynamicObject.set("shkd_logdetails_tag", shkd_logdetails_tag);// 大文本内容
 | 
			
		||||
        SaveServiceHelper.save(new DynamicObject[]{dynamicObject});
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -175,18 +175,35 @@ public class PayBillApiSavePlugin implements ApiSavePlugin {
 | 
			
		|||
                        objectNumber = objects[0].getString("number");
 | 
			
		||||
                    }
 | 
			
		||||
                } else if ("bos_user".equals(payeetype)) {
 | 
			
		||||
                    Map<String, Object> username = new HashMap<>();
 | 
			
		||||
                    username.put("username", map.get("payeenumber").toString());
 | 
			
		||||
                    map.put("shkd_user", username);
 | 
			
		||||
 | 
			
		||||
                    DynamicObject[] objects = BusinessDataServiceHelper.load(payeetype.toString(), "id,name,number,username", new QFilter("username", QCP.equals, map.get("payeenumber").toString()).toArray());
 | 
			
		||||
                    if (objects.length > 0) {
 | 
			
		||||
                        // 收款人编码
 | 
			
		||||
                        map.put("payeenumber", objects[0].getString("number"));
 | 
			
		||||
                        // 收款人ID
 | 
			
		||||
                        map.put(fieldName1, objects[0].getPkValue());
 | 
			
		||||
                        //收款人编码
 | 
			
		||||
                        objectNumber = objects[0].getString("number");
 | 
			
		||||
                    if (map.get("shkd_businessname").toString().equals("XK")) {
 | 
			
		||||
                        Map<String, Object> user_number = new HashMap<>();
 | 
			
		||||
                        user_number.put("number", map.get("payeenumber").toString());
 | 
			
		||||
                        map.put("shkd_user", user_number);
 | 
			
		||||
 | 
			
		||||
                        DynamicObject[] objects = BusinessDataServiceHelper.load(payeetype.toString(), "id,name,number,username", new QFilter("number", QCP.equals, map.get("payeenumber").toString()).toArray());
 | 
			
		||||
                        if (objects.length > 0) {
 | 
			
		||||
                            // 收款人编码
 | 
			
		||||
                            map.put("payeenumber", objects[0].getString("number"));
 | 
			
		||||
                            // 收款人ID
 | 
			
		||||
                            map.put(fieldName1, objects[0].getPkValue());
 | 
			
		||||
                            //收款人编码
 | 
			
		||||
                            objectNumber = objects[0].getString("number");
 | 
			
		||||
                        }
 | 
			
		||||
                    } else {
 | 
			
		||||
                        Map<String, Object> username = new HashMap<>();
 | 
			
		||||
                        username.put("username", map.get("payeenumber").toString());
 | 
			
		||||
                        map.put("shkd_user", username);
 | 
			
		||||
 | 
			
		||||
                        DynamicObject[] objects = BusinessDataServiceHelper.load(payeetype.toString(), "id,name,number,username", new QFilter("username", QCP.equals, map.get("payeenumber").toString()).toArray());
 | 
			
		||||
                        if (objects.length > 0) {
 | 
			
		||||
                            // 收款人编码
 | 
			
		||||
                            map.put("payeenumber", objects[0].getString("number"));
 | 
			
		||||
                            // 收款人ID
 | 
			
		||||
                            map.put(fieldName1, objects[0].getPkValue());
 | 
			
		||||
                            //收款人编码
 | 
			
		||||
                            objectNumber = objects[0].getString("number");
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                } else if ("bos_org".equals(payeetype)) {
 | 
			
		||||
                    Map<String, Object> number = new HashMap<>();
 | 
			
		||||
| 
						 | 
				
			
			@ -282,18 +299,32 @@ public class PayBillApiSavePlugin implements ApiSavePlugin {
 | 
			
		|||
                        objectNumber = objects[0].getString("number");
 | 
			
		||||
                    }
 | 
			
		||||
                } else if ("bos_user".equals(payertype)) {
 | 
			
		||||
                    Map<String, Object> username = new HashMap<>();
 | 
			
		||||
                    username.put("username", map.get("payernumber").toString());
 | 
			
		||||
                    map.put("shkd_user", username);
 | 
			
		||||
 | 
			
		||||
                    DynamicObject[] objects = BusinessDataServiceHelper.load(payertype.toString(), "id,name,number,username", new QFilter("username", QCP.equals, map.get("payernumber").toString()).toArray());
 | 
			
		||||
                    if (objects.length > 0) {
 | 
			
		||||
                        // 付款人编码
 | 
			
		||||
                        map.put("payernumber", objects[0].getString("number"));
 | 
			
		||||
                        // 付款人ID
 | 
			
		||||
                        map.put(fieldName1, objects[0].getPkValue());
 | 
			
		||||
                        // 付款人编码
 | 
			
		||||
                        objectNumber = objects[0].getString("number");
 | 
			
		||||
                    if (map.get("shkd_businessname").toString().equals("XK")) {
 | 
			
		||||
                        Map<String, Object> user_number = new HashMap<>();
 | 
			
		||||
                        user_number.put("number", map.get("payernumber").toString());
 | 
			
		||||
                        map.put("shkd_user", user_number);
 | 
			
		||||
                        DynamicObject[] objects = BusinessDataServiceHelper.load(payertype.toString(), "id,name,number,username", new QFilter("number", QCP.equals, map.get("payernumber").toString()).toArray());
 | 
			
		||||
                        if (objects.length > 0) {
 | 
			
		||||
                            // 付款人编码
 | 
			
		||||
                            map.put("payernumber", objects[0].getString("number"));
 | 
			
		||||
                            // 付款人ID
 | 
			
		||||
                            map.put(fieldName1, objects[0].getPkValue());
 | 
			
		||||
                            // 付款人编码
 | 
			
		||||
                            objectNumber = objects[0].getString("number");
 | 
			
		||||
                        }
 | 
			
		||||
                    } else {
 | 
			
		||||
                        Map<String, Object> username = new HashMap<>();
 | 
			
		||||
                        username.put("username", map.get("payernumber").toString());
 | 
			
		||||
                        map.put("shkd_user", username);
 | 
			
		||||
                        DynamicObject[] objects = BusinessDataServiceHelper.load(payertype.toString(), "id,name,number,username", new QFilter("username", QCP.equals, map.get("payernumber").toString()).toArray());
 | 
			
		||||
                        if (objects.length > 0) {
 | 
			
		||||
                            // 付款人编码
 | 
			
		||||
                            map.put("payernumber", objects[0].getString("number"));
 | 
			
		||||
                            // 付款人ID
 | 
			
		||||
                            map.put(fieldName1, objects[0].getPkValue());
 | 
			
		||||
                            // 付款人编码
 | 
			
		||||
                            objectNumber = objects[0].getString("number");
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                } else if ("bos_org".equals(payertype)) {
 | 
			
		||||
                    Map<String, Object> number = new HashMap<>();
 | 
			
		||||
| 
						 | 
				
			
			@ -346,15 +377,27 @@ public class PayBillApiSavePlugin implements ApiSavePlugin {
 | 
			
		|||
                        map.put("asstact", number);
 | 
			
		||||
                    }
 | 
			
		||||
                } else if ("bos_user".equals(asstacttype)) {
 | 
			
		||||
                    Map<String, Object> username = new HashMap<>();
 | 
			
		||||
                    username.put("username", asstact.get("number").toString());
 | 
			
		||||
                    map.put("shkd_user", username);
 | 
			
		||||
                    logger.info("人员用户名:{}", asstact.get("number").toString());
 | 
			
		||||
                    DynamicObject[] objects = BusinessDataServiceHelper.load("bos_user", "id,name,number,username", new QFilter("username", QCP.equals, asstact.get("number").toString()).toArray());
 | 
			
		||||
                    if (objects.length > 0) {
 | 
			
		||||
                        Map<String, Object> number = new HashMap<>();
 | 
			
		||||
                        number.put("number", objects[0].getString("number"));
 | 
			
		||||
                        map.put("asstact", number);
 | 
			
		||||
                    if ("XK".equals(map.get("shkd_businessname").toString())) {
 | 
			
		||||
                        Map<String, Object> user_number = new HashMap<>();
 | 
			
		||||
                        user_number.put("number", asstact.get("number").toString());
 | 
			
		||||
                        map.put("shkd_user", user_number);
 | 
			
		||||
                        DynamicObject[] objects = BusinessDataServiceHelper.load("bos_user", "id,name,number,username", new QFilter("number", QCP.equals, asstact.get("number").toString()).toArray());
 | 
			
		||||
                        if (objects.length > 0) {
 | 
			
		||||
                            Map<String, Object> number = new HashMap<>();
 | 
			
		||||
                            number.put("number", objects[0].getString("number"));
 | 
			
		||||
                            map.put("asstact", number);
 | 
			
		||||
                        }
 | 
			
		||||
                    } else {
 | 
			
		||||
                        Map<String, Object> username = new HashMap<>();
 | 
			
		||||
                        username.put("username", asstact.get("number").toString());
 | 
			
		||||
                        map.put("shkd_user", username);
 | 
			
		||||
                        logger.info("人员用户名:{}", asstact.get("number").toString());
 | 
			
		||||
                        DynamicObject[] objects = BusinessDataServiceHelper.load("bos_user", "id,name,number,username", new QFilter("username", QCP.equals, asstact.get("number").toString()).toArray());
 | 
			
		||||
                        if (objects.length > 0) {
 | 
			
		||||
                            Map<String, Object> number = new HashMap<>();
 | 
			
		||||
                            number.put("number", objects[0].getString("number"));
 | 
			
		||||
                            map.put("asstact", number);
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -213,12 +213,11 @@ public class ApiMappingBillPlugin extends AbstractFormPlugin implements Plugin {
 | 
			
		|||
            // 付款处理
 | 
			
		||||
            case "cas_paybill":
 | 
			
		||||
                DynamicObject[] objects1 = BusinessDataServiceHelper.load("cas_paybill",
 | 
			
		||||
                        "id,billno,actpayamt,entry,entry.e_expenseitem,entry.e_remark,settletype,payeebanknum," +
 | 
			
		||||
                                "payeetype,payeenumber,payeracctbank,payeebank,payeebankname,paymenttype,org,org.number,org.name,bizdate," +
 | 
			
		||||
                                "description,shkd_pushstatus,shkd_businessnumber,shkd_businessid,shkd_businessname,billstatus,bankpaystatus"
 | 
			
		||||
                        , new QFilter("billno", QCP.equals, billNumber)
 | 
			
		||||
                                .and("org.name", QCP.in, new String[]{"四川川投能源股份有限公司", "川投(攀枝花)新能源开发有限公司", "四川川投屏山书楼抽水蓄能开发有限公司", "四川天彭电力开发有限公司"})//目前四家公司
 | 
			
		||||
                                .toArray());
 | 
			
		||||
                        "id,billno,actpayamt,entry,entry.e_expenseitem,entry.e_remark,entry.e_actamt,settletype," +
 | 
			
		||||
                                "payeebanknum,payeetype,payeenumber,payeracctbank,payeebank,payeebankname,paymenttype," +
 | 
			
		||||
                                "org,bizdate,description,shkd_pushstatus,shkd_businessnumber,shkd_businessid,shkd_businessname," +
 | 
			
		||||
                                "billstatus,bankpaystatus"
 | 
			
		||||
                        , new QFilter("billno", QCP.equals, billNumber).toArray());
 | 
			
		||||
                billObject = objects1[0];
 | 
			
		||||
                logger.info("获取付款处理推送对象 → billObject:{}", billObject);
 | 
			
		||||
                break;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,52 @@
 | 
			
		|||
package shkd.sys.sys.plugin.form;
 | 
			
		||||
 | 
			
		||||
import kd.bos.bill.AbstractBillPlugIn;
 | 
			
		||||
import kd.bos.dataentity.entity.DynamicObject;
 | 
			
		||||
import kd.bos.form.control.Toolbar;
 | 
			
		||||
import kd.bos.form.control.events.ItemClickEvent;
 | 
			
		||||
import kd.bos.form.field.RichTextEdit;
 | 
			
		||||
import kd.sdk.plugin.Plugin;
 | 
			
		||||
import shkd.sys.sys.mservice.LogService;
 | 
			
		||||
 | 
			
		||||
import java.util.EventObject;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 单据界面插件
 | 
			
		||||
 */
 | 
			
		||||
public class LogBillPlugin extends AbstractBillPlugIn implements Plugin {
 | 
			
		||||
    @Override
 | 
			
		||||
    public void registerListener(EventObject e) {
 | 
			
		||||
//        super.registerListener(e);
 | 
			
		||||
 | 
			
		||||
        // 获取工具栏,监听整个工具栏
 | 
			
		||||
        Toolbar save = this.getView().getControl("tbmain");
 | 
			
		||||
        // 监听工具栏这个按钮的点击事件
 | 
			
		||||
        save.addItemClickListener(this);
 | 
			
		||||
 | 
			
		||||
        // 获取除了工具栏上的其他按钮
 | 
			
		||||
        // Button save = this.getView().getControl("qwz5_baritemap");
 | 
			
		||||
        // save.addClickListener(this); // 添加出菜单栏点击事件监听
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void itemClick(ItemClickEvent evt) {
 | 
			
		||||
        super.itemClick(evt);
 | 
			
		||||
        // 获取键
 | 
			
		||||
        String key = evt.getItemKey();
 | 
			
		||||
 | 
			
		||||
        if ("shkd_setlog".equals(key)) {
 | 
			
		||||
            LogService.newLog("INFO", "付款单", "FKD-20250409-0001", "付款单 → 推送至BIP → 成功", "风听到了海豚和云的笑声。云是个爱哭鬼,可是风还是特别喜欢她,风推着她跑啊跑得,把她带到每个好玩儿的地方去。她哭的时候风就呼啊呼把她的眼泪吹干了,后来风没有留住云,她变成了雨,去到了海里陪海豚征服湛蓝的世界去了,风还是一遍一遍地吹动海面。因为风还是特别喜欢她。");
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void afterBindData(EventObject e) {
 | 
			
		||||
        super.afterBindData(e);
 | 
			
		||||
        DynamicObject dataEntity = this.getModel().getDataEntity(true);
 | 
			
		||||
        if (dataEntity.get("shkd_logdetails_tag") != null) {
 | 
			
		||||
            String shkdLogdetailsTag = dataEntity.getString("shkd_logdetails_tag");
 | 
			
		||||
            RichTextEdit edit = this.getView().getControl("shkd_richtexteditorap");
 | 
			
		||||
            edit.setText(shkdLogdetailsTag);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,6 +1,8 @@
 | 
			
		|||
package shkd.sys.sys.plugin.operation;
 | 
			
		||||
 | 
			
		||||
import kd.bos.dataentity.OperateOption;
 | 
			
		||||
import kd.bos.dataentity.entity.DynamicObject;
 | 
			
		||||
import kd.bos.entity.operate.result.OperationResult;
 | 
			
		||||
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
 | 
			
		||||
import kd.bos.entity.plugin.args.AfterOperationArgs;
 | 
			
		||||
import kd.bos.entity.plugin.args.BeforeOperationArgs;
 | 
			
		||||
| 
						 | 
				
			
			@ -9,10 +11,12 @@ import kd.bos.logging.LogFactory;
 | 
			
		|||
import kd.bos.orm.query.QCP;
 | 
			
		||||
import kd.bos.orm.query.QFilter;
 | 
			
		||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
 | 
			
		||||
import kd.bos.servicehelper.operation.OperationServiceHelper;
 | 
			
		||||
import kd.bos.servicehelper.operation.SaveServiceHelper;
 | 
			
		||||
import kd.sdk.plugin.Plugin;
 | 
			
		||||
import scala.collection.mutable.StringBuilder;
 | 
			
		||||
import shkd.sys.sys.mservice.ApiService;
 | 
			
		||||
import kd.bos.entity.operate.result.IOperateInfo;
 | 
			
		||||
import shkd.sys.sys.plugin.form.ApiMappingBillPlugin;
 | 
			
		||||
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
| 
						 | 
				
			
			@ -28,6 +32,7 @@ public class HitBackOperationServicePlugin extends AbstractOperationServicePlugI
 | 
			
		|||
 | 
			
		||||
    /**
 | 
			
		||||
     * 单据操作前 打回操作
 | 
			
		||||
     *
 | 
			
		||||
     * @param args
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
| 
						 | 
				
			
			@ -38,41 +43,52 @@ public class HitBackOperationServicePlugin extends AbstractOperationServicePlugI
 | 
			
		|||
        Arrays.stream(entities).forEach(dynamicObject -> {
 | 
			
		||||
            pkValue.add(dynamicObject.getPkValue());
 | 
			
		||||
        });
 | 
			
		||||
        DynamicObject[] objects = BusinessDataServiceHelper.load("cas_paybill", "id,billno,actpayamt,entry,entry.e_expenseitem,entry.e_remark,settletype,payeebanknum," +
 | 
			
		||||
                        "payeetype,payeenumber,payeracctbank,payeebank,payeebankname,paymenttype,org,bizdate,description," +
 | 
			
		||||
                        "shkd_pushstatus,shkd_businessnumber,shkd_businessid,shkd_businessname,billstatus,bankpaystatus"
 | 
			
		||||
        DynamicObject[] objects = BusinessDataServiceHelper.load("cas_paybill",
 | 
			
		||||
                "id,billno,actpayamt,entry,entry.e_expenseitem,entry.e_remark,settletype," +
 | 
			
		||||
                        "payeebanknum,payeetype,payeenumber,payeracctbank,payeebank,payeebankname,paymenttype," +
 | 
			
		||||
                        "org,bizdate,description,shkd_pushstatus,shkd_businessnumber,shkd_businessid,shkd_businessname," +
 | 
			
		||||
                        "billstatus,bankpaystatus"
 | 
			
		||||
                , new QFilter("id", QCP.in, pkValue)
 | 
			
		||||
                        .and("billstatus", QCP.equals, "C")//已审核
 | 
			
		||||
                        .and("billstatus", QCP.in, "A、C")
 | 
			
		||||
                        .and("shkd_businessname", QCP.equals, "共享系统").toArray());
 | 
			
		||||
        if (objects == null || objects.length == 0) {
 | 
			
		||||
            args.setCancel(true);
 | 
			
		||||
            args.setCancelMessage("选择打回单据必须为BIP推送单据");
 | 
			
		||||
            args.setCancelMessage("打回失败\n" +
 | 
			
		||||
                    "1、选择打回单据必须为BIP推送单据\n" +
 | 
			
		||||
                    "2、只能打回提交、已审核的单据\n" +
 | 
			
		||||
                    "(若有其他问题,可找业务老师咨询)"
 | 
			
		||||
            );
 | 
			
		||||
        } else {
 | 
			
		||||
            StringBuilder stringBuilder = new StringBuilder();
 | 
			
		||||
            List<DynamicObject> dynamicObjects = new ArrayList<>();
 | 
			
		||||
            for (DynamicObject dynamicObject : objects) {
 | 
			
		||||
                String bankpaystatus = dynamicObject.getString("bankpaystatus");
 | 
			
		||||
                if (!"未结算".equals(dynamicObject.getString("shkd_pushstatus"))) {
 | 
			
		||||
                    args.setCancel(true);
 | 
			
		||||
                    args.setCancelMessage("打回失败,该单据结算结果已被推送");
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                if ("TF、NC、OF".contains(bankpaystatus)) {
 | 
			
		||||
                    List<DynamicObject> dynamicObjects = new ArrayList<>();
 | 
			
		||||
                    String result = ApiService.paymentSlipsJson(dynamicObject, "BIPNO", dynamicObjects, null);
 | 
			
		||||
                OperationResult sumbit = OperationServiceHelper.executeOperate("unsubmit", "cas_paybill", dynamicObjects.toArray(new DynamicObject[0]), OperateOption.create());
 | 
			
		||||
                List<IOperateInfo> allErrorOrValidateInfo = sumbit.getAllErrorOrValidateInfo();
 | 
			
		||||
                if (allErrorOrValidateInfo.isEmpty()) {
 | 
			
		||||
                    String result = ApiService.paymentSlipsJson(dynamicObject, "BIPRE", dynamicObjects, null);
 | 
			
		||||
                    logger.info("result信息:{}", result);
 | 
			
		||||
                    if (result.contains("成功")) {
 | 
			
		||||
                        SaveServiceHelper.save(dynamicObjects.toArray(new DynamicObject[0]));
 | 
			
		||||
                        stringBuilder.append(result);
 | 
			
		||||
                        return;
 | 
			
		||||
 | 
			
		||||
                    } else {
 | 
			
		||||
                        args.setCancel(true);
 | 
			
		||||
                        args.setCancelMessage(result);
 | 
			
		||||
                        return;
 | 
			
		||||
                    }
 | 
			
		||||
                    return;
 | 
			
		||||
                } else {
 | 
			
		||||
                    allErrorOrValidateInfo.forEach(operateInfo -> {
 | 
			
		||||
                        DynamicObject object = BusinessDataServiceHelper.loadSingle(operateInfo.getPkValue(), "cas_paybill");
 | 
			
		||||
                        stringBuilder.append("单据编号:" + object.get("billno") + "," + operateInfo.getMessage() + "\n");
 | 
			
		||||
                    });
 | 
			
		||||
                    args.setCancel(true);
 | 
			
		||||
                    args.setCancelMessage("打回失败,请确认银行支付状态");
 | 
			
		||||
                    args.setCancelMessage(stringBuilder.toString());
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -39,18 +39,26 @@ public class PushTaskPlugin extends AbstractTask implements Plugin {
 | 
			
		|||
        List<DynamicObject> dynamicObjectList = new ArrayList<>();
 | 
			
		||||
        if (billMark != null) {
 | 
			
		||||
            switch (billMark.toString()) {
 | 
			
		||||
                //BIP推过来,系统为共享系统,推送状态未结算
 | 
			
		||||
                //司库推BIP → 只能通过能源公司和来源系统判断:,且推送系统为空(推送后返回系统为能源共享,推送状态为)
 | 
			
		||||
 | 
			
		||||
                // 已结算、未结算、结算失败、未推送
 | 
			
		||||
                // 付款处理
 | 
			
		||||
                case "cas_paybill":
 | 
			
		||||
                    DynamicObject[] objects1 = BusinessDataServiceHelper.load("cas_paybill", "id,billno,actpayamt,entry,entry.e_expenseitem,entry.e_remark,settletype,payeebanknum,payeetype,payeenumber,payeracctbank,payeebank,payeebankname,paymenttype,org,bizdate,description,shkd_pushstatus,shkd_businessnumber,shkd_businessid,shkd_businessname,billstatus,bankpaystatus"
 | 
			
		||||
                            , new QFilter("bizdate", QCP.large_equals, calculateTheDate(2))
 | 
			
		||||
                                    .and("shkd_pushstatus", QCP.not_equals, "已结算")
 | 
			
		||||
                                    .and("shkd_pushstatus", QCP.not_equals, "结算失败")
 | 
			
		||||
                    DynamicObject[] objects1 = BusinessDataServiceHelper.load("cas_paybill",
 | 
			
		||||
                            "id,billno,actpayamt,entry,entry.e_expenseitem,entry.e_remark,entry.e_actamt,settletype," +
 | 
			
		||||
                                    "payeebanknum,payeetype,payeenumber,payeracctbank,payeebank,payeebankname,paymenttype," +
 | 
			
		||||
                                    "org,bizdate,description,shkd_pushstatus,shkd_businessnumber,shkd_businessid,shkd_businessname," +
 | 
			
		||||
                                    "billstatus,bankpaystatus"
 | 
			
		||||
                            , new QFilter("bizdate", QCP.large_equals, getFirstDayOfMonth(3))
 | 
			
		||||
                                    .and("billstatus", QCP.equals, "D").toArray());
 | 
			
		||||
 | 
			
		||||
                    Arrays.stream(objects1).forEach(dynamicObject -> {
 | 
			
		||||
                        DynamicObject org = dynamicObject.getDynamicObject("org");
 | 
			
		||||
                        if ("SIG1040100、SIG1090000、SIG000101135、SIG1041000、SIG1040802、SIG1040804、SIG1040803、SIG1040801、SIG1040400".contains(org.getString("number"))) {
 | 
			
		||||
                        if (("SIG1040100、SIG1040901、SIG1040201、SIG1090000、SIG1040700、SIG000101135、SIG1040600、SIG1040300、" +
 | 
			
		||||
                                "SIG000100079、SIG000003001、SIG1041000、SIG1040802、SIG000101558、SIG1040808、SIG1040804、" +
 | 
			
		||||
                                "SIG1040803、SIG1040801、SIG1040400、SIG104010101、SIG104010102、SIG1040202、SIG1040203、" +
 | 
			
		||||
                                "SIG1040204、SIG1040902、SIG000101822、SIG000101799").contains(org.getString("number"))) {
 | 
			
		||||
                            ApiService.paymentSlipsJson(dynamicObject, "BIP", dynamicObjectList, null);
 | 
			
		||||
                        }
 | 
			
		||||
                    });
 | 
			
		||||
| 
						 | 
				
			
			@ -69,16 +77,10 @@ public class PushTaskPlugin extends AbstractTask implements Plugin {
 | 
			
		|||
                    //OF	银企异常
 | 
			
		||||
                    DynamicObject[] objects4 = BusinessDataServiceHelper.load("cas_paybill", "id,billno,actpayamt,entry,entry.e_expenseitem,entry.e_remark,settletype,payeebanknum,payeetype,payeenumber,payeracctbank,payeebank,payeebankname,paymenttype,org,bizdate,description,shkd_pushstatus,shkd_businessnumber,shkd_businessid,shkd_businessname,billstatus,bankpaystatus"
 | 
			
		||||
                            , new QFilter("bizdate", QCP.large_equals, calculateTheDate(10))
 | 
			
		||||
                                    .and("bankpaystatus", QCP.in, new String[]{"TS", "TF", "NC", "OF"})
 | 
			
		||||
                                    .and("bankpaystatus", QCP.equals, "TS")
 | 
			
		||||
                                    .and("shkd_pushstatus", QCP.equals, "未结算")
 | 
			
		||||
                                    .and(new QFilter("shkd_businessname", QCP.equals, "共享系统")).toArray());
 | 
			
		||||
 | 
			
		||||
                    DynamicObject[] objects5 = BusinessDataServiceHelper.load("cas_paybill", "id,billno,actpayamt,entry,entry.e_expenseitem,entry.e_remark,settletype,payeebanknum,payeetype,payeenumber,payeracctbank,payeebank,payeebankname,paymenttype,org,bizdate,description,shkd_pushstatus,shkd_businessnumber,shkd_businessid,shkd_businessname,billstatus,bankpaystatus"
 | 
			
		||||
                            , new QFilter("bankpaystatus", QCP.equals, "TS")
 | 
			
		||||
                                    .and("shkd_pushstatus", QCP.equals, "结算失败")
 | 
			
		||||
                                    .and(new QFilter("shkd_businessname", QCP.equals, "共享系统")).toArray());
 | 
			
		||||
                    dynamicObjects = Arrays.asList(objects4);
 | 
			
		||||
                    dynamicObjects.addAll(Arrays.asList(objects5));
 | 
			
		||||
                    dynamicObjects.forEach(dynamicObject -> ApiService.paymentSlipsJson(dynamicObject, "BIPNO", dynamicObjectList, null));
 | 
			
		||||
                    SaveServiceHelper.save(dynamicObjectList.toArray(new DynamicObject[0]));
 | 
			
		||||
                    break;
 | 
			
		||||
| 
						 | 
				
			
			@ -111,7 +113,10 @@ public class PushTaskPlugin extends AbstractTask implements Plugin {
 | 
			
		|||
 | 
			
		||||
                    Arrays.stream(objects3).forEach(dynamicObject -> {
 | 
			
		||||
                        DynamicObject companys = dynamicObject.getDynamicObject("company");
 | 
			
		||||
                        if (("SIG1040100、SIG1040901、SIG1040201、SIG1090000、SIG1040700、SIG000101135、SIG1040600、SIG1040300、SIG000100079、SIG000003001、SIG1041000、SIG1040802、SIG000101558、SIG1040808、SIG1040804、SIG1040803、SIG1040801、SIG1040400、SIG104010101、SIG104010102、SIG1040202、SIG1040203、SIG1040204、SIG1040902、SIG000101822、SIG000101799").contains(companys.getString("number"))) {
 | 
			
		||||
                        if (("SIG1040100、SIG1040901、SIG1040201、SIG1090000、SIG1040700、SIG000101135、SIG1040600、SIG1040300、" +
 | 
			
		||||
                                "SIG000100079、SIG000003001、SIG1041000、SIG1040802、SIG000101558、SIG1040808、SIG1040804、" +
 | 
			
		||||
                                "SIG1040803、SIG1040801、SIG1040400、SIG104010101、SIG104010102、SIG1040202、SIG1040203、" +
 | 
			
		||||
                                "SIG1040204、SIG1040902、SIG000101822、SIG000101799").contains(companys.getString("number"))) {
 | 
			
		||||
                            ApiService.paymentSlipsJson(dynamicObject, "BIP", dynamicObjectList, null);
 | 
			
		||||
                        }
 | 
			
		||||
                    });
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue