ScanController.java 62 KB

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