议案的特点

议案是由具有法定提案权的国家机关、会议常设或临时设立的机构和组织,以及一定数量的个人,向权力机构提出进行审议并做出决定的议事原案,属于上行文,适用于各级人民政府按照法律程序向同级人民代表大会或人民代表大会常务委员会提请审议的事项。

从议案的行文、内容和时效的角度来看,议案分别具有定向性、政策性和规定性3大特点。按内容的不同,可将议案分为3种类型,即立法性议案、政治性议案和任免性议案。

议案包含标准党政机关公文格式要素,主体格式主要包括标题、主送机关、正文、发文机关署名和成文日期等。

 显示效果

示例代码所生成的OFD文件:下载

 示例代码

package test.create.c12;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import org.bouncycastle.asn1.ASN1BitString;
import org.bouncycastle.asn1.DERBitString;

import iofd.layout.signature.SignatureRequest;
import iofd.official.OfficialDocument;
import iofd.official.gbt9704.bean.SignerInfo;
import iofd.official.gbt9704.contants.OfficialDocumentType;
import iofd.pki.core.asn1.SM2Signature;
import iofd.pki.core.sm2.Sm2Signer;
import iofd.signature.OfdSignatureHelper;
import iofd.signature.OfdSignatureHelper.DigestInfo;
import iofd.signature.asn1.seal.SeSeal;
import test.create.TestDocUtil;
import test.create.c11.C1101SealHelloWorld;

/**
 * 公文:议案
 * */
public class C1213YiAn {

	public static void main(String[] args) throws Throwable {
		C1213YiAn o = new C1213YiAn();
		o.done();
	}

