mitao
2025-03-16 0b966344989a8c193b20d493bc68875d365f643b
管理后台-诉求管理接口
7个文件已修改
3个文件已添加
368 ■■■■ 已修改文件
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/api/MgtComplaintController.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/dao/ComplaintMapper.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/enums/RateEnum.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/entity/ComplaintComment.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/IComplaintService.java 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/ComplaintServiceImpl.java 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/mapper/ComplaintMapper.xml 178 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/template/协调通知单.docx 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/template/社区问题单.docx 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/template/问题处理单.docx 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/api/MgtComplaintController.java
@@ -7,6 +7,7 @@
import com.panzhihua.sangeshenbian.model.query.ComplaintQuery;
import com.panzhihua.sangeshenbian.model.vo.ComplaintVO;
import com.panzhihua.sangeshenbian.service.IComplaintService;
import com.panzhihua.sangeshenbian.warpper.MgtComplaintQuery;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
@@ -34,7 +35,7 @@
    @ApiOperation("诉求列表")
    @PostMapping("/page")
    public R<Page<ComplaintVO>> pageList(@RequestBody ComplaintQuery query) {
    public R<Page<ComplaintVO>> pageList(@RequestBody MgtComplaintQuery query) {
        SystemUserVo loginUserInfo = getLoginUserInfoSanGeShenBian();
        return R.ok(complaintService.pageList(query,loginUserInfo));
    }
@@ -43,9 +44,9 @@
    public R<ComplaintVO> detail(@ApiParam(name = "id", value = "诉求id", required = true) @PathVariable("id") Long id) {
        return R.ok(complaintService.getDetailMgt(id));
    }
    @ApiOperation("诉求列表")
    @ApiOperation("导出")
    @PostMapping("/export")
    public void export(@RequestBody ComplaintQuery query) {
    public void export(@RequestBody MgtComplaintQuery query) {
        SystemUserVo loginUserInfo = getLoginUserInfoSanGeShenBian();
        try {
            complaintService.export(query,loginUserInfo);
@@ -53,23 +54,15 @@
            throw new RuntimeException(e);
        }
    }
    @ApiOperation("社区问题单")
    @GetMapping("/community-problem/{id}")
    public void communityProblem(@ApiParam(name = "id", value = "诉求id", required = true) @PathVariable("id") Long id) {
    @ApiOperation("社区问题单、问题处理单、协调通知单 下载")
    @GetMapping("/download-file/{id}/{type}")
    public void communityProblem(@ApiParam(name = "id", value = "诉求id", required = true) @PathVariable("id") Long id,
                                 @ApiParam(name = "type", value = "类型:1:社区问题单 2:问题处理单 3:协调通知单", required = true) @PathVariable("type") Integer type) {
        try {
            complaintService.communityProblem(id);
            complaintService.downloadFile(id, type);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
    @ApiOperation("问题处理单")
    @GetMapping("/problem-handle/{id}")
    public void problemHandle(@ApiParam(name = "id", value = "诉求id", required = true) @PathVariable("id") Long id) {
        complaintService.problemHandle(id);
    }
    @ApiOperation("协调通知单")
    @GetMapping("/coordination-notice/{id}")
    public void coordinationNotice(@ApiParam(name = "id", value = "诉求id", required = true) @PathVariable("id") Long id) {
        complaintService.coordinationNotice(id);
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/dao/ComplaintMapper.java
@@ -7,6 +7,7 @@
import com.panzhihua.sangeshenbian.model.query.ComplaintQuery;
import com.panzhihua.sangeshenbian.model.vo.ComplaintTodoVO;
import com.panzhihua.sangeshenbian.model.vo.ComplaintVO;
import com.panzhihua.sangeshenbian.warpper.MgtComplaintQuery;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -72,12 +73,12 @@
     * @param loginUserInfo
     * @return
     */
    Page<ComplaintVO> pageList(Page<ComplaintVO> page, @Param("query") ComplaintQuery query, @Param("loginUserInfo") SystemUserVo loginUserInfo);
    Page<ComplaintVO> pageList(Page<ComplaintVO> page, @Param("query") MgtComplaintQuery query, @Param("loginUserInfo") SystemUserVo loginUserInfo);
    /**
     * 诉求列表
     * @param query
     * @param loginUserInfo
     */
    List<ComplaintVO> getList(ComplaintQuery query, SystemUserVo loginUserInfo);
    List<ComplaintVO> getList(MgtComplaintQuery query, SystemUserVo loginUserInfo);
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/enums/RateEnum.java
New file
@@ -0,0 +1,24 @@
package com.panzhihua.sangeshenbian.enums;
import lombok.Getter;
import lombok.AllArgsConstructor;
@Getter
@AllArgsConstructor
public enum RateEnum {
    DISSATISFIED(0, "不满意"),
    NEUTRAL(1, "一般"),
    SATISFIED(2, "满意"),
    VERY_SATISFIED(3, "非常满意");
    private final Integer code;
    private final String desc;
    public static RateEnum getEnumByCode(Integer code) {
        for (RateEnum e : RateEnum.values()) {
            if (e.code.equals(code)) {
                return e;
            }
        }
        return null;
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/entity/ComplaintComment.java
@@ -43,7 +43,7 @@
    @ApiModelProperty(value = "诉求id")
    private Long complaintId;
    @ApiModelProperty(value = "评价打分 0:不满意 1:一般 2:满意 3:非常满意")
    @ApiModelProperty(value = "评价打分 0:不满意; 1:一般; 2:满意; 3:非常满意;")
    private Integer rate;
    @ApiModelProperty(value = "评价内容")
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/IComplaintService.java
@@ -15,6 +15,7 @@
import com.panzhihua.sangeshenbian.model.vo.ComplaintTodoVO;
import com.panzhihua.sangeshenbian.model.vo.ComplaintVO;
import com.panzhihua.sangeshenbian.model.vo.DispatchVO;
import com.panzhihua.sangeshenbian.warpper.MgtComplaintQuery;
import java.io.IOException;
import java.util.List;
@@ -118,7 +119,7 @@
     * @param loginUserInfo
     * @return
     */
    Page<ComplaintVO> pageList(ComplaintQuery query, SystemUserVo loginUserInfo);
    Page<ComplaintVO> pageList(MgtComplaintQuery query, SystemUserVo loginUserInfo);
    /**
     * 管理后台-诉求详情
@@ -132,30 +133,19 @@
     * @param query
     * @param loginUserInfo
     */
    void export(ComplaintQuery query, SystemUserVo loginUserInfo) throws IOException;
    void export(MgtComplaintQuery query, SystemUserVo loginUserInfo) throws IOException;
    /**
     * 社区问题单
     * 社区问题单、问题处理单、协调通知单 下载
     * @param id
     */
    void communityProblem(Long id) throws IOException;
    /**
     * 问题处理单
     * @param id
     */
    void problemHandle(Long id);
    /**
     * 协调通知
     * @param id
     */
    void coordinationNotice(Long id);
    void downloadFile(Long id, Integer type) throws IOException;
    
    /**
     * 获取超时未评价的数据
     * @return
     */
    List<Complaint> getTimeoutAndNotComment();
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/ComplaintServiceImpl.java
@@ -1,14 +1,15 @@
package com.panzhihua.sangeshenbian.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.idev.excel.EasyExcel;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.deepoove.poi.XWPFTemplate;
import com.panzhihua.common.model.vos.LoginUserInfoVO;
import com.panzhihua.common.model.vos.sangeshenbian.SystemUserVo;
import com.panzhihua.sangeshenbian.enums.RateEnum;
import com.panzhihua.sangeshenbian.model.dto.ComplaintCompletionDTO;
import com.panzhihua.sangeshenbian.model.dto.ComplaintProcessDTO;
import com.panzhihua.sangeshenbian.model.entity.Complaint;
@@ -35,17 +36,15 @@
import com.panzhihua.sangeshenbian.model.vo.ComplaintVO;
import com.panzhihua.sangeshenbian.service.ISystemUserService;
import com.panzhihua.sangeshenbian.utils.FileUtil;
import com.panzhihua.sangeshenbian.warpper.MgtComplaintQuery;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Lazy;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
@@ -147,6 +146,11 @@
            }
        } else{
            PartyMember partyMember = partyMemberService.getPartyMemberByPhone(loginUserInfoVO.getPhone());
            //社区
            complaint.setCityCode(510400);
            complaint.setDistrictsCode(Integer.valueOf(partyMember.getDistrictsCode()));
            complaint.setStreetId(Long.valueOf(partyMember.getStreetId()));
            complaint.setCommunityId(partyMember.getCommunityId());
            complaint.setPartyMemberId(partyMember.getId());
        }
        complaint.setReportType(accountLevel);
@@ -897,7 +901,7 @@
     * @return
     */
    @Override
    public Page<ComplaintVO> pageList(ComplaintQuery query, SystemUserVo loginUserInfo) {
    public Page<ComplaintVO> pageList(MgtComplaintQuery query, SystemUserVo loginUserInfo) {
        return baseMapper.pageList(new Page<>(query.getPageNum(), query.getPageSize()), query,loginUserInfo);
    }
@@ -923,7 +927,7 @@
     * @param loginUserInfo
     */
    @Override
    public void export(ComplaintQuery query, SystemUserVo loginUserInfo) throws IOException {
    public void export(MgtComplaintQuery query, SystemUserVo loginUserInfo) throws IOException {
        List<ComplaintVO> list =  baseMapper.getList(query, loginUserInfo);
        List<ComplaintExcel> complaintExcels = BeanUtil.copyToList(list, ComplaintExcel.class);
        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
@@ -936,45 +940,71 @@
    }
    @Override
    public void communityProblem(Long id) throws IOException {
        //Complaint complaint = getById(id);
        //TODO 查询真实数据
    public void downloadFile(Long id,Integer type) throws IOException {
        Complaint complaint = getById(id);
        if (Objects.isNull(complaint)) {
            throw new ServiceException("该诉求不存在");
        }
         //查询社区信息
        BcRegion region = bcRegionService.lambdaQuery().eq(BcRegion::getRegionCode, complaint.getDistrictsCode()).last("LIMIT 1").one();
        ComStreet street = comStreetService.lambdaQuery().eq(ComStreet::getStreetId, complaint.getStreetId()).one();
        ComAct act = comActService.lambdaQuery().eq(ComAct::getCommunityId, complaint.getCommunityId()).one();
        String community = region.getRegionName() +"-"+ street.getName() + act.getName();
        PartyMember partyMember = null;
        if (Objects.nonNull(complaint.getPartyMemberId())){
             partyMember = partyMemberService.getById(complaint.getPartyMemberId());
        }
        String fileName = "";
        switch (type){
            case 1:
                fileName = "社区问题单";
                break;
            case 2:
                fileName = "问题处理单";
                if (Objects.nonNull(partyMember)) {
                    community = community + "-" + partyMember.getServiceTarget();
                }
                break;
            case 3:
                fileName = "协调通知单";
                break;
        }
        Map<String, Object> map = new HashMap<>();
        map.put("community", "社区社区");
        map.put("problemType", "就业");
        map.put("descriptionContent", "描述内容");
        map.put("reportType", "党员");
        map.put("partyOrganization", "石羊党群");
        map.put("name", "张三");
        map.put("contactNumber", "1888888888");
        map.put("nickname", "李四");
        map.put("phone", "17777777777");
        map.put("community", community);
        map.put("problemType", complaint.getProblemType());
        map.put("descriptionContent", complaint.getDescriptionContent());
        map.put("reportType", Objects.nonNull(complaint.getPartyMemberId())?"党员": "上级"); //TODO待修改
        map.put("partyOrganization",Objects.nonNull(partyMember)? partyMember.getPartyOrganization() : "");
        map.put("name", complaint.getName());
        map.put("contactNumber", complaint.getContactNumber());
        map.put("nickname", Objects.nonNull(partyMember)? partyMember.getName() : "");
        map.put("phone", Objects.nonNull(partyMember)? partyMember.getPhone() : "");
        List<ComplaintProgress> list = complaintProgressService.lambdaQuery().eq(ComplaintProgress::getComplaintId, id).orderByAsc(ComplaintProgress::getCreateTime).list();
        StringBuilder sb = new StringBuilder();
        if (CollUtil.isNotEmpty(list)) {
            int rowNum = 1;
            list.forEach(item->{
                sb.append(rowNum).append("、 ");
                sb.append(item.getDescribe()).append("\n");
            });
        }
        // 在文本中直接使用换行符
        String content = "第一行内容\n第二行内容\n第三行内容";
        map.put("complaintProgress", content);
        map.put("status", "处理中");
        map.put("complaintProgress", sb.toString());
        map.put("status", ProcessStatusEnum.getDescriptionByCode(complaint.getStatus()));
        if (2 == type) {
            //查询诉求评价
            ComplaintComment complaintComment = complaintCommentService.lambdaQuery().eq(ComplaintComment::getComplaintId, id).last("LIMIT 1").one();
            if (Objects.nonNull(complaintComment)) {
                map.put("rateStr", RateEnum.getEnumByCode(complaintComment.getRate()));
            }
        }
        response.setContentType("application/octet-stream");
        String fileName = URLEncoder.encode("社区问题单", "UTF-8").replaceAll("\\+", "%20");
        response.setHeader("Content-disposition","attachment;filename=\""+fileName+".docx"+"\"");
        String fileTemplateName = FileUtil.getPath() + "template/社区问题单.docx";
        String fileNameEncode = URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20");
        response.setHeader("Content-disposition","attachment;filename=\""+fileNameEncode+".docx"+"\"");
        String fileTemplateName = FileUtil.getPath() + "template/"+fileName+".docx";
        XWPFTemplate.compile(fileTemplateName).render(map).writeAndClose(response.getOutputStream());
    }
    /**
     * 问题处理单
     * @param id
     */
    @Override
    public void problemHandle(Long id) {
    }
    /**
     * 协调通知
     * @param id
     */
    @Override
    public void coordinationNotice(Long id) {
    }
    public static void main(String[] args) {
        try {
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/mapper/ComplaintMapper.xml
@@ -234,10 +234,188 @@
        ORDER BY sc.create_time DESC
    </select>
    <select id="pageList" resultType="com.panzhihua.sangeshenbian.model.vo.ComplaintVO">
        SELECT * FROM(
        SELECT sc.id,
        sc.serial_number,
        sc.time,
        sc.problem_type,
        sc.name,
        sc.contact_number,
        sc.location,
        sc.detailed_address,
        sc.description_title,
        sc.description_content,
        sc.images,
        sc.videos,
        CASE
        WHEN sc.status = 0 and scar.audit_type = 1 AND scar.audit_status = 0 THEN 7
        WHEN sc.status = 0 and scar.audit_type = 2 AND scar.audit_status = 0 THEN 5
        WHEN sc.status = 0 and scar.audit_status = 2 THEN 6
        ELSE sc.status
        END AS status,
        sc.report_type,
        sc.superior_id,
        sc.city_code,
        sc.districts_code,
        sc.street_id,
        sc.community_id,
        sc.party_member_id,
        sc.create_by,
        sc.create_time,
        sc.update_by,
        sc.update_time,
        sc.completion_description,
        sc.completion_images,
        sc.completion_videos,
        sc.completion_other_description,
        sc.completion_time,
        sc.completion_user_id,
        sc.completion_username,
        sc.completion_user_phone,
        sc.closing_time,
        sc.over_time_days,
        sc.latitude,
        sc.longitude,
        scar.audit_type,
        scar.audit_status,
        scar.comment,
        scar.create_time AS reportTime,
        scar.system_user_id,
        scar.reporter,
        scar.department_name,
        scar.department_id
        FROM sgsb_complaint sc
        INNER JOIN sgsb_complaint_audit_record scar ON scar.complaint_id = sc.id and scar.latest_flag = 1
        ) AS t
        <where>
            scar.latest_flag = 1
            <if test="1 == loginUserInfo.accountLevel">
                and t.city_code = 510400
            </if>
            <if test="2 == loginUserInfo.accountLevel">
                and (t.districts_code = #{loginUserInfo.districtsCode} || t.id in (select complaint_id from
                sgsb_complaint_audit_record where audit_type = 3 and audit_status = 1 and report_type =
                #{loginUserInfo.accountLevel} and superior_id = #{loginUserInfo.districtsCode}))
            </if>
            <if test="3 == loginUserInfo.accountLevel">
                and (t.street_id = #{loginUserInfo.streetId} || t.id in (select complaint_id from
                sgsb_complaint_audit_record where audit_type = 3 and audit_status = 1 and report_type =
                #{loginUserInfo.accountLevel} and superior_id = #{loginUserInfo.streetId}))
            </if>
            <if test="4 == loginUserInfo.accountLevel">
                and (t.community_id = #{loginUserInfo.communityId} || t.id in (select complaint_id from
                sgsb_complaint_audit_record where audit_type = 3 and audit_status = 1 and report_type =
                #{loginUserInfo.accountLevel} and superior_id = #{loginUserInfo.communityId}))
            </if>
            <if test="query.status!=null and query.status == 0">
                AND t.status = #{query.status}
            </if>
            <if test="query.nickname != null and query.nickname!=''">
            </if>
            <if test="query.phone != null and query.phone!=''">
            </if>
            <if test="query.startTime != null and query.endTime!=null">
                AND t.create_time BETWEEN #{query.startTime} AND #{query.endTime}
            </if>
            <if test="query.problemType != null and query.problemType!=''">
                AND t.problem_type =#{query.problemType}
            </if>
        </where>
        ORDER BY t.create_time DESC
    </select>
    <select id="getList" resultType="com.panzhihua.sangeshenbian.model.vo.ComplaintVO">
        SELECT * FROM(
        SELECT sc.id,
        sc.serial_number,
        sc.time,
        sc.problem_type,
        sc.name,
        sc.contact_number,
        sc.location,
        sc.detailed_address,
        sc.description_title,
        sc.description_content,
        sc.images,
        sc.videos,
        CASE
        WHEN sc.status = 0 and scar.audit_type = 1 AND scar.audit_status = 0 THEN 7
        WHEN sc.status = 0 and scar.audit_type = 2 AND scar.audit_status = 0 THEN 5
        WHEN sc.status = 0 and scar.audit_status = 2 THEN 6
        ELSE sc.status
        END AS status,
        sc.report_type,
        sc.superior_id,
        sc.city_code,
        sc.districts_code,
        sc.street_id,
        sc.community_id,
        sc.party_member_id,
        sc.create_by,
        sc.create_time,
        sc.update_by,
        sc.update_time,
        sc.completion_description,
        sc.completion_images,
        sc.completion_videos,
        sc.completion_other_description,
        sc.completion_time,
        sc.completion_user_id,
        sc.completion_username,
        sc.completion_user_phone,
        sc.closing_time,
        sc.over_time_days,
        sc.latitude,
        sc.longitude,
        scar.audit_type,
        scar.audit_status,
        scar.comment,
        scar.create_time AS reportTime,
        scar.system_user_id,
        scar.reporter,
        scar.department_name,
        scar.department_id
        FROM sgsb_complaint sc
        INNER JOIN sgsb_complaint_audit_record scar ON scar.complaint_id = sc.id and scar.latest_flag = 1
        ) AS t
        <where>
            scar.latest_flag = 1
            <if test="1 == loginUserInfo.accountLevel">
                and t.city_code = 510400
            </if>
            <if test="2 == loginUserInfo.accountLevel">
                and (t.districts_code = #{loginUserInfo.districtsCode} || t.id in (select complaint_id from
                sgsb_complaint_audit_record where audit_type = 3 and audit_status = 1 and report_type =
                #{loginUserInfo.accountLevel} and superior_id = #{loginUserInfo.districtsCode}))
            </if>
            <if test="3 == loginUserInfo.accountLevel">
                and (t.street_id = #{loginUserInfo.streetId} || t.id in (select complaint_id from
                sgsb_complaint_audit_record where audit_type = 3 and audit_status = 1 and report_type =
                #{loginUserInfo.accountLevel} and superior_id = #{loginUserInfo.streetId}))
            </if>
            <if test="4 == loginUserInfo.accountLevel">
                and (t.community_id = #{loginUserInfo.communityId} || t.id in (select complaint_id from
                sgsb_complaint_audit_record where audit_type = 3 and audit_status = 1 and report_type =
                #{loginUserInfo.accountLevel} and superior_id = #{loginUserInfo.communityId}))
            </if>
            <if test="query.status!=null and query.status == 0">
                AND t.status = #{query.status}
            </if>
            <if test="query.nickname != null and query.nickname!=''">
            </if>
            <if test="query.phone != null and query.phone!=''">
            </if>
            <if test="query.startTime != null and query.endTime!=null">
                AND t.create_time BETWEEN #{query.startTime} AND #{query.endTime}
            </if>
            <if test="query.problemType != null and query.problemType!=''">
                AND t.problem_type =#{query.problemType}
            </if>
        </where>
        ORDER BY t.create_time DESC
    </select>
    
    
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/template/协调通知单.docx
Binary files differ
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/template/社区问题单.docx
Binary files differ
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/template/问题处理单.docx
Binary files differ