ScanController.java 53 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851
  1. package com.bofeng.wx.controller;
  2. import com.bofeng.dao.*;
  3. import com.bofeng.entity.*;
  4. import com.bofeng.service.HomeService;
  5. import com.bofeng.service.ScanService;
  6. import com.google.zxing.BarcodeFormat;
  7. import com.google.zxing.MultiFormatWriter;
  8. import com.google.zxing.WriterException;
  9. import com.google.zxing.client.j2se.MatrixToImageConfig;
  10. import com.google.zxing.client.j2se.MatrixToImageWriter;
  11. import com.google.zxing.common.BitMatrix;
  12. import com.yvan.mvc.Pd;
  13. import io.swagger.annotations.Api;
  14. import io.swagger.annotations.ApiOperation;
  15. import lombok.Cleanup;
  16. import org.joda.time.DateTime;
  17. import org.springframework.beans.factory.annotation.Autowired;
  18. import org.springframework.beans.factory.annotation.Value;
  19. import org.springframework.http.MediaType;
  20. import org.springframework.ui.ModelMap;
  21. import org.springframework.web.bind.annotation.GetMapping;
  22. import org.springframework.web.bind.annotation.RequestParam;
  23. import org.springframework.web.bind.annotation.RestController;
  24. import org.springframework.web.servlet.ModelAndView;
  25. import javax.servlet.ServletOutputStream;
  26. import javax.servlet.http.HttpServletRequest;
  27. import javax.servlet.http.HttpServletResponse;
  28. import java.io.IOException;
  29. import java.io.UnsupportedEncodingException;
  30. import java.net.URLEncoder;
  31. import java.text.ParseException;
  32. import java.text.SimpleDateFormat;
  33. import java.util.Date;
  34. import java.util.List;
  35. @Api("进出扫码")
  36. @RestController
  37. public class ScanController {
  38. // 获取code
  39. private static final String oauth2 = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=";
  40. private static final String moreUrl = "&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";
  41. @Value("${yvan.wechat.appID}")
  42. private String appId;
  43. @Value("${yvan.wechat.domain}")
  44. private String domain;
  45. @Autowired
  46. private HomeService homeService;
  47. @Autowired
  48. private UserRoleMapper userRoleMapper;
  49. @Autowired
  50. private UserOpenMapper userOpenMapper;
  51. @Autowired
  52. private UptownHomeMapper uptownHomeMapper;
  53. @Autowired
  54. private UptownUnitMapper uptownUnitMapper;
  55. @Autowired
  56. private UptownDoorMapper uptownDoorMapper;
  57. @Autowired
  58. private OutScanMapper outScanMapper;
  59. @Autowired
  60. private OutScanConfMapper outScanConfMapper;
  61. @Autowired
  62. private MsReportMapper msReportMapper;
  63. @Autowired
  64. private ScanService scanService;
  65. @Autowired
  66. private OutScanEstateMapper outScanEstateMapper;
  67. @Autowired
  68. private OutUserMapper outUserMapper;
  69. /**
  70. * @param doorId 小区大门ID
  71. * @param inType 1进入;2外出
  72. * @param request
  73. * @param model
  74. * @return
  75. */
  76. @ApiOperation("进出扫码页面")
  77. @GetMapping("/user/scan.html")
  78. public ModelAndView scan(HttpServletRequest request, ModelMap model, @RequestParam(value = "doorId", required = false, defaultValue = "0") Long doorId,
  79. @RequestParam(value = "inType", required = false, defaultValue = "0") Integer inType,
  80. @RequestParam(value = "coord", required = false, defaultValue = "") String coord,
  81. @RequestParam(value = "address", required = false, defaultValue = "") String address) throws ParseException, UnsupportedEncodingException {
  82. UserOpen userOpen = homeService.getUserOpenByCode(request.getParameter("code"));
  83. List<UserRole> list = userRoleMapper.getUserRoleByUserId(userOpen.getUserId());
  84. // List<UserRole> list = userRoleMapper.getUserRoleByUserId(1228565481837944834L);
  85. // UserOpen userOpen = userOpenMapper.selectByUserId(1228565481837944834L);
  86. model.put("user", userOpen);
  87. model.put("user_id", "\"" + userOpen.getUserId() + "\"");
  88. if (list.size() == 0) {
  89. return new ModelAndView("/user/home.ftl", model);
  90. } else {
  91. Boolean ly = false;
  92. Boolean hc = false;
  93. UptownDoor uptownDoor = uptownDoorMapper.getUptownDoorById(doorId);
  94. List<UptownHome> uptownHomes = uptownHomeMapper.getUptownHomeByUserId(userOpen.getUserId());
  95. UptownUnit unit = uptownUnitMapper.getUptownUnitByUser(userOpen.getUserId());
  96. model.put("uptownId", unit.getUptownId());
  97. model.put("tittle", "电子出入许可");
  98. if (unit.getUptownId() == 1238790987234L || unit.getUptownId() == 5) {
  99. model.put("tittle", "凌云集团电子通行");
  100. ly = true;
  101. }
  102. if (unit.getUptownId() == 100000002L) {
  103. model.put("tittle", "湖北和昌电子通行");
  104. hc = true;
  105. }
  106. if (ly || hc) {
  107. model.put("doorplate", unit.getRidgepole() + unit.getUnit());
  108. model.put("door", uptownDoor.getDoorName());
  109. } else {
  110. model.put("doorplate", unit.getRidgepole() + "栋" + unit.getUnit() + "单元" + unit.getDoorplate() + "号");
  111. model.put("door", uptownDoor.getUptownName() + uptownDoor.getDoorName());
  112. }
  113. model.put("name", uptownHomes.get(0).getLinkman());
  114. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  115. model.put("now", sdf.format(new Date()));
  116. model.put("inType", inType);
  117. if (!ly && !hc) {
  118. if (!unit.getUptownId().equals(uptownDoor.getUptownId())) {
  119. model.put("into", "禁止" + getMsg(inType));
  120. model.put("collor", "red");
  121. model.put("errorMsg", "非本小区居民,禁止" + getMsg(inType) + "。");
  122. scanService.saveOutScan(userOpen.getUserId(), inType, coord, address, uptownDoor.getUptownId(), uptownDoor.getDoorId(), -1, model.get("errorMsg").toString());
  123. return new ModelAndView("/user/scan.ftl", model);
  124. }
  125. }
  126. OutScan o = outScanMapper.getOutScanLately(userOpen.getUserId(), inType);
  127. if (o != null && compareTime(o.getDate(), 1)) {
  128. model.put("collor", "orange");
  129. model.put("into", "允许" + getMsg(inType));
  130. model.put("errorMsg", "您最近一分钟已经扫码,本次扫码重复。");
  131. return new ModelAndView("/user/scan.ftl", model);
  132. }
  133. if (inType == 1) {
  134. OutScan outScan = outScanMapper.getOutScanByUserlimit(userOpen.getUserId());
  135. if (outScan != null && new Date(outScan.getDate().getMillis() + 3600L * 1000 * 24).compareTo(new Date()) == -1) {
  136. if (!ly && !hc) {
  137. model.put("collor", "orange");
  138. model.put("into", "允许进入");
  139. model.put("errorMsg", "您在外驻留时间超过1日,请尽快上报您的健康状况,防止在外长时间逗留。");
  140. scanService.saveOutScan(userOpen.getUserId(), inType, coord, address, uptownDoor.getUptownId(), uptownDoor.getDoorId(), 1, "");
  141. return new ModelAndView("/user/scan.ftl", model);
  142. }
  143. }
  144. if (ly) {
  145. if ("".equals(coord)) {
  146. String url = oauth2+appId +"&redirect_uri="+URLEncoder.encode(domain()+"user/scan.html?doorId="+doorId+"&inType="+inType + "&coord=","utf-8");
  147. model.put("url", url);
  148. model.put("moreUrl", moreUrl);
  149. return new ModelAndView("/user/location.ftl", model);
  150. } else {
  151. String[] coor = coord.split(",");
  152. Double dis = scanService.getDistance(Double.parseDouble(coor[0]),Double.parseDouble(coor[1]),Double.parseDouble(uptownDoor.getLongitude()), Double.parseDouble(uptownDoor.getLatitude()));
  153. if(dis > Double.parseDouble(uptownDoor.getDistance().toString())) {
  154. model.put("collor", "red");
  155. model.put("collor2", "red");
  156. model.put("into", "不许进入");
  157. model.put("errorMsg", "您当前扫码位置距离" +uptownDoor.getDoorName()+"太远,请到门口扫码,如有疑问请与上级管理部门联系。");
  158. scanService.saveOutScan(userOpen.getUserId(), inType, coord, address, uptownDoor.getUptownId(), uptownDoor.getDoorId(), -1, model.get("errorMsg").toString());
  159. return new ModelAndView("/user/scan.ftl", model);
  160. }
  161. }
  162. OutUser outUser1 = outUserMapper.getOutUserByPhone(4, uptownHomes.get(0).getLinkman(), Long.parseLong(uptownHomes.get(0).getPhone()));
  163. if (outUser1 != null) {
  164. model.put("collor", "red");
  165. model.put("collor2", "red");
  166. model.put("into", "不许进入");
  167. model.put("errorMsg", "声明:根据凌云集团防疫指挥部复工条件,您属于不可复工六类人员之一,如有疑问请与上级管理部门联系。");
  168. scanService.saveOutScan(userOpen.getUserId(), inType, coord, address, uptownDoor.getUptownId(), uptownDoor.getDoorId(), -1, model.get("errorMsg").toString());
  169. return new ModelAndView("/user/scan.ftl", model);
  170. }
  171. OutUser outUser = outUserMapper.getOutUserByPhone(1, uptownHomes.get(0).getLinkman(), Long.parseLong(uptownHomes.get(0).getPhone()));
  172. if (outUser != null) {
  173. model.put("collor", "green");
  174. model.put("collor2", "green");
  175. model.put("into", "允许通行");
  176. model.put("errorMsg", "声明:复工许可证是根据员工自主填写健康日报,结合凌云集团复工条件自动产生。原则上代表员工可复工,在厂门口扫描二维码生成绿色复工通行证,并接受检查后,可入厂。");
  177. scanService.saveOutScan(userOpen.getUserId(), inType, coord, address, uptownDoor.getUptownId(), uptownDoor.getDoorId(), 1, "");
  178. return new ModelAndView("/user/scan.ftl", model);
  179. }
  180. if (!unit.getUptownId().equals(uptownDoor.getUptownId())) {
  181. model.put("collor", "red");
  182. model.put("collor2", "red");
  183. model.put("into", "不许进入");
  184. model.put("errorMsg", "非本公司员工,不许进入。");
  185. scanService.saveOutScan(userOpen.getUserId(), inType, coord, address, uptownDoor.getUptownId(), uptownDoor.getDoorId(), -1, model.get("errorMsg").toString());
  186. return new ModelAndView("/user/scan.ftl", model);
  187. }
  188. MsReport msReport = msReportMapper.queryMsReportIsXG(userOpen.getUserId());
  189. SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd");
  190. if (msReport != null) {
  191. model.put("collor", "red");
  192. model.put("collor2", "red");
  193. model.put("into", "不许进入");
  194. model.put("errorMsg", "由于您上报过新冠确诊、新冠疑似或密切接触者,不许进入,如有疑问请联系直管领导。");
  195. scanService.saveOutScan(userOpen.getUserId(), inType, coord, address, uptownDoor.getUptownId(), uptownDoor.getDoorId(), -1, model.get("errorMsg").toString());
  196. return new ModelAndView("/user/scan.ftl", model);
  197. // List<MsReport> msReports1 = msReportMapper.queryLateStatus(userOpen.getUserId(), s.format(msReport.getReportDate()));
  198. // if (msReports1.size() == 0) {
  199. // model.put("collor", "red");
  200. // model.put("collor2", "red");
  201. // model.put("into", "不许进入");
  202. // model.put("errorMsg", "由于您上报过新冠确诊、新冠疑似或密切接触者,且未解除医学隔离,不许进入,如有疑问请联系直管领导。");
  203. // scanService.saveOutScan(userOpen.getUserId(), inType, coord, address, uptownDoor.getUptownId(), uptownDoor.getDoorId(), -1, model.get("errorMsg").toString());
  204. // return new ModelAndView("/user/scan.ftl", model);
  205. // }
  206. }
  207. List<MsReport> msReportList = msReportMapper.queryMsReportIsXGHome(userOpen.getUserId());
  208. if (msReportList.size() > 0) {
  209. model.put("collor", "red");
  210. model.put("collor2", "red");
  211. model.put("into", "不许进入");
  212. model.put("errorMsg", "由于您的家庭成员有新冠确诊或密切接触史人员,不许进入,如有疑问请联系直管领导。");
  213. scanService.saveOutScan(userOpen.getUserId(), inType, coord, address, uptownDoor.getUptownId(), uptownDoor.getDoorId(), -1, model.get("errorMsg").toString());
  214. return new ModelAndView("/user/scan.ftl", model);
  215. }
  216. List<MsReport> msReports = msReportMapper.selectMsReportLate(userOpen.getUserId());
  217. if (msReports.size() < 4) {
  218. model.put("collor", "red");
  219. model.put("collor2", "red");
  220. model.put("into", "不许进入");
  221. model.put("errorMsg", "由于您今日和前3日未连续报告日报,不许进入,如有疑问请联系直管领导。");
  222. scanService.saveOutScan(userOpen.getUserId(), inType, coord, address, uptownDoor.getUptownId(), uptownDoor.getDoorId(), -1, model.get("errorMsg").toString());
  223. return new ModelAndView("/user/scan.ftl", model);
  224. }
  225. List<MsReport> msReports2 = msReportMapper.selectMsReportThereError(userOpen.getUserId());
  226. if (msReports2.size() > 0) {
  227. model.put("collor", "red");
  228. model.put("collor2", "red");
  229. model.put("into", "不许进入");
  230. model.put("errorMsg", "由于近期您健康评估存在问题,不许进入,如有疑问请联系直管领导。");
  231. scanService.saveOutScan(userOpen.getUserId(), inType, coord, address, uptownDoor.getUptownId(), uptownDoor.getDoorId(), -1, model.get("errorMsg").toString());
  232. return new ModelAndView("/user/scan.ftl", model);
  233. }
  234. List<MsReport> msReports3 = msReportMapper.selectMsReportThirtyError(userOpen.getUserId());
  235. if (msReports3.size() > 0) {
  236. model.put("collor", "red");
  237. model.put("collor2", "red");
  238. model.put("into", "不许进入");
  239. model.put("errorMsg", "由于最近30天您健康评估存在问题,不许进入,如有疑问请联系直管领导。");
  240. scanService.saveOutScan(userOpen.getUserId(), inType, coord, address, uptownDoor.getUptownId(), uptownDoor.getDoorId(), -1, model.get("errorMsg").toString());
  241. return new ModelAndView("/user/scan.ftl", model);
  242. }
  243. String returnWork = msReportMapper.returnWork(userOpen.getUserId());
  244. if (returnWork != null) {
  245. if (sdf.parse(returnWork + " 00:00:00").getTime() + 1000L * 3600 * 24 * 15 > sdf.parse(s.format(new Date()) + " 00:00:00").getTime()) {
  246. model.put("collor", "red");
  247. model.put("collor2", "red");
  248. model.put("into", "不许进入");
  249. model.put("errorMsg", "您返回工作驻地后未满14日,不许进入。" + day15(s.parse(returnWork)) + "起方可进入!");
  250. scanService.saveOutScan(userOpen.getUserId(), inType, coord, address, uptownDoor.getUptownId(), uptownDoor.getDoorId(), -1, model.get("errorMsg").toString());
  251. return new ModelAndView("/user/scan.ftl", model);
  252. }
  253. }
  254. MsReport msReport1 = msReportMapper.msAddr(userOpen.getUserId());
  255. if (msReport1 != null && !msReport1.getWorkMsg().equals(msReport1.getTodayMsg())) {
  256. model.put("collor", "red");
  257. model.put("collor2", "red");
  258. model.put("into", "不许进入");
  259. model.put("errorMsg", "您本人不在工作驻地,不能入场复工。");
  260. scanService.saveOutScan(userOpen.getUserId(), inType, coord, address, uptownDoor.getUptownId(), uptownDoor.getDoorId(), -1, model.get("errorMsg").toString());
  261. return new ModelAndView("/user/scan.ftl", model);
  262. }
  263. //您近期内离开过工作单位驻地,请遵守返回工作驻地15日隔离规定,您目前未满15日,禁止进入。
  264. model.put("collor", "green");
  265. model.put("collor2", "green");
  266. model.put("into", "允许进入");
  267. model.put("errorMsg", "声明:复工通行证是根据员工自主填写健康日报,结合凌云集团复工条件自动产生。原则上代表员工可以通行,在接受规定检查后,方可入厂。");
  268. scanService.saveOutScan(userOpen.getUserId(), inType, coord, address, uptownDoor.getUptownId(), uptownDoor.getDoorId(), 1, "");
  269. return new ModelAndView("/user/scan.ftl", model);
  270. }
  271. if (hc) {
  272. if ("".equals(coord)) {
  273. String url = oauth2+appId +"&redirect_uri="+URLEncoder.encode(domain()+"user/scan.html?doorId="+doorId+"&inType="+inType + "&coord=","utf-8");
  274. model.put("url", url);
  275. model.put("moreUrl", moreUrl);
  276. return new ModelAndView("/user/location.ftl", model);
  277. }
  278. OutUser outUser = outUserMapper.getOutUserByPhone(3, uptownHomes.get(0).getLinkman(), Long.parseLong(uptownHomes.get(0).getPhone()));
  279. if (outUser != null) {
  280. model.put("collor", "green");
  281. model.put("collor2", "green");
  282. model.put("into", "允许通行");
  283. model.put("errorMsg", "特殊人员允许通行,请保证生产同时注意自身安全。");
  284. scanService.saveOutScan(userOpen.getUserId(), inType, coord, address, uptownDoor.getUptownId(), uptownDoor.getDoorId(), 1, "");
  285. return new ModelAndView("/user/scanHC.ftl", model);
  286. }
  287. if (!unit.getUptownId().equals(uptownDoor.getUptownId())) {
  288. model.put("collor", "red");
  289. model.put("collor2", "red");
  290. model.put("into", "不许进入");
  291. model.put("errorMsg", "非本公司员工,不许进入。");
  292. scanService.saveOutScan(userOpen.getUserId(), inType, coord, address, uptownDoor.getUptownId(), uptownDoor.getDoorId(), -1, model.get("errorMsg").toString());
  293. return new ModelAndView("/user/scanHC.ftl", model);
  294. }
  295. MsReport msReport = msReportMapper.queryMsReportIsXG(userOpen.getUserId());
  296. SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd");
  297. if (msReport != null) {
  298. List<MsReport> msReports1 = msReportMapper.queryLateStatus(userOpen.getUserId(), s.format(msReport.getReportDate()));
  299. if (msReports1.size() == 0) {
  300. model.put("collor", "red");
  301. model.put("collor2", "red");
  302. model.put("into", "不许进入");
  303. model.put("errorMsg", "由于您上报过新冠确诊、新冠疑似或密切接触者,且未解除医学隔离,不许进入,如有疑问请联系直管领导。");
  304. scanService.saveOutScan(userOpen.getUserId(), inType, coord, address, uptownDoor.getUptownId(), uptownDoor.getDoorId(), -1, model.get("errorMsg").toString());
  305. return new ModelAndView("/user/scanHC.ftl", model);
  306. }
  307. }
  308. List<MsReport> msReportList = msReportMapper.queryMsReportIsXGHome(userOpen.getUserId());
  309. if (msReportList.size() > 0) {
  310. model.put("collor", "red");
  311. model.put("collor2", "red");
  312. model.put("into", "不许进入");
  313. model.put("errorMsg", "由于您的家庭成员有新冠确诊或密切接触史人员,不许进入,如有疑问请联系直管领导。");
  314. scanService.saveOutScan(userOpen.getUserId(), inType, coord, address, uptownDoor.getUptownId(), uptownDoor.getDoorId(), -1, model.get("errorMsg").toString());
  315. return new ModelAndView("/user/scanHC.ftl", model);
  316. }
  317. List<MsReport> msReports = msReportMapper.selectMsReportLate(userOpen.getUserId());
  318. if (msReports.size() < 4) {
  319. model.put("collor", "red");
  320. model.put("collor2", "red");
  321. model.put("into", "不许进入");
  322. model.put("errorMsg", "由于您今日和前3日未连续报告日报,不许进入,如有疑问请联系直管领导。");
  323. scanService.saveOutScan(userOpen.getUserId(), inType, coord, address, uptownDoor.getUptownId(), uptownDoor.getDoorId(), -1, model.get("errorMsg").toString());
  324. return new ModelAndView("/user/scanHC.ftl", model);
  325. }
  326. List<MsReport> msReports2 = msReportMapper.selectMsReportThereError(userOpen.getUserId());
  327. if (msReports2.size() > 0) {
  328. model.put("collor", "red");
  329. model.put("collor2", "red");
  330. model.put("into", "不许进入");
  331. model.put("errorMsg", "由于近期您健康评估存在问题,不许进入,如有疑问请联系直管领导。");
  332. scanService.saveOutScan(userOpen.getUserId(), inType, coord, address, uptownDoor.getUptownId(), uptownDoor.getDoorId(), -1, model.get("errorMsg").toString());
  333. return new ModelAndView("/user/scanHC.ftl", model);
  334. }
  335. model.put("collor", "green");
  336. model.put("collor2", "green");
  337. model.put("into", "允许进入");
  338. model.put("errorMsg", "声明:复工通行证是根据员工自主填写健康日报,结合湖北和昌新材料科技股份有限公司复工条件自动产生。原则上代表员工可以通行,在接受规定检查后,方可入厂。");
  339. scanService.saveOutScan(userOpen.getUserId(), inType, coord, address, uptownDoor.getUptownId(), uptownDoor.getDoorId(), 1, "");
  340. return new ModelAndView("/user/scanHC.ftl", model);
  341. }
  342. }
  343. if (inType == 2) {
  344. OutUser outUser = outUserMapper.getOutUserByPhone(2, uptownHomes.get(0).getLinkman(), Long.parseLong(uptownHomes.get(0).getPhone()));
  345. if (outUser != null) {
  346. model.put("collor", "green");
  347. model.put("into", "允许通行");
  348. model.put("errorMsg", "外出请佩戴口罩,避免近距离接触,保生产同时注意自身安全。");
  349. scanService.saveOutScan(userOpen.getUserId(), inType, coord, address, uptownDoor.getUptownId(), uptownDoor.getDoorId(), 1, "");
  350. return new ModelAndView("/user/scan.ftl", model);
  351. }
  352. OutScanConf outScanConf = outScanConfMapper.getOutScanConfByUptown(uptownDoor.getUptownId());
  353. if (outScanConf.getGoOutFre() == 0) {
  354. model.put("collor", "red");
  355. model.put("into", "禁止外出");
  356. model.put("errorMsg", "根据武汉市小区封闭管理规定,非特殊人员禁止出行!");
  357. scanService.saveOutScan(userOpen.getUserId(), inType, coord, address, uptownDoor.getUptownId(), uptownDoor.getDoorId(), -1, model.get("errorMsg").toString());
  358. return new ModelAndView("/user/scan.ftl", model);
  359. }
  360. OutScan outScan = outScanMapper.getOutScanThreeday(userOpen.getUserId(), 2, outScanConf.getGoOutFre());
  361. if (outScan != null) {
  362. model.put("collor", "red");
  363. model.put("into", "禁止" + getMsg(inType));
  364. model.put("errorMsg", "距您上次外出时间未满" + outScanConf.getGoOutFre() + "日,禁止外出,请配合。上次外出登记时间 " + sdf.format(new Date(outScan.getDate().getMillis())) + "。");
  365. scanService.saveOutScan(userOpen.getUserId(), inType, coord, address, uptownDoor.getUptownId(), uptownDoor.getDoorId(), -1, model.get("errorMsg").toString());
  366. return new ModelAndView("/user/scan.ftl", model);
  367. }
  368. MsReport msReport = msReportMapper.selectMsReportToday(userOpen.getUserId());
  369. if (msReport != null && msReport.getMsStatus() == 2) {
  370. model.put("collor", "red");
  371. model.put("into", "禁止通行");
  372. model.put("errorMsg", "健康日报提示您存在健康问题,禁止外出,请配合。");
  373. scanService.saveOutScan(userOpen.getUserId(), inType, coord, address, uptownDoor.getUptownId(), uptownDoor.getDoorId(), -1, model.get("errorMsg").toString());
  374. return new ModelAndView("/user/scan.ftl", model);
  375. }
  376. List<MsReport> msReports = msReportMapper.selectMsReportLate(userOpen.getUserId());
  377. if (msReports.size() == 0) {
  378. model.put("collor", "red");
  379. model.put("into", "禁止" + getMsg(inType));
  380. model.put("errorMsg", "您最近三日未上报健康日报,请说明原因,配合监测人员。");
  381. scanService.saveOutScan(userOpen.getUserId(), inType, coord, address, uptownDoor.getUptownId(), uptownDoor.getDoorId(), -1, model.get("errorMsg").toString());
  382. return new ModelAndView("/user/scan.ftl", model);
  383. } else if (msReports.size() < 4) {
  384. model.put("collor", "orange");
  385. model.put("into", "可以" + getMsg(inType));
  386. model.put("errorMsg", "您今日或前3日未连续报告日报,请说明原因并及时填报,配合监测人员。");
  387. scanService.saveOutScan(userOpen.getUserId(), inType, coord, address, uptownDoor.getUptownId(), uptownDoor.getDoorId(), 1, "");
  388. return new ModelAndView("/user/scan.ftl", model);
  389. }
  390. }
  391. model.put("collor", "green");
  392. model.put("into", "允许" + getMsg(inType));
  393. if (inType == 2) {
  394. model.put("errorMsg", "外出请佩戴口罩,避免近距离接触,保生产同时注意自身安全。");
  395. } else if (inType == 1) {
  396. model.put("errorMsg", "欢迎归来,注意防护。");
  397. }
  398. scanService.saveOutScan(userOpen.getUserId(), inType, coord, address, uptownDoor.getUptownId(), uptownDoor.getDoorId(), 1, "");
  399. return new ModelAndView("/user/scan.ftl", model);
  400. }
  401. }
  402. @ApiOperation("巡检人员检查扫码信息")
  403. @GetMapping("/user/scanEstate.html")
  404. public ModelAndView scanEstate(HttpServletRequest request, ModelMap model) {
  405. UserOpen userOpen = homeService.getUserOpenByCode(request.getParameter("code"));
  406. List<UserRole> list = userRoleMapper.getUserRoleByUserId(userOpen.getUserId());
  407. // List<UserRole> list = userRoleMapper.getUserRoleByUserId(1L);
  408. // UserOpen userOpen = userOpenMapper.selectByUserId(1L);
  409. model.put("user", userOpen);
  410. model.put("user_id", "\"" + userOpen.getUserId() + "\"");
  411. if (list.size() == 0) {
  412. return new ModelAndView("/user/home.ftl", model);
  413. } else {
  414. List<UptownHome> uptownHomes = uptownHomeMapper.getUptownHomeByUserId(userOpen.getUserId());
  415. UptownUnit unit = uptownUnitMapper.getUptownUnitByUser(userOpen.getUserId());
  416. OutScanConf outScanConf = outScanConfMapper.getOutScanConfByUptown(unit.getUptownId());
  417. model.put("doorplate", unit.getUptownName() + "小区" + unit.getRidgepole() + "栋" + unit.getUnit() + "单元" + unit.getDoorplate() + "号");
  418. model.put("name", uptownHomes.get(0).getLinkman());
  419. SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  420. model.put("now", format.format(new Date()));
  421. OutScanEstate o = outScanEstateMapper.getOutScanEstatLately(userOpen.getUserId());
  422. if (o != null && compareTime(o.getScanDate(), 1)) {
  423. model.put("collor", "orange");
  424. model.put("into", "允许通行");
  425. model.put("errorMsg", "您最近一分钟已经扫码,本次扫码重复。");
  426. return new ModelAndView("/user/scanEstate.ftl", model);
  427. }
  428. OutUser outUser = outUserMapper.getOutUserByPhone(2, uptownHomes.get(0).getLinkman(), Long.parseLong(uptownHomes.get(0).getPhone()));
  429. if (outUser != null) {
  430. model.put("collor", "green");
  431. model.put("into", "允许通行");
  432. model.put("errorMsg", "外出请佩戴口罩,避免近距离接触,保生产同时注意自身安全。");
  433. scanService.saveOutScanEstate(userOpen.getUserId(), 1, "");
  434. return new ModelAndView("/user/scanEstate.ftl", model);
  435. }
  436. if (outScanConf.getGoOutFre() == 0) {
  437. model.put("collor", "red");
  438. model.put("into", "禁止外出");
  439. model.put("errorMsg", "根据武汉市小区封闭管理规定,非特殊人员禁止出行!");
  440. scanService.saveOutScanEstate(userOpen.getUserId(), -1, model.get("errorMsg").toString());
  441. return new ModelAndView("/user/scanEstate.ftl", model);
  442. }
  443. List<MsReport> msReports = msReportMapper.selectMsReportLate(userOpen.getUserId());
  444. if (msReports.size() != 4) {
  445. model.put("collor", "red");
  446. model.put("into", "禁止通行");
  447. model.put("errorMsg", "您近期有漏报健康日报,无法判断您健康状态,请尽快返回住处。");
  448. scanService.saveOutScanEstate(userOpen.getUserId(), -1, model.get("errorMsg").toString());
  449. return new ModelAndView("/user/scanEstate.ftl", model);
  450. }
  451. MsReport msReport = msReportMapper.selectMsReportToday(userOpen.getUserId());
  452. if (msReport != null && msReport.getMsStatus() == 2) {
  453. model.put("collor", "red");
  454. model.put("into", "禁止通行");
  455. model.put("errorMsg", "您近日提交的健康日报显示您健康存在问题,请尽快返回住处。");
  456. scanService.saveOutScanEstate(userOpen.getUserId(), -1, model.get("errorMsg").toString());
  457. return new ModelAndView("/user/scanEstate.ftl", model);
  458. }
  459. OutScan outScan = outScanMapper.getOutScanToday(userOpen.getUserId());
  460. if (outScan == null) {
  461. model.put("collor", "red");
  462. model.put("into", "禁止通行");
  463. model.put("errorMsg", "您今日没有正常出门记录,为自身及家人安全,请赶紧回家。");
  464. scanService.saveOutScanEstate(userOpen.getUserId(), -1, model.get("errorMsg").toString());
  465. return new ModelAndView("/user/scanEstate.ftl", model);
  466. }
  467. List<OutScanEstate> list1 = outScanEstateMapper.getOutScanEstateTodayByUser(userOpen.getUserId());
  468. int conut = list1.size() + 1;
  469. if (list1.size() < 2) {
  470. model.put("collor", "green");
  471. model.put("into", "允许通行");
  472. if (list1.size() == 0) {
  473. model.put("errorMsg", "您今日已" + conut + "次被问讯,请说明外出原因,尽快回家。");
  474. } else {
  475. model.put("errorMsg", "您今日已" + conut + "次被问讯,请说明外出原因,尽快回家。问询时间:" + queryTime(list1) + "。");
  476. }
  477. scanService.saveOutScanEstate(userOpen.getUserId(), 1, "");
  478. } else {
  479. model.put("collor", "red");
  480. model.put("into", "禁止通行");
  481. model.put("errorMsg", "您今日已被巡检人员问讯超过2次,为自身及家人安全,请赶紧回家。问询时间:" + queryTime(list1) + "。");
  482. scanService.saveOutScanEstate(userOpen.getUserId(), -1, model.get("errorMsg").toString());
  483. }
  484. // model.put("img", "/scan/scanEstate_qr.png");
  485. return new ModelAndView("/user/scanEstate.ftl", model);
  486. }
  487. }
  488. @ApiOperation("外出查询")
  489. @GetMapping("/user/goOut.html")
  490. public ModelAndView goOut(HttpServletRequest request, ModelMap model) throws ParseException {
  491. UserOpen userOpen = homeService.getUserOpen();
  492. List<UserRole> list = userRoleMapper.getUserRoleByUserId(userOpen.getUserId());
  493. // List<UserRole> list = userRoleMapper.getUserRoleByUserId(1234L);
  494. // UserOpen userOpen = userOpenMapper.selectByUserId(1234L);
  495. model.put("user", userOpen);
  496. model.put("user_id", "\"" + userOpen.getUserId() + "\"");
  497. if (list.size() == 0) {
  498. return new ModelAndView("/user/home.ftl", model);
  499. } else {
  500. List<UptownHome> uptownHomes = uptownHomeMapper.getUptownHomeByUserId(userOpen.getUserId());
  501. UptownUnit unit = uptownUnitMapper.getUptownUnitByUser(userOpen.getUserId());
  502. if (unit.getUptownId() == 1238790987234L || unit.getUptownId() == 5) {
  503. model.put("into", "此功能暂未开放");
  504. model.put("errorMsg", "外出请佩戴口罩,避免近距离接触,不得长时间在外逗留。");
  505. return new ModelAndView("/user/goOut.ftl", model);
  506. } else {
  507. model.put("doorplate", unit.getUptownName() + "小区" + unit.getRidgepole() + "栋" + unit.getUnit() + "单元" + unit.getDoorplate() + "号");
  508. model.put("name", uptownHomes.get(0).getLinkman());
  509. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  510. model.put("now", sdf.format(new Date()));
  511. OutUser outUser = outUserMapper.getOutUserByPhone(2, uptownHomes.get(0).getLinkman(), Long.parseLong(uptownHomes.get(0).getPhone()));
  512. if (outUser != null) {
  513. model.put("collor", "green");
  514. model.put("into", "允许外出");
  515. model.put("errorMsg", "外出请佩戴口罩,避免近距离接触,保生产同时注意自身安全。");
  516. return new ModelAndView("/user/goOut.ftl", model);
  517. }
  518. OutScanConf outScanConf = outScanConfMapper.getOutScanConfByUptown(unit.getUptownId());
  519. if (outScanConf.getGoOutFre() == 0) {
  520. model.put("collor", "red");
  521. model.put("into", "禁止外出");
  522. model.put("errorMsg", "根据武汉市小区封闭管理规定,非特殊人员禁止出行!");
  523. return new ModelAndView("/user/goOut.ftl", model);
  524. }
  525. List<MsReport> msReports = msReportMapper.selectMsReportLate(userOpen.getUserId());
  526. if (msReports.size() == 0) {
  527. model.put("collor", "red");
  528. model.put("into", "禁止外出");
  529. model.put("errorMsg", "您近期未提交健康日报,无法判断您健康状态,请提交健康日报。");
  530. return new ModelAndView("/user/goOut.ftl", model);
  531. }
  532. MsReport msReport = msReportMapper.selectMsReportToday(userOpen.getUserId());
  533. if (msReport != null && msReport.getMsStatus() == 2) {
  534. model.put("collor", "red");
  535. model.put("into", "禁止外出");
  536. model.put("errorMsg", "健康日报提示您存在健康问题,禁止外出,请配合。");
  537. return new ModelAndView("/user/goOut.ftl", model);
  538. }
  539. OutScan outScan = outScanMapper.getOutScanThreeday(userOpen.getUserId(), 2, outScanConf.getGoOutFre());
  540. if (outScan != null) {
  541. model.put("collor", "red");
  542. model.put("into", "禁止外出");
  543. model.put("errorMsg", "您今日健康状态评估正常,最近可外出时间" + sdf.format(new Date(outScan.getDayDate().getTime() + 1000L * 3600 * 24 * outScanConf.getGoOutFre())) +
  544. ",距今日还差" + differentDays(outScan.getDayDate(), sdf.parse(sdf.format(new Date())), outScanConf.getGoOutFre()) + "天。");
  545. return new ModelAndView("/user/goOut.ftl", model);
  546. }
  547. model.put("collor", "green");
  548. model.put("into", "允许外出");
  549. model.put("errorMsg", "外出请佩戴口罩,避免近距离接触,不得长时间在外逗留。");
  550. return new ModelAndView("/user/goOut.ftl", model);
  551. }
  552. }
  553. }
  554. @ApiOperation("复工查询")
  555. @GetMapping("/user/returnWork.html")
  556. public ModelAndView selectReturnWork(HttpServletRequest request, ModelMap model) throws ParseException {
  557. UserOpen userOpen = homeService.getUserOpen();
  558. List<UserRole> list = userRoleMapper.getUserRoleByUserId(userOpen.getUserId());
  559. // List<UserRole> list = userRoleMapper.getUserRoleByUserId(1234L);
  560. // UserOpen userOpen = userOpenMapper.selectByUserId(1234L);
  561. model.put("user", userOpen);
  562. model.put("user_id", "\"" + userOpen.getUserId() + "\"");
  563. if (list.size() == 0) {
  564. return new ModelAndView("/user/home.ftl", model);
  565. } else {
  566. return returnWork(userOpen.getUserId(), model);
  567. }
  568. }
  569. @ApiOperation("复工查询")
  570. @GetMapping("/whepi/user/returnWork.html")
  571. public ModelAndView adminSelectReturnWork(@Pd(name = "userId")Long userId, ModelMap model) throws ParseException {
  572. return returnWork(userId, model);
  573. }
  574. private ModelAndView returnWork(Long userId, ModelMap model) throws ParseException {
  575. List<UptownHome> uptownHomes = uptownHomeMapper.getUptownHomeByUserId(userId);
  576. UptownUnit unit = uptownUnitMapper.getUptownUnitByUser(userId);
  577. model.put("uptownId", unit.getUptownId());
  578. if (unit.getUptownId() == 1238790987234L || unit.getUptownId() == 5) {
  579. model.put("tittle", "凌云集团");
  580. model.put("doorplate", unit.getRidgepole() + unit.getUnit());
  581. model.put("name", uptownHomes.get(0).getLinkman());
  582. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  583. SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd");
  584. model.put("now", sdf.format(new Date()));
  585. OutUser outUser1 = outUserMapper.getOutUserByPhone(4, uptownHomes.get(0).getLinkman(), Long.parseLong(uptownHomes.get(0).getPhone()));
  586. if (outUser1 != null) {
  587. model.put("collor", "red");
  588. model.put("collor2", "red");
  589. model.put("into", "不可复工");
  590. model.put("errorMsg", "声明:根据凌云集团防疫指挥部复工条件,您属于不可复工六类人员之一,如有疑问请与上级管理部门联系。");
  591. return new ModelAndView("/user/returnWork.ftl", model);
  592. }
  593. OutUser outUser = outUserMapper.getOutUserByPhone(1, uptownHomes.get(0).getLinkman(), Long.parseLong(uptownHomes.get(0).getPhone()));
  594. if (outUser != null) {
  595. model.put("collor", "green");
  596. model.put("collor2", "green");
  597. model.put("into", "允许复工");
  598. model.put("errorMsg", "声明:复工许可证是根据员工自主填写健康日报,结合凌云集团复工条件自动产生。原则上代表员工可复工,在厂门口扫描二维码生成绿色复工通行证,并接受检查后,可入厂。");
  599. return new ModelAndView("/user/returnWork.ftl", model);
  600. }
  601. MsReport msReport = msReportMapper.queryMsReportIsXG(userId);
  602. if (msReport != null) {
  603. model.put("collor", "red");
  604. model.put("collor2", "red");
  605. model.put("into", "不可复工");
  606. model.put("errorMsg", "由于您上报过新冠确诊、新冠疑似或密切接触者,不可复工,如有疑问请联系直管领导。");
  607. return new ModelAndView("/user/returnWork.ftl", model);
  608. // List<MsReport> msReports1 = msReportMapper.queryLateStatus(userId, s.format(msReport.getReportDate()));
  609. // if (msReports1.size() == 0) {
  610. // model.put("collor", "red");
  611. // model.put("collor2", "red");
  612. // model.put("into", "不可复工");
  613. // model.put("errorMsg", "由于您上报过新冠确诊、新冠疑似或密切接触者,且未解除医学隔离,不可复工,如有疑问请联系直管领导。");
  614. // return new ModelAndView("/user/returnWork.ftl", model);
  615. // }
  616. }
  617. List<MsReport> msReportList = msReportMapper.queryMsReportIsXGHome(userId);
  618. if (msReportList.size() > 0) {
  619. model.put("collor", "red");
  620. model.put("collor2", "red");
  621. model.put("into", "不可复工");
  622. model.put("errorMsg", "由于您的家庭成员有新冠确诊或密切接触史人员,不可复工,如有疑问请联系直管领导。");
  623. return new ModelAndView("/user/returnWork.ftl", model);
  624. }
  625. List<MsReport> msReports = msReportMapper.selectMsReportLate(userId);
  626. if (msReports.size() < 4) {
  627. model.put("collor", "red");
  628. model.put("collor2", "red");
  629. model.put("into", "不可复工");
  630. model.put("errorMsg", "由于您今日和前3日未连续报告日报,不可复工,如有疑问请联系直管领导。");
  631. return new ModelAndView("/user/returnWork.ftl", model);
  632. }
  633. List<MsReport> msReports2 = msReportMapper.selectMsReportThereError(userId);
  634. if (msReports2.size() > 0) {
  635. model.put("collor", "red");
  636. model.put("collor2", "red");
  637. model.put("into", "不可复工");
  638. model.put("errorMsg", "由于近期您健康评估存在问题,不可复工,如有疑问请联系直管领导。");
  639. return new ModelAndView("/user/returnWork.ftl", model);
  640. }
  641. List<MsReport> msReports3 = msReportMapper.selectMsReportThirtyError(userId);
  642. if (msReports3.size() > 0) {
  643. model.put("collor", "red");
  644. model.put("collor2", "red");
  645. model.put("into", "不可复工");
  646. model.put("errorMsg", "由于最近30天您健康评估存在问题,不可复工,如有疑问请联系直管领导。");
  647. return new ModelAndView("/user/returnWork.ftl", model);
  648. }
  649. String returnWork = msReportMapper.returnWork(userId);
  650. if (returnWork != null) {
  651. if (sdf.parse(returnWork + " 00:00:00").getTime() + 1000L * 3600 * 24 * 15 > sdf.parse(s.format(new Date()) + " 00:00:00").getTime()) {
  652. model.put("collor", "red");
  653. model.put("collor2", "red");
  654. model.put("into", "不可复工");
  655. model.put("errorMsg", "您返回工作驻地后未满14日,不可复工。" + day15(s.parse(returnWork)) + "起方可进入!");
  656. return new ModelAndView("/user/returnWork.ftl", model);
  657. }
  658. }
  659. MsReport msReport1 = msReportMapper.msAddr(userId);
  660. if (msReport1 != null && !msReport1.getWorkMsg().equals(msReport1.getTodayMsg())) {
  661. model.put("collor", "red");
  662. model.put("collor2", "red");
  663. model.put("into", "不可复工");
  664. model.put("errorMsg", "您本人不在工作驻地,不能入场复工。");
  665. return new ModelAndView("/user/returnWork.ftl", model);
  666. }
  667. model.put("collor", "green");
  668. model.put("collor2", "green");
  669. model.put("into", "允许复工");
  670. model.put("errorMsg", "声明:复工许可证是根据员工自主填写健康日报,结合凌云集团复工条件自动产生。原则上代表员工可以复工,在厂门口扫描二维码生成绿色复工通行证,并接受规定检查后,方可入厂。");
  671. return new ModelAndView("/user/returnWork.ftl", model);
  672. //您近期内离开过工作单位驻地,请遵守返回工作驻地15日隔离规定,您目前未满15日,禁止进入。
  673. }else if (unit.getUptownId() == 100000002L) {
  674. model.put("tittle", "湖北和昌");
  675. model.put("doorplate", unit.getRidgepole() + unit.getUnit());
  676. model.put("name", uptownHomes.get(0).getLinkman());
  677. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  678. SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd");
  679. model.put("now", sdf.format(new Date()));
  680. OutUser outUser = outUserMapper.getOutUserByPhone(3, uptownHomes.get(0).getLinkman(), Long.parseLong(uptownHomes.get(0).getPhone()));
  681. if (outUser != null) {
  682. model.put("collor", "green");
  683. model.put("collor2", "green");
  684. model.put("into", "允许复工");
  685. model.put("errorMsg", "特殊人员允许通行,请保证生产同时注意自身安全。");
  686. return new ModelAndView("/user/returnWorkHC.ftl", model);
  687. }
  688. MsReport msReport = msReportMapper.queryMsReportIsXG(userId);
  689. if (msReport != null) {
  690. List<MsReport> msReports1 = msReportMapper.queryLateStatus(userId, s.format(msReport.getReportDate()));
  691. if (msReports1.size() == 0) {
  692. model.put("collor", "red");
  693. model.put("collor2", "red");
  694. model.put("into", "不可复工");
  695. model.put("errorMsg", "由于您上报过新冠确诊、新冠疑似或密切接触者,且未解除医学隔离,不可复工,如有疑问请联系直管领导。");
  696. return new ModelAndView("/user/returnWorkHC.ftl", model);
  697. }
  698. }
  699. List<MsReport> msReportList = msReportMapper.queryMsReportIsXGHome(userId);
  700. if (msReportList.size() > 0) {
  701. model.put("collor", "red");
  702. model.put("collor2", "red");
  703. model.put("into", "不许进入");
  704. model.put("errorMsg", "由于您的家庭成员有新冠确诊或密切接触史人员,不许进入,如有疑问请联系直管领导。");
  705. return new ModelAndView("/user/returnWorkHC.ftl", model);
  706. }
  707. List<MsReport> msReports = msReportMapper.selectMsReportLate(userId);
  708. if (msReports.size() < 4) {
  709. model.put("collor", "red");
  710. model.put("collor2", "red");
  711. model.put("into", "不可复工");
  712. model.put("errorMsg", "由于您今日和前3日未连续报告日报,不可复工,如有疑问请联系直管领导。");
  713. return new ModelAndView("/user/returnWorkHC.ftl", model);
  714. }
  715. List<MsReport> msReports2 = msReportMapper.selectMsReportThereError(userId);
  716. if (msReports2.size() > 0) {
  717. model.put("collor", "red");
  718. model.put("collor2", "red");
  719. model.put("into", "不可复工");
  720. model.put("errorMsg", "由于近期您健康评估存在问题,不可复工,如有疑问请联系直管领导。");
  721. return new ModelAndView("/user/returnWorkHC.ftl", model);
  722. }
  723. model.put("collor", "green");
  724. model.put("collor2", "green");
  725. model.put("into", "允许复工");
  726. model.put("errorMsg", "声明:复工许可证是根据员工自主填写健康日报,结合湖北和昌新材料科技股份有限公司复工条件自动产生。原则上代表员工可以复工,在厂门口扫描二维码生成绿色复工通行证,并接受规定检查后,方可入厂。");
  727. return new ModelAndView("/user/returnWorkHC.ftl", model);
  728. } else {
  729. model.put("into", "此功能暂未开放");
  730. model.put("errorMsg", "复工期间请请注意安全。");
  731. return new ModelAndView("/user/returnWork.ftl", model);
  732. }
  733. }
  734. /**
  735. * 通过时间秒毫秒数判断两个时间的间隔
  736. *
  737. * @param date1
  738. * @param i
  739. * @return
  740. */
  741. public static int differentDays(Date date1, Date date2, Integer i) {
  742. int days = (int) ((date1.getTime() - date2.getTime()) / (1000 * 3600 * 24)) + i;
  743. return days;
  744. }
  745. /**
  746. * 判断传入的时间和现在相差是否在i分钟内
  747. *
  748. * @param date
  749. * @param i
  750. * @return
  751. */
  752. public Boolean compareTime(DateTime date, Integer i) {
  753. Date date1 = new Date(date.getMillis());
  754. if ((date1.getTime() + 1000L * 60 * i) > System.currentTimeMillis()) {
  755. return true;
  756. } else {
  757. return false;
  758. }
  759. }
  760. public String getMsg(Integer inType) {
  761. if (inType == 1) {
  762. return "进入";
  763. } else if (inType == 2) {
  764. return "外出";
  765. }
  766. return "";
  767. }
  768. public String queryTime(List<OutScanEstate> list) {
  769. SimpleDateFormat format = new SimpleDateFormat("HH:mm");
  770. String time = "";
  771. for (OutScanEstate o : list) {
  772. String date = format.format(new Date(o.getScanDate().getMillis()));
  773. time += date + "、";
  774. }
  775. return time.substring(0, time.length() - 1);
  776. }
  777. public String day15(Date returnWork) {
  778. SimpleDateFormat sdf = new SimpleDateFormat("MM月dd日");
  779. return sdf.format(new Date(returnWork.getTime() + 1000L * 3600 * 24 * 15));
  780. }
  781. public String day15(List<MsReport> list, String returnWork) throws ParseException {
  782. SimpleDateFormat sdf = new SimpleDateFormat("MM月dd日");
  783. Date time1 = null;
  784. if (list.size() == 0) {
  785. time1 = new Date();
  786. } else {
  787. SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd");
  788. time1 = s.parse(returnWork);
  789. }
  790. return sdf.format(new Date(time1.getTime() + 1000L * 3600 * 24 * 15));
  791. }
  792. public String domain() {
  793. if (domain.substring(domain.length()-1).equals("/")) {
  794. return domain;
  795. } else {
  796. return domain + "/";
  797. }
  798. }
  799. // /**
  800. // * 生成进出门二维码
  801. // * @param doorId 小区大门ID
  802. // * @param inType 1进入;2外出
  803. // * @param response
  804. // * @throws IOException
  805. // * @throws WriterException
  806. // */
  807. // @GetMapping(value = "/scan/scan_qr.png", produces = MediaType.IMAGE_PNG_VALUE)
  808. // public void scanQrImg(@Pd(name = "doorId") Long doorId, @Pd(name = "inType") Integer inType,
  809. // HttpServletResponse response) throws IOException, WriterException {
  810. // @Cleanup ServletOutputStream outputStream = response.getOutputStream();
  811. // String msg = URLEncoder.encode( domain + "user/scan.html?doorId=" + doorId + "&inType=" + inType,"utf-8");
  812. // BitMatrix matrix = new MultiFormatWriter().encode(oauth2 + appId + "&redirect_uri=" +
  813. // msg + moreUrl, BarcodeFormat.QR_CODE, 256, 256);
  814. // MatrixToImageWriter.writeToStream(matrix, MediaType.IMAGE_PNG.getSubtype(), outputStream, new MatrixToImageConfig());
  815. // }
  816. //
  817. // /**
  818. // * 生成校园巡逻二维码
  819. // * @throws IOException
  820. // * @throws WriterException
  821. // */
  822. // @GetMapping(value = "/scan/scanEstate_qr.png", produces = MediaType.IMAGE_PNG_VALUE)
  823. // public void scanEstateQrImg(HttpServletResponse response) throws IOException, WriterException {
  824. // @Cleanup ServletOutputStream outputStream = response.getOutputStream();
  825. // String msg = URLEncoder.encode( domain + "user/scanEstate.html","utf-8");
  826. // BitMatrix matrix = new MultiFormatWriter().encode(oauth2 + appId + "&redirect_uri=" +
  827. // msg + moreUrl, BarcodeFormat.QR_CODE, 256, 256);
  828. // MatrixToImageWriter.writeToStream(matrix, MediaType.IMAGE_PNG.getSubtype(), outputStream, new MatrixToImageConfig());
  829. // }
  830. }