package com.xt.jygl.gkjcxx.cb.ctl; import java.util.ArrayList; 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.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.SearchCondition; import com.xt.jygl.common.Utils; import com.xt.jygl.gkjcxx.cb.entity.CbEntity; import com.xt.jygl.gkjcxx.cb.service.CbService; import com.xt.jygl.gkjcxx.cb.vo.CbVo; import com.xtframe.core.support.SecurityMgr; 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 yinyt * */ @Controller @RequestMapping("/cb") public class CbCtl extends BaseWebCtl { @Autowired private SecurityMgr securityMgr; @Autowired private QueryService query; @Autowired private CbService cbService; /** * 船舶管理 * * @return */ @RequestMapping(value = "/main") public String main(SimplePageRequest page, Model model,final HttpServletRequest request, final String zwcm, final String ywcm, final String cbsyr, String menuid) throws JsonProcessingException { final Map cacheSCmap = CacheSearchCondition.cacheSCmap(request,"cb"); // 查詢條件 Specification spec = new Specification() { @Override public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder cb) { List list = new ArrayList(); if (StringUtils.isNotEmpty(zwcm)) { list.add(cb.like(root.get("zwcm").as(String.class), "%" + zwcm + "%")); }else if(isGET(request)){ //list.add(cb.like(root.get("zwcm").as(String.class), "%" + SearchCondition.zwcm + "%")); CacheSearchCondition.predicateList(list, cacheSCmap, root, cb, null,"zwcm"); } if (StringUtils.isNotEmpty(ywcm)) { list.add(cb.like(root.get("ywcm").as(String.class), "%" + ywcm + "%")); }else if(isGET(request)){ CacheSearchCondition.predicateList(list, cacheSCmap, root, cb, null,"ywcm"); } if (StringUtils.isNotEmpty(cbsyr)) { list.add(cb.like(root.get("cbsyr").as(String.class), "%" + cbsyr + "%")); }else if(isGET(request)){ //list.add(cb.like(root.get("cbsyr").as(String.class), "%" + SearchCondition.cbsyr + "%")); CacheSearchCondition.predicateList(list, cacheSCmap, root, cb, null,"cbsyr"); } return cb.and(list.toArray(new Predicate[] {})); } }; if (page.getPage() < 1) { Object cbpage = CacheSearchCondition.cacheSCmapVal(cacheSCmap, "cbpage"); if (StringUtils.isEmpty(cbpage) || !org.apache.commons.lang.StringUtils.isNumeric(String.valueOf(cbpage))) { cbpage = "1"; } page.setPage(Integer.valueOf(String.valueOf(cbpage))); } page.setSort("id"); page.setOrder("desc"); Page list = query.findAll(spec, toPageRequest(page), CbEntity.class); List voList = new ArrayList(); for (CbEntity entity : list) { voList.add(entity); } if (isPOST(request)) { cacheSCmap.put("cbpage", page.getPage()); CacheSearchCondition.putCacheSCmap(request.getParameterMap(), cacheSCmap); } model.addAttribute("list", voList); model.addAttribute("zwcm", CacheSearchCondition.cacheSCmapVal(cacheSCmap, "zwcm")); model.addAttribute("ywcm", CacheSearchCondition.cacheSCmapVal(cacheSCmap, "ywcm")); model.addAttribute("cbsyr", CacheSearchCondition.cacheSCmapVal(cacheSCmap, "cbsyr")); model.addAttribute("menuid", menuid); // 翻页共通 putPageInfo(model, page, list); return "gkjcxx/cb/cbmain"; } @RequestMapping(value = "/view") public String view(SimplePageRequest page, Model model, final String cbbh) { // 查詢條件 Specification spec = new Specification() { @Override public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder cb) { List list = new ArrayList(); if (StringUtils.isNotEmpty(cbbh)) { list.add(cb.like(root.get("cbbh").as(String.class), "%" + cbbh + "%")); } return cb.and(list.toArray(new Predicate[] {})); } }; page.setOrder("asc"); page.setSort("czsj"); Page list = query.findAll(spec, toPageRequest(page), CbEntity.class); List voList = new ArrayList(); for (CbEntity entity : list) { voList.add(entity); } model.addAttribute("record", voList.get(0)); return "gkjcxx/cb/cbview"; } @RequestMapping(value = "/findById") @ResponseBody public CbVo findById(String id) { CbEntity cb = cbService.findOne(id); CbVo vo = new CbVo(); if (cb != null) { BeanUtils.copyProperties(cb, vo); } return vo; } }