dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/controller/web/CaseAreaWebController.java
New file @@ -0,0 +1,171 @@ package cn.huge.module.cases.controller.web; import cn.huge.base.common.utils.ReturnFailUtils; import cn.huge.base.common.utils.ReturnSucUtils; import cn.huge.module.cases.domain.po.CaseArea; import cn.huge.module.cases.service.CaseAreaService; import com.google.common.collect.Maps; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Sort; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import java.util.Map; import java.util.stream.Collectors; import java.util.stream.Stream; /** * @title: 地区表接口api-web端 * @description: 地区表接口api-web端 * @company: hugeinfo * @author: zhouxt * @time: 2024-09-23 09:01:17 * @version: 1.0.0 */ @Slf4j @RestController @RequestMapping("/api/web/caseArea") public class CaseAreaWebController { @Autowired(required = false) private HttpServletRequest request; @Autowired private CaseAreaService service; /** * 获取请求URL参数 * @return Map<String, Object> */ private Map<String, Object> getParameter(){ Map<String, Object> terms = Maps.newHashMap(); // 表ID String id = request.getParameter("id"); if (StringUtils.isNotBlank(id)){ terms.put("id", id); } // 区域名称 String areaName = request.getParameter("areaName"); if (StringUtils.isNotBlank(areaName)){ terms.put("areaName", areaName); } // 区域编码 String areaCode = request.getParameter("areaCode"); if (StringUtils.isNotBlank(areaCode)){ terms.put("areaCode", areaCode); } // 父类编码 String parentCode = request.getParameter("parentCode"); if (StringUtils.isNotBlank(parentCode)){ terms.put("parentCode", parentCode); } // 区域等级,1-省,2-市,3-区,4-街道 String areaLevel = request.getParameter("areaLevel"); if (StringUtils.isNotBlank(areaLevel)){ terms.put("areaLevel", areaLevel); } // 创建时间区间 String createStart = request.getParameter("createStart"); String createEnd = request.getParameter("createEnd"); if(StringUtils.isNotBlank(createStart) && StringUtils.isNotBlank(createEnd)) { terms.put("createStart", createStart); terms.put("createEnd", createEnd); } // 更新时间区间 String updateStart = request.getParameter("updateStart"); String updateEnd = request.getParameter("updateEnd"); if(StringUtils.isNotBlank(updateStart) && StringUtils.isNotBlank(updateEnd)) { terms.put("updateStart", updateStart); terms.put("updateEnd", updateEnd); } return terms; } /** * 条件查询多个 * @url {ctx}/api/web/caseArea/listQuery * @return Object */ @GetMapping("/listQuery") public Object listQuery() { try { Map<String, Object> terms = getParameter(); return ReturnSucUtils.getRepInfo(service.listTerms(terms)); } catch (Exception e) { return ReturnFailUtils.getRepInfo(); } } /** * 条件分页查询 * @url {ctx}/api/web/caseArea/pageQuery * @param page 页码 * @param size 每页数量 * @return Object */ @GetMapping("/pageQuery") public Object pageQuery(@RequestParam(value = "page") int page, @RequestParam(value = "size") int size) { try { Map<String, Object> terms = getParameter(); Sort sort = Sort.by(Sort.Direction.DESC, "create_time"); PageRequest pageRequest = PageRequest.of(page-1, size, sort); Page<CaseArea> caseAreaPage = service.pageQuery(pageRequest, terms); return ReturnSucUtils.getRepInfo( "处理成功", caseAreaPage); } catch (Exception e) { return ReturnFailUtils.getRepInfo(); } } /** * 根据编号查询单个 * @url {ctx}/api/web/caseArea/getById * @param id 主键编号 * @return Object */ @GetMapping("/getById") public Object getById(@RequestParam(value = "id") String id) { try { return ReturnSucUtils.getRepInfo(service.getById(id)); } catch (Exception e) { return ReturnFailUtils.getRepInfo(); } } /** * 根据主键单个 * @url {ctx}/api/web/caseArea/deleteById * @param id 主键编号 * @return Object */ @GetMapping("/deleteById") public Object deleteById(@RequestParam(value = "id") String id) { try { service.removeById(id); return ReturnSucUtils.getRepInfo(); } catch (Exception e) { return ReturnFailUtils.getRepInfo(); } } /** * 新增或更新对象 * @url {ctx}/api/web/caseArea/saveCaseArea * @param caseArea 实体对象 * @return Object */ @PostMapping("/saveCaseArea") public Object saveCaseArea(@RequestBody CaseArea caseArea) { try { service.saveCaseArea(caseArea); return ReturnSucUtils.getRepInfo(); } catch (Exception e) { return ReturnFailUtils.getRepInfo(); } } } dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/CaseAreaMapper.java
New file @@ -0,0 +1,64 @@ package cn.huge.module.cases.dao.mapper; import cn.huge.module.cases.domain.po.CaseArea; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; import org.springframework.data.domain.PageRequest; import org.springframework.stereotype.Repository; import java.util.List; import java.util.Map; /** * @title: 地区表持久层业务处理 * @Description 此处仅涉及复杂SQL操作,务必不要在此再次写单表的CRUD操作,因为mybatisPlus已经实现。 * @company: hugeinfo * @author: zhouxt * @time: 2024-09-23 09:01:17 * @version 1.0.0 */ @Repository public interface CaseAreaMapper extends BaseMapper<CaseArea>{ /** * 更新对象 * @param entity 对象 */ void updateCaseArea(@Param("entity") CaseArea entity); /** * 条件更新对象 * @param entity 对象 * @param terms 条件 */ void updateCaseAreaTerms(@Param("entity") CaseArea entity, @Param("terms") Map<String, Object> terms); /** * 根据编号物理删除 * @param id 查询条件集合 */ void deleteCaseArea(@Param("id") String id); /** * 按条件查询结果集 * @param terms 查询条件集合 * @return List<CaseArea> */ List<CaseArea> listTerms(@Param("terms") Map<String, Object> terms); /** * 按条件查询实体总数 * @param terms 查询条件集合 * @return long */ long countTerms(@Param("terms") Map<String, Object> terms); /** * 按条件查询实体分页结果集 * @param page 分页对象 * @param terms 查询条件集合 * @return List<CaseArea> */ List<CaseArea> pageTerms(@Param("page") PageRequest page, @Param("terms") Map<String, Object> terms); } dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/xml/CaseAreaMapper.xml
New file @@ -0,0 +1,139 @@ <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- * @title: 地区表 * @description: 自定义sql,请自行实现业务逻辑 * @company: hugeinfo * @author: zhouxt * @time:2024-09-23 09:01:17 * @version 1.0.0 --> <mapper namespace="cn.huge.module.cases.dao.mapper.CaseAreaMapper"> <!-- 结果集 --> <resultMap id="dataResult" type="cn.huge.module.cases.domain.po.CaseArea"> <result property="id" column="id"/> <result property="areaName" column="area_name"/> <result property="areaCode" column="area_code"/> <result property="parentCode" column="parent_code"/> <result property="areaLevel" column="area_level"/> <result property="updateTime" column="update_time"/> <result property="createTime" column="create_time"/> </resultMap> <!-- 表 --> <sql id='table-name'>dyh_case_area</sql> <!-- 字段 --> <sql id="column-part"> id, area_name, area_code, parent_code, area_level, update_time, create_time </sql> <!-- 更新实体字段 --> <sql id="set-part"> <if test="entity.areaName != null">area_name = #{entity.areaName},</if> <if test="entity.areaCode != null">area_code = #{entity.areaCode},</if> <if test="entity.parentCode != null">parent_code = #{entity.parentCode},</if> <if test="entity.areaLevel != null">area_level = #{entity.areaLevel},</if> <if test="entity.updateTime != null">update_time = #{entity.updateTime},</if> <if test="entity.createTime != null">create_time = #{entity.createTime}</if> </sql> <!-- 条件 --> <sql id="where-part"> <if test="terms != null"> <where> <if test="terms.id != null and terms.id !=''"> and id = #{terms.id} </if> <if test="terms.areaName != null and terms.areaName !=''"> and area_name = #{terms.areaName} </if> <if test="terms.areaCode != null and terms.areaCode !=''"> and area_code = #{terms.areaCode} </if> <if test="terms.parentCode != null and terms.parentCode !=''"> and parent_code = #{terms.parentCode} </if> <if test="terms.areaLevel != null and terms.areaLevel !=''"> and area_level = #{terms.areaLevel} </if> <if test="terms.updateTime != null and terms.updateTime !=''"> and DATE_FORMAT(update_time,'%Y-%m-%d') = #{terms.updateTime} </if> <if test="terms.updateStart != null and terms.updateStart !='' and terms.updateEnd != null and terms.updateEnd !=''"> and (DATE_FORMAT(update_time,'%Y-%m-%d') <![CDATA[ >= ]]> #{terms.updateStart} and DATE_FORMAT(update_time,'%Y-%m-%d') <![CDATA[ <= ]]> #{terms.updateEnd}) </if> <if test="terms.createTime != null and terms.createTime !=''"> and DATE_FORMAT(create_time,'%Y-%m-%d') = #{terms.createTime} </if> <if test="terms.createStart != null and terms.createStart !='' and terms.createEnd != null and terms.createEnd !=''"> and (DATE_FORMAT(create_time,'%Y-%m-%d') <![CDATA[ >= ]]> #{terms.createStart} and DATE_FORMAT(create_time,'%Y-%m-%d') <![CDATA[ <= ]]> #{terms.createEnd}) </if> </where> </if> </sql> <!-- 更新对象 --> <update id="updateCaseArea"> update <include refid="table-name"/> <set> <include refid="set-part"/> </set> <where> id = #{entity.id} </where> </update> <!-- 条件更新对象 --> <update id="updateCaseAreaTerms"> update <include refid="table-name"/> <set> <include refid="set-part"/> </set> <include refid="where-part"/> </update> <!-- 根据编号物理删除 --> <delete id="deleteCaseArea"> delete from <include refid="table-name" /> where id = #{id} </delete> <!-- 根据条件查询 --> <select id="listTerms" resultMap="dataResult"> select <include refid="column-part"/> from <include refid="table-name" /> <include refid="where-part"/> </select> <!-- 根据条件统计 --> <select id="countTerms" resultType="java.lang.Long"> select COUNT(1) from <include refid="table-name" /> <include refid="where-part"/> </select> <!-- 根据条件分页查询 --> <select id="pageTerms" resultMap="dataResult"> SELECT <include refid="column-part"/> FROM <include refid="table-name" /> <include refid="where-part"/> <if test="page.sort != null"> <foreach collection="page.sort" item="s" index="index" separator="," open="order by "> isnull(${s.property}), ${s.property} ${s.direction} </foreach> </if> <if test="page.sort == null"> order by isnull(create_time), create_time desc </if> limit #{page.offset}, #{page.size} </select> </mapper> dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/bo/CaseAreaBO.java
New file @@ -0,0 +1,17 @@ package cn.huge.module.cases.domain.bo; import cn.huge.module.cases.domain.po.CaseArea; /** * @title: 地区表业务扩展类 * @description: 地区表业务扩展类 * @company: hugeinfo * @author: zhouxt * @time: 2024-09-23 09:01:17 * @version: 1.0.0 * @see cn.huge.module.cases.domain.po.CaseArea */ public class CaseAreaBO extends CaseArea { } dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/po/CaseArea.java
New file @@ -0,0 +1,62 @@ package cn.huge.module.cases.domain.po; import com.baomidou.mybatisplus.annotation.*; import lombok.Data; import java.util.Date; /** * @title: 地区表数据库对应关系类 * @description: PO中的属性与数据表是一一对应关系,如需根据业务处理不同,请使用BO对象。 * @company:hugeinfo * @author: zhouxt * @time: 2024-09-23 09:01:17 * @version 1.0.0 */ @TableName(value = "dyh_case_area") @Data public class CaseArea { /** * 表ID */ @TableId(value = "id",type = IdType.ASSIGN_ID) private String id; /** * 区域名称 */ @TableField(value = "area_name") private String areaName; /** * 区域编码 */ @TableField(value = "area_code") private String areaCode; /** * 父类编码 */ @TableField(value = "parent_code") private String parentCode; /** * 区域等级,1-省,2-市,3-区,4-街道 */ @TableField(value = "area_level") private Integer areaLevel; /** * 更新时间 */ @TableField(value = "update_time") private Date updateTime; /** * 创建时间 */ @TableField(value = "create_time") private Date createTime; } dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseAreaService.java
New file @@ -0,0 +1,137 @@ package cn.huge.module.cases.service; import cn.huge.base.common.exception.ServiceException; import cn.huge.base.common.utils.DateUtils; import cn.huge.base.common.utils.IdUtils; import cn.huge.module.cases.domain.dto.CaseAreaDTO; import cn.huge.module.client.api.impl.UtilsClientImpl; import cn.huge.module.cases.dao.mapper.CaseAreaMapper; import cn.huge.module.cases.domain.po.CaseArea; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.PageRequest; import org.springframework.transaction.annotation.Transactional; import javax.annotation.PostConstruct; import java.io.File; import java.io.IOException; import java.net.URL; import java.util.Date; import java.util.List; import java.util.Map; /** * @title: 地区表业务逻辑处理 * @Description 地区表业务逻辑处理 * @company hugeinfo * @author zhouxt * @Time 2024-09-23 09:01:17 * @version 1.0.0 */ @Slf4j @Service @Transactional(rollbackFor = Exception.class) public class CaseAreaService extends ServiceImpl<CaseAreaMapper, CaseArea>{ @Autowired private CaseAreaMapper mapper; @Autowired private UtilsClientImpl utilsClient; /** * 更新对象 * @param entity 对象 */ public void updateCaseArea(CaseArea entity){ try{ mapper.updateCaseArea(entity); }catch (Exception e){ log.error("[CaseAreaService.updateCaseArea]调用失败,异常信息:"+e, e); throw new ServiceException("CaseAreaService.updateCaseArea", e); } } /** * 条件更新对象 * @param entity 对象 * @param terms 条件 */ public void updateCaseAreaTerms(CaseArea entity, Map<String, Object> terms){ try{ mapper.updateCaseAreaTerms(entity, terms); }catch (Exception e){ log.error("[CaseAreaService.updateCaseAreaTerms]调用失败,异常信息:"+e, e); throw new ServiceException("CaseAreaService.updateCaseAreaTerms", e); } } /** * 根据编号物理删除 * @param id 查询条件集合 */ public void deleteCaseArea(String id){ try{ mapper.deleteCaseArea(id); }catch (Exception e){ log.error("[CaseAreaService.deleteCaseArea]调用失败,异常信息:"+e, e); throw new ServiceException("CaseAreaService.deleteCaseArea", e); } } /** * 按条件查询 * @param terms 条件 * @return List */ public List<CaseArea> listTerms(Map<String, Object> terms){ return mapper.listTerms(terms); } /** * 按条件统计 * @param terms 条件 * @return long */ public long countTerms(Map<String, Object> terms){ return mapper.countTerms(terms); } /** * 按条件分页查询 * @param page 分页对象 * @param terms 条件 * @return Page */ public Page<CaseArea> pageQuery(PageRequest page, Map<String, Object> terms){ long total = mapper.countTerms(terms); List<CaseArea> content = mapper.pageTerms(page, terms); return new PageImpl<CaseArea>(content, page, total); } /** * 新增或更新对象 * @param caseArea 实体对象 */ public void saveCaseArea(CaseArea caseArea){ try{ Date nowDate = DateUtils.getNowDate(); // 判断是否新增 if (IdUtils.checkNewId(caseArea.getId())){ caseArea.setId(utilsClient.getNewTimeId()); caseArea.setCreateTime(nowDate); } caseArea.setUpdateTime(nowDate); this.saveOrUpdate(caseArea); }catch (Exception e){ log.error("[CaseAreaService.saveCaseArea]调用失败,异常信息:"+e, e); throw new ServiceException("CaseAreaService.saveCaseArea", e); } } } dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java
@@ -5,14 +5,11 @@ import cn.huge.module.cases.domain.dto.*; import cn.huge.module.cases.domain.dto.CaseAreaDTO; import cn.huge.module.cases.domain.po.CaseAgent; import cn.huge.module.cases.domain.po.CaseInfoUnfold; import cn.huge.module.cases.domain.po.CasePerson; import cn.huge.module.cases.domain.po.*; import cn.huge.module.client.api.impl.CustClientImpl; import cn.huge.module.client.api.impl.SysClientImpl; import cn.huge.module.client.api.impl.UtilsClientImpl; import cn.huge.module.cases.dao.mapper.CaseInfoMapper; import cn.huge.module.cases.domain.po.CaseInfo; import cn.huge.module.constant.BaseConsts; import cn.huge.module.cust.dto.PaUserDTO; import cn.huge.module.mediate.constant.*; @@ -40,6 +37,7 @@ import java.io.File; import java.io.IOException; import java.net.URL; import java.nio.file.Files; import java.util.*; import java.util.stream.Collectors; @@ -86,6 +84,9 @@ @Autowired private CaseEvaluateService caseEvaluateService; @Autowired private CaseAreaService caseAreaService; /** @@ -958,9 +959,9 @@ areaCodeList.add(caseStatisticsAreaDTO.getAreaCode()); } caseStatisticsAreaDTOS.add(allArea); List<CaseAreaDTO> queArea = listAreaByType(terms.get("areaType"), terms.get("queArea")); List<CaseArea> queArea = listAreaByType(terms.get("areaType"), terms.get("queArea")); log.info("listAreaByType {}", JSON.toJSONString(queArea)); for (CaseAreaDTO caseAreaDTO : queArea) { for (CaseArea caseAreaDTO : queArea) { if (!areaCodeList.contains(caseAreaDTO.getAreaCode())) { CaseStatisticsAreaDTO areaChild = new CaseStatisticsAreaDTO(); areaChild.setAreaCode(caseAreaDTO.getAreaCode()); @@ -1082,37 +1083,26 @@ return number; } /** * 根据json文件获取区域信息 */ public CaseAreaDTO getArea() throws IOException { Class<?> clazz = CaseAreaDTO.class; ObjectMapper mapper = new ObjectMapper(); File file = new File("area/Area.json"); CaseAreaDTO obj = mapper.readValue(file, CaseAreaDTO.class); return obj; } /** * 根据不同的等级获取不同区域子集合 * * @param areaType 1-市级 2-区 */ public List<CaseAreaDTO> listAreaByType(Object areaType, Object areaCode) throws IOException { public List<CaseArea> listAreaByType(Object areaType, Object areaCode) throws IOException { log.info("listAreaByType {},{}", areaType, areaCode); CaseAreaDTO area = getArea(); if (ObjectUtils.isEmpty(areaType) || areaType.equals("") || areaType.equals("1")) { return area.getChildren(); QueryWrapper<CaseArea> caseAreaWrapper = new QueryWrapper<>(); caseAreaWrapper.eq("parent_code","1601"); List<CaseArea> list = caseAreaService.list(caseAreaWrapper); return list; } if (areaType.equals("2")) { List<CaseAreaDTO> children = area.getChildren(); for (CaseAreaDTO child : children) { if (child.getAreaCode().equals(areaCode)) { return child.getChildren(); } } QueryWrapper<CaseArea> caseAreaWrapper = new QueryWrapper<>(); caseAreaWrapper.eq("parent_code",areaCode); List<CaseArea> list = caseAreaService.list(caseAreaWrapper); return list; } return new ArrayList<>(); } dyh-service/dyh-mediate/src/main/resources/area/Area.json
File was deleted