forked from gzzfw/backEnd/gz-dyh

zhouxiantao
2024-09-23 ab977fd24a8bd4cac55ed132f2648fc2131b0dda
态势分析-区域
1 files deleted
6 files added
1 files modified
1687 ■■■■■ changed files
dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/controller/web/CaseAreaWebController.java 171 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/CaseAreaMapper.java 64 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/xml/CaseAreaMapper.xml 139 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/bo/CaseAreaBO.java 17 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/po/CaseArea.java 62 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseAreaService.java 137 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java 44 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/main/resources/area/Area.json 1053 ●●●●● patch | view | raw | blame | history
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