package fi.cas.task; import com.alibaba.druid.support.logging.Log; import com.alibaba.druid.support.logging.LogFactory; import fi.cas.opplugin.PayBillToolUtil; import kd.bos.context.RequestContext; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.exception.KDException; import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; import kd.bos.schedule.executor.AbstractTask; import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.bos.servicehelper.operation.SaveServiceHelper; import org.json.JSONObject; import java.util.Map; /** * 定时任务关闭付款单据。如果有核心状态为支付处理全部成功,未关闭的数据。调用关闭接口。 */ public class AgentPayCloseTast extends AbstractTask { private static final Log log = LogFactory.getLog(AgentPayCloseTast.class); @Override public void execute(RequestContext requestContext, Map map) throws KDException { //获取要查询的数据。状态为已审批,支付状态为支付中。核心状态为支付处理全部成功 QFilter filter = new QFilter("billstatus", QCP.equals, "C"); filter.and("nckd_paystatus", QCP.equals, "B"); filter.and("nckd_hxzt", QCP.equals, "Q"); Map payinfos = BusinessDataServiceHelper.loadFromCache("cas_agentpaybill", new QFilter[] {filter}); DynamicObject jkpzxx = BusinessDataServiceHelper.loadSingle("nckd_jkpzxx",new QFilter[]{new QFilter("number","=","paytozfqz")}); String servername = jkpzxx.getString("nckd_servername"); String port = jkpzxx.getString("nckd_port"); for (DynamicObject dataEntity : payinfos.values()) { //调用接口查询付款状态 String bodyxml = PayBillToolUtil.createSingleAgentPaymentRequest_3(dataEntity); String billNum = dataEntity.getString("billno"); log.info("单据号:"+billNum+"传入参数"+bodyxml); JSONObject cbsReturnJson =PayBillToolUtil.socketServiceAgent(servername,port,bodyxml,"ACHRDATE"); log.info("单据号:"+billNum+"返回参数"+cbsReturnJson.toString()); //存入日志表 PayBillToolUtil.saveAgentlog(dataEntity,bodyxml,cbsReturnJson.toString(),"4"); if(cbsReturnJson==null||cbsReturnJson.get("Message")==null){ }else{ JSONObject headinfo = cbsReturnJson.getJSONObject("Message").getJSONObject("HeadInfo"); if(headinfo!=null){ String errcode =headinfo.getString("errorcode"); if ("000000".equals(errcode)) { //已关闭,修改单据支付状态为已关闭,核心状态为结束 dataEntity.set("nckd_paystatus","C"); dataEntity.set("nckd_hxzt","W"); SaveServiceHelper.update(new DynamicObject[]{dataEntity}); } } } } } }