From 4669a215d1d76db22b79f3c3651d3be7156be543 Mon Sep 17 00:00:00 2001
From: jinpengyong <jpy123456>
Date: Fri, 14 Jan 2022 15:08:40 +0800
Subject: [PATCH] 督办单

---
 screen-api/src/main/java/com/moral/api/service/SupervisionService.java             |   29 +++
 screen-api/src/main/resources/mapper/SupervisionMapper.xml                         |   23 ++
 screen-api/src/main/java/com/moral/api/config/Interceptor/WebAppConfiguration.java |   18 ++
 screen-common/src/main/java/com/moral/constant/ResponseCodeEnum.java               |    3 
 screen-api/src/main/resources/application-dev.yml                                  |    7 
 screen-api/src/main/java/com/moral/api/service/impl/SupervisionServiceImpl.java    |  161 ++++++++++++++++++++
 screen-api/src/main/java/com/moral/api/mapper/SupervisionMapper.java               |   17 ++
 screen-common/src/main/java/com/moral/util/FileUtils.java                          |   33 ++++
 screen-api/src/main/java/com/moral/api/controller/SupervisionController.java       |   72 +++++++++
 screen-api/src/main/java/com/moral/api/entity/Supervision.java                     |  112 ++++++++++++++
 10 files changed, 473 insertions(+), 2 deletions(-)

diff --git a/screen-api/src/main/java/com/moral/api/config/Interceptor/WebAppConfiguration.java b/screen-api/src/main/java/com/moral/api/config/Interceptor/WebAppConfiguration.java
index dec9b13..4afcad5 100644
--- a/screen-api/src/main/java/com/moral/api/config/Interceptor/WebAppConfiguration.java
+++ b/screen-api/src/main/java/com/moral/api/config/Interceptor/WebAppConfiguration.java
@@ -5,6 +5,7 @@
 import org.springframework.context.annotation.Configuration;
 import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
 import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 
 import java.util.ArrayList;
@@ -17,7 +18,7 @@
     //������������������������
     @Bean
     @ConfigurationProperties("mvc.interceptor.exclude")
-    public ArrayList<String> getExcludePath(){
+    public ArrayList<String> getExcludePath() {
         return new ArrayList<>();
     }
 
@@ -28,4 +29,19 @@
         regisration.addPathPatterns("/**/**");//������������������
         regisration.excludePathPatterns(excludePath);//���������������������
     }
+
+    /**
+     * ���������������������������������������������������������
+     *
+     * @param registry
+     */
+    @Override
+    public void addResourceHandlers(ResourceHandlerRegistry registry) {
+        try {
+            registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+    }
 }
