IndexCtl.java 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323
  1. package com.xt.jygl.sys.ctl;
  2. import java.io.BufferedInputStream;
  3. import java.io.FileInputStream;
  4. import java.io.IOException;
  5. import java.io.InputStream;
  6. import java.math.BigDecimal;
  7. import java.net.URLEncoder;
  8. import java.sql.Timestamp;
  9. import java.util.ArrayList;
  10. import java.util.Calendar;
  11. import java.util.Date;
  12. import java.util.HashMap;
  13. import java.util.List;
  14. import java.util.Map;
  15. import javax.persistence.criteria.CriteriaBuilder;
  16. import javax.persistence.criteria.CriteriaQuery;
  17. import javax.persistence.criteria.Expression;
  18. import javax.persistence.criteria.Predicate;
  19. import javax.persistence.criteria.Root;
  20. import javax.servlet.http.HttpServletRequest;
  21. import javax.servlet.http.HttpServletResponse;
  22. import org.apache.poi.hssf.util.HSSFColor.GOLD;
  23. import org.springframework.beans.factory.annotation.Autowired;
  24. import org.springframework.data.jpa.domain.Specification;
  25. import org.springframework.stereotype.Controller;
  26. import org.springframework.ui.Model;
  27. import org.springframework.web.bind.annotation.RequestMapping;
  28. import org.springframework.web.bind.annotation.ResponseBody;
  29. import com.xt.jygl.accessory.entity.AccessoryEntity;
  30. import com.xt.jygl.common.BaseWebCtl;
  31. import com.xt.jygl.common.Constants;
  32. import com.xt.jygl.common.GlobalData;
  33. import com.xt.jygl.gkjcxx.gk.entity.GkEntity;
  34. import com.xt.jygl.gkjcxx.gk.service.GkService;
  35. import com.xt.jygl.gkjcxx.gq.entity.GqEntity;
  36. import com.xt.jygl.gkjcxx.gq.service.GqService;
  37. import com.xt.jygl.gkjygl.cghzyxxgl.dcsb.entity.DcsbEntity;
  38. import com.xt.jygl.gkjygl.gkjyr.jyrjbxx.entity.BwEntity;
  39. import com.xt.jygl.gkjygl.gkjyr.jyrjbxx.entity.GkjyrEntity;
  40. import com.xt.jygl.gkjygl.gkjyr.xkzxx.entity.XkzxxEntity;
  41. import com.xtframe.core.base.ctl.WebJsonResult;
  42. import com.xtframe.sec.common.BaseEntity;
  43. import com.xtframe.util.StringUtils;
  44. /**
  45. */
  46. @Controller
  47. @RequestMapping("/index")
  48. public class IndexCtl extends BaseWebCtl {
  49. @Autowired
  50. private GkService gkService;
  51. @Autowired
  52. private GqService gqService;
  53. @RequestMapping(value = "/main")
  54. public String main(Model model, String menuid) {
  55. boolean isJyr = false;
  56. // Map<String, Object> map = getXx(GlobalData.CITY_CODE,null,null);
  57. //
  58. // model.addAttribute("jyrnum", map.get("jyrnum"));
  59. //
  60. // model.addAttribute("bwnum", map.get("bwnum"));
  61. //
  62. // model.addAttribute("wdjysbw", map.get("wdjysbw"));
  63. //
  64. // model.addAttribute("bwztul", map.get("bwztul"));
  65. //
  66. // model.addAttribute("drphsqs", map.get("drphsqs"));
  67. //
  68. // model.addAttribute("whjyr", map.get("whjyr"));
  69. if (Constants.DEPLOY_MODE_CITY.equals(GlobalData.DEPLOY_MODE)) {
  70. List<GqEntity> gqList = gqService.findBySzd(GlobalData.CITY_CODE);
  71. List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
  72. Map<String, Object> map = getXx(GlobalData.CITY_CODE, null, null);
  73. map.put("szgq", "合计");
  74. map.put("szgqid", "");
  75. list.add(map);
  76. if (gqList != null && gqList.size() > 0) {
  77. for (GqEntity gq : gqList) {
  78. Map<String, Object> xxMap = getXx(null, null, gq.getId());
  79. xxMap.put("szgq", gq.getGqmc());
  80. xxMap.put("szgqid", gq.getId());
  81. list.add(xxMap);
  82. }
  83. }
  84. model.addAttribute("list", list);
  85. }
  86. if(GlobalData.CITY_CODE.equals("90016")){
  87. isJyr = isJyr();
  88. }
  89. model.addAttribute("menuid", menuid);
  90. model.addAttribute("citycode", GlobalData.CITY_CODE);
  91. model.addAttribute("cityname", GlobalData.CITY_NAME);
  92. model.addAttribute("isJyr", isJyr);
  93. return "index/indexmain";
  94. }
  95. // 三个参数 只会有一个参数是有值的
  96. public Map<String, Object> getXx(final String szdid, final String gkid, final String gqid) {
  97. Map<String, Object> map = new HashMap<String, Object>();
  98. // 经营人个数
  99. Specification<GkjyrEntity> spec = new Specification<GkjyrEntity>() {
  100. @Override
  101. public Predicate toPredicate(Root<GkjyrEntity> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
  102. List<Predicate> list = new ArrayList<Predicate>();
  103. if (StringUtils.isNotEmpty(szdid)) {
  104. list.add(cb.like(root.get("szd").get("id").as(String.class), "%" + szdid + "%"));
  105. }
  106. if (StringUtils.isNotEmpty(gkid)) {
  107. list.add(cb.like(root.get("szgk").get("id").as(String.class), "%" + gkid + "%"));
  108. }
  109. if (StringUtils.isNotEmpty(gqid)) {
  110. list.add(cb.like(root.get("szgq").get("id").as(String.class), "%" + gqid + "%"));
  111. }
  112. //list.add(cb.equal(root.get("recordStatus").as(Integer.class), BaseEntity.RECORD_STATE_VALID));
  113. list.add(cb.notEqual(root.get("recordStatus").as(Integer.class), BaseEntity.RECORE_STATE_COPY));
  114. list.add(cb.notEqual(root.get("recordStatus").as(Integer.class), BaseEntity.RECORD_STATE_DELETE));
  115. list.add(cb.notEqual(root.get("recordStatus").as(Integer.class), BaseEntity.RECORE_STATE_BGFLAG));
  116. list.add(cb.notEqual(root.get("recordStatus").as(Integer.class), BaseEntity.RECORE_STATE_ZXFLAG));
  117. return cb.and(list.toArray(new Predicate[] {}));
  118. }
  119. };
  120. List<GkjyrEntity> gkjyrlist = query.findAll(spec, GkjyrEntity.class);
  121. int jyrnum = gkjyrlist != null ? gkjyrlist.size() : 0;
  122. map.put("jyrnum", jyrnum + "");
  123. // 危险货物经营人个数
  124. int whjyr = 0;
  125. if (gkjyrlist != null) {
  126. for (GkjyrEntity gkjyrEntity : gkjyrlist) {
  127. if (gkjyrEntity.getSfwhqy() != null && gkjyrEntity.getSfwhqy().getText().equals("是")) {
  128. whjyr += 1;
  129. }
  130. }
  131. }
  132. map.put("whjyr", whjyr + "");
  133. // 泊位总数量
  134. Specification<BwEntity> spec2 = new Specification<BwEntity>() {
  135. @Override
  136. public Predicate toPredicate(Root<BwEntity> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
  137. List<Predicate> list = new ArrayList<Predicate>();
  138. if (StringUtils.isNotEmpty(szdid)) {
  139. list.add(cb.like(root.get("szd").get("id").as(String.class), "%" + szdid + "%"));
  140. }
  141. if (StringUtils.isNotEmpty(gkid)) {
  142. list.add(cb.like(root.get("szgk").get("id").as(String.class), "%" + gkid + "%"));
  143. }
  144. if (StringUtils.isNotEmpty(gqid)) {
  145. list.add(cb.like(root.get("szgq").get("id").as(String.class), "%" + gqid + "%"));
  146. }
  147. list.add(cb.equal(root.get("recordStatus").as(Integer.class), BaseEntity.RECORD_STATE_VALID));
  148. return cb.and(list.toArray(new Predicate[] {}));
  149. }
  150. };
  151. List<BwEntity> bwlist = query.findAll(spec2, BwEntity.class);
  152. int bwnum = bwlist != null ? bwlist.size() : 0;
  153. map.put("bwnum", bwnum + "");
  154. //许可证有效期 内的企业数
  155. Specification<XkzxxEntity> spec4 = new Specification<XkzxxEntity>() {
  156. @Override
  157. public Predicate toPredicate(Root<XkzxxEntity> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
  158. List<Predicate> list = new ArrayList<Predicate>();
  159. if (StringUtils.isNotEmpty(gqid)) {
  160. list.add(cb.equal(root.get("ssgq").as(String.class), gqid));
  161. }
  162. list.add(cb.equal(root.get("recordStatus").as(Integer.class), BaseEntity.RECORD_STATE_VALID));
  163. list.add(cb.equal(root.get("sfyx").as(Integer.class), BaseEntity.RECORD_STATE_VALID));
  164. return cb.and(list.toArray(new Predicate[] {}));
  165. }
  166. };
  167. List<XkzxxEntity> qyslist = query.findAll(spec4, XkzxxEntity.class);
  168. map.put("xkzyxqnqys", qyslist.size());
  169. // 万吨级以上泊位个数
  170. int wdjysbw = 0;
  171. if (bwlist != null) {
  172. for (BwEntity bwEntity : bwlist) {
  173. if (bwEntity.getSjkpnl() != null && bwEntity.getSjkpnl() > 10000) {
  174. wdjysbw += 1;
  175. }
  176. }
  177. }
  178. map.put("wdjysbw", wdjysbw + "");
  179. // 设计总靠泊能力
  180. double bwztul = 0;
  181. for (BwEntity bw : bwlist) {
  182. if (null != bw.getNhwtgnl()) {
  183. bwztul += Double.parseDouble(bw.getNhwtgnl());
  184. }else if(null==bw.getNhwtgnl()&&bw.getNjzxtgnl()!=null){
  185. bwztul += Double.parseDouble(bw.getNjzxtgnl());
  186. bwztul = bwztul*10;
  187. }
  188. }
  189. bwztul = bwztul / 10000;
  190. BigDecimal bc = new BigDecimal(bwztul);
  191. bwztul = bc.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
  192. map.put("bwztul", bwztul + "");
  193. // 当日普货申请数及当日总吞吐量
  194. int drphsqs = 0;
  195. double drzttl = 0;
  196. Specification<DcsbEntity> spec3 = new Specification<DcsbEntity>() {
  197. @Override
  198. public Predicate toPredicate(Root<DcsbEntity> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
  199. List<Predicate> list = new ArrayList<Predicate>();
  200. if (StringUtils.isNotEmpty(szdid)) {
  201. list.add(cb.like(root.get("szd").get("id").as(String.class), "%" + szdid + "%"));
  202. }
  203. if (StringUtils.isNotEmpty(gkid)) {
  204. list.add(cb.like(root.get("szgk").get("id").as(String.class), "%" + gkid + "%"));
  205. }
  206. if (StringUtils.isNotEmpty(gqid)) {
  207. list.add(cb.like(root.get("szgq").get("id").as(String.class), "%" + gqid + "%"));
  208. }
  209. list.add(cb.notEqual(root.get("recordStatus").as(Integer.class), BaseEntity.RECORE_STATE_COPY));
  210. list.add(cb.notEqual(root.get("recordStatus").as(Integer.class), BaseEntity.RECORD_STATE_DELETE));
  211. Calendar startCal = Calendar.getInstance();
  212. startCal.set(Calendar.HOUR_OF_DAY, 0);
  213. startCal.set(Calendar.MINUTE, 0);
  214. startCal.set(Calendar.SECOND, 0);
  215. Expression<Date> issueStart = cb.literal(startCal.getTime());
  216. Calendar endCal = Calendar.getInstance();
  217. endCal.setTime(startCal.getTime());
  218. endCal.add(Calendar.DAY_OF_MONTH, 1);
  219. endCal.add(Calendar.SECOND, -1);
  220. Expression<Date> issueEnd = cb.literal(endCal.getTime());
  221. list.add(cb.between(root.get("bgsj").as(Timestamp.class), issueStart, issueEnd));
  222. return cb.and(list.toArray(new Predicate[] {}));
  223. }
  224. };
  225. List<DcsbEntity> dcsblist = query.findAll(spec3, DcsbEntity.class);
  226. for (DcsbEntity dcsb : dcsblist) {
  227. // String creatTime = new
  228. // SimpleDateFormat("yyyy-MM-dd").format(dcsb.getCreateDateTime());
  229. // String today = new SimpleDateFormat("yyyy-MM-dd").format(new
  230. // Date());
  231. // if (today.equals(creatTime)) {
  232. // drphsqs += 1;
  233. // }
  234. drphsqs += 1;
  235. drzttl += dcsb.getZysl();
  236. }
  237. map.put("drphsqs", drphsqs + "");
  238. map.put("drzttl", drzttl + "");
  239. return map;
  240. }
  241. @RequestMapping(value = "/getData")
  242. @ResponseBody
  243. public WebJsonResult getData(Model model, String gkid, String gqid) {
  244. WebJsonResult wr = success();
  245. try {
  246. Map<String, Object> map = getXx(null, gkid, gqid);
  247. if (!StringUtils.isEmpty(gkid)) {
  248. GkEntity gk = gkService.findOne(gkid);
  249. map.put("title", gk != null ? gk.getGkmc() : "");
  250. }
  251. if (!StringUtils.isEmpty(gqid)) {
  252. GqEntity gq = gqService.findOne(gqid);
  253. map.put("title", gq != null ? gq.getGqmc() : "");
  254. }
  255. wr.setAttrs(map);
  256. } catch (Exception e) {
  257. wr.setSuccess(false);
  258. wr.setMessage("操作失败!");
  259. e.printStackTrace();
  260. }
  261. return wr;
  262. }
  263. /*下载用户操作手册:
  264. *市级: 经营人 2
  265. 行政人员 1
  266. *省级:行政人员 0
  267. */
  268. @RequestMapping(value = "/downloadUserOperationFile")
  269. public WebJsonResult downloadUserOperationFile(String userId, HttpServletRequest request,HttpServletResponse response) {
  270. // path是指欲下载的文件的路径。
  271. String path = "";
  272. String fileName = "";
  273. if(userId.equals("0")){
  274. path = GlobalData.UPLOAD_FILE_PATH + "\\userOperationFile\\1.pdf";
  275. fileName = "省厅行政人员系统操作手册.pdf";
  276. }else if(userId.equals("1")){
  277. path = GlobalData.UPLOAD_FILE_PATH + "\\userOperationFile\\2.pdf";
  278. fileName = "市级行政人员系统操作手册.pdf";
  279. }else{
  280. path = GlobalData.UPLOAD_FILE_PATH + "\\userOperationFile\\3.pdf";
  281. fileName = "市级经营人系统操作手册.pdf";
  282. }
  283. try {
  284. // 以流的形式下载文件。
  285. InputStream fis = new BufferedInputStream(new FileInputStream(path));
  286. byte[] buffer = new byte[fis.available()];
  287. fis.read(buffer);
  288. fis.close();
  289. // 设置response的Header
  290. response.setCharacterEncoding("utf-8");
  291. response.setContentType("multipart/form-data");
  292. fileName = URLEncoder.encode(fileName, "UTF-8");
  293. response.setHeader("Content-Disposition", "attachment;fileName=" + fileName);
  294. response.getOutputStream().write(buffer);
  295. } catch (IOException e) {
  296. e.printStackTrace();
  297. }
  298. return null;
  299. }
  300. }