Ver código fonte

批量导入案件

zhj 2 anos atrás
pai
commit
50b93b7a00

+ 121 - 5
src/main/java/com/welampiot/controller/CityAdminCaseController.java

@@ -4,17 +4,16 @@ import com.welampiot.common.BaseResult;
 import com.welampiot.common.InterfaceResultEnum;
 import com.welampiot.dto.*;
 import com.welampiot.service.*;
+import com.welampiot.utils.ExcelUtil;
 import com.welampiot.utils.ToolUtils;
 import com.welampiot.vo.*;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.CrossOrigin;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.text.SimpleDateFormat;
-import java.util.List;
+import java.util.*;
 
 /**
  * ClassName: CityAdminCaseController
@@ -296,4 +295,121 @@ public class CityAdminCaseController {
         cityAdminCaseImageVO.setList(list);
         return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version,cityAdminCaseImageVO);
     }
+
+    /**
+     * 批量导入案件
+     * @param vo 案件信息
+     * @return 批量导入案件
+     */
+    @PostMapping("/batchInput")
+    private BaseResult<?> batchInput(CityAdminCaseInfoVO vo) {
+        int version = vo.getVersion() == null ? 0 : vo.getVersion();
+        Integer streetId = vo.getStreetId();
+        Integer areaId = vo.getAreaId();
+        Integer type = vo.getType();
+        if (streetId == null || streetId == 0 || areaId == null || areaId == 0)
+            return toolUtils.response(InterfaceResultEnum.LACK_PARAM_ERROR,version);
+        MultipartFile file = vo.getFile();
+        if (type == 1) { // 验证
+            if (file.isEmpty()) return toolUtils.response(InterfaceResultEnum.LACK_PARAM_ERROR,version);
+            List<Map> maps = ExcelUtil.inExcel(file);
+            List<Object> msg = new ArrayList<>();
+            List<CityAdminCaseInfoDTO> caseData = new ArrayList<>();
+            int index = 1;
+            if (maps.size() > 0) {
+                for (Map m : maps) {
+                    CityAdminCaseInfoDTO cityAdminCaseInfoDTO = new CityAdminCaseInfoDTO();
+                    String startDate = m.get(0).toString();
+                    String problemSourceStr = m.get(1).toString();
+                    Set<String> sourceSet = new HashSet<>(Arrays.asList("采集上报","公众举报","视频上报","微信上报","领导交办"));
+                    if (!sourceSet.contains(problemSourceStr)) msg.add("表格第" + index + "行问题来源类型错误");
+                    Integer problemSource = CityAdminCaseInfoDTO.getProblemSourceByStr(problemSourceStr);
+                    String problemLevelStr = m.get(2).toString();
+                    Set<String> levelSet = new HashSet<>(Arrays.asList("日常","一般","严重","重大"));
+                    if (!levelSet.contains(problemLevelStr)) msg.add("表格第" + index + "行问题级别错误");
+                    Integer problemLevel = CityAdminCaseInfoDTO.getProblemLevelByStr(problemLevelStr);
+                    String bigCase = m.get(3).toString();
+                    String smallCase = m.get(4).toString();
+                    String area = m.get(5).toString();
+                    String street = m.get(6).toString();
+                    String community = m.get(7).toString();
+                    String grid = m.get(8).toString();
+                    String remark = m.get(9).toString();
+                    String location = m.get(10).toString();
+                    String phone = m.get(12).toString();
+                    String name = m.get(11).toString();
+                    String isBack = m.get(13).toString();
+                    if (isBack.equals("是")) {
+                        cityAdminCaseInfoDTO.setIsBack(1);
+                    } else {
+                        cityAdminCaseInfoDTO.setIsBack(0);
+                    }
+                    String backPhone = m.get(14).toString();
+                    String sax = m.get(15).toString();
+                    if (sax.equals("男")) {
+                        cityAdminCaseInfoDTO.setSax(1);
+                    } else {
+                        cityAdminCaseInfoDTO.setSax(0);
+                    }
+                    cityAdminCaseInfoDTO.setStartDate(startDate);
+                    cityAdminCaseInfoDTO.setProblemSource(problemSource);
+                    cityAdminCaseInfoDTO.setProblemLevel(problemLevel);
+                    cityAdminCaseInfoDTO.setCaseBigName(bigCase);
+                    cityAdminCaseInfoDTO.setCaseSmallName(smallCase);
+                    cityAdminCaseInfoDTO.setArea(area);
+                    cityAdminCaseInfoDTO.setStreet(street);
+                    cityAdminCaseInfoDTO.setCommunity(community);
+                    cityAdminCaseInfoDTO.setGrid(grid);
+                    cityAdminCaseInfoDTO.setPhone(phone);
+                    cityAdminCaseInfoDTO.setName(name);
+                    cityAdminCaseInfoDTO.setBackPhone(backPhone);
+                    cityAdminCaseInfoDTO.setRemark(remark);
+                    cityAdminCaseInfoDTO.setLocation(location);
+
+                    CityAdminAreaDTO cityStreet = cityAdminAreaService.getAreaOrStreetByName(street);
+                    if (cityStreet != null) {
+                        cityAdminCaseInfoDTO.setStreetId(cityStreet.getId());
+                    } else {
+                        msg.add("表格第" + index + "行街道(镇)错误");
+                    }
+                    CityAdminAreaDTO cityArea = cityAdminAreaService.getAreaOrStreetByName(area);
+                    if (cityArea != null) {
+                        cityAdminCaseInfoDTO.setAreaId(cityArea.getId());
+                    } else {
+                        msg.add("表格第" + index + "行区域错误");
+                    }
+                    CityAdminCaseItemDTO bigCaseItem = cityAdminCaseItemService.getCaseByName(bigCase);
+                    if (bigCaseItem != null) {
+                        cityAdminCaseInfoDTO.setCaseBigId(bigCaseItem.getId());
+                    } else {
+                        msg.add("表格第" + index + "行大案件错误");
+                    }
+                    CityAdminCaseItemDTO smallCaseItem = cityAdminCaseItemService.getCaseByName(smallCase);
+                    if (smallCaseItem != null) {
+                        cityAdminCaseInfoDTO.setCaseSmallId(smallCaseItem.getId());
+                    } else {
+                        msg.add("表格第" + index + "行小案件错误");
+                    }
+                    caseData.add(cityAdminCaseInfoDTO);
+
+                    index ++;
+                }
+            }
+            CityAdminCaseInfoVO cityAdminCaseInfoVO = new CityAdminCaseInfoVO();
+            cityAdminCaseInfoVO.setMsg(msg);
+            cityAdminCaseInfoVO.setCaseData(caseData);
+            return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version,cityAdminCaseInfoVO);
+        } else { // 创建
+            List<CityAdminCaseInfoDTO> caseData = vo.getCaseData();
+            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            for (CityAdminCaseInfoDTO dto : caseData) {
+                long l = System.currentTimeMillis();
+                String createTime = format.format(l);
+                dto.setCreateTime(createTime);
+                cityAdminCaseInfoService.addCityAdminCaseInfoData(dto);
+            }
+        }
+
+        return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version);
+    }
 }

