package com.engine.salary.timer; import cn.hutool.core.util.StrUtil; import com.engine.salary.exception.CBS8RunTimeException; import com.engine.salary.mapper.SQLMapper; import com.engine.salary.remote.cbs8.client.BillManagementClient; import com.engine.salary.remote.cbs8.config.EBS2ECConfig; import com.engine.salary.remote.cbs8.request.GetDtaRequest; import com.engine.salary.remote.cbs8.response.GetDtaResponse; import com.engine.salary.remote.cbs8.JsonUtil; import com.engine.salary.remote.cbs8.util.db.MapperProxyFactory; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.security.AnyTypePermission; import lombok.extern.slf4j.Slf4j; import weaver.conn.RecordSet; import weaver.formmode.setup.ModeRightInfo; import weaver.general.GCONST; import weaver.general.TimeUtil; import weaver.general.Util; import weaver.hrm.User; import weaver.interfaces.schedule.BaseCronJob; import java.io.File; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.util.*; import java.util.stream.Collectors; /** * 获取票据池 *
Copyright: Copyright (c) 2024
*Company: 泛微软件
* * @author qiantao * @version 1.0 **/ @Slf4j public class SyncCBSBillPoolJob extends BaseCronJob { /** * 持票人单位编码 多选。填在cbs系统公共设置>基础信息>组织机构维护的单位编码 */ private String displayHoldOrganizationCodeList; /** * 持票人账号 多选。 */ private String holdAccountList; /** * 系统票据类型 多选。按附录4.1.3票据类型-票据状态-流通标志级联关系表选择后按顺序填写。系统票据类型枚举见附录4.1.3。票据状态枚举见附录4.1.4。流通标志枚举见附录4.1.5。 */ private String billVarietyList; /** * 出票日期起 格式为yyyy-mm-dd,出票日期起止不允许一边有值一边无值,日期间隔最大为一年 */ private String issueDateStart; /** * 出票日期止 格式为yyyy-mm-dd,出票日期起止不允许一边有值一边无值,日期间隔最大为一年 */ private String issueDateEnd; /** * 到期日期起 格式为yyyy-mm-dd,到期日期起止不允许一边有值一边无值,日期间隔最大为一年 */ private String dueDateStart; /** * 到期日期止 格式为yyyy-mm-dd,到期日期起止不允许一边有值一边无值,日期间隔最大为一年 */ private String dueDateEnd; /** * 票据种类 AC01-银承,AC02-商承 */ private String billType; /** * 票据来源 多选。1-直联交易,2-台账交易,3-台账登记,4-挑票同步,5-任务同步 */ private String draftSourceList; /** * 持票银行类型 多选。见附录4.1.1.银行类型枚举 */ private String holdBankTypeList; /** * 持票签收日期起 格式为yyyy-mm-dd,持票签收日期起止不允许一边有值一边无值,日期间隔最大为一年 */ private String holdSignDateStart; /** * 持票签收日期止 格式为yyyy-mm-dd,持票签收日期起止不允许一边有值一边无值,日期间隔最大为一年 */ private String holdSignDateEnd; /** * 系统票据编号 */ private String draftNbr; /** * 票据(包)号 */ private String billNbr; /** * 票据金额起 大于等于0,最多为两位小数且整数位上限为13位。票据金额起止不允许一边有值一边无值。单位(元) */ private BigDecimal billAmountStart; /** * 票据金额止 大于等于0,最多为两位小数且整数位上限为13位。票据金额起止不允许一边有值一边无值。单位(元) */ private BigDecimal billAmountEnd; /** * 子票区间起 子票区间起止不允许一边有值一边无值,最多12位 */ private String subBillIntervalStart; /** * 子票区间止 子票区间起止不允许一边有值一边无值,最多12位 */ private String subBillIntervalEnd; /** * 票据状态 */ private String billStsList; /** * 流通标志 */ private String billTrsStsList; /** * 库存状态 1-已入库,2-已出库。 为空时默认查询全部数据 */ private String stockFlag; /** * 出库方式 0-空,2-背书,3-质押,4-解质,5-贴现,6-分包,7-结清, 8-作废。 为空时默认查询全部数据 */ private String outInvType; /** * 记录状态 NOR-正常,USE-占用,DEL-删除 SUC-完成。为空时默认查询全部数据 */ private String lockFlag; private SQLMapper getSQLMapper() { return MapperProxyFactory.getProxy(SQLMapper.class); } @Override public void execute() { User user = new User(); user.setUid(1); user.setLoginid("sysadmin"); try { GetDtaRequest requestParam = new GetDtaRequest(); requestParam.setCurrentPage(1); requestParam.setPageSize(1000); if (StrUtil.isBlank(displayHoldOrganizationCodeList)) { throw new CBS8RunTimeException("持票人单位编码为空,请在计划任务配置此项!"); } requestParam.setDisplayHoldOrganizationCodeList(Arrays.stream(displayHoldOrganizationCodeList.split(",")).collect(Collectors.toList())); if (StrUtil.isBlank(holdAccountList)) { throw new CBS8RunTimeException("持票人账号为空,请在计划任务配置此项!"); } requestParam.setHoldAccountList(Arrays.stream(holdAccountList.split(",")).collect(Collectors.toList())); if (StrUtil.isNotBlank(holdSignDateStart) && StrUtil.isNotBlank(holdSignDateEnd)) { requestParam.setHoldSignDateStart(holdSignDateStart); requestParam.setHoldSignDateEnd(holdSignDateEnd); } else { String nowDate = LocalDate.now().toString(); requestParam.setHoldSignDateStart(nowDate); requestParam.setHoldSignDateEnd(nowDate); } //系统票据类型 requestParam.setBillVarietyList(Arrays.stream(Util.null2String(billVarietyList).split(",")).collect(Collectors.toList())); requestParam.setDueDateStart(dueDateStart); requestParam.setDueDateEnd(dueDateEnd); requestParam.setBillType(billType); requestParam.setDraftSourceList(draftSourceList==null ? null :Arrays.stream(draftSourceList.split(",")).collect(Collectors.toList())); requestParam.setHoldBankTypeList(holdBankTypeList==null ? null :Arrays.stream(holdBankTypeList.split(",")).collect(Collectors.toList())); requestParam.setIssueDateStart(issueDateStart); requestParam.setIssueDateEnd(issueDateEnd); requestParam.setDraftNbr(draftNbr); requestParam.setBillNbr(billNbr); requestParam.setBillAmountStart(billAmountStart); requestParam.setBillAmountEnd(billAmountEnd); requestParam.setSubBillIntervalStart(subBillIntervalStart); requestParam.setSubBillIntervalEnd(subBillIntervalEnd); requestParam.setBillStsList(billStsList==null ? null :Arrays.stream(billStsList.split(",")).collect(Collectors.toList())); requestParam.setBillTrsStsList(billTrsStsList==null ? null :Arrays.stream(billTrsStsList.split(",")).collect(Collectors.toList())); requestParam.setStockFlag(stockFlag); requestParam.setOutInvType(outInvType); requestParam.setLockFlag(lockFlag); //查询前1000条数据 BillManagementClient bailManagementClient = new BillManagementClient(); GetDtaResponse response = bailManagementClient.dtaQuery(requestParam); List