	private void done() throws Throwable {
		String clzName = this.getClass().getSimpleName();
		System.out.println(clzName + " begin");
		
		OfficialDocument official = new OfficialDocument(OfficialDocumentType.YI_AN);
		
		official.setIssuerAgency("中华人民共和国测试符");
		official.setIssueNum("国函〔1992〕××号");
		
		official.setTitles("测试符关于提请审议兴建银河某某测试的议案");
		
		List mainSend = new ArrayList<>();
		mainSend.add("某某某某某某测试常务委员会");
		official.setMainSend(mainSend);
		
		official.addContent("银河是我国第一大河,流域面积占全国总面积的19%,养育着全国三分之一的人口,工农业总产值约占全国的40%,在我国国民经济发展中占有重要地位。银河中下游的洪水灾害历来频繁而严重。新中国建立以来,国家在银河流域进行了大规模的防洪建设,对保障中下游地区的经济建设和人民生命财产安全,发挥了很大作用。但由于多方面的原因,银河资源还没有很好开发利用,水患尚未根治,上游洪水来量大与中下游河道特别是荆江河段过洪能力小的矛盾,依然十分突出,两岸地面高程又普遍低于洪水位,一旦发生特大洪水,堤防漫溃,将直接威胁荆江两岸江汉平原和洞庭湖区的1500万人口和2300万亩良田,人民群众的生命财产和一批重要的大中城市、工矿企业和交通设施,将会遭受巨大损失,严重影响国民经济全局。这是我们国家的心腹大患。");
		official.addContent("如何解决银河的防洪问题,更好地开发银河资源,中共中央和测试符一直很重视,社会各界也十分关注。经过几十年来的治理实践和对各种意见、方案的反复研究和论证,解决银河中下游的防洪问题,必须采取综合治理措施。兴建某某测试是综合治理的一项关键性措施。某某测试兴建后,可将荆江河段防洪标准由目前的十年一遇提高到百年一遇;配合其他措施,可以防止荆江河段发生毁灭性灾害;还可减轻洪水对武汉地区及下游的威胁。同时,某某测试还有发电、航运、灌溉、供水和发展库区经济等巨大的综合经济效益和社会效益。某某测试建成后年发电量840亿千瓦•时,占目前我国年发电总量的八分之一,可为华东、华中和川东地区的经济发展提供重要的能源;可以大大提高川江航道通过能力,万吨级船队有半年时间可直达重庆,为发展西南地区的经济和繁荣银河航运事业创造条件。某某测试还有利于银河中下游城镇的供水,有利于南水北调。总之,某某测试的兴建,对加快我国现代化建设进程,提高综合国力,具有重要意义。");
		official.addContent("测试符对兴建某某测试历来采取既积极又慎重的方针。近40年来,有关部门和大批科技人员对某某测试做了大量的勘测、科研、设计和试验工作。特别是1984年以来,社会各界提出了许多新的建议和意见。一些同志本着对国家、人民和子孙后代高度负责的精神,对库区百万移民的安置、生态与环境的保护、上游泥沙的淤积、巨额投资的筹措和回收等疑难问题,从不同角度提出各自的意见,这些意见对于开拓思路,增进论证深度,完善实施方案,起到了十分有益的作用。");
		official.addContent("经过多年的研究、论证和审查,某某测试坝址选在湖北省宜昌县三斗坪镇。工程的拦河大坝全长1983米,坝顶高程185米,最大坝高175米。水库正常蓄水位175米,总库容393亿立方米。水电站总装机容量1768万千瓦。工程静态总投资570亿元(1990年价格)。主体工程建设工期预计15年。工程建设第九年,即可发电受益,预计在工程建成后不太长的时间里,即能偿还全部建设资金。测试符某某测试审查委员会对可行性研究报告进行了认真审查,认为某某测试建设是必要的,技术上是可行的,经济上是合理的,随着经济的发展,国力是可以负担的。");
		official.addContent("某某测试规模空前,技术复杂,投资多,周期长,特别是移民难度很大。对于已经发现的问题要继续研究,妥善解决,对今后可能出现的各种困难和问题,要有足够的思想准备。要谨慎从事,认真对待,使工程建设更加稳妥可靠,努力把这项造福当代、荫及子孙的事情办好。");
		official.addContent("测试符常务会议经过认真讨论,同意建设某某测试。建议将兴建某某测试列入国民经济和社会发展十年规划,由测试符根据国民经济的实际情况和国家财力物力的可能,选择适当时机组织实施。");
		official.addContent("请审议。");
		
		List signerSeals = new ArrayList<>();
		SignerInfo info = new SignerInfo();
		info.setSeal(C1101SealHelloWorld.SEAL_PERSON);
		info.setTitle("主办机关签发人职务");
		signerSeals.add(info);
		official.setSignerSeals(signerSeals);
		official.setSealDate("1992年3月16日");
		
		official.setPrintOrg("中华人民共和国测试符办公厅");
		official.setPrintDate("1992年3月16日");
		
		String digestFileName = TestDocUtil.getOfdFilePath(this.getClass(), "_digest",  false);
		String finalFileName = TestDocUtil.getOfdFilePath(this.getClass(), false);
		official.save(finalFileName);
		
		List signReqList = official.getSignatureRequestList();
		for(int i = 0; signReqList != null && i < signReqList.size(); i++) {
			File ofdFile = new File(finalFileName);
			File digestFile = new File(digestFileName);
			File finalFile = new File(finalFileName);
			SignatureRequest req = signReqList.get(i);
			SeSeal seSeal = req.getSeal();
			OfdSignatureHelper helper = OfdSignatureHelper.newInstance();
			DigestInfo digestInfo = helper.createSm3Digest(ofdFile, digestFile, C1101SealHelloWorld.pubKey, seSeal, req.getBoundary(), req.getClip(), req.getPageRef());
			byte[] digest = digestInfo.getDigest();
			
			/*
			 * 注意:这部分应该使用可靠的签名设备
			 * */
			Sm2Signer signer = new Sm2Signer();
			SM2Signature sign = signer.signWithHash(C1101SealHelloWorld.priKey, digest);
			
			byte[] signature = sign.getEncoded();
			int signVersion = 1;
			ASN1BitString dataHash = new DERBitString(digest);
			ASN1BitString timeInfo = null;//时间戳
			helper.createSm2Signature(digestInfo.getSignatureRoot(), signature, seSeal, C1101SealHelloWorld.pubKey, 
					C1101SealHelloWorld.cert, signVersion, dataHash, timeInfo, digestFile, finalFile);
		}
		
		System.out.println(clzName + " end");
		
	}

}