diff --git a/screen-api/src/main/java/com/moral/api/controller/SupervisionController.java b/screen-api/src/main/java/com/moral/api/controller/SupervisionController.java
new file mode 100644
index 0000000..5f07951
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/controller/SupervisionController.java
@@ -0,0 +1,72 @@
+package com.moral.api.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+
+import com.moral.api.entity.Supervision;
+import com.moral.api.service.SupervisionService;
+import com.moral.constant.ResponseCodeEnum;
+import com.moral.constant.ResultMessage;
+import com.moral.util.WebUtils;
+
+@RestController
+@RequestMapping("/supervision")
+@CrossOrigin(origins = "*", maxAge = 3600)
+@Api(tags = {"���������������"})
+public class SupervisionController {
+
+    @Autowired
+    private SupervisionService supervisionService;
+
+    @PostMapping("add")
+    public ResultMessage add(MultipartFile[] files, Supervision supervision) {
+        Map<String, Object> response = supervisionService.add(files, supervision);
+        if (!response.isEmpty()) {
+            return ResultMessage.fail(Integer.parseInt(response.get("code").toString()), response.get("msg").toString());
+        }
+        return ResultMessage.ok();
+    }
+
+    @ApiOperation(value = "���������������������", notes = "���������������������")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "cityCode", value = "���������", required = false, paramType = "query", dataType = "int"),
+            @ApiImplicitParam(name = "start", value = "������������", required = false, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "end", value = "������������", required = false, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "page", value = "���������", required = false, paramType = "query", dataType = "int"),
+            @ApiImplicitParam(name = "size", value = "������������", required = false, paramType = "query", dataType = "int")
+    })
+    @GetMapping("select")
+    public ResultMessage select(HttpServletRequest request) {
+        Map<String, Object> params = WebUtils.getParametersStartingWith(request, null);
+        if (!params.containsKey("cityCode")) {
+            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
+        }
+
+        Map<String, Object> result = supervisionService.selectSupervisions(params);
+        return ResultMessage.ok(result);
+    }
+
+    @ApiOperation(value = "���������������", notes = "���������������")
+    @PostMapping("update")
+    public ResultMessage update(MultipartFile[] files, Supervision supervision) {
+        Map<String, Object> response = supervisionService.updateSupervision(files, supervision);
+        if (!response.isEmpty()) {
+            return ResultMessage.fail(Integer.parseInt(response.get("code").toString()), response.get("msg").toString());
+        }
+        return ResultMessage.ok();
+    }
+
+}
diff --git a/screen-api/src/main/java/com/moral/api/entity/Supervision.java b/screen-api/src/main/java/com/moral/api/entity/Supervision.java
new file mode 100644
index 0000000..17f4a4f
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/entity/Supervision.java
@@ -0,0 +1,112 @@
+package com.moral.api.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springframework.format.annotation.DateTimeFormat;
+
+/**
+ * <p>
+ * ���������
+ * </p>
+ *
+ * @author moral
+ * @since 2022-01-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class Supervision extends Model<Supervision> {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ������
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * ������������
+     */
+    private Integer cityCode;
+
+    /**
+     * ������
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private Date time;
+
+    /**
+     * ���������������
+     */
+    private String superviseeUnit;
+
+    /**
+     * ���������������
+     */
+    private String number;
+
+    /**
+     * ������������
+     */
+    private String problemType;
+
+    /**
+     * ������������������
+     */
+    private String problemDesc;
+
+    /**
+     * ������������
+     */
+    private String images;
+
+    /**
+     * ���������
+     */
+    private String handler;
+
+    /**
+     * ������������
+     */
+    private Integer numberTimes;
+
+    /**
+     * ������������
+     */
+    private String measures;
+
+    /**
+     * ������������
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private Date createTime;
+
+    /**
+     * ������������
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private Date updateTime;
+
+    /**
+     * ������������,0���������������1���������
+     */
+    private String isDelete;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}
diff --git a/screen-api/src/main/java/com/moral/api/mapper/SupervisionMapper.java b/screen-api/src/main/java/com/moral/api/mapper/SupervisionMapper.java
new file mode 100644
index 0000000..e2f0b93
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/mapper/SupervisionMapper.java
@@ -0,0 +1,17 @@
+package com.moral.api.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.moral.api.entity.Supervision;
+
+/**
+ * <p>
+ * ��������� Mapper ������
+ * </p>
+ *
+ * @author moral
+ * @since 2022-01-12
+ */
+public interface SupervisionMapper extends BaseMapper<Supervision> {
+
+}
diff --git a/screen-api/src/main/java/com/moral/api/service/SupervisionService.java b/screen-api/src/main/java/com/moral/api/service/SupervisionService.java
new file mode 100644
index 0000000..b17644f
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/service/SupervisionService.java
@@ -0,0 +1,29 @@
+package com.moral.api.service;
+
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.Map;
+
+import com.moral.api.entity.Supervision;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * ��������� ���������
+ * </p>
+ *
+ * @author moral
+ * @since 2022-01-12
+ */
+public interface SupervisionService extends IService<Supervision> {
+
+    //���������������
+    Map<String, Object> add(MultipartFile[] files, Supervision supervision);
+
+    //���������������
+    Map<String, Object> selectSupervisions(Map<String, Object> params);
+
+    //���������������
+    Map<String, Object> updateSupervision(MultipartFile[] files, Supervision supervision);
+
+}
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/SupervisionServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/SupervisionServiceImpl.java
new file mode 100644
index 0000000..4afdb41
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/service/impl/SupervisionServiceImpl.java
@@ -0,0 +1,161 @@
+package com.moral.api.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.moral.api.entity.Supervision;
+import com.moral.api.mapper.SupervisionMapper;
+import com.moral.api.service.SupervisionService;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.moral.constant.Constants;
+import com.moral.constant.ResponseCodeEnum;
+import com.moral.util.FileUtils;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.ObjectUtils;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+import java.util.stream.Collectors;
+
+
+/**
+ * <p>
+ * ��������� ���������������
+ * </p>
+ *
+ * @author moral
+ * @since 2022-01-12
+ */
+@Service
+public class SupervisionServiceImpl extends ServiceImpl<SupervisionMapper, Supervision> implements SupervisionService {
+
+    @Autowired
+    private SupervisionMapper supervisionMapper;
+
+    @Override
+    public Map<String, Object> add(MultipartFile[] files, Supervision supervision) {
+
+        String path = this.getClass().getClassLoader()
+                .getResource("").getFile() + "static/img/";
+
+        Map<String, Object> result = new HashMap<>();
+
+        List<String> images = new ArrayList<>();
+
+        for (MultipartFile file : files) {
+            //������������������������
+            String fileType = file.getContentType();
+            if ("image/jpg".equals(fileType) || "image/png".equals(fileType) || "image/jpeg".equals(fileType)) {
+                //���������������
+                String fileName = file.getOriginalFilename();
+                //���������������������
+                String suffixName = fileName.substring(fileName.lastIndexOf("."));
+                //���������������������
+                fileName = UUID.randomUUID() + suffixName;
+                //������������
+                if (FileUtils.upload(file, path, fileName)) {
+                    images.add(fileName);
+                }
+            } else {
+                result.put("code", ResponseCodeEnum.IMG_UPLOAD_FAIl.getCode());
+                result.put("msg", ResponseCodeEnum.IMG_UPLOAD_FAIl.getMsg());
+                return result;
+            }
+        }
+
+        if (!ObjectUtils.isEmpty(images)) {
+            String image = images.stream()
+                    .map(String::valueOf)
+                    .collect(Collectors.joining(","));
+            supervision.setImages(image);
+        }
+        supervisionMapper.insert(supervision);
+        return result;
+    }
+
+    @Override
+    public Map<String, Object> selectSupervisions(Map<String, Object> params) {
+        //������������������
+        int cityCode = Integer.parseInt(params.get("cityCode").toString());
+        int page = Integer.parseInt(params.get("page").toString());
+        int size = Integer.parseInt(params.get("size").toString());
+        Object start = params.get("start");
+        Object end = params.get("end");
+
+        QueryWrapper<Supervision> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("city_code", cityCode)
+                .eq("is_delete", Constants.NOT_DELETE);
+        if (start != null) {
+            queryWrapper.ge("time", start);
+        }
+        if (start != null) {
+            queryWrapper.le("time", end);
+        }
+
+        //���time������
+        queryWrapper.orderByDesc("time");
+
+        //������
+        Page<Supervision> supervisionPage = new Page<>(page, size);
+        supervisionMapper.selectPage(supervisionPage, queryWrapper);
+        List<Supervision> supervisions = supervisionPage.getRecords();
+
+
+        Map<String, Object> result = new LinkedHashMap<>();
+        result.put("total", supervisionPage.getTotal());
+        result.put("totalPage", supervisionPage.getPages());
+        result.put("current", supervisionPage.getCurrent());
+        result.put("pageSize", supervisionPage.getSize());
+        result.put("item", supervisions);
+
+        return result;
+    }
+
+    @Override
+    public Map<String, Object> updateSupervision(MultipartFile[] files, Supervision supervision) {
+
+        String path = this.getClass().getClassLoader()
+                .getResource("").getFile() + "static/img/";
+
+        Map<String, Object> result = new HashMap<>();
+
+        List<String> images = new ArrayList<>();
+
+
+        for (MultipartFile file : files) {
+            //������������������������
+            String fileType = file.getContentType();
+            if ("image/jpg".equals(fileType) || "image/png".equals(fileType) || "image/jpeg".equals(fileType)) {
+                //���������������
+                String fileName = file.getOriginalFilename();
+                //���������������������
+                String suffixName = fileName.substring(fileName.lastIndexOf("."));
+                //���������������������
+                fileName = UUID.randomUUID() + suffixName;
+                //������������
+                if (FileUtils.upload(file, path, fileName)) {
+                    images.add(fileName);
+                }
+            } else {
+                result.put("code", ResponseCodeEnum.IMG_UPLOAD_FAIl.getCode());
+                result.put("msg", ResponseCodeEnum.IMG_UPLOAD_FAIl.getMsg());
+                return result;
+            }
+        }
+        if (!ObjectUtils.isEmpty(images)) {
+            String image = images.stream()
+                    .map(String::valueOf)
+                    .collect(Collectors.joining(","));
+            supervision.setImages(image);
+        }
+        supervisionMapper.updateById(supervision);
+        return result;
+    }
+}
diff --git a/screen-api/src/main/resources/application-dev.yml b/screen-api/src/main/resources/application-dev.yml
index d1498d7..49177d8 100644
--- a/screen-api/src/main/resources/application-dev.yml
+++ b/screen-api/src/main/resources/application-dev.yml
@@ -66,6 +66,12 @@
     max-conn-lifetime-millis: 20
     test-on-return: false
 
