Verify.java 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510
  1. package cn.com.ty.lift.common.verify;
  2. import cn.hutool.core.util.ObjectUtil;
  3. import java.util.Objects;
  4. /**
  5. * <p>
  6. * 条件判断,如果不符合条件,抛出异常
  7. * </p>
  8. * @author wcz
  9. * @since 2020/1/9 8:46
  10. */
  11. public interface Verify {
  12. static VerifyException verifyException(String message){
  13. return new VerifyException(message);
  14. }
  15. /**
  16. * 判断表达式是否为真,如果为假,直接抛出异常,返回message
  17. *
  18. * @param expression 需要判断的布尔表达式
  19. * @param message 抛出异常的消息
  20. */
  21. static void isTrue(boolean expression, String message) {
  22. if (!expression) {
  23. throw verifyException(message);
  24. }
  25. }
  26. /**
  27. * 判断表达式是否为真,如果为真,直接抛出异常,返回message
  28. *
  29. * @param expression 需要判断的布尔表达式
  30. * @param message 抛出异常的消息
  31. */
  32. static void notTrue(boolean expression, String message) {
  33. if (expression) {
  34. throw verifyException(message);
  35. }
  36. }
  37. /**
  38. * 判断对象object是否为空,如果不为空,直接抛出异常,返回message
  39. *
  40. * @param object 参数值
  41. * @param message 抛出异常的消息
  42. */
  43. static void isNull(Object object, String message) {
  44. isTrue(Objects.isNull(object), message);
  45. }
  46. /**
  47. * 判断对象object是否为空,如果为真,直接抛出异常,返回message
  48. *
  49. * @param object 参数值
  50. * @param message 抛出异常的消息
  51. */
  52. static void notNull(Object object, String message) {
  53. isTrue(Objects.nonNull(object), message);
  54. }
  55. static void between(int value, int min, int max, String message){
  56. isTrue(value >= min && value <= max, message);
  57. }
  58. static void notBetween(int value, int min, int max, String message){
  59. isTrue(value < min || value > max, message);
  60. }
  61. static void equals(int one, int other, String message){
  62. isTrue(one == other, message);
  63. }
  64. static void greater(int value, int bounds, String message){
  65. isTrue(value > bounds, message);
  66. }
  67. static void less(int value, int bounds, String message){
  68. isTrue(value < bounds, message);
  69. }
  70. static void notEmpty(Object object, String message) {
  71. isTrue(ObjectUtil.isNotEmpty(object), message);
  72. }
  73. static void isEmpty(Object object, String message) {
  74. isTrue(ObjectUtil.isEmpty(object), message);
  75. }
  76. static void isBlank(CharSequence cs, String message) {
  77. isTrue(Objects.isNull(cs) || cs.toString().trim().isEmpty(), message);
  78. }
  79. static void notBlank(CharSequence cs, String message) {
  80. isTrue(Objects.nonNull(cs) && cs.toString().trim().length() > 0, message);
  81. }
  82. //======================年检相关状态值和判断方法======================================
  83. interface Inspection{
  84. /**
  85. * 年检未开始0
  86. */
  87. int STEP_NOT_START = 0;
  88. /**
  89. * 判断年检是否开始
  90. * @param step
  91. * @return
  92. */
  93. static boolean notStart(int step){
  94. return STEP_NOT_START == step;
  95. }
  96. /**
  97. * 年检 第一阶段
  98. */
  99. int STEP_ONE = 1;
  100. /**
  101. * 判断是否为年检阶段一
  102. * @param step
  103. * @return
  104. */
  105. static boolean stepOne(int step){
  106. return STEP_ONE == step;
  107. }
  108. /**
  109. * 年检 第二阶段
  110. */
  111. int STEP_TWO = 2;
  112. /**
  113. * 判断是否为年检阶段二
  114. * @param step
  115. * @return
  116. */
  117. static boolean stepTwo(int step){
  118. return STEP_TWO == step;
  119. }
  120. /**
  121. * 年检 第三阶段
  122. */
  123. int STEP_THREE = 3;
  124. /**
  125. * 判断是否为年检阶段三
  126. * @param step
  127. * @return
  128. */
  129. static boolean stepThree(int step){
  130. return STEP_THREE == step;
  131. }
  132. /**
  133. * 年检 第四阶段
  134. */
  135. int STEP_FOUR = 4;
  136. /**
  137. * 判断是否为年检阶段四
  138. * @param step
  139. * @return
  140. */
  141. static boolean stepFour(int step){
  142. return STEP_FOUR == step;
  143. }
  144. /**
  145. * 0 年检计划初始状态
  146. */
  147. int STATUS_NOT_START = 0;
  148. static boolean statusNotStart(int status){
  149. return STEP_NOT_START == status;
  150. }
  151. /**
  152. * 1 维保工确认年检计划
  153. */
  154. int STATUS_CONFIRM = 1;
  155. String confirm = "年检不存在,请确认年检计划";
  156. static boolean statusConfirm(int status){
  157. return STATUS_CONFIRM == status;
  158. }
  159. /**
  160. * 2 维保工上传自检报告,选择自检时间 或者 文员设置 是否检查限速器和荷载年检设置,
  161. * 文员也可以上传自检报告或者确认自检报告和自检时间,自检时间以最后设置的为准
  162. */
  163. int STATUS_SELFCHECK = 2;
  164. String selfcheckUpload = "请完善自检报告信息";
  165. String selfcheckDate = "请设置自检时间";
  166. String selfcheckReportImg = "请设置自检报告";
  167. static boolean statusSelfcheck(int status){
  168. return STATUS_SELFCHECK == status;
  169. }
  170. /**
  171. * 3 企业文员确认现场检验时间
  172. * 录入人员信息,政府质检,企业质检,联系电话
  173. */
  174. int STATUS_CHECK_CONFIRM = 3;
  175. String checkConfirm = "请确认检验结果";
  176. String checkDate = "请设置现场检验时间";
  177. String checkResultImg = "请设置现场检验结果";
  178. String inspector = "请设置政府质检人员";
  179. String operator = "请设置公司质检人员";
  180. String telephone = "请设置人员联系电话";
  181. static boolean statusCheckConfirm(int status){
  182. return STATUS_CHECK_CONFIRM == status;
  183. }
  184. /**
  185. * 4 维保工上传检验结果
  186. */
  187. int STATUS_CHECK_UPLOAD = 4;
  188. static boolean statusCheckUpload(int status){
  189. return STATUS_CHECK_UPLOAD == status;
  190. }
  191. /**
  192. * 5 企业文员确认检验结果-合格 --> 不能算年检超期
  193. */
  194. int STATUS_CHECK_QUALIFIED = 5;
  195. static boolean statusCheckQualified(int status){
  196. return STATUS_CHECK_QUALIFIED == status;
  197. }
  198. /**
  199. * 6 企业文员确认检验结果-整改 --> 回到第二阶段
  200. */
  201. int STATUS_CHECK_RECTIFICATION = 6;
  202. static boolean statusCheckRectification(int status){
  203. return STATUS_CHECK_RECTIFICATION == status;
  204. }
  205. /**
  206. * 7 企业文员确认检验结果-不合格 --> 可以算年检超期
  207. */
  208. int STATUS_CHECK_UNQUALIFIED = 7;
  209. static boolean statusCheckUnqualified(int status){
  210. return STATUS_CHECK_UNQUALIFIED == status;
  211. }
  212. /**
  213. * 8 维保工上传年检报告和合格证
  214. */
  215. int STATUS_CERTIFICATE_REPORT_UPLOAD = 8;
  216. String certificateReportUpload = "请上传年检报告和合格证";
  217. static boolean statusCertificateReportUpload(int status){
  218. return STATUS_CERTIFICATE_REPORT_UPLOAD == status;
  219. }
  220. /**
  221. * 9 企业文员确认年检报告和合格证-合格
  222. */
  223. int STATUS_CERTIFICATE_REPORT_QUALIFIED = 9;
  224. String nextInspectionTime = "请设置下次年检时间";
  225. static boolean statusCertificateReportQualified(int status){
  226. return STATUS_CERTIFICATE_REPORT_QUALIFIED == status;
  227. }
  228. /**
  229. * 10 企业文员确认年检报告和合格证-不合格 -->停用电梯
  230. */
  231. int STATUS_CERTIFICATE_REPORT_UNQUALIFIED = 10;
  232. static boolean statusCertificateReportUnqualified(int status){
  233. return STATUS_CERTIFICATE_REPORT_UNQUALIFIED == status;
  234. }
  235. String statusError = "年检状态有误";
  236. /**
  237. * 根据年检的状态值返回成年检的状态阶段
  238. * @param stepStatus 年检状态值
  239. * @return int
  240. */
  241. static int status2StepName(Integer stepStatus){
  242. int stepName;
  243. switch (stepStatus){
  244. case STATUS_NOT_START:
  245. stepName = 0;
  246. break;
  247. case STATUS_CONFIRM:
  248. case STATUS_SELFCHECK:
  249. stepName = 1;
  250. break;
  251. case STATUS_CHECK_CONFIRM:
  252. stepName = 2;
  253. break;
  254. case STATUS_CHECK_UPLOAD:
  255. case STATUS_CHECK_QUALIFIED:
  256. case STATUS_CHECK_RECTIFICATION:
  257. case STATUS_CHECK_UNQUALIFIED:
  258. stepName = 3;
  259. break;
  260. case STATUS_CERTIFICATE_REPORT_UPLOAD:
  261. case STATUS_CERTIFICATE_REPORT_QUALIFIED:
  262. case STATUS_CERTIFICATE_REPORT_UNQUALIFIED:
  263. stepName = 4;
  264. break;
  265. default:
  266. stepName = -1;
  267. break;
  268. }
  269. return stepName;
  270. }
  271. /**
  272. * 判断年检状态是否处于其他阶段之间 min < middle < max
  273. * @param middle 中间值
  274. * @param min 最小值
  275. * @param max 最大值
  276. * @return boolean
  277. */
  278. static boolean inStatus(int min, int middle,int max){
  279. return min <= middle && middle <= max;
  280. }
  281. /**
  282. * 判断两个年检状态是否一样 one == two
  283. * @param one 一个值
  284. * @param other 另一个值
  285. * @return boolean
  286. */
  287. static boolean sameStatus(int one,int other){
  288. return one == other;
  289. }
  290. /**
  291. * 判断年检中一个状态是否为另一个状态的下一个状态
  292. * @param front 前一个值
  293. * @param behind 后一个值
  294. * @return boolean
  295. */
  296. static boolean nextStatus(int front,int behind){
  297. return front + 1 == behind;
  298. }
  299. /**
  300. * 判断年检中两个状态相同或者为下一个状态
  301. * @param front 前一个值
  302. * @param behind 后一个值
  303. * @return boolean
  304. */
  305. static boolean sameNext(int front,int behind){
  306. return front == behind || front + 1 == behind;
  307. }
  308. //==============================================================================
  309. }
  310. interface Repair{
  311. //===================急修相关状态值和判断方法======================================
  312. /**
  313. * 急修状态(-1 暂停中)
  314. */
  315. int STATUS_STOPING = -1;
  316. static boolean statusStoping(int status){
  317. return STATUS_STOPING == status;
  318. }
  319. /**
  320. * 急修状态(0 待修理)
  321. */
  322. int STATUS_TO_REPAIRED = 0;
  323. static boolean statusToRepaired(int status){
  324. return STATUS_TO_REPAIRED == status;
  325. }
  326. /**
  327. * 急修状态(1 修理中)
  328. */
  329. int STATUS_REPAIRING = 1;
  330. static boolean statusRepairing(int status){
  331. return STATUS_REPAIRING == status;
  332. }
  333. /**
  334. * 急修状态(2 完成)
  335. */
  336. int STATUS_FINISH = 2;
  337. static boolean statusFinish(int status){
  338. return STATUS_FINISH == status;
  339. }
  340. /**
  341. * 急修状态(3 关闭)
  342. */
  343. int STATUS_CLOSE = 3;
  344. static boolean statusClose(int status){
  345. return STATUS_CLOSE == status;
  346. }
  347. String haveUnfinisedRepair = "该电梯存在未完成的急修,无法创建";
  348. String repairHadTaked = "急修已经接单,不能转派";
  349. String mustToRepair = "待急修才能操作";
  350. String mustInRepairing = "急修中才能操作";
  351. String missingFault = "缺少故障信息";
  352. String mustFinish = "急修完成后才能操作";
  353. String hadEvaluate = "急修已经评价了";
  354. String incorrectAmount = "金额有误";
  355. String inspection = "电梯正在年检中,无法创建";
  356. String notExist = "急修不存在,请核查";
  357. //==============================================================================
  358. }
  359. interface Upload{
  360. //===================上传相关状态值和判断方法======================================
  361. /**
  362. * 图片上传最大大小10M * 1024 * 1024
  363. */
  364. long maxSizePic = 10 << 20;
  365. String maxSizePicDesc = "10M";
  366. /**
  367. * 文件上传最大大小50M * 1024 * 1024
  368. */
  369. long maxSizeFile = 50 << 20;
  370. String maxSizeFileDesc = "50M";
  371. /**
  372. * 视频上传最大大小100M * 1024 * 1024
  373. */
  374. long maxSizeVideo = 100 << 20;
  375. String maxSizeVideoDesc = "100M";
  376. /**
  377. * 上传图片文件类型
  378. */
  379. String[] pics = {".jpg",".jpeg", ".png", ".bmp", ".gif"};
  380. /**
  381. * 上传其他文件类型
  382. */
  383. String[] files = {".pdf",".txt",".rar",".zip",".7z", ".xls", ".xlsx", ".doc",".docx",".ppt",".pptx"};
  384. /**
  385. * 上传视频文件类型
  386. */
  387. String[] videos = {".mov",".mp4", ".avi",".mpg",".mpeg",".rm",".rmvb",".wmv"};
  388. String fileDataMissing = "没有文件数据";
  389. String fileUploadFail = "上传文件失败";
  390. String fileFormatNotSupport = "文件格式暂时不支持";
  391. String fileFormatIllegal = "文件格式不合法";
  392. //==============================================================================
  393. }
  394. /**
  395. * 操作证相关常量
  396. */
  397. interface LiftCert{
  398. //0:无证,1:待审核,2:审核未通过,3:审核通过,4:超期
  399. int Status_Unlicense = 0;
  400. int Status_ToAudit = 1;
  401. int Status_AuditFail = 2;
  402. int Status_AuditPass = 3;
  403. int Status_Overdue = 4;
  404. String MustToAudit = "待审核才能操作";
  405. String CertHadExist = "操作证已存在";
  406. String CertNotExist = "操作证不存在";
  407. static boolean unlicense(int status){
  408. return status == Status_Unlicense;
  409. }
  410. static boolean toAudit(int status){
  411. return status == Status_ToAudit;
  412. }
  413. static boolean auditFail(int status){
  414. return status == Status_AuditFail;
  415. }
  416. static boolean auditPass(int status){
  417. return status == Status_AuditPass;
  418. }
  419. static boolean overdue(int status){
  420. return status == Status_Overdue;
  421. }
  422. }
  423. /**
  424. * 签到相关常量
  425. */
  426. interface Attend{
  427. String SetAmTime = "请设置上午的上/下班时间";
  428. String SetPmTime = "请设置下午的上/下班时间";
  429. String SetOtTime = "请设置加班的上/下班时间";
  430. String InvalidAmTime = "上午的上(%tT)/下班(%tT)时间有误";
  431. String InvalidPmTime = "下午的上(%tT)/下班(%tT)时间有误";
  432. String InvalidOtTime = "加班的上(%tT)/下班(%tT)时间有误";
  433. String AmTopClock = "上午上班打卡";
  434. String AmDownClock = "上午下班打卡";
  435. String PmTopClock = "下午上班打卡";
  436. String PmDownClock = "下午下班打卡";
  437. String OtTopClock = "加班上班打卡";
  438. String OtDownClock = "加班下班打卡";
  439. String hadClock = "记录已存在(打卡时间:%tF %tT)";
  440. String missingTime = "请至少设置一组打卡时间";
  441. String AmDownPmTop = "下午的上班(%tT)时间不得早于上午的下班(%tT)时间";
  442. String PmDownOtTop = "加班的上班(%tT)时间不得早于下午的下班(%tT)时间";
  443. }
  444. interface Excel{
  445. String ValidDataMissing = "未解析到有效数据";
  446. String FormatSupport = "文件格式不支持,暂时只支持xls,xlsx";
  447. String[] excelSuffix = {".xls",".xlsx"};
  448. /**
  449. * 一次导入表格的最大有效记录数
  450. */
  451. int maxRows = 5000;
  452. String outMaxRows = "一次性导入不能超过5000条数据";
  453. }
  454. }