AxCtl.java 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762
  1. package com.xt.jygl.gkjcxx.ax.ctl;
  2. import java.io.BufferedReader;
  3. import java.io.File;
  4. import java.io.FileOutputStream;
  5. import java.io.FileReader;
  6. import java.io.IOException;
  7. import java.io.UnsupportedEncodingException;
  8. import java.net.URLEncoder;
  9. import java.text.SimpleDateFormat;
  10. import java.util.ArrayList;
  11. import java.util.Date;
  12. import java.util.List;
  13. import java.util.Map;
  14. import javax.persistence.criteria.CriteriaBuilder;
  15. import javax.persistence.criteria.CriteriaBuilder.In;
  16. import javax.persistence.criteria.CriteriaQuery;
  17. import javax.persistence.criteria.Predicate;
  18. import javax.persistence.criteria.Root;
  19. import javax.servlet.ServletOutputStream;
  20. import javax.servlet.http.HttpServletRequest;
  21. import javax.servlet.http.HttpServletResponse;
  22. import net.sf.json.JSONArray;
  23. import net.sf.json.JSONObject;
  24. import org.springframework.beans.BeanUtils;
  25. import org.springframework.beans.factory.annotation.Autowired;
  26. import org.springframework.data.domain.Page;
  27. import org.springframework.data.jpa.domain.Specification;
  28. import org.springframework.stereotype.Controller;
  29. import org.springframework.ui.Model;
  30. import org.springframework.web.bind.annotation.RequestMapping;
  31. import org.springframework.web.bind.annotation.RequestParam;
  32. import org.springframework.web.bind.annotation.ResponseBody;
  33. import org.springframework.web.multipart.MultipartFile;
  34. import cache.CacheSearchCondition;
  35. import com.fasterxml.jackson.core.JsonProcessingException;
  36. import com.xt.jygl.common.BaseWebCtl;
  37. import com.xt.jygl.common.Constants;
  38. import com.xt.jygl.common.GlobalData;
  39. import com.xt.jygl.common.Utils;
  40. import com.xt.jygl.gkjcxx.ax.client.AxWebService;
  41. import com.xt.jygl.gkjcxx.ax.entity.AxEntity;
  42. import com.xt.jygl.gkjcxx.ax.service.AxService;
  43. import com.xt.jygl.gkjcxx.ax.vo.AxVo;
  44. import com.xt.jygl.gkjcxx.gk.entity.GkEntity;
  45. import com.xt.jygl.gkjcxx.gk.service.GkService;
  46. import com.xt.jygl.gkjcxx.gq.entity.GqEntity;
  47. import com.xt.jygl.gkjcxx.gq.service.GqService;
  48. import com.xt.jygl.gkjygl.gkjyr.jyrjbxx.entity.GkjyrEntity;
  49. import com.xt.jygl.gkjygl.gkjyr.jyrjbxx.service.GkjyrService;
  50. import com.xtframe.core.anon.auth.RequiresPermissions;
  51. import com.xtframe.core.base.ctl.WebJsonResult;
  52. import com.xtframe.core.support.SecurityMgr;
  53. import com.xtframe.sec.code.entity.CodeEntity;
  54. import com.xtframe.sec.common.BaseEntity;
  55. import com.xtframe.sec.common.QueryService;
  56. import com.xtframe.sec.common.SimplePageRequest;
  57. import com.xtframe.sec.utils.SecUtils;
  58. import com.xtframe.util.StringUtils;
  59. @Controller
  60. @RequestMapping("/ax")
  61. public class AxCtl extends BaseWebCtl {
  62. @Autowired
  63. private SecurityMgr securityMgr;
  64. @Autowired
  65. private QueryService query;
  66. @Autowired
  67. private AxService axService;
  68. @Autowired
  69. private GkService gkService;
  70. @Autowired
  71. private GqService gqService;
  72. @Autowired
  73. private GkjyrService gkjyrService;
  74. @RequestMapping(value = "/main")
  75. @RequiresPermissions("ax:main")
  76. public String main(SimplePageRequest page, Model model, final HttpServletRequest request, final String axmc, final String szdid, final String szgkid, final String szgqid, final String ssjyr, String menuid,final String lyztid) throws JsonProcessingException {
  77. final Map<String, Object> cacheSCmap = CacheSearchCondition.cacheSCmap(request,"ax");
  78. Specification<AxEntity> spec = new Specification<AxEntity>() {
  79. // 查询条件
  80. @Override
  81. public Predicate toPredicate(Root<AxEntity> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
  82. List<Predicate> list = new ArrayList<Predicate>();
  83. if (StringUtils.isNotEmpty(axmc)) {
  84. list.add(cb.like(root.get("axmc").as(String.class), "%" + axmc + "%"));
  85. } else if (isGET(request)) {
  86. CacheSearchCondition.predicateList(list, cacheSCmap, root, cb, null,"axmc");
  87. }
  88. if (StringUtils.isNotEmpty(szdid)) {
  89. list.add(cb.like(root.get("szd").get("id").as(String.class), "%" + szdid + "%"));
  90. } else if (isGET(request)) {
  91. CacheSearchCondition.predicateList(list, cacheSCmap, root, cb, "id","szd","szdid");
  92. }
  93. if (StringUtils.isNotEmpty(szgkid)) {
  94. list.add(cb.like(root.get("szgk").get("id").as(String.class), "%" + szgkid + "%"));
  95. } else if (isGET(request)) {
  96. //list.add(cb.like(root.get("szgk").get("id").as(String.class), "%" + SearchCondition.axszgk + "%"));
  97. CacheSearchCondition.predicateList(list, cacheSCmap, root, cb, "id","szgk","szgkid");
  98. }
  99. if (StringUtils.isNotEmpty(szgqid)) {
  100. list.add(cb.like(root.get("szgq").get("id").as(String.class), "%" + szgqid + "%"));
  101. } else if (isGET(request)) {
  102. //list.add(cb.like(root.get("szgq").get("id").as(String.class), "%" + SearchCondition.axszgq + "%"));
  103. CacheSearchCondition.predicateList(list, cacheSCmap, root, cb, "id","szgq","szgqid");
  104. }
  105. if (StringUtils.isNotEmpty(ssjyr)) {
  106. list.add(cb.like(root.get("ssjyr").get("gkjyr").as(String.class), "%" + ssjyr + "%"));
  107. } else if (isGET(request)) {
  108. //list.add(cb.like(root.get("ssjyr").get("gkjyr").as(String.class), "%" + SearchCondition.axssjyr + "%"));
  109. CacheSearchCondition.predicateList(list, cacheSCmap, root, cb, "gkjyr","ssjyr");
  110. }
  111. if (StringUtils.isNotEmpty(lyztid)) {
  112. list.add(cb.like(root.get("lyzt").get("id").as(String.class), "%" + lyztid + "%"));
  113. } else if (isGET(request)) {
  114. //list.add(cb.like(root.get("lyzt").get("id").as(String.class), "%" + SearchCondition.axlyzt + "%"));
  115. CacheSearchCondition.predicateList(list, cacheSCmap, root, cb, "id","lyzt","lyztid");
  116. }
  117. // 经营人只能查看自己企业下的数据,非经营人只能查看自己所在地的数据
  118. if (isJyr()) {
  119. list.add(cb.like(root.get("ssjyr").get("id").as(String.class), "%" + getSsjyr().getId() + "%"));
  120. } else {
  121. In<String> in = cb.in(root.get("szgq").get("id").as(String.class));
  122. @SuppressWarnings("unchecked")
  123. List<String> gqlist = (List<String>) Utils.getSession()
  124. .getAttribute("gqList");
  125. if (gqlist != null && gqlist.size() > 0) {
  126. for (int i = 0; i < gqlist.size(); i++) {
  127. in.value(gqlist.get(i));
  128. }
  129. list.add(in);
  130. }
  131. }
  132. list.add(cb.notEqual(root.get("recordStatus").as(Integer.class), BaseEntity.RECORD_STATE_DELETE));
  133. return cb.and(list.toArray(new Predicate[] {}));
  134. }
  135. };
  136. /* String user1 = (String) Utils.getSession().getAttribute("user");
  137. String user2 = SecUtils.getCurrUser().getId();
  138. if(user2!=null){
  139. if(!user2.equals(user1)){
  140. SearchCondition.axpage = 1;
  141. SearchCondition.axmc = "";
  142. SearchCondition.axszd = "";
  143. SearchCondition.axszgk = "";
  144. SearchCondition.axszgq = "";
  145. SearchCondition.axssjyr = "";
  146. SearchCondition.axlyzt = "";
  147. }
  148. }
  149. Utils.getSession().setAttribute("user", user2);
  150. if (page.getPage() < 1) {
  151. page.setPage(SearchCondition.axpage);
  152. }*/
  153. if (page.getPage() < 1) {
  154. Object axpage = CacheSearchCondition.cacheSCmapVal(cacheSCmap, "axpage");
  155. if (StringUtils.isEmpty(axpage) || !org.apache.commons.lang.StringUtils.isNumeric(String.valueOf(axpage))) {
  156. axpage = "1";
  157. }
  158. page.setPage(Integer.valueOf(String.valueOf(axpage)));
  159. }
  160. /*page.setSort("axmc");
  161. page.setOrder("asc");*/
  162. page.setSort("createDateTime");
  163. page.setOrder("desc");
  164. Page<AxEntity> list = query.findAll(spec, toPageRequest(page), AxEntity.class);
  165. List<AxVo> voList = new ArrayList<AxVo>();
  166. for (AxEntity entity : list) {
  167. AxVo vo = new AxVo();
  168. if (null != entity) {
  169. BeanUtils.copyProperties(entity, vo);
  170. vo.setSzdzw(entity.getSzd() != null ? entity.getSzd().getText() : "");
  171. vo.setSzgqzw(entity.getSzgq() != null ? entity.getSzgq().getGqmc() : "");
  172. vo.setSzgkzw(entity.getSzgk() != null ? entity.getSzgk().getGkmc() : "");
  173. vo.setSsjyrzw(entity.getSsjyr() != null ? entity.getSsjyr().getGkjyr() : "");
  174. vo.setAxlxzw(entity.getAxlx() != null ? entity.getAxlx().getText() : "");
  175. vo.setAxgnzw(entity.getAxgn() != null ? entity.getAxgn().getText() : "");
  176. vo.setLyztzw(entity.getLyzt() != null ? entity.getLyzt().getText() : "");
  177. vo.setNbazw(entity.getNba() != null?entity.getNba().getText() : "");
  178. vo.setSzd(entity.getSzd() != null ? entity.getSzd().getId() : "");
  179. vo.setSzgq(entity.getSzgq() != null ? entity.getSzgq().getId() : "");
  180. vo.setSzgk(entity.getSzgk() != null ? entity.getSzgk().getId() : "");
  181. vo.setSsjyr(entity.getSsjyr() != null ? entity.getSsjyr().getId() : "");
  182. vo.setAxlx(entity.getAxlx() != null ? entity.getAxlx().getId() : "");
  183. vo.setAxgn(entity.getAxgn() != null ? entity.getAxgn().getId() : "");
  184. vo.setLyzt(entity.getLyzt() != null ? entity.getLyzt().getId() : "");
  185. vo.setNba(entity.getNba() != null?entity.getNba().getId() : "");
  186. voList.add(vo);
  187. }
  188. }
  189. /*if (isPOST(request)) {
  190. SearchCondition.axpage = page.getPage();
  191. SearchCondition.axmc = axmc;
  192. SearchCondition.axszd = szdid;
  193. SearchCondition.axszgk = szgkid;
  194. SearchCondition.axszgq = szgqid;
  195. SearchCondition.axssjyr = ssjyr;
  196. SearchCondition.axlyzt = lyztid;
  197. }*/
  198. if (isPOST(request)) {
  199. cacheSCmap.put("axpage", page.getPage());
  200. CacheSearchCondition.putCacheSCmap(request.getParameterMap(), cacheSCmap);
  201. }
  202. model.addAttribute("list", voList);
  203. model.addAttribute("axmc", CacheSearchCondition.cacheSCmapVal(cacheSCmap, "axmc"));
  204. model.addAttribute("szd", CacheSearchCondition.cacheSCmapVal(cacheSCmap, "szdid"));
  205. model.addAttribute("szgk", CacheSearchCondition.cacheSCmapVal(cacheSCmap, "szgkid"));
  206. model.addAttribute("szgq", CacheSearchCondition.cacheSCmapVal(cacheSCmap, "szgqid"));
  207. model.addAttribute("ssjyr", CacheSearchCondition.cacheSCmapVal(cacheSCmap, "ssjyr"));
  208. model.addAttribute("lyzt",CacheSearchCondition.cacheSCmapVal(cacheSCmap, "lyztid"));
  209. List<CodeEntity> lyztlist = securityMgr.codeService().findValidCodesByGroupCode("AXLYZT");
  210. model.addAttribute("lyztlist", JSONArray.fromObject(lyztlist, config).toString());
  211. model.addAttribute("menuid", menuid);
  212. // 翻页共通
  213. putPageInfo(model, page, list);
  214. return "gkjcxx/ax/axmain";
  215. }
  216. @RequestMapping(value = "/delete")
  217. @RequiresPermissions("ax:delete")
  218. @ResponseBody
  219. public WebJsonResult logicdelete(Model model, String id) {
  220. WebJsonResult wr = success();
  221. try {
  222. // 逻辑删除
  223. axService.logicDelete(id);
  224. // 如果是市级删除,省级也删除
  225. AxEntity ax = axService.findOne(id);
  226. try {
  227. if (GlobalData.DEPLOY_MODE.equals(Constants.DEPLOY_MODE_CITY) && needWS()) {
  228. AxWebService webService = axService.getWebService(null);
  229. webService.delete(id);
  230. ax.setTbzt(Constants.NO);
  231. axService.save(ax);
  232. }
  233. } catch (Exception e) {
  234. ax.setTbzt(Constants.NO);
  235. axService.save(ax);
  236. }
  237. } catch (Exception e) {
  238. wr.setSuccess(false);
  239. wr.setMessage("操作失败!");
  240. e.printStackTrace();
  241. }
  242. return wr;
  243. }
  244. @RequestMapping(value = "/save")
  245. @ResponseBody
  246. @RequiresPermissions("ax:add")
  247. public WebJsonResult save(Model model, AxEntity code, String szdid, String szgkid, String szgqid, String ssjyrid, String axlxid, String axgnid, String lyztid,String nbaid) {
  248. // how:如果是新增直接保存,如果更新,先取出数据库中记录,然后更新页面传过来的字段
  249. // why:这样的话一些在前台无需显示的字段保证不会丢失,同时一个个字段设置有助于bug排查
  250. WebJsonResult wr = success();
  251. // 必填字段的后台验证
  252. if (StringUtils.isEmpty(szdid)) {
  253. wr.setSuccess(false);
  254. wr.setMessage("请选择所在地");
  255. return wr;
  256. }
  257. if (StringUtils.isEmpty(szgkid)) {
  258. wr.setSuccess(false);
  259. wr.setMessage("请选择所在港口");
  260. return wr;
  261. }
  262. if (StringUtils.isEmpty(szgqid)) {
  263. wr.setSuccess(false);
  264. wr.setMessage("请选择所在港区");
  265. return wr;
  266. }
  267. if (StringUtils.isEmpty(ssjyrid)) {
  268. wr.setSuccess(false);
  269. wr.setMessage("请选择所属经营人");
  270. return wr;
  271. }
  272. AxEntity axEntity = new AxEntity();
  273. try {
  274. if (!StringUtils.isEmpty(code.getId())) {
  275. // 修改
  276. axEntity = axService.findOne(code.getId());
  277. }
  278. axEntity.setAxcd(code.getAxcd());
  279. GkEntity szgk = new GkEntity();
  280. szgk.setId(szgkid);
  281. axEntity.setSzgk(szgk);
  282. GqEntity szgq = new GqEntity();
  283. szgq.setId(szgqid);
  284. axEntity.setSzgq(szgq);
  285. GkjyrEntity ssjyr = new GkjyrEntity();
  286. ssjyr.setId(ssjyrid);
  287. axEntity.setSsjyr(ssjyr);
  288. /*
  289. * axEntity.setAxlx(code.getAxlx());
  290. * axEntity.setAxgn(code.getAxgn());
  291. * axEntity.setLyzt(code.getLyzt());
  292. */
  293. // 非必填字段的验证,如为空则不验证,不为空则验证
  294. if (!StringUtils.isEmpty(axlxid)) {
  295. CodeEntity axlx = new CodeEntity(axlxid);
  296. axEntity.setAxlx(axlx);
  297. }
  298. if (!StringUtils.isEmpty(axgnid)) {
  299. CodeEntity axgn = new CodeEntity(axgnid);
  300. axEntity.setAxgn(axgn);
  301. }
  302. if (!StringUtils.isEmpty(lyztid)) {
  303. CodeEntity lyzt = new CodeEntity(lyztid);
  304. axEntity.setLyzt(lyzt);
  305. }
  306. if (!StringUtils.isEmpty(nbaid)) {
  307. CodeEntity nba = new CodeEntity(nbaid);
  308. axEntity.setNba(nba);
  309. }
  310. axEntity.setZyid(code.getZyid());
  311. axEntity.setJzrq(code.getJzrq());
  312. axEntity.setAxcd(code.getAxcd());
  313. axEntity.setQdzb(code.getQdzb());
  314. axEntity.setZdzb(code.getZdzb());
  315. axEntity.setAxpb(code.getAxpb());
  316. axEntity.setBz(code.getBz());
  317. axEntity.setWaterarea(code.getWaterarea());
  318. axEntity.setLandarea(code.getLandarea());
  319. axEntity.setLinelength(code.getLinelength());
  320. axEntity.setQdzby(code.getQdzby());
  321. axEntity.setZdzby(code.getZdzby());
  322. axEntity.setAxwzms(code.getAxwzms());
  323. GqEntity gq = gqService.findOne(szgqid);
  324. axEntity.setSsgkglbm(gq != null ? gq.getSsgkglbm() : null);
  325. CodeEntity szd = new CodeEntity(szdid);
  326. axEntity.setSzd(szd);
  327. axService.save(axEntity);
  328. // 如果是市级新增或者修改,保存后同步到省级
  329. /*try {
  330. if (GlobalData.DEPLOY_MODE.equals(Constants.DEPLOY_MODE_CITY) && needWS()) {
  331. AxWebService webService = axService.getWebService(null);
  332. webService.save(code);
  333. code.setTbzt(Constants.YES);
  334. axService.save(code);
  335. }
  336. } catch (Exception e) {
  337. code.setTbzt(Constants.NO);
  338. axService.save(code);
  339. }*/
  340. } catch (Exception e) {
  341. wr.setSuccess(false);
  342. wr.setMessage("操作失败!");
  343. e.printStackTrace();
  344. }
  345. return wr;
  346. }
  347. @RequestMapping(value = "/edit")
  348. @RequiresPermissions("ax:edit")
  349. public String edit(Model model, String id) {
  350. List<CodeEntity> axlxlist = securityMgr.codeService().findValidCodesByGroupCode("AXLX");
  351. model.addAttribute("axlxlist", JSONArray.fromObject(axlxlist, config).toString());
  352. List<CodeEntity> axgnlist = securityMgr.codeService().findValidCodesByGroupCode("AXGN");
  353. model.addAttribute("axgnlist", JSONArray.fromObject(axgnlist, config).toString());
  354. List<CodeEntity> lyztlist = securityMgr.codeService().findValidCodesByGroupCode("AXLYZT");
  355. model.addAttribute("lyztlist", JSONArray.fromObject(lyztlist, config).toString());
  356. List<CodeEntity> nbalist = securityMgr.codeService().findValidCodesByGroupCode("NBA");
  357. model.addAttribute("nbalist",JSONArray.fromObject(nbalist,config).toString());
  358. AxEntity entity = axService.findOne(id);
  359. AxVo vo = new AxVo();
  360. BeanUtils.copyProperties(entity, vo);
  361. vo.setSzdzw(entity.getSzd() != null ? entity.getSzd().getText() : "");
  362. vo.setSzgqzw(entity.getSzgq() != null ? entity.getSzgq().getGqmc() : "");
  363. vo.setSzgkzw(entity.getSzgk() != null ? entity.getSzgk().getGkmc() : "");
  364. vo.setSsjyrzw(entity.getSsjyr() != null ? entity.getSsjyr().getGkjyr() : "");
  365. vo.setAxlxzw(entity.getAxlx() != null ? entity.getAxlx().getText() : "");
  366. vo.setAxgnzw(entity.getAxgn() != null ? entity.getAxgn().getText() : "");
  367. vo.setLyztzw(entity.getLyzt() != null ? entity.getLyzt().getText() : "");
  368. vo.setNbazw(entity.getNba() != null?entity.getNba().getText() : "");
  369. vo.setSzd(entity.getSzd() != null ? entity.getSzd().getId() : "");
  370. vo.setSzgq(entity.getSzgq() != null ? entity.getSzgq().getId() : "");
  371. vo.setSzgk(entity.getSzgk() != null ? entity.getSzgk().getId() : "");
  372. vo.setSsjyr(entity.getSsjyr() != null ? entity.getSsjyr().getId() : "");
  373. vo.setAxlx(entity.getAxlx() != null ? entity.getAxlx().getId() : "");
  374. vo.setAxgn(entity.getAxgn() != null ? entity.getAxgn().getId() : "");
  375. vo.setLyzt(entity.getLyzt() != null ? entity.getLyzt().getId() : "");
  376. vo.setNba(entity.getNba() != null?entity.getNba().getId() : "");
  377. if(StringUtils.isEmpty(vo.getZyid())){
  378. SimpleDateFormat dateTimeFormat = new SimpleDateFormat("yyyyMMddHHmmss");
  379. String zyid = dateTimeFormat.format(new Date());
  380. vo.setZyid(zyid);
  381. }
  382. model.addAttribute("record", vo);
  383. model.addAttribute("jyr", getSsjyr() != null ? JSONObject.fromObject(getSsjyr()).toString() : null);
  384. return "gkjcxx/ax/axedit";
  385. }
  386. @RequestMapping(value = "/view")
  387. @RequiresPermissions("ax:main")
  388. public String view(Model model, String id) {
  389. AxVo vo = new AxVo();
  390. AxEntity entity = axService.findOne(id);
  391. if (entity != null) {
  392. BeanUtils.copyProperties(entity, vo);
  393. vo.setSzdzw(entity.getSzd() != null ? entity.getSzd().getText() : "");
  394. vo.setSzgqzw(entity.getSzgq() != null ? entity.getSzgq().getGqmc() : "");
  395. vo.setSzgkzw(entity.getSzgk() != null ? entity.getSzgk().getGkmc() : "");
  396. vo.setSsjyrzw(entity.getSsjyr() != null ? entity.getSsjyr().getGkjyr() : "");
  397. vo.setAxlxzw(entity.getAxlx() != null ? entity.getAxlx().getText() : "");
  398. vo.setAxgnzw(entity.getAxgn() != null ? entity.getAxgn().getText() : "");
  399. vo.setLyztzw(entity.getLyzt() != null ? entity.getLyzt().getText() : "");
  400. vo.setNbazw(entity.getNba() != null?entity.getNba().getText() : "");
  401. vo.setSzd(entity.getSzd() != null ? entity.getSzd().getId() : "");
  402. vo.setSzgq(entity.getSzgq() != null ? entity.getSzgq().getId() : "");
  403. vo.setSzgk(entity.getSzgk() != null ? entity.getSzgk().getId() : "");
  404. vo.setSsjyr(entity.getSsjyr() != null ? entity.getSsjyr().getId() : "");
  405. vo.setAxlx(entity.getAxlx() != null ? entity.getAxlx().getId() : "");
  406. vo.setAxgn(entity.getAxgn() != null ? entity.getAxgn().getId() : "");
  407. vo.setLyzt(entity.getLyzt() != null ? entity.getLyzt().getId() : "");
  408. vo.setNba(entity.getNba() != null?entity.getNba().getId() : "");
  409. if (null != entity.getJzrq()) {
  410. vo.setJzrqfmt(new SimpleDateFormat("yyyy-MM-dd").format(entity.getJzrq()));
  411. }
  412. }
  413. model.addAttribute("record", vo);
  414. return "gkjcxx/ax/axview";
  415. }
  416. @RequestMapping(value = "/add")
  417. @RequiresPermissions("ax:add")
  418. public String add(Model model) {
  419. List<CodeEntity> axlxlist = securityMgr.codeService().findValidCodesByGroupCode("AXLX");
  420. model.addAttribute("axlxlist", JSONArray.fromObject(axlxlist, config).toString());
  421. List<CodeEntity> axgnlist = securityMgr.codeService().findValidCodesByGroupCode("AXGN");
  422. model.addAttribute("axgnlist", JSONArray.fromObject(axgnlist, config).toString());
  423. List<CodeEntity> lyztlist = securityMgr.codeService().findValidCodesByGroupCode("AXLYZT");
  424. model.addAttribute("lyztlist", JSONArray.fromObject(lyztlist, config).toString());
  425. List<CodeEntity> nbalist = securityMgr.codeService().findValidCodesByGroupCode("NBA");
  426. model.addAttribute("nbalist",JSONArray.fromObject(nbalist, config).toString());
  427. model.addAttribute("jyr", getSsjyr() != null ? JSONObject.fromObject(getSsjyr()).toString() : null);
  428. if(SecUtils.getCurrUser() != null){
  429. List<CodeEntity> list = securityMgr.codeService().findValidCodesByGroupCodeAndCity(Constants.GROUP_CODE_SZD, GlobalData.CITY_CODE);
  430. model.addAttribute("sz",list.size()==1?list.get(0).getId():"");
  431. if(list.size()==1){
  432. List<GkEntity> gklist = gkService.findBySzd(list.get(0).getId());
  433. model.addAttribute("gk",gklist.size()==1?gklist.get(0).getId():"");
  434. }
  435. }
  436. SimpleDateFormat dateTimeFormat = new SimpleDateFormat("yyyyMMddHHmmss");
  437. String zyid = dateTimeFormat.format(new Date());
  438. model.addAttribute("zyid", zyid);
  439. return "gkjcxx/ax/axadd";
  440. }
  441. /**
  442. * 导出全部数据到excel
  443. *
  444. * @param response
  445. * @return
  446. */
  447. @RequestMapping(value = "/exportExcelAll")
  448. public String exportExcelAll(HttpServletResponse response, final String axmc, final String szdid, final String szgkid, final String szgqid, final String ssjyr) {
  449. Specification<AxEntity> spec = new Specification<AxEntity>() {
  450. // 查询条件
  451. @Override
  452. public Predicate toPredicate(Root<AxEntity> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
  453. List<Predicate> list = new ArrayList<Predicate>();
  454. if (StringUtils.isNotEmpty(axmc)) {
  455. list.add(cb.like(root.get("axmc").as(String.class), "%" + enCodeStr(axmc) + "%"));
  456. }
  457. if (StringUtils.isNotEmpty(szdid)) {
  458. list.add(cb.like(root.get("szd").get("id").as(String.class), "%" + szdid + "%"));
  459. }
  460. if (StringUtils.isNotEmpty(szgkid)) {
  461. list.add(cb.like(root.get("szgk").get("id").as(String.class), "%" + szgkid + "%"));
  462. }
  463. if (StringUtils.isNotEmpty(szgqid)) {
  464. list.add(cb.like(root.get("szgq").get("id").as(String.class), "%" + szgqid + "%"));
  465. }
  466. if (StringUtils.isNotEmpty(ssjyr)) {
  467. list.add(cb.like(root.get("ssjyr").get("gkjyr").as(String.class), "%" + enCodeStr(ssjyr) + "%"));
  468. }
  469. // 经营人只能查看自己企业下的数据,非经营人只能查看自己所在地的数据
  470. if (isJyr()) {
  471. list.add(cb.like(root.get("ssjyr").get("id").as(String.class), "%" + getSsjyr().getId() + "%"));
  472. } else {
  473. list.add(cb.like(root.get("szd").get("id").as(String.class), "%" + SecUtils.getCurrUser().getSzd().getId() + "%"));
  474. }
  475. list.add(cb.notEqual(root.get("recordStatus").as(Integer.class), BaseEntity.RECORD_STATE_DELETE));
  476. return cb.and(list.toArray(new Predicate[] {}));
  477. }
  478. };
  479. List<AxEntity> list = query.findAll(spec, AxEntity.class);
  480. List<AxVo> voList = new ArrayList<AxVo>();
  481. for (AxEntity entity : list) {
  482. AxVo vo = new AxVo();
  483. if (null != entity) {
  484. BeanUtils.copyProperties(entity, vo);
  485. vo.setSzdzw(entity.getSzd() != null ? entity.getSzd().getText() : "");
  486. vo.setSzgqzw(entity.getSzgq() != null ? entity.getSzgq().getGqmc() : "");
  487. vo.setSzgkzw(entity.getSzgk() != null ? entity.getSzgk().getGkmc() : "");
  488. vo.setSsjyrzw(entity.getSsjyr() != null ? entity.getSsjyr().getGkjyr() : "");
  489. vo.setAxlxzw(entity.getAxlx() != null ? entity.getAxlx().getText() : "");
  490. vo.setAxgnzw(entity.getAxgn() != null ? entity.getAxgn().getText() : "");
  491. vo.setLyztzw(entity.getLyzt() != null ? entity.getLyzt().getText() : "");
  492. vo.setNbazw(entity.getNba() != null?entity.getNba().getText() : "");
  493. vo.setSzd(entity.getSzd() != null ? entity.getSzd().getId() : "");
  494. vo.setSzgq(entity.getSzgq() != null ? entity.getSzgq().getId() : "");
  495. vo.setSzgk(entity.getSzgk() != null ? entity.getSzgk().getId() : "");
  496. vo.setSsjyr(entity.getSsjyr() != null ? entity.getSsjyr().getId() : "");
  497. vo.setAxlx(entity.getAxlx() != null ? entity.getAxlx().getId() : "");
  498. vo.setAxgn(entity.getAxgn() != null ? entity.getAxgn().getId() : "");
  499. vo.setLyzt(entity.getLyzt() != null ? entity.getLyzt().getId() : "");
  500. vo.setNba(entity.getNba() != null?entity.getNba().getId() : "");
  501. voList.add(vo);
  502. }
  503. }
  504. response.setContentType("application/binary;charset=iso-8859-1");
  505. try {
  506. ServletOutputStream outputStream = response.getOutputStream();
  507. String fileName = new String(("岸线信息全部").getBytes(), "iso-8859-1");
  508. response.setHeader("Content-disposition", "attachment; filename=" + fileName + ".xlsx");// 组装附件名称和格式
  509. String[] titles = { "序号", "岸线名称", "所在港口", "所在港区", "所属经营人", "利用状态" };
  510. axService.exportExcelAll(voList, titles, outputStream);
  511. } catch (IOException e) {
  512. e.printStackTrace();
  513. }
  514. return null;
  515. }
  516. /**
  517. * 导出当前页数据到excel
  518. *
  519. * @param response
  520. * @param axmc
  521. * @param szdid
  522. * @param szgkid
  523. * @param szgqid
  524. * @param ssjyr
  525. * @return
  526. */
  527. @RequestMapping(value = "/exportExcelthisPage")
  528. public String exportExcelthisPage(SimplePageRequest page, HttpServletResponse response, final String axmc, final String szdid, final String szgkid, final String szgqid, final String ssjyr, int pageNum, int pageSize) {
  529. Specification<AxEntity> spec = new Specification<AxEntity>() {
  530. @Override
  531. public Predicate toPredicate(Root<AxEntity> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
  532. List<Predicate> list = new ArrayList<Predicate>();
  533. if (StringUtils.isNotEmpty(axmc)) {
  534. list.add(cb.like(root.get("axmc").as(String.class), "%" + axmc + "%"));
  535. }
  536. if (StringUtils.isNotEmpty(szdid)) {
  537. list.add(cb.like(root.get("szd").get("id").as(String.class), "%" + szdid + "%"));
  538. }
  539. if (StringUtils.isNotEmpty(szgkid)) {
  540. list.add(cb.like(root.get("szgk").get("id").as(String.class), "%" + szgkid + "%"));
  541. }
  542. if (StringUtils.isNotEmpty(szgqid)) {
  543. list.add(cb.like(root.get("szgq").get("id").as(String.class), "%" + szgqid + "%"));
  544. }
  545. if (StringUtils.isNotEmpty(ssjyr)) {
  546. list.add(cb.like(root.get("ssjyr").get("gkjyr").as(String.class), "%" + enCodeStr(ssjyr) + "%"));
  547. }
  548. if (isJyr()) {
  549. list.add(cb.like(root.get("ssjyr").get("id").as(String.class), "%" + getSsjyr().getId() + "%"));
  550. } else {
  551. list.add(cb.like(root.get("szd").get("id").as(String.class), "%" + SecUtils.getCurrUser().getSzd().getId() + "%"));
  552. }
  553. list.add(cb.notEqual(root.get("recordStatus").as(Integer.class), BaseEntity.RECORD_STATE_DELETE));
  554. return cb.and(list.toArray(new Predicate[] {}));
  555. }
  556. };
  557. page.setPage(pageNum);
  558. page.setRows(pageSize);
  559. page.setSort("axmc");
  560. page.setOrder("asc");
  561. Page<AxEntity> list = query.findAll(spec, toPageRequest(page), AxEntity.class);
  562. List<AxVo> voList = new ArrayList<AxVo>();
  563. for (AxEntity entity : list) {
  564. AxVo vo = new AxVo();
  565. if (null != entity) {
  566. BeanUtils.copyProperties(entity, vo);
  567. vo.setSzdzw(entity.getSzd() != null ? entity.getSzd().getText() : "");
  568. vo.setSzgqzw(entity.getSzgq() != null ? entity.getSzgq().getGqmc() : "");
  569. vo.setSzgkzw(entity.getSzgk() != null ? entity.getSzgk().getGkmc() : "");
  570. vo.setSsjyrzw(entity.getSsjyr() != null ? entity.getSsjyr().getGkjyr() : "");
  571. vo.setAxlxzw(entity.getAxlx() != null ? entity.getAxlx().getText() : "");
  572. vo.setAxgnzw(entity.getAxgn() != null ? entity.getAxgn().getText() : "");
  573. vo.setLyztzw(entity.getLyzt() != null ? entity.getLyzt().getText() : "");
  574. vo.setNbazw(entity.getNba() != null?entity.getNba().getText() : "");
  575. vo.setSzd(entity.getSzd() != null ? entity.getSzd().getId() : "");
  576. vo.setSzgq(entity.getSzgq() != null ? entity.getSzgq().getId() : "");
  577. vo.setSzgk(entity.getSzgk() != null ? entity.getSzgk().getId() : "");
  578. vo.setSsjyr(entity.getSsjyr() != null ? entity.getSsjyr().getId() : "");
  579. vo.setAxlx(entity.getAxlx() != null ? entity.getAxlx().getId() : "");
  580. vo.setAxgn(entity.getAxgn() != null ? entity.getAxgn().getId() : "");
  581. vo.setLyzt(entity.getLyzt() != null ? entity.getLyzt().getId() : "");
  582. vo.setNba(entity.getNba() != null?entity.getNba().getId() : "");
  583. voList.add(vo);
  584. }
  585. }
  586. response.setContentType("application/binary;charset=iso-8859-1");
  587. try {
  588. ServletOutputStream outputStream = response.getOutputStream();
  589. String fileName = new String(("岸线信息单页").getBytes(), "iso-8859-1");
  590. response.setHeader("Content-disposition", "attachment; filename=" + fileName + ".xlsx");// 组装附件名称和格式
  591. String[] titles = { "序号", "岸线名称", "所在港口", "所在港区", "所属经营人", "利用状态" };
  592. axService.exportExcelthisPage(voList, titles, outputStream);
  593. } catch (IOException e) {
  594. e.printStackTrace();
  595. }
  596. return null;
  597. }
  598. /**
  599. * 打开批量导入页面
  600. *
  601. * @param model
  602. * @return
  603. */
  604. @RequestMapping(value = "/inputAll")
  605. public String inputAll(Model model) {
  606. return "gkjcxx/ax/inputAll";
  607. }
  608. /**
  609. * 批量导入excel数据
  610. *
  611. * @param model
  612. * @return
  613. */
  614. @SuppressWarnings("unchecked")
  615. @RequestMapping(value = "/report")
  616. @ResponseBody
  617. public WebJsonResult report(@RequestParam MultipartFile file) throws IOException {
  618. WebJsonResult wr = success();
  619. try {
  620. Map<String, Object> map = axService.readReport(file.getInputStream());
  621. if (((List<String>) map.get("error")).size() > 0) {
  622. List<String> errorList = (List<String>) map.get("error");
  623. for (int j = 0; j < errorList.size(); j++) {
  624. File file1 = new File("D:/bug.txt");
  625. if (!file1.exists()) {
  626. file1.createNewFile();
  627. }
  628. FileOutputStream fos = new FileOutputStream("D:/bug.txt", true);
  629. fos.write(errorList.get(j).getBytes());
  630. fos.flush();
  631. fos.close();
  632. }
  633. wr.setMessage("导入文件有错误,请根据操作日志修改正确后重新导入!");
  634. } else {
  635. List<AxEntity> axList = (List<AxEntity>) map.get("axList");
  636. for (int i = 0; i < axList.size(); i++) {
  637. axService.save(axList.get(i));
  638. }
  639. wr.setMessage("数据导入成功!");
  640. }
  641. } catch (Exception e) {
  642. wr.setSuccess(false);
  643. wr.setMessage("操作失败!");
  644. e.printStackTrace();
  645. }
  646. return wr;
  647. }
  648. /**
  649. * 下载错误日志
  650. *
  651. * @param request
  652. * @param response
  653. * @throws UnsupportedEncodingException
  654. */
  655. @RequestMapping(value = "/downLoadTxt")
  656. public void DownLoadTxt(HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException {
  657. response.setCharacterEncoding("utf-8");
  658. response.setContentType("multipart/form-data");
  659. String fileName = "错误日志.txt";
  660. if ("FF".equals(getBrowser(request))) {
  661. // 针对火狐浏览器处理方式不一样了
  662. fileName = new String(fileName.getBytes("UTF-8"), "iso-8859-1");
  663. } else {
  664. fileName = URLEncoder.encode(fileName, "UTF-8");
  665. }
  666. response.setHeader("Content-Disposition", "attachment;fileName=" + fileName);
  667. File file = new File("D:/bug.txt");
  668. try {
  669. FileReader reader = new FileReader(file);
  670. BufferedReader br = new BufferedReader(reader);
  671. String line = br.readLine();
  672. while (line != null) {
  673. response.getOutputStream().write(line.getBytes());
  674. line = br.readLine();
  675. }
  676. br.close();
  677. file.delete();
  678. return;
  679. } catch (IOException e) {
  680. // TODO Auto-generated catch block
  681. e.printStackTrace();
  682. }
  683. }
  684. /**
  685. * 服务器端判断客户端浏览器类型(IE/FF/SF)
  686. *
  687. * @param request
  688. * @return
  689. */
  690. public static String getBrowser(HttpServletRequest request) {
  691. String UserAgent = request.getHeader("USER-AGENT").toLowerCase();
  692. if (UserAgent != null) {
  693. if (UserAgent.indexOf("msie") >= 0)
  694. return "IE";
  695. if (UserAgent.indexOf("firefox") >= 0)
  696. return "FF";
  697. if (UserAgent.indexOf("safari") >= 0)
  698. return "SF";
  699. }
  700. return null;
  701. }
  702. /***
  703. * 解决js传入参数乱码
  704. *
  705. * @param str
  706. * @return
  707. */
  708. static String enCodeStr(String str) {
  709. if (str == null) {
  710. str = "";
  711. }
  712. try {
  713. return new String(str.getBytes("iso-8859-1"), "UTF-8");
  714. } catch (UnsupportedEncodingException e) {
  715. e.printStackTrace();
  716. return null;
  717. }
  718. }
  719. }