+ 2 - 0
src/main/java/com/welampiot/dao/CityAdminAreaDao.java

@@ -18,4 +18,6 @@ public interface CityAdminAreaDao {
     List<CityAdminAreaDTO> getCityAdminAreaNavList();
 
     List<CityAdminAreaDTO> getCityAdminStreetNavList(@Param("pid") Integer pid);
+
+    CityAdminAreaDTO getAreaOrStreetByName(@Param("name") String name);
 }

+ 2 - 0
src/main/java/com/welampiot/dao/CityAdminCaseItemDao.java

@@ -18,4 +18,6 @@ public interface CityAdminCaseItemDao {
     List<CityAdminCaseItemDTO> getBigCaseNavList();
 
     List<CityAdminCaseItemDTO> getSmallCaseNavListByBigId(@Param("pid") Integer pid);
+
+    CityAdminCaseItemDTO getCaseByName(@Param("name") String name);
 }

+ 39 - 0
src/main/java/com/welampiot/dto/CityAdminCaseInfoDTO.java

@@ -84,4 +84,43 @@ public class CityAdminCaseInfoDTO implements Serializable {
     private String street;
     private String caseBigName;
     private String caseSmallName;
+
+    public static Integer getProblemSourceByStr(String problemSourceStr) {
+        int problemSource = 0;
+        switch (problemSourceStr) {
+            case "采集上报" :
+                break;
+            case "公众举报" :
+                problemSource = 1;
+                break;
+            case "视频上报" :
+                problemSource = 2;
+                break;
+            case "微信上报" :
+                problemSource = 3;
+                break;
+            case "领导交办" :
+                problemSource = 4;
+                break;
+        }
+        return problemSource;
+    }
+
+    public static Integer getProblemLevelByStr(String problemLevelStr) {
+        int problemLevel = 0;
+        switch (problemLevelStr) {
+            case "日常" :
+                break;
+            case "一般" :
+                problemLevel = 1;
+                break;
+            case "严重" :
+                problemLevel = 2;
+                break;
+            case "重大" :
+                problemLevel = 3;
+                break;
+        }
+        return problemLevel;
+    }
 }

