package com.xt.jygl.gkjcxx.zyq.ctl; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; import javax.persistence.criteria.CriteriaBuilder.In; import javax.servlet.http.HttpServletRequest; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; 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 cache.CacheSearchCondition; import com.fasterxml.jackson.core.JsonProcessingException; import com.xt.jygl.common.BaseWebCtl; import com.xt.jygl.common.Constants; import com.xt.jygl.common.GlobalData; import com.xt.jygl.common.SearchCondition; import com.xt.jygl.common.Utils; 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.gkjcxx.xzdwxxgl.xzglbmxx.service.XzglbmxxService; import com.xt.jygl.gkjcxx.zyq.client.ZyqWebService; import com.xt.jygl.gkjcxx.zyq.entity.ZyqEntity; import com.xt.jygl.gkjcxx.zyq.service.ZyqService; import com.xt.jygl.gkjcxx.zyq.vo.ZyqVo; import com.xtframe.core.anon.auth.RequiresPermissions; import com.xtframe.core.base.ctl.WebJsonResult; import com.xtframe.core.support.SecurityMgr; import com.xtframe.sec.code.entity.CodeEntity; import com.xtframe.sec.common.BaseEntity; import com.xtframe.sec.common.QueryService; import com.xtframe.sec.common.SimplePageRequest; import com.xtframe.sec.utils.SecUtils; import com.xtframe.util.StringUtils; /** * 作业区管理Controller * * @author zhaohang * */ @Controller @RequestMapping("/zyq") public class ZyqCtl extends BaseWebCtl { @Autowired private SecurityMgr securityMgr; @Autowired private QueryService query; @Autowired private ZyqService zyqService; @Autowired private GqService gqService; @Autowired private GkService gkService; @Autowired private XzglbmxxService xzglbmService; /** * 一览页面 * * @param page * 分页 * @param model * @param request * @param zyqmc * 作业区名称 * @param szgkid * 所在港口ID * @param szgqid * 所在港区ID * @param szdid * 所在地ID * @param menuid * @return * @throws JsonProcessingException */ @RequestMapping(value = "/main") @RequiresPermissions("zyqgl:main") public String main(SimplePageRequest page, Model model, final HttpServletRequest request, final String zyqmc, final String szgkid, final String szgqid, final String szdid, String menuid) throws JsonProcessingException { final Map cacheSCmap = CacheSearchCondition.cacheSCmap(request, "zyqgl"); // 查詢條件 Specification spec = new Specification() { @Override public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder cb) { List list = new ArrayList(); if (StringUtils.isNotEmpty(zyqmc)) { list.add(cb.like(root.get("zyqmc").as(String.class), "%" + zyqmc + "%")); } else if (isGET(request)) { CacheSearchCondition.predicateList(list, cacheSCmap, root, cb, null, "zyqmc"); } if (StringUtils.isNotEmpty(szgkid)) { list.add(cb.like(root.get("szgk").get("id").as(String.class), "%" + szgkid + "%")); } else if (isGET(request)) { CacheSearchCondition.predicateList(list, cacheSCmap, root, cb, "id", "szgk", "szgkid"); } if (StringUtils.isNotEmpty(szgqid)) { list.add(cb.like(root.get("szgq").get("id").as(String.class), "%" + szgqid + "%")); } else if (isGET(request)) { CacheSearchCondition.predicateList(list, cacheSCmap, root, cb, "id", "szgq", "szgqid"); } if (StringUtils.isNotEmpty(szdid)) { list.add(cb.like(root.get("szd").get("id").as(String.class), "%" + szdid + "%")); } else if (isGET(request)) { CacheSearchCondition.predicateList(list, cacheSCmap, root, cb, "id", "szd", "szdid"); } if (isJyr()) { } else { In in = cb.in(root.get("szgq").get("id").as(String.class)); @SuppressWarnings("unchecked") List gqlist = (List) Utils.getSession().getAttribute("gqList"); if (gqlist != null && gqlist.size() > 0) { for (int i = 0; i < gqlist.size(); i++) { in.value(gqlist.get(i)); } list.add(in); } } list.add(cb.notEqual(root.get("recordStatus").as(String.class), BaseEntity.RECORD_STATE_DELETE)); return cb.and(list.toArray(new Predicate[] {})); } }; if (page.getPage() < 1) { page.setPage(SearchCondition.zyqpage); } page.setSort("id"); page.setOrder("desc"); Page list = query.findAll(spec, toPageRequest(page), ZyqEntity.class); List voList = new ArrayList(); for (ZyqEntity entity : list) { ZyqVo vo = new ZyqVo(); BeanUtils.copyProperties(entity, vo); vo.setSzd(entity.getSzd() != null ? entity.getSzd().getId() : ""); vo.setSzgk(entity.getSzgk() != null ? entity.getSzgk().getId() : ""); vo.setSzgq(entity.getSzgq() != null ? entity.getSzgq().getId() : ""); vo.setSzgkzw(entity.getSzgk() != null ? entity.getSzgk().getGkmc() : ""); vo.setSzgqzw(entity.getSzgq() != null ? entity.getSzgq().getGqmc() : ""); vo.setSzdzw(entity.getSzd() != null ? entity.getSzd().getText() : ""); voList.add(vo); } if (isPOST(request)) { SearchCondition.zyqpage = page.getPage(); // cacheSCmap.put("zyqpage", page.getPage()); CacheSearchCondition.putCacheSCmap(request.getParameterMap(), cacheSCmap); } model.addAttribute("szd", CacheSearchCondition.cacheSCmapVal(cacheSCmap, "szdid")); model.addAttribute("zyqmc", CacheSearchCondition.cacheSCmapVal(cacheSCmap, "zyqmc")); model.addAttribute("szgq", CacheSearchCondition.cacheSCmapVal(cacheSCmap, "szgqid")); model.addAttribute("szgk", CacheSearchCondition.cacheSCmapVal(cacheSCmap, "szgkid")); model.addAttribute("menuid", menuid); model.addAttribute("list", voList); // 翻页共通 putPageInfo(model, page, list); return "gkjcxx/zyq/zyqmain"; } @RequestMapping(value = "/add") @RequiresPermissions("zyqgl:add") public String add(Model model) { if (SecUtils.getCurrUser() != null) { List list = securityMgr.codeService().findValidCodesByGroupCodeAndCity(Constants.GROUP_CODE_SZD, GlobalData.CITY_CODE); model.addAttribute("sz", list.size() == 1 ? list.get(0).getId() : ""); if (list.size() == 1) { List gklist = gkService.findBySzd(list.get(0).getId()); model.addAttribute("gk", gklist.size() == 1 ? gklist.get(0).getId() : ""); } } SimpleDateFormat dateTimeFormat = new SimpleDateFormat("yyyyMMddHHmmss"); String zyid = dateTimeFormat.format(new Date()); model.addAttribute("zyid", zyid); return "gkjcxx/zyq/zyqadd"; } // 保存数据 @RequestMapping(value = "/save") @ResponseBody @RequiresPermissions("zyqgl:add") public WebJsonResult save(Model model, ZyqEntity code, String szdid, String szgkid, String szgqid) { WebJsonResult wr = success(); if (StringUtils.isEmpty(szdid)) { wr.setSuccess(false); wr.setMessage("请选择所在地"); return wr; } if (StringUtils.isEmpty(szgkid)) { wr.setSuccess(false); wr.setMessage("请选择所在港口"); return wr; } if (StringUtils.isEmpty(szgqid)) { wr.setSuccess(false); wr.setMessage("请选择所在港区"); return wr; } ZyqEntity zyq = new ZyqEntity(); try { if (!StringUtils.isEmpty(code.getId())) { zyq = zyqService.findOne(code.getId()); } CodeEntity szd = new CodeEntity(szdid); zyq.setSzd(szd); GkEntity szgk = new GkEntity(); szgk.setId(szgkid); zyq.setSzgk(szgk); GqEntity szgq = new GqEntity(); szgq.setId(szgqid); zyq.setSzgq(szgq); GqEntity gq = gqService.findOne(szgqid); zyq.setSsgkglbm(gq.getSsgkglbm()); zyq.setZyqmc(code.getZyqmc()); zyq.setZyqyt(code.getZyqyt()); zyq.setBz(code.getBz()); zyq.setZyid(code.getZyid()); zyqService.save(zyq); } catch (Exception e) { wr.setSuccess(false); wr.setMessage("操作失败!"); e.printStackTrace(); } return wr; } @RequestMapping(value = "/delete") @ResponseBody @RequiresPermissions("zyqgl:delete") public WebJsonResult delete(Model model, String id) { WebJsonResult wr = success(); try { zyqService.logicDelete(id); // 如果是市级删除,省级也删除 ZyqEntity zyq = zyqService.findOne(id); try { if (GlobalData.DEPLOY_MODE.equals(Constants.DEPLOY_MODE_CITY) && needWS()) { ZyqWebService webService = zyqService.getWebService(null); webService.delete(id); zyq.setTbzt(Constants.YES); zyqService.save(zyq); } } catch (Exception e) { zyq.setTbzt(Constants.NO); zyqService.save(zyq); } } catch (Exception e) { wr.setSuccess(false); wr.setMessage("操作失败!"); e.printStackTrace(); } return wr; } @RequestMapping(value = "/edit") @RequiresPermissions("zyqgl:edit") public String edit(Model model, String id) { ZyqEntity zyq = zyqService.findOne(id); ZyqVo vo = new ZyqVo(); BeanUtils.copyProperties(zyq, vo); vo.setSzd(zyq.getSzd() != null ? zyq.getSzd().getId() : ""); vo.setSzgk(zyq.getSzgk() != null ? zyq.getSzgk().getId() : ""); vo.setSzgq(zyq.getSzgq() != null ? zyq.getSzgq().getId() : ""); if (StringUtils.isEmpty(vo.getZyid())) { SimpleDateFormat dateTimeFormat = new SimpleDateFormat("yyyyMMddHHmmss"); String zyid = dateTimeFormat.format(new Date()); vo.setZyid(zyid); } model.addAttribute("record", vo); return "gkjcxx/zyq/zyqedit"; } @RequestMapping(value = "/view") @RequiresPermissions("zyqgl:main") public String view(Model model, String id) { ZyqEntity zyq = zyqService.findOne(id); ZyqVo vo = new ZyqVo(); BeanUtils.copyProperties(zyq, vo); vo.setSzd(zyq.getSzd() != null ? zyq.getSzd().getId() : ""); vo.setSzdzw(zyq.getSzd() != null ? zyq.getSzd().getText() : ""); vo.setSzgk(zyq.getSzgk() != null ? zyq.getSzgk().getId() : ""); vo.setSzgkzw(zyq.getSzgk() != null ? zyq.getSzgk().getGkmc() : ""); vo.setSzgq(zyq.getSzgq() != null ? zyq.getSzgq().getId() : ""); vo.setSzgqzw(zyq.getSzgq() != null ? zyq.getSzgq().getGqmc() : ""); model.addAttribute("record", vo); return "gkjcxx/zyq/zyqview"; } @RequestMapping(value = "/selZyq") @ResponseBody public List selZyq(String gkid) { List list = zyqService.findByGkid(gkid); return list; } }