SixTConfirmInfo.java 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375
  1. package com.kingdee.eas.custom.shuiyou.six.osf.vo;
  2. import com.kingdee.bos.BOSException;
  3. import com.kingdee.bos.metadata.entity.FilterInfo;
  4. import com.kingdee.bos.metadata.entity.FilterItemInfo;
  5. import com.kingdee.bos.metadata.query.util.CompareType;
  6. import com.kingdee.eas.custom.shuiyou.RequestStateEnum;
  7. import com.kingdee.eas.custom.shuiyou.task.TaskStateEnum;
  8. import org.apache.commons.lang.StringUtils;
  9. import java.util.List;
  10. /**
  11. * 4.2.5.2扣除名单确认Body
  12. * description: SixTConfirmInfo <br>
  13. * date: 2024/8/21 17:53 <br>
  14. * author: lhbj <br>
  15. * version: 1.0 <br>
  16. */
  17. public class SixTConfirmInfo {
  18. /**
  19. * 外部业务编号
  20. * 外部业务编号,唯一,幂等需要,最长 64 位, 建议使用 UUID
  21. */
  22. private String bizNo;
  23. /**
  24. * 企业名称
  25. */
  26. private String qymc;
  27. /**
  28. * 密码类型
  29. * 默认不传则设置为 0,
  30. * 0 表示申报密码;
  31. * 2 表示实名账号实名密码;
  32. */
  33. private String mmlx;
  34. /**
  35. * 实名账号
  36. * 当 mmlx=2 时,必填
  37. */
  38. private String smzh;
  39. /**
  40. * 实名密码
  41. * 当 mmlx=2 时,必填
  42. */
  43. private String smmm;
  44. /**
  45. * 加密实名密码
  46. * 默认不传则设置为 0,0 表示不加密;1 表示
  47. * 加密
  48. */
  49. private String jmsmmm;
  50. /**
  51. * 登记序号
  52. * 存在多个登记序号时,需要指定传入一个.例:
  53. * 10117440105249764755
  54. */
  55. private String djxhid;
  56. /**
  57. * 扣缴单位纳税人识别号
  58. */
  59. private String nsrsbh;
  60. /**
  61. * 地区编号
  62. * 6位行政区划代码,精确到市级,例如:440100, 参考省市区编码
  63. */
  64. private String areaid;
  65. /**
  66. * 部门编号
  67. * 分部门代报时必传
  68. */
  69. private String bmbh;
  70. /**
  71. * 部门名称
  72. */
  73. private String bmmc;
  74. /**
  75. * 申报密码
  76. * 当 mmlx=0 时,必填
  77. */
  78. private String sbmm;
  79. /**
  80. * jmsbmm
  81. * 加密申报密码
  82. * 默认不传则设置为 0,0 表示不加密;1 表示
  83. * 加密
  84. */
  85. private String jmsbmm;
  86. /**
  87. * skssnd
  88. * 税款所属年度 yyyy
  89. */
  90. private String skssnd;
  91. /**
  92. * 请求id
  93. */
  94. private String requestId;
  95. private String sdyf;
  96. /**
  97. *
  98. */
  99. private String TAXUNITID;
  100. /**
  101. *
  102. */
  103. private String acceptId;
  104. /**
  105. * 扣除资格列表
  106. */
  107. private List<SixTPersonInfo> kczglb;
  108. public String getBizNo() {
  109. return bizNo;
  110. }
  111. public void setBizNo(String bizNo) {
  112. this.bizNo = bizNo;
  113. }
  114. public String getQymc() {
  115. return qymc;
  116. }
  117. public void setQymc(String qymc) {
  118. this.qymc = qymc;
  119. }
  120. public String getMmlx() {
  121. return mmlx;
  122. }
  123. public void setMmlx(String mmlx) {
  124. this.mmlx = mmlx;
  125. }
  126. public String getSmzh() {
  127. return smzh;
  128. }
  129. public void setSmzh(String smzh) {
  130. this.smzh = smzh;
  131. }
  132. public String getSmmm() {
  133. return smmm;
  134. }
  135. public void setSmmm(String smmm) {
  136. this.smmm = smmm;
  137. }
  138. public String getJmsmmm() {
  139. return jmsmmm;
  140. }
  141. public void setJmsmmm(String jmsmmm) {
  142. this.jmsmmm = jmsmmm;
  143. }
  144. public String getDjxhid() {
  145. return djxhid;
  146. }
  147. public void setDjxhid(String djxhid) {
  148. this.djxhid = djxhid;
  149. }
  150. public String getNsrsbh() {
  151. return nsrsbh;
  152. }
  153. public void setNsrsbh(String nsrsbh) {
  154. this.nsrsbh = nsrsbh;
  155. }
  156. public String getAreaid() {
  157. return areaid;
  158. }
  159. public void setAreaid(String areaid) {
  160. this.areaid = areaid;
  161. }
  162. public String getBmbh() {
  163. return bmbh;
  164. }
  165. public void setBmbh(String bmbh) {
  166. this.bmbh = bmbh;
  167. }
  168. public String getBmmc() {
  169. return bmmc;
  170. }
  171. public void setBmmc(String bmmc) {
  172. this.bmmc = bmmc;
  173. }
  174. public String getSbmm() {
  175. return sbmm;
  176. }
  177. public void setSbmm(String sbmm) {
  178. this.sbmm = sbmm;
  179. }
  180. public String getJmsbmm() {
  181. return jmsbmm;
  182. }
  183. public void setJmsbmm(String jmsbmm) {
  184. this.jmsbmm = jmsbmm;
  185. }
  186. public String getSkssnd() {
  187. return skssnd;
  188. }
  189. public void setSkssnd(String skssnd) {
  190. this.skssnd = skssnd;
  191. }
  192. public List<SixTPersonInfo> getKczglb() {
  193. return kczglb;
  194. }
  195. public void setKczglb(List<SixTPersonInfo> kczglb) {
  196. this.kczglb = kczglb;
  197. }
  198. public String getRequestId() {
  199. return requestId;
  200. }
  201. public void setRequestId(String requestId) {
  202. this.requestId = requestId;
  203. }
  204. public String getTAXUNITID() {
  205. return TAXUNITID;
  206. }
  207. public void setTAXUNITID(String TAXUNITID) {
  208. this.TAXUNITID = TAXUNITID;
  209. }
  210. public String getAcceptId() {
  211. return acceptId;
  212. }
  213. public void setAcceptId(String acceptId) {
  214. this.acceptId = acceptId;
  215. }
  216. public String getSdyf() {
  217. return sdyf;
  218. }
  219. public void setSdyf(String sdyf) {
  220. this.sdyf = sdyf;
  221. }
  222. @Override
  223. public String toString() {
  224. return "SixTConfirmInfo{" +
  225. "bizNo='" + bizNo + '\'' +
  226. ", qymc='" + qymc + '\'' +
  227. ", mmlx='" + mmlx + '\'' +
  228. ", smzh='" + smzh + '\'' +
  229. ", smmm='" + smmm + '\'' +
  230. ", jmsmmm='" + jmsmmm + '\'' +
  231. ", djxhid='" + djxhid + '\'' +
  232. ", nsrsbh='" + nsrsbh + '\'' +
  233. ", areaid='" + areaid + '\'' +
  234. ", bmbh='" + bmbh + '\'' +
  235. ", bmmc='" + bmmc + '\'' +
  236. ", sbmm='" + sbmm + '\'' +
  237. ", jmsbmm='" + jmsbmm + '\'' +
  238. ", skssnd='" + skssnd + '\'' +
  239. ", requestId='" + requestId + '\'' +
  240. ", sdyf='" + sdyf + '\'' +
  241. ", TAXUNITID='" + TAXUNITID + '\'' +
  242. ", acceptId='" + acceptId + '\'' +
  243. ", kczglb=" + kczglb +
  244. '}';
  245. }
  246. public static void main(String[] args) throws BOSException {
  247. String IdCardNo="828888199002010055";
  248. for(int i=1;i<10;i++) {
  249. IdCardNo=IdCardNo.substring(0,17);
  250. IdCardNo+=i;
  251. System.out.println(IdCardNo);
  252. System.out.println(isIdCardNo(IdCardNo));
  253. }
  254. FilterInfo filterInfo = new FilterInfo();
  255. filterInfo.getFilterItems().add(
  256. new FilterItemInfo("requestState",
  257. RequestStateEnum.NOTSTARTED_VALUE, CompareType.EQUALS));
  258. filterInfo.getFilterItems().add(
  259. new FilterItemInfo("state",
  260. TaskStateEnum.DELETE_VALUE, CompareType.NOTEQUALS));
  261. FilterInfo filterPre1Info = new FilterInfo();
  262. filterPre1Info.getFilterItems().add(
  263. new FilterItemInfo("taskPre.requestState",
  264. RequestStateEnum.SUCCESSFUL_VALUE, CompareType.EQUALS));
  265. filterPre1Info.getFilterItems().add(
  266. new FilterItemInfo("taskPre.state",
  267. TaskStateEnum.FINISHED_VALUE, CompareType.EQUALS));
  268. FilterInfo filterPre2Info = new FilterInfo();
  269. filterPre2Info.getFilterItems().add(
  270. new FilterItemInfo("taskPre.id is null"));
  271. filterPre1Info.mergeFilter(filterPre2Info,"or");
  272. filterInfo.mergeFilter(filterPre1Info,"and");
  273. System.out.println(filterInfo.toSql());
  274. }
  275. /**
  276. * 校验是否为身份证号码
  277. * @param IdCardNo
  278. * @return
  279. */
  280. public static boolean isIdCardNo(String IdCardNo){
  281. boolean IdCardflag = false;
  282. try {
  283. if (!StringUtils.isEmpty(IdCardNo) && IdCardNo.length() == 18){
  284. // 1.将身份证号码前面的17位数分别乘以不同的系数。
  285. int[] coefficientArr = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 };
  286. int sum = 0;
  287. for (int i = 0; i < coefficientArr.length; i++) {
  288. // Character.digit 在指定的基数返回字符ch的数值。如果基数是不在范围内MIN_RADIX≤基数≤MAX_RADIX或如果该值的通道是不是一个有效的数字在指定的基数-1,则返回。
  289. // ch - the character to be converted(要转换的字符)
  290. // ch - int类型,是字符的ASCII码,数字的ASCII码是48-57
  291. // radix - the radix(基数) ----也就是进制数
  292. sum += Character.digit(IdCardNo.charAt(i), 10) * coefficientArr[i];
  293. }
  294. // 余数数组
  295. int[] remainderArr = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
  296. // 身份证号码第18位数组
  297. int[] lastArr = { 1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2 };
  298. String matchDigit = "";
  299. for (int i = 0; i < remainderArr.length; i++) {
  300. int j = remainderArr[i];
  301. if (j == sum % 11) {
  302. matchDigit = String.valueOf(lastArr[i]);
  303. if (lastArr[i] > 57) {
  304. matchDigit = String.valueOf((char) lastArr[i]);
  305. }
  306. }
  307. }
  308. if (matchDigit.equals(IdCardNo.substring(IdCardNo.length() - 1))) {
  309. IdCardflag = true;
  310. }
  311. }
  312. }catch (Exception e) {
  313. e.printStackTrace();
  314. }
  315. return IdCardflag;
  316. }
  317. }