+  servlet:
+    multipart:
+      enabled: true
+      max-file-size: 2MB
+      max-request-size: 2MB
+
 mybatis-plus:
   mapper-locations: classpath:mapper/*.xml
   global-config:
@@ -116,6 +122,7 @@
       - /swagger-ui.html/**
       - /webjars/**
       - /verificationCode/**
+      - /static/**
 
 AES:
   KEY:
diff --git a/screen-api/src/main/resources/mapper/SupervisionMapper.xml b/screen-api/src/main/resources/mapper/SupervisionMapper.xml
new file mode 100644
index 0000000..7db5524
--- /dev/null
+++ b/screen-api/src/main/resources/mapper/SupervisionMapper.xml
@@ -0,0 +1,23 @@
+<?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">
+<mapper namespace="com.moral.api.mapper.SupervisionMapper">
+
+    <!-- ������������������������ -->
+    <resultMap id="BaseResultMap" type="com.moral.api.entity.Supervision">
+        <id column="id" property="id"/>
+        <result column="city_code" property="cityCode"/>
+        <result column="time" property="time"/>
+        <result column="supervisee_unit" property="superviseeUnit"/>
+        <result column="number" property="number"/>
+        <result column="problem_type" property="problemType"/>
+        <result column="problem_desc" property="problemDesc"/>
+        <result column="images" property="images"/>
+        <result column="handler" property="handler"/>
+        <result column="number_times" property="numberTimes"/>
+        <result column="measures" property="measures"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_time" property="updateTime"/>
+        <result column="is_delete" property="isDelete"/>
+    </resultMap>
+
+</mapper>
\ No newline at end of file
diff --git a/screen-common/src/main/java/com/moral/constant/ResponseCodeEnum.java b/screen-common/src/main/java/com/moral/constant/ResponseCodeEnum.java
index 54dea75..24f8f23 100644
--- a/screen-common/src/main/java/com/moral/constant/ResponseCodeEnum.java
+++ b/screen-common/src/main/java/com/moral/constant/ResponseCodeEnum.java
@@ -64,7 +64,8 @@
     CANNOT_DELETE_ONESELF(-49, "���������������������������"),
     EXPIRE_BEYOND_ADMIN(-50, "���������������������������������"),
     SERVICES_SCOPE_IS_EXIST(-51, "���������������������"),
-    SERVICES_SCOPE_IS_NOT_EXIST(-52, "���������������������");
+    SERVICES_SCOPE_IS_NOT_EXIST(-52, "���������������������"),
+    IMG_UPLOAD_FAIl(-53, "���������������������������������������������������");
 
     private final Integer code;
     private final String msg;
diff --git a/screen-common/src/main/java/com/moral/util/FileUtils.java b/screen-common/src/main/java/com/moral/util/FileUtils.java
new file mode 100644
index 0000000..8434170
--- /dev/null
+++ b/screen-common/src/main/java/com/moral/util/FileUtils.java
@@ -0,0 +1,33 @@
+package com.moral.util;
+
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.File;
+
+public class FileUtils {
+
+    /**
+     * @param file     ������
+     * @param path     ������������������
+     * @param fileName ������������������
+     * @return
+     */
+    public static boolean upload(MultipartFile file, String path, String fileName) {
+        //������������������������
+        String realPath = path + "\\" + fileName;
+        File dic = new File(path);
+
+        if (!dic.exists()) {
+            dic.mkdirs();
+        }
+
+        try {
+            //������������
+            file.transferTo(new File(realPath));
+            return true;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+    }
+}
\ No newline at end of file

--
Gitblit v1.8.0