diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/template/controller/ParamsTemplateEOController.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/template/controller/ParamsTemplateEOController.java index d6640cb1e..6a3c4ecd4 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/template/controller/ParamsTemplateEOController.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/template/controller/ParamsTemplateEOController.java @@ -9,7 +9,11 @@ import com.jero.common.constant.enums.CutEnum; import com.jero.common.system.base.controller.JeroController; import com.jero.modules.cert.template.entity.ParamsTemplateEO; import com.jero.modules.cert.template.service.IParamsTemplateEOService; +import com.jero.modules.dummy.enums.DummyInventoryBaseFieldEnum; +import com.jero.modules.dummy.enums.OrderEnum; import com.jero.modules.ocr.util.LineHumpUtil; +import com.jero.modules.system.entity.SysDictItem; +import com.jero.modules.system.mapper.SysDictItemMapper; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -17,16 +21,28 @@ import org.apache.commons.lang.StringUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.text.Collator; +import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; import java.util.List; +import java.util.Locale; +import java.util.stream.Collectors; - /** +/** * @Description: 参数模板表 * @Author: jero-boot * @Date: 2022-04-21 @@ -39,7 +55,9 @@ import java.util.List; public class ParamsTemplateEOController extends JeroController { @Autowired private IParamsTemplateEOService paramsTemplateEOService; - + @Autowired + private SysDictItemMapper sysDictItemMapper; + /** * 分页列表查询 * @@ -70,15 +88,86 @@ public class ParamsTemplateEOController extends JeroController queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().like(StringUtils.isNotEmpty(paramsTemplateEO.getParamsTemplateName()), ParamsTemplateEO::getParamsTemplateName, paramsTemplateEO.getParamsTemplateName()) .eq(StringUtils.isNotEmpty(paramsTemplateEO.getRegion()), ParamsTemplateEO::getRegion, paramsTemplateEO.getRegion()); -// .eq(StringUtils.isNotEmpty(paramsTemplateEO.getState()), ParamsTemplateEO::getState, paramsTemplateEO.getState()) - queryWrapper.orderBy(StringUtils.isNotBlank(paramsTemplateEO.getOrderByField()), "1".equals(paramsTemplateEO.getOrderBy())?true:false, paramsTemplateEO.getOrderByField()) - .orderBy(StringUtils.isBlank(paramsTemplateEO.getOrderByField()), false, "update_time"); - +// paramsTemplateEO.setOrderByField("region"); +// paramsTemplateEO.setOrderBy("1"); + if(StringUtils.isNotBlank(paramsTemplateEO.getOrderByField())){ + if("params_template_name".equals(paramsTemplateEO.getOrderByField()) + || "create_time".equals(paramsTemplateEO.getOrderByField()) + || "update_time".equals(paramsTemplateEO.getOrderByField())){ + queryWrapper.orderBy(StringUtils.isNotBlank(paramsTemplateEO.getOrderByField()), + OrderEnum.POSITIVE.getValue().equals(paramsTemplateEO.getOrderBy())?true:false, + "convert("+paramsTemplateEO.getOrderByField()+" using gbk)"); + } + }else{ + queryWrapper.orderBy(StringUtils.isBlank(paramsTemplateEO.getOrderByField()), false, "update_time"); + } Page page = new Page(pageNo, pageSize); IPage pageList = paramsTemplateEOService.page(page, queryWrapper); + + //适用地区排序(特殊处理) + pageList = regionSort(paramsTemplateEO, pageNo, pageSize, queryWrapper, pageList); return Result.OK(cut, pageList); } + private IPage regionSort(ParamsTemplateEO paramsTemplateEO, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, QueryWrapper queryWrapper, IPage pageList) { + if(StringUtils.isNotBlank(paramsTemplateEO.getOrderByField()) + && "region".equals(paramsTemplateEO.getOrderByField())){ + List regionDictItemList = sysDictItemMapper.selectItemsByDictCode(DummyInventoryBaseFieldEnum.REGION.getValue()); + List list = paramsTemplateEOService.list(queryWrapper); + for (ParamsTemplateEO templateEO : list) { + if(StringUtils.isNotEmpty(templateEO.getRegion())){ + StringBuilder regionBuilder = new StringBuilder(); + for (String s : templateEO.getRegion().split(",")) { + String regionName = regionDictItemList.stream().filter(e -> e.getItemValue().equals(s)).map(f -> f.getItemText()).collect(Collectors.joining(",")); + regionBuilder.append(regionName).append(","); + } + templateEO.setRegionName(regionBuilder.substring(0, regionBuilder.toString().length() - 1)); + }else{ + templateEO.setRegion(""); + } + } + Collator comparator = Collator.getInstance(Locale.CHINESE); + if (OrderEnum.POSITIVE.getValue().equals(paramsTemplateEO.getOrderBy())) { + Collections.sort(list, (e1, e2) -> { + return comparator.compare(e1.getRegionName(), e2.getRegionName()); + }); + } else if (OrderEnum.REVERSE.getValue().equals(paramsTemplateEO.getOrderBy())) { + Collections.sort(list, (e1, e2) -> { + return comparator.compare(e2.getRegionName(), e1.getRegionName()); + }); + } + pageList = getPages(pageNo, pageSize, list); + } + return pageList; + } + + public Page getPages(Integer currentPage, Integer pageSize, List list){ + Page page =new Page(); + if(list==null){ + return null; + } + int size = list.size(); + if(pageSize > size){ + pageSize = size; + } + if(pageSize!=0){ + //求出最⼤页数,防⽌currentPage越界 + int maxPage = size % pageSize ==0? size / pageSize : size / pageSize +1; + if(currentPage > maxPage){ + currentPage = maxPage; + } + } + //当前页第⼀条数据的下标 + int curIdx = currentPage >1?(currentPage -1)* pageSize :0; + List pageList =new ArrayList(); + //将当前页的数据放进pageList + for(int i =0; i < pageSize && curIdx + i < size; i++){ + pageList.add(list.get(curIdx + i)); + } + page.setCurrent(currentPage).setSize(pageSize).setTotal(list.size()).setRecords(pageList); + return page; + } + /** * 列表查询 * diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/template/entity/ParamsTemplateEO.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/template/entity/ParamsTemplateEO.java index f0358630f..a0d633a64 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/template/entity/ParamsTemplateEO.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/template/entity/ParamsTemplateEO.java @@ -76,6 +76,8 @@ public class ParamsTemplateEO implements Serializable { @Dict(dicCode = "region") @ApiModelProperty(value = "适用地区") private java.lang.String region; + @TableField(exist = false) + private java.lang.String regionName; /**内容说明*/ @Excel(name = "内容说明", width = 15)