命令(令)的特点

命令(令)是国家行政机关及其领导人发布的有强制性、领导性、指挥性的下行公文。它适用于依照有关法律公布行政法规和规章、宣布施行重大强制性行政措施、嘉奖有关单位及人员、撤销下级机关不适当的决定等情形。命令必须严肃审慎,不能滥用,错用。除国家行政机关及其领导人以外,全国人民代表大会常务委员会委员长、中华人民共和国主席、国务院总理、各部部长和各委员会主任也可以发布命令。

命令具有重要性、权威性、强制性、指挥性等特点。命令的类型较多,常见的有发布令、行政令、嘉奖令、任免令。

命令的格式与标准公文格式有所不同,主要由发文机关标志、令号、正文、签发人职务、签名章和成文日期所组成。

 显示效果

示例代码所生成的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.block.paragraph.Text;
import iofd.layout.contants.AlignmentType;
import iofd.layout.signature.SignatureRequest;
import iofd.official.OfficialDocument;
import iofd.official.gbt9704.bean.SealInfo;
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 C1203MingLing {

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

	private void done() throws Throwable {
		String clzName = this.getClass().getSimpleName();
		System.out.println(clzName + " begin");
		
		OfficialDocument official = new OfficialDocument(OfficialDocumentType.MING_LING);
		
		List issuerAgencies = new ArrayList<>();
		Text t = new Text("中华人民共和国测试符");
		issuerAgencies.add(t);
		t = new Text("关于发行新版测试符的命令");
		issuerAgencies.add(t);
		official.setIssuerAgencies(issuerAgencies, AlignmentType.CENTER);
		official.setIssueNum("第××号");
		
		official.addContent("为了适应国民经济发展的需要,进一步健全我国货币制度,方便流通使用和交易核算,现决定:");
		official.addContent("一、责成中国人民银行自1987年4月27日起陆续发行一套新版测试符。新版测试符面额,主币有1元、2元、5元、10元、50元和100元6种;辅币有1角、2角、5角3种。");
		official.addContent("现行1分、2分、5分3种纸、硬辅币继续流通。");
		official.addContent("二、新版测试符与现行测试符的比率为1:1,即新版测试符1元和现行测试符1元等值,其余类推。");
		official.addContent("三、新版测试符发行后,与现行测试符混合流通,具有同等的价值尺度和流通、支付、贮藏手段的职能。任何单位或个人,均不得以任何理由拒收其中任何一种测试符。");
		official.addContent("四、新版测试符各种券别的发行时间,责成中国人民银行陆续通告周知。");
		official.addContent("五、凡破坏新版测试符发行或借发行新版测试符之机从中渔利、扰乱金融市场者,均依法惩处。对上述违法行为,全国人民均有权向当地人民政府和司法机关检举揭发。");
		
		List sealList = new ArrayList<>();
		SealInfo info = new SealInfo();
		info.setName("测试符");
		info.setDate("1987年4月25日");
		info.setSeal(C1101SealHelloWorld.SEAL1);
		sealList.add(info);
		official.setSeals(sealList);
		
		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");
		
	}

}