parent
							
								
									9ed5afc85b
								
							
						
					
					
						commit
						7ff901528e
					
				| 
						 | 
				
			
			@ -253,7 +253,7 @@ public class ApiService {
 | 
			
		|||
                    data = jsonObject.getJSONObject("data");
 | 
			
		||||
                    dynamic.set("shkd_businessnumber", data.getString("code"));
 | 
			
		||||
                    dynamic.set("shkd_businessid", data.getString("id"));
 | 
			
		||||
                    dynamic.set("shkd_businessname", "BIP");
 | 
			
		||||
                    dynamic.set("shkd_businessname", "共享系统");
 | 
			
		||||
                    dynamic.set("shkd_pushstatus", "已结算");
 | 
			
		||||
                    dynamicObjects.add(dynamic);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -307,8 +307,9 @@ public class ApiService {
 | 
			
		|||
                    dynamic.set("shkd_businessname", "共享系统");
 | 
			
		||||
                    dynamicObjects.add(dynamic);
 | 
			
		||||
                    logger.info("银行收付处理 → BIP推送接口 → 成功\n成功单据编号:{}\n成功请求体:{}\n推送成功接口返回数据:{}", dynamic.getString("billno"), saveRequestBody, saveResponseBody);
 | 
			
		||||
                    result = "推送 → 银行收付处理 → 成功";
 | 
			
		||||
 | 
			
		||||
                    // 电子回单关联标记
 | 
			
		||||
                    /*// 电子回单关联标记
 | 
			
		||||
                    String receiptno = dynamic.getString("receiptno");
 | 
			
		||||
                    DynamicObject[] loaded = BusinessDataServiceHelper.load("bei_elecreceipt",
 | 
			
		||||
                            "id,billno,shkd_pushstatus,fileserverurl,bizdate,oppbankname,description,company," +
 | 
			
		||||
| 
						 | 
				
			
			@ -320,7 +321,7 @@ public class ApiService {
 | 
			
		|||
                        result = "(推送 → 银行收付处理 → 成功\n推送 → 电子回单 → 成功\n推送 → 电子回单附件 → 成功)";
 | 
			
		||||
                    } else {
 | 
			
		||||
                        result = "(推送 → 银行收付处理 → 成功\n推送 → 电子回单 → 失败\n推送 → 电子回单附件 → 失败)";
 | 
			
		||||
                    }
 | 
			
		||||
                    }*/
 | 
			
		||||
 | 
			
		||||
                } else {
 | 
			
		||||
                    logger.info("银行收付处理 → BIP推送接口 → 失败\n失败单据编号:{}\n失败请求体:{}\n推送失败接口返回数据:{}", dynamic.getString("billno"), saveRequestBody, saveResponseBody);
 | 
			
		||||
| 
						 | 
				
			
			@ -361,6 +362,10 @@ public class ApiService {
 | 
			
		|||
                jsonObject = JSON.parseObject(saveResponseBody);
 | 
			
		||||
                code = jsonObject.getString("code");
 | 
			
		||||
                if ("200".equals(code)) {
 | 
			
		||||
                    dynamic.set("shkd_pushstatus", "已推送");
 | 
			
		||||
                    dynamic.set("shkd_businessname", "共享系统");
 | 
			
		||||
                    dynamicObjects.add(dynamic);
 | 
			
		||||
 | 
			
		||||
                    logger.info("电子回单查询 → BIP推送接口 → 成功\n成功单据编号:{}\n成功请求体:{}\n推送成功接口返回数据:{}",
 | 
			
		||||
                            dynamic.getString("billno"), saveRequestBody, saveResponseBody);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -384,11 +389,11 @@ public class ApiService {
 | 
			
		|||
                    String attachmentRequestBody = getAttachmentRequestBody(hashMap);
 | 
			
		||||
                    String pushResult = pushBill(token, "https://biptestctny.invest.com.cn:8002/iuap-api-auth//yonbip/ctm/bank/tran/update", attachmentRequestBody);
 | 
			
		||||
                    logger.info("电子回单查询 → BIP推送附件接口 → 请求返回结果:\n{}", pushResult);
 | 
			
		||||
                    result = "推送 → 电子回单查询 → 成功";
 | 
			
		||||
                    result = "推送 → 电子回单和附件 → 成功";
 | 
			
		||||
                } else {
 | 
			
		||||
                    logger.info("电子回单查询 → BIP推送接口 → 失败\n失败单据编号:{}\n失败请求体:{}\n推送失败接口返回数据:{}",
 | 
			
		||||
                            dynamic.getString("billno"), saveRequestBody, saveResponseBody);
 | 
			
		||||
                    result = "推送 → 电子回单查询 → 失败";
 | 
			
		||||
                    result = "推送 → 电子回单和附件 → 失败";
 | 
			
		||||
                }
 | 
			
		||||
                break;
 | 
			
		||||
            default:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -15,6 +15,7 @@ import kd.bos.servicehelper.user.UserServiceHelper;
 | 
			
		|||
import okhttp3.*;
 | 
			
		||||
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
import java.util.Arrays;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
| 
						 | 
				
			
			@ -40,39 +41,50 @@ public class InfoSecService extends AbstractCAService {
 | 
			
		|||
        VerifySignResult result = new VerifySignResult();
 | 
			
		||||
 | 
			
		||||
        long userId = UserServiceHelper.getCurrentUserId();//获取当前登录对象的Id
 | 
			
		||||
        DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(userId, "bos_user");
 | 
			
		||||
        DynamicObject[] objects = BusinessDataServiceHelper.load("bd_usercredentials", "id,number,publickey,uname", new QFilter("uname", QCP.equals, dynamicObject.getString("name")).toArray());
 | 
			
		||||
        if (objects.length == 0) {
 | 
			
		||||
            result.setSuccess(false);
 | 
			
		||||
            result.setMessage("验签失败。");
 | 
			
		||||
            return result;
 | 
			
		||||
        } else {
 | 
			
		||||
            String puKey = objects[0].getString("publickey");
 | 
			
		||||
            if (publicKey.equals(puKey)) {
 | 
			
		||||
                try {
 | 
			
		||||
                    String response = verifyPkcs7(cleartext, signData, "" + System.currentTimeMillis());
 | 
			
		||||
                    JSONObject jsonObject = JSON.parseObject(response);
 | 
			
		||||
                    String code = jsonObject.getString("code");
 | 
			
		||||
                    if ("200".equals(code)) {
 | 
			
		||||
                        result.setSuccess(true);
 | 
			
		||||
                        result.setMessage("验签通过。");
 | 
			
		||||
                    } else {
 | 
			
		||||
                        result.setSuccess(false);
 | 
			
		||||
                        result.setMessage("验签失败。");
 | 
			
		||||
                    }
 | 
			
		||||
                    log.info("验签响应: " + response);
 | 
			
		||||
        DynamicObject[] certificateUserRelationships = BusinessDataServiceHelper.load("bd_userandcertrelation", "userid,certid,id", new QFilter("userid", QCP.equals, userId).toArray());
 | 
			
		||||
 | 
			
		||||
                } catch (Exception e) {
 | 
			
		||||
                    log.error(e);
 | 
			
		||||
                    result.setSuccess(false);
 | 
			
		||||
                    result.setMessage("验签失败:" + e.getMessage());
 | 
			
		||||
                }
 | 
			
		||||
        if (certificateUserRelationships.length == 0) {
 | 
			
		||||
            result.setSuccess(false);
 | 
			
		||||
            result.setMessage("验签失败,当前用户未绑定证书!");
 | 
			
		||||
            log.info("验签失败,当前用户未绑定证书!");
 | 
			
		||||
            return result;
 | 
			
		||||
        }else {
 | 
			
		||||
            String certid = certificateUserRelationships[0].getString("certid");
 | 
			
		||||
            DynamicObject certificateManagement = BusinessDataServiceHelper.loadSingle(certid, "bd_usercredentials");
 | 
			
		||||
            if (certificateManagement == null) {
 | 
			
		||||
                result.setSuccess(false);
 | 
			
		||||
                result.setMessage("验签失败。");
 | 
			
		||||
                log.info("验签失败,未找到当前用户绑定证书");
 | 
			
		||||
                return result;
 | 
			
		||||
            } else {
 | 
			
		||||
                result.setSuccess(false);
 | 
			
		||||
                result.setMessage("验签失败,签名人员和验签人员不同");
 | 
			
		||||
                log.info("验签失败,签名人员和验签人员不同");
 | 
			
		||||
                return result;
 | 
			
		||||
                String puKey = certificateManagement.getString("publickey");
 | 
			
		||||
                log.info("证书验签publicKey:{}\n当前登录人绑定证书的publicKey:{}", publicKey, puKey);
 | 
			
		||||
                if (publicKey.equals(puKey)) {
 | 
			
		||||
                    try {
 | 
			
		||||
                        String response = verifyPkcs7(cleartext, signData, "" + System.currentTimeMillis());
 | 
			
		||||
                        JSONObject jsonObject = JSON.parseObject(response);
 | 
			
		||||
                        String code = jsonObject.getString("code");
 | 
			
		||||
                        if ("200".equals(code)) {
 | 
			
		||||
                            result.setSuccess(true);
 | 
			
		||||
                            result.setMessage("验签通过。");
 | 
			
		||||
                        } else {
 | 
			
		||||
                            result.setSuccess(false);
 | 
			
		||||
                            result.setMessage("验签失败。");
 | 
			
		||||
                        }
 | 
			
		||||
                        log.info("验签响应: " + response);
 | 
			
		||||
 | 
			
		||||
                    } catch (Exception e) {
 | 
			
		||||
                        log.error(e);
 | 
			
		||||
                        result.setSuccess(false);
 | 
			
		||||
                        result.setMessage("验签失败:" + e.getMessage());
 | 
			
		||||
                    }
 | 
			
		||||
                    return result;
 | 
			
		||||
                } else {
 | 
			
		||||
                    result.setSuccess(false);
 | 
			
		||||
                    result.setMessage("验签失败,签名人员和验签人员不同");
 | 
			
		||||
                    log.info("验签失败,签名人员和验签人员不同");
 | 
			
		||||
                    return result;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -53,6 +53,16 @@ public class PayBillApiSavePlugin implements ApiSavePlugin {
 | 
			
		|||
            Object payeetype = map.get("payeetype");//如果是收款人类型 则为付款处理保存接口
 | 
			
		||||
            Object payertype = map.get("payertype");//如果是付款人类型 则为收款处理保存接口
 | 
			
		||||
            if (payeetype != null) {
 | 
			
		||||
 | 
			
		||||
                String billstatus = map.get("billstatus").toString();
 | 
			
		||||
                if ("B".equals(billstatus)) {
 | 
			
		||||
                    map.put("shkd_pushstatus", "未结算");
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                if ("D".equals(billstatus)) {
 | 
			
		||||
                    map.put("shkd_pushstatus", "已结算");
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                if ("BD_Supplier".equals(payeetype)) {
 | 
			
		||||
                    payeetype = "bd_supplier";
 | 
			
		||||
                    map.put("payeetype", "bd_supplier");
 | 
			
		||||
| 
						 | 
				
			
			@ -201,15 +211,6 @@ public class PayBillApiSavePlugin implements ApiSavePlugin {
 | 
			
		|||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            String billstatus = map.get("billstatus").toString();
 | 
			
		||||
            if ("C".equals(billstatus)) {
 | 
			
		||||
                map.put("shkd_pushstatus", "未结算");
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if ("D".equals(billstatus)) {
 | 
			
		||||
                map.put("shkd_pushstatus", "已结算");
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            logger.info("最终处理 → 调用接口参数:{}", reqData);
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,6 +3,7 @@ package shkd.sys.sys.plugin.task;
 | 
			
		|||
import com.kingdee.bos.qing.util.DateUtils;
 | 
			
		||||
import kd.bos.context.RequestContext;
 | 
			
		||||
import kd.bos.dataentity.entity.DynamicObject;
 | 
			
		||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
 | 
			
		||||
import kd.bos.exception.KDException;
 | 
			
		||||
import kd.bos.logging.Log;
 | 
			
		||||
import kd.bos.logging.LogFactory;
 | 
			
		||||
| 
						 | 
				
			
			@ -28,11 +29,149 @@ public class PushTaskPlugin extends AbstractTask implements Plugin {
 | 
			
		|||
    @Override
 | 
			
		||||
    public void execute(RequestContext requestContext, Map<String, Object> map) throws KDException {
 | 
			
		||||
        Object billMark = map.get("billMark");
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        List<DynamicObject> dynamicObjects;
 | 
			
		||||
        List<DynamicObject> dynamicObjectList = new ArrayList<>();
 | 
			
		||||
        if (billMark != null) {
 | 
			
		||||
            switch (billMark.toString()) {
 | 
			
		||||
                // 已结算、未结算、结算失败、未推送
 | 
			
		||||
                // 付款处理
 | 
			
		||||
                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,bizdate,description," +
 | 
			
		||||
                                    "shkd_pushstatus,shkd_businessnumber,shkd_businessid,shkd_businessname,billstatus,bankpaystatus"
 | 
			
		||||
                            , new QFilter("bizdate", QCP.large_equals, calculateTheDate(2))
 | 
			
		||||
                                    .and("org.number", QCP.in, new String[]{"SIG1040100", "SIG000101135", "SIG1041000", "SIG1040400"})//目前四家公司
 | 
			
		||||
                                    .and("shkd_pushstatus", QCP.not_equals, "已结算")
 | 
			
		||||
                                    .and("shkd_pushstatus", QCP.not_equals, "结算失败")
 | 
			
		||||
                                    .and("billstatus", QCP.equals, "D").toArray());
 | 
			
		||||
                    dynamicObjects = Arrays.asList(objects1);
 | 
			
		||||
                    dynamicObjects.forEach(dynamicObject -> ApiService.paymentSlipsJson(dynamicObject, "BIP", dynamicObjectList, null));
 | 
			
		||||
                    SaveServiceHelper.save(dynamicObjectList.toArray(new DynamicObject[0]));
 | 
			
		||||
                    break;
 | 
			
		||||
                /**
 | 
			
		||||
                 * 支付结果推送(付款处理支付结果定时推送)
 | 
			
		||||
                 * 我们的付款处理推送,推送结算结果直接默认为7
 | 
			
		||||
                 * BIP推送至星瀚单据只有需审核的数据才需推送结果至BIP,成功则推送成功,失败则推送失败
 | 
			
		||||
                 */
 | 
			
		||||
                case "cas_paybill_result":
 | 
			
		||||
                    //TS	交易成功
 | 
			
		||||
                    //TF	交易失败
 | 
			
		||||
                    //NC	交易未确认
 | 
			
		||||
                    //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(2))
 | 
			
		||||
                                    .and("bankpaystatus", QCP.in, new String[]{"TS", "TF", "NC", "OF"})
 | 
			
		||||
                                    .and("shkd_pushstatus", 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, "结算失败").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;
 | 
			
		||||
                // 收款处理
 | 
			
		||||
                case "cas_recbill":
 | 
			
		||||
                    DynamicObject[] objects2 = BusinessDataServiceHelper.load("cas_recbill",
 | 
			
		||||
                            "id,billno,entry,entry.e_expenseitem,settletype,entry.e_remark,receivingtype," +
 | 
			
		||||
                                    "payertype,org,bizdate,accountbank,payernumber,actrecamt,txt_description,shkd_pushstatus," +
 | 
			
		||||
                                    "shkd_businessnumber,shkd_businessid,shkd_businessname,billstatus"
 | 
			
		||||
                            , new QFilter("bizdate", QCP.large_equals, calculateTheDate(2))
 | 
			
		||||
                                    .and("shkd_pushstatus", QCP.not_equals, "已结算")
 | 
			
		||||
                                    .and("billstatus", QCP.equals, "D").toArray());
 | 
			
		||||
                    dynamicObjects = Arrays.asList(objects2);
 | 
			
		||||
                    dynamicObjects.forEach(dynamicObject -> ApiService.paymentSlipsJson(dynamicObject, "BIP", dynamicObjectList, null));
 | 
			
		||||
                    SaveServiceHelper.save(dynamicObjectList.toArray(new DynamicObject[0]));
 | 
			
		||||
                    break;
 | 
			
		||||
                /**
 | 
			
		||||
                 * 银行收付处理
 | 
			
		||||
                 * 通过固定几家公司的银行账号,通过银行账号查询出对应的银行流水在查对应的回单以及回单附件,一起推送到BIP
 | 
			
		||||
                 * 当前发现入账状态为“已入账”银行流水,会有
 | 
			
		||||
                 *
 | 
			
		||||
                 * 1、筛选出需要推送至BIP的流水
 | 
			
		||||
                 * 2、通过上游单据推送吗?
 | 
			
		||||
                 *
 | 
			
		||||
                 * 付款 → 先有单据 后有流水
 | 
			
		||||
                 * 收款 → 先有流水 后有单据
 | 
			
		||||
                 */
 | 
			
		||||
                case "bei_transdetail_cas":
 | 
			
		||||
                    DynamicObject[] objects3 = BusinessDataServiceHelper.load("bei_transdetail_cas",
 | 
			
		||||
                            "id,bizdate,oppbank,oppunit,accountbank,description,company,oppbanknumber," +
 | 
			
		||||
                                    "bankdetailno,transbalance,description,debitamount,creditamount,shkd_pushstatus," +
 | 
			
		||||
                                    "shkd_businessnumber,shkd_businessid,shkd_businessname,recedbillentry,receiptno," +
 | 
			
		||||
                                    "recedbillentry.e_recedbilltype,recedbillentry.e_recedbillnumber,recedbillentry.e_recedbillid"
 | 
			
		||||
                            , new QFilter("bizdate", QCP.large_equals, calculateTheDate(7))
 | 
			
		||||
                                    .and("shkd_pushstatus", QCP.not_equals, "已推送").toArray());
 | 
			
		||||
                    ArrayList<DynamicObject> transdetailCollection = new ArrayList<>();
 | 
			
		||||
                    Arrays.stream(objects3).forEach(dynamicObject -> {
 | 
			
		||||
                        DynamicObjectCollection dynamicObjectCollection = dynamicObject.getDynamicObjectCollection("recedbillentry");
 | 
			
		||||
                        if (!dynamicObjectCollection.isEmpty()) {
 | 
			
		||||
                            DynamicObject object = dynamicObjectCollection.get(0);
 | 
			
		||||
                            String billType = object.getString("e_recedbilltype");// 接收单据类型
 | 
			
		||||
                            String billNumber = object.getString("e_recedbillnumber");// 接受单据编号
 | 
			
		||||
                            String billId = object.getString("e_recedbillid");// 接受单据ID
 | 
			
		||||
                            if (billType.equals("cas_paybill")) {
 | 
			
		||||
                                DynamicObject dynamicObject1 = BusinessDataServiceHelper.loadSingle(billId, billType);
 | 
			
		||||
                                String businessName = dynamicObject1.getString("shkd_businessname");// 推送系统
 | 
			
		||||
                                String pushStatus = dynamicObject1.getString("shkd_pushstatus");// 推送状态
 | 
			
		||||
                                if ("共享系统".equals(businessName) && "已结算".equals(pushStatus)) {
 | 
			
		||||
                                    transdetailCollection.add(dynamicObject);
 | 
			
		||||
                                }
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                    });
 | 
			
		||||
                    transdetailCollection.forEach(dynamicObject -> ApiService.paymentSlipsJson(dynamicObject, "BIP", dynamicObjectList, null));
 | 
			
		||||
                    SaveServiceHelper.save(dynamicObjectList.toArray(new DynamicObject[0]));
 | 
			
		||||
                    break;
 | 
			
		||||
                /**
 | 
			
		||||
                 * 电子回单查询
 | 
			
		||||
                 * 星空推送不会有影响吧?
 | 
			
		||||
                 */
 | 
			
		||||
                case "bei_elecreceipt":
 | 
			
		||||
                    DynamicObject[] elecreceiptArays = BusinessDataServiceHelper.load("bei_elecreceipt",
 | 
			
		||||
                            "id,billno,shkd_pushstatus,fileserverurl,bizdate,oppbankname,description,company," +
 | 
			
		||||
                                    "oppbanknumber,detaildatetime,accountbank,amount,use,debitamount,creditamount,detailid," +
 | 
			
		||||
                                    "uploadfilename,shkd_businessnumber,shkd_businessid,shkd_businessname,filepath,receiptno"
 | 
			
		||||
                            , new QFilter("bizdate", QCP.large_equals, calculateTheDate(7))
 | 
			
		||||
                                    .and("shkd_pushstatus", QCP.not_equals, "已推送").toArray());
 | 
			
		||||
                    ArrayList<DynamicObject> elecreceiptCollection = new ArrayList<>();
 | 
			
		||||
                    Arrays.stream(elecreceiptArays).forEach(dynamicObject -> {
 | 
			
		||||
                        DynamicObject[] objects = BusinessDataServiceHelper.load("bei_transdetail_cas",
 | 
			
		||||
                                "id,billno,shkd_pushstatus,fileserverurl,bizdate,oppbankname,description,company," +
 | 
			
		||||
                                        "oppbanknumber,detaildatetime,accountbank,amount,use,debitamount,creditamount,detailid," +
 | 
			
		||||
                                        "uploadfilename,shkd_businessnumber,shkd_businessid,shkd_businessname,filepath,receiptno",
 | 
			
		||||
                                new QFilter("receiptno", QCP.equals, dynamicObject.getString("receiptno")).
 | 
			
		||||
                                        and(new QFilter("shkd_pushstatus", QCP.equals, "已推送")).
 | 
			
		||||
                                        and(new QFilter("shkd_businessname", QCP.equals, "共享系统")).toArray());
 | 
			
		||||
                        if (objects.length > 0) {
 | 
			
		||||
                            elecreceiptCollection.add(dynamicObject);
 | 
			
		||||
                        }
 | 
			
		||||
                    });
 | 
			
		||||
                    elecreceiptCollection.forEach(dynamicObject -> ApiService.paymentSlipsJson(dynamicObject, "BIP", dynamicObjectList, null));
 | 
			
		||||
                    SaveServiceHelper.save(dynamicObjectList.toArray(new DynamicObject[0]));
 | 
			
		||||
                    break;
 | 
			
		||||
                default:
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    private static Date calculateTheDate(int days) {
 | 
			
		||||
        // 获取当前日期
 | 
			
		||||
        LocalDate currentDate = LocalDate.now();
 | 
			
		||||
 | 
			
		||||
        // 获取当前日期的前两天
 | 
			
		||||
        LocalDate twoDaysAgo = currentDate.minusDays(2);
 | 
			
		||||
        LocalDate twoDaysAgo = currentDate.minusDays(days);
 | 
			
		||||
 | 
			
		||||
        // 格式化日期为 "yyyy-MM-dd"
 | 
			
		||||
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
 | 
			
		||||
| 
						 | 
				
			
			@ -44,71 +183,6 @@ public class PushTaskPlugin extends AbstractTask implements Plugin {
 | 
			
		|||
        } catch (ParseException e) {
 | 
			
		||||
            throw new RuntimeException(e);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        List<DynamicObject> dynamicObjects;
 | 
			
		||||
        List<DynamicObject> dynamicObjectList = new ArrayList<>();
 | 
			
		||||
        if (billMark != null) {
 | 
			
		||||
            switch (billMark.toString()) {
 | 
			
		||||
                //已结算、未结算、结算失败、未推送
 | 
			
		||||
 | 
			
		||||
                // 付款处理
 | 
			
		||||
                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, date)
 | 
			
		||||
                                    .and("shkd_pushstatus", QCP.not_equals, "已结算")
 | 
			
		||||
                                    .and("shkd_pushstatus", QCP.not_equals, "结算失败")
 | 
			
		||||
                                    .and("billstatus", QCP.equals, "D").toArray());
 | 
			
		||||
                    dynamicObjects = Arrays.asList(objects1);
 | 
			
		||||
                    dynamicObjects.forEach(dynamicObject -> ApiService.paymentSlipsJson(dynamicObject, "BIP", dynamicObjectList, null));
 | 
			
		||||
                    SaveServiceHelper.save(dynamicObjectList.toArray(new DynamicObject[0]));
 | 
			
		||||
                    break;
 | 
			
		||||
                // 收款处理
 | 
			
		||||
                case "cas_recbill":
 | 
			
		||||
                    DynamicObject[] objects2 = BusinessDataServiceHelper.load("cas_recbill",
 | 
			
		||||
                            "id,billno,entry,entry.e_expenseitem,settletype,entry.e_remark,receivingtype," +
 | 
			
		||||
                                    "payertype,org,bizdate,accountbank,payernumber,actrecamt,txt_description,shkd_pushstatus," +
 | 
			
		||||
                                    "shkd_businessnumber,shkd_businessid,shkd_businessname,billstatus"
 | 
			
		||||
                            , new QFilter("bizdate", QCP.large_equals, date)
 | 
			
		||||
                                    .and("shkd_pushstatus", QCP.not_equals, "已结算")
 | 
			
		||||
                                    .and("billstatus", QCP.equals, "D").toArray());
 | 
			
		||||
                    dynamicObjects = Arrays.asList(objects2);
 | 
			
		||||
                    dynamicObjects.forEach(dynamicObject -> ApiService.paymentSlipsJson(dynamicObject, "BIP", dynamicObjectList, null));
 | 
			
		||||
                    SaveServiceHelper.save(dynamicObjectList.toArray(new DynamicObject[0]));
 | 
			
		||||
                    break;
 | 
			
		||||
                // 银行收付处理
 | 
			
		||||
                case "bei_transdetail_cas":
 | 
			
		||||
                    DynamicObject[] objects3 = BusinessDataServiceHelper.load("bei_transdetail_cas",
 | 
			
		||||
                            "id,bizdate,oppbank,oppunit,accountbank,description,company,oppbanknumber," +
 | 
			
		||||
                                    "bankdetailno,transbalance,description,debitamount,creditamount,shkd_pushstatus," +
 | 
			
		||||
                                    "shkd_businessnumber,shkd_businessid,shkd_businessname"
 | 
			
		||||
                            , new QFilter("bizdate", QCP.large_equals, date).and("shkd_pushstatus", QCP.not_equals, "已推送").toArray());
 | 
			
		||||
                    dynamicObjects = Arrays.asList(objects3);
 | 
			
		||||
                    break;
 | 
			
		||||
                // 支付结果推送(付款处理支付结果定时推送)
 | 
			
		||||
                case "cas_paybill_result":
 | 
			
		||||
                    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, date)
 | 
			
		||||
                                    .and("bankpaystatus", QCP.in, new String[]{"TS", "TF", "NC", "OF"})
 | 
			
		||||
                                    .and("shkd_pushstatus", 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, "结算失败").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]));
 | 
			
		||||
                default:
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        return date;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in New Issue