package com.xt.jygl.sys.ctl; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.math.BigDecimal; import java.net.URLEncoder; import java.sql.Timestamp; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Expression; import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.poi.hssf.util.HSSFColor.GOLD; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.jpa.domain.Specification; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import com.xt.jygl.accessory.entity.AccessoryEntity; import com.xt.jygl.common.BaseWebCtl; import com.xt.jygl.common.Constants; import com.xt.jygl.common.GlobalData; import com.xt.jygl.gkjcxx.gk.entity.GkEntity; import com.xt.jygl.gkjcxx.gk.service.GkService; import com.xt.jygl.gkjcxx.gq.entity.GqEntity; import com.xt.jygl.gkjcxx.gq.service.GqService; import com.xt.jygl.gkjygl.cghzyxxgl.dcsb.entity.DcsbEntity; import com.xt.jygl.gkjygl.gkjyr.jyrjbxx.entity.BwEntity; import com.xt.jygl.gkjygl.gkjyr.jyrjbxx.entity.GkjyrEntity; import com.xt.jygl.gkjygl.gkjyr.xkzxx.entity.XkzxxEntity; import com.xtframe.core.base.ctl.WebJsonResult; import com.xtframe.sec.common.BaseEntity; import com.xtframe.util.StringUtils; /** */ @Controller @RequestMapping("/index") public class IndexCtl extends BaseWebCtl { @Autowired private GkService gkService; @Autowired private GqService gqService; @RequestMapping(value = "/main") public String main(Model model, String menuid) { boolean isJyr = false; // Map map = getXx(GlobalData.CITY_CODE,null,null); // // model.addAttribute("jyrnum", map.get("jyrnum")); // // model.addAttribute("bwnum", map.get("bwnum")); // // model.addAttribute("wdjysbw", map.get("wdjysbw")); // // model.addAttribute("bwztul", map.get("bwztul")); // // model.addAttribute("drphsqs", map.get("drphsqs")); // // model.addAttribute("whjyr", map.get("whjyr")); if (Constants.DEPLOY_MODE_CITY.equals(GlobalData.DEPLOY_MODE)) { List gqList = gqService.findBySzd(GlobalData.CITY_CODE); List> list = new ArrayList>(); Map map = getXx(GlobalData.CITY_CODE, null, null); map.put("szgq", "合计"); map.put("szgqid", ""); list.add(map); if (gqList != null && gqList.size() > 0) { for (GqEntity gq : gqList) { Map xxMap = getXx(null, null, gq.getId()); xxMap.put("szgq", gq.getGqmc()); xxMap.put("szgqid", gq.getId()); list.add(xxMap); } } model.addAttribute("list", list); } if(GlobalData.CITY_CODE.equals("90016")){ isJyr = isJyr(); } model.addAttribute("menuid", menuid); model.addAttribute("citycode", GlobalData.CITY_CODE); model.addAttribute("cityname", GlobalData.CITY_NAME); model.addAttribute("isJyr", isJyr); return "index/indexmain"; } // 三个参数 只会有一个参数是有值的 public Map getXx(final String szdid, final String gkid, final String gqid) { Map map = new HashMap(); // 经营人个数 Specification spec = new Specification() { @Override public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder cb) { List list = new ArrayList(); if (StringUtils.isNotEmpty(szdid)) { list.add(cb.like(root.get("szd").get("id").as(String.class), "%" + szdid + "%")); } if (StringUtils.isNotEmpty(gkid)) { list.add(cb.like(root.get("szgk").get("id").as(String.class), "%" + gkid + "%")); } if (StringUtils.isNotEmpty(gqid)) { list.add(cb.like(root.get("szgq").get("id").as(String.class), "%" + gqid + "%")); } //list.add(cb.equal(root.get("recordStatus").as(Integer.class), BaseEntity.RECORD_STATE_VALID)); list.add(cb.notEqual(root.get("recordStatus").as(Integer.class), BaseEntity.RECORE_STATE_COPY)); list.add(cb.notEqual(root.get("recordStatus").as(Integer.class), BaseEntity.RECORD_STATE_DELETE)); list.add(cb.notEqual(root.get("recordStatus").as(Integer.class), BaseEntity.RECORE_STATE_BGFLAG)); list.add(cb.notEqual(root.get("recordStatus").as(Integer.class), BaseEntity.RECORE_STATE_ZXFLAG)); return cb.and(list.toArray(new Predicate[] {})); } }; List gkjyrlist = query.findAll(spec, GkjyrEntity.class); int jyrnum = gkjyrlist != null ? gkjyrlist.size() : 0; map.put("jyrnum", jyrnum + ""); // 危险货物经营人个数 int whjyr = 0; if (gkjyrlist != null) { for (GkjyrEntity gkjyrEntity : gkjyrlist) { if (gkjyrEntity.getSfwhqy() != null && gkjyrEntity.getSfwhqy().getText().equals("是")) { whjyr += 1; } } } map.put("whjyr", whjyr + ""); // 泊位总数量 Specification spec2 = new Specification() { @Override public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder cb) { List list = new ArrayList(); if (StringUtils.isNotEmpty(szdid)) { list.add(cb.like(root.get("szd").get("id").as(String.class), "%" + szdid + "%")); } if (StringUtils.isNotEmpty(gkid)) { list.add(cb.like(root.get("szgk").get("id").as(String.class), "%" + gkid + "%")); } if (StringUtils.isNotEmpty(gqid)) { list.add(cb.like(root.get("szgq").get("id").as(String.class), "%" + gqid + "%")); } list.add(cb.equal(root.get("recordStatus").as(Integer.class), BaseEntity.RECORD_STATE_VALID)); return cb.and(list.toArray(new Predicate[] {})); } }; List bwlist = query.findAll(spec2, BwEntity.class); int bwnum = bwlist != null ? bwlist.size() : 0; map.put("bwnum", bwnum + ""); //许可证有效期 内的企业数 Specification spec4 = new Specification() { @Override public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder cb) { List list = new ArrayList(); if (StringUtils.isNotEmpty(gqid)) { list.add(cb.equal(root.get("ssgq").as(String.class), gqid)); } list.add(cb.equal(root.get("recordStatus").as(Integer.class), BaseEntity.RECORD_STATE_VALID)); list.add(cb.equal(root.get("sfyx").as(Integer.class), BaseEntity.RECORD_STATE_VALID)); return cb.and(list.toArray(new Predicate[] {})); } }; List qyslist = query.findAll(spec4, XkzxxEntity.class); map.put("xkzyxqnqys", qyslist.size()); // 万吨级以上泊位个数 int wdjysbw = 0; if (bwlist != null) { for (BwEntity bwEntity : bwlist) { if (bwEntity.getSjkpnl() != null && bwEntity.getSjkpnl() > 10000) { wdjysbw += 1; } } } map.put("wdjysbw", wdjysbw + ""); // 设计总靠泊能力 double bwztul = 0; for (BwEntity bw : bwlist) { if (null != bw.getNhwtgnl()) { bwztul += Double.parseDouble(bw.getNhwtgnl()); }else if(null==bw.getNhwtgnl()&&bw.getNjzxtgnl()!=null){ bwztul += Double.parseDouble(bw.getNjzxtgnl()); bwztul = bwztul*10; } } bwztul = bwztul / 10000; BigDecimal bc = new BigDecimal(bwztul); bwztul = bc.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); map.put("bwztul", bwztul + ""); // 当日普货申请数及当日总吞吐量 int drphsqs = 0; double drzttl = 0; Specification spec3 = new Specification() { @Override public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder cb) { List list = new ArrayList(); if (StringUtils.isNotEmpty(szdid)) { list.add(cb.like(root.get("szd").get("id").as(String.class), "%" + szdid + "%")); } if (StringUtils.isNotEmpty(gkid)) { list.add(cb.like(root.get("szgk").get("id").as(String.class), "%" + gkid + "%")); } if (StringUtils.isNotEmpty(gqid)) { list.add(cb.like(root.get("szgq").get("id").as(String.class), "%" + gqid + "%")); } list.add(cb.notEqual(root.get("recordStatus").as(Integer.class), BaseEntity.RECORE_STATE_COPY)); list.add(cb.notEqual(root.get("recordStatus").as(Integer.class), BaseEntity.RECORD_STATE_DELETE)); Calendar startCal = Calendar.getInstance(); startCal.set(Calendar.HOUR_OF_DAY, 0); startCal.set(Calendar.MINUTE, 0); startCal.set(Calendar.SECOND, 0); Expression issueStart = cb.literal(startCal.getTime()); Calendar endCal = Calendar.getInstance(); endCal.setTime(startCal.getTime()); endCal.add(Calendar.DAY_OF_MONTH, 1); endCal.add(Calendar.SECOND, -1); Expression issueEnd = cb.literal(endCal.getTime()); list.add(cb.between(root.get("bgsj").as(Timestamp.class), issueStart, issueEnd)); return cb.and(list.toArray(new Predicate[] {})); } }; List dcsblist = query.findAll(spec3, DcsbEntity.class); for (DcsbEntity dcsb : dcsblist) { // String creatTime = new // SimpleDateFormat("yyyy-MM-dd").format(dcsb.getCreateDateTime()); // String today = new SimpleDateFormat("yyyy-MM-dd").format(new // Date()); // if (today.equals(creatTime)) { // drphsqs += 1; // } drphsqs += 1; drzttl += dcsb.getZysl(); } map.put("drphsqs", drphsqs + ""); map.put("drzttl", drzttl + ""); return map; } @RequestMapping(value = "/getData") @ResponseBody public WebJsonResult getData(Model model, String gkid, String gqid) { WebJsonResult wr = success(); try { Map map = getXx(null, gkid, gqid); if (!StringUtils.isEmpty(gkid)) { GkEntity gk = gkService.findOne(gkid); map.put("title", gk != null ? gk.getGkmc() : ""); } if (!StringUtils.isEmpty(gqid)) { GqEntity gq = gqService.findOne(gqid); map.put("title", gq != null ? gq.getGqmc() : ""); } wr.setAttrs(map); } catch (Exception e) { wr.setSuccess(false); wr.setMessage("操作失败!"); e.printStackTrace(); } return wr; } /*下载用户操作手册: *市级: 经营人 2 行政人员 1 *省级:行政人员 0 */ @RequestMapping(value = "/downloadUserOperationFile") public WebJsonResult downloadUserOperationFile(String userId, HttpServletRequest request,HttpServletResponse response) { // path是指欲下载的文件的路径。 String path = ""; String fileName = ""; if(userId.equals("0")){ path = GlobalData.UPLOAD_FILE_PATH + "\\userOperationFile\\1.pdf"; fileName = "省厅行政人员系统操作手册.pdf"; }else if(userId.equals("1")){ path = GlobalData.UPLOAD_FILE_PATH + "\\userOperationFile\\2.pdf"; fileName = "市级行政人员系统操作手册.pdf"; }else{ path = GlobalData.UPLOAD_FILE_PATH + "\\userOperationFile\\3.pdf"; fileName = "市级经营人系统操作手册.pdf"; } try { // 以流的形式下载文件。 InputStream fis = new BufferedInputStream(new FileInputStream(path)); byte[] buffer = new byte[fis.available()]; fis.read(buffer); fis.close(); // 设置response的Header response.setCharacterEncoding("utf-8"); response.setContentType("multipart/form-data"); fileName = URLEncoder.encode(fileName, "UTF-8"); response.setHeader("Content-Disposition", "attachment;fileName=" + fileName); response.getOutputStream().write(buffer); } catch (IOException e) { e.printStackTrace(); } return null; } }