+ 2 - 0
src/main/java/com/welampiot/service/CityAdminAreaService.java

@@ -17,4 +17,6 @@ public interface CityAdminAreaService {
     List<CityAdminAreaDTO> getCityAdminAreaNavList();
 
     List<CityAdminAreaDTO> getCityAdminStreetNavList(Integer pid);
+
+    CityAdminAreaDTO getAreaOrStreetByName(String name);
 }

+ 2 - 0
src/main/java/com/welampiot/service/CityAdminCaseItemService.java

@@ -17,4 +17,6 @@ public interface CityAdminCaseItemService {
     List<CityAdminCaseItemDTO> getBigCaseNavList();
 
     List<CityAdminCaseItemDTO> getSmallCaseNavListByBigId(Integer pid);
+
+    CityAdminCaseItemDTO getCaseByName(String name);
 }

+ 5 - 0
src/main/java/com/welampiot/service/impl/CityAdminAreaServiceImpl.java

@@ -31,4 +31,9 @@ public class CityAdminAreaServiceImpl implements CityAdminAreaService {
     public List<CityAdminAreaDTO> getCityAdminStreetNavList(Integer pid) {
         return cityAdminAreaDao.getCityAdminStreetNavList(pid);
     }
+
+    @Override
+    public CityAdminAreaDTO getAreaOrStreetByName(String name) {
+        return cityAdminAreaDao.getAreaOrStreetByName(name);
+    }
 }

+ 5 - 0
src/main/java/com/welampiot/service/impl/CityAdminCaseItemServiceImpl.java

@@ -31,4 +31,9 @@ public class CityAdminCaseItemServiceImpl implements CityAdminCaseItemService {
     public List<CityAdminCaseItemDTO> getSmallCaseNavListByBigId(Integer pid) {
         return cityAdminCaseItemDao.getSmallCaseNavListByBigId(pid);
     }
+
+    @Override
+    public CityAdminCaseItemDTO getCaseByName(String name) {
+        return cityAdminCaseItemDao.getCaseByName(name);
+    }
 }

+ 7 - 0
src/main/java/com/welampiot/vo/CityAdminCaseInfoVO.java

@@ -2,6 +2,7 @@ package com.welampiot.vo;
 
 import com.welampiot.dto.CityAdminCaseInfoDTO;
 import lombok.Data;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.io.Serializable;
 import java.util.List;
@@ -87,5 +88,11 @@ public class CityAdminCaseInfoVO implements Serializable {
 
     private Integer version;
 
+    private MultipartFile file;
+
+    private List<Object> msg;
+
+    private List<CityAdminCaseInfoDTO> caseData;
+
     private List<CityAdminCaseInfoDTO> list;
 }

+ 6 - 0
src/main/resources/mapper/CityAdminAreaMapper.xml

@@ -14,4 +14,10 @@
         where c.pid = #{pid}
     </select>
 
+    <select id="getAreaOrStreetByName" resultType="CityAdminAreaDTO">
+        select c.id,c.name,c.pid,c.level
+        from city_admin_area c
+        where c.name = #{name}
+    </select>
+
 </mapper>

+ 6 - 0
src/main/resources/mapper/CityAdminCaseItemMapper.xml

@@ -14,4 +14,10 @@
         where c.pid = #{pid}
     </select>
 
+    <select id="getCaseByName" resultType="CityAdminCaseItemDTO">
+        select c.id,c.pid,c.level,c.name
+        from city_admin_case_item c
+        where c.name = #{name}
+    </select>
+
 </mapper>