Ver Fonte

指标模型数据导入接口、数据查询相关接口优化(加年份、时间条件)

wanger há 1 mês atrás
pai
commit
2e6cdb65fd

+ 26 - 0
onemap-modules/onemap-api/src/main/java/com/onemap/api/service/impl/ResultsServiceImpl.java

@@ -11,6 +11,7 @@ import com.onemap.common.core.constant.SecurityConstants;
 import com.onemap.common.core.domain.R;
 import com.onemap.common.core.utils.StringUtils;
 import com.onemap.common.core.utils.UnPackageUtils;
+import com.onemap.common.core.web.domain.AjaxResult;
 import com.onemap.common.core.web.domain.RequestResult;
 import com.onemap.common.security.service.TokenService;
 import com.onemap.common.security.utils.SecurityUtils;
@@ -367,6 +368,31 @@ public class ResultsServiceImpl implements ResultsService {
             System.out.println("ghxstext===" + ghxstext);
             System.out.println("ghcjtext===" + ghcjtext);
             System.out.println("sbsjtext===" + sbsjtext);
+            //TODO wanger 针对村庄规划基本信息txt中自治区的审查规则进行同步审查,避免问题成果包上报至市级
+            if ("9".equals(qxsbcg.getGhlx())) {
+                String czlxtext = txtMap.get("村庄类型");
+                String czsltext = txtMap.get("村庄数量");
+                if (StringUtils.isEmpty(czlxtext)) {
+                    return RequestResult.error("2.1---村庄类型不能为空!");
+                }
+                if (StringUtils.isEmpty(czsltext)) {
+                    return RequestResult.error("2.2---村庄数量不能为空!");
+                } else if (czsltext.contains(" ")) {
+                    return RequestResult.error("2.3---村庄数量不能包含空格!");
+                }
+                //TODO wanger 基本信息txt中所有以“人口”结尾的字段校验 不能包含单位和空格
+                for (Map.Entry<String, String> entry : txtMap.entrySet()) {
+                    String key = entry.getKey();
+                    String value = entry.getValue();
+                    if (key.endsWith("人口")) {
+                        System.out.println("找到人口相关数据 - Key: " + key + ", Value: " + value);
+                        // 判断value是否为整型字符串
+                        if (!isIntegerString(value)) {
+                            return RequestResult.error("2.4---人口数量不能包含单位和空格!");
+                        }
+                    }
+                }
+            }
             String sjbz_bsm = "";
             ObjectMapper objectMapper = new ObjectMapper();
             String txtjson = "";

+ 19 - 0
onemap-modules/onemap-apply/pom.xml

@@ -127,6 +127,25 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-websocket</artifactId>
         </dependency>
+
+        <!-- PDF处理 -->
+        <dependency>
+            <groupId>org.apache.pdfbox</groupId>
+            <artifactId>pdfbox</artifactId>
+            <version>2.0.27</version>
+        </dependency>
+
+        <!-- Excel处理 -->
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi</artifactId>
+            <version>5.2.3</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi-ooxml</artifactId>
+            <version>5.2.3</version>
+        </dependency>
     </dependencies>
 
     <build>

+ 8 - 0
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/controller/sbjk/ZbsbController.java

@@ -143,4 +143,12 @@ public class ZbsbController extends BaseController {
         return AjaxResult.success("uploadZbsbFileTest").put("success", true).put("data", "");
     }
 
+    /**
+     * 城市体检评估报告上传
+     */
+    @PostMapping("/tjpg")
+    public AjaxResult tjpg(@RequestBody ZbsbDTO zbsbDTO) {
+        AjaxResult res = zbsbService.tjpg(zbsbDTO);
+        return AjaxResult.success(res);
+    }
 }

+ 9 - 0
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/domain/ghss/ZbmxJcpgyjListViewDTO.java

@@ -7,6 +7,15 @@ public class ZbmxJcpgyjListViewDTO {
     private String xzqmc;
     private BigDecimal xzz;
     private String status;
+    private String year;
+
+    public String getYear() {
+        return year;
+    }
+
+    public void setYear(String year) {
+        this.year = year;
+    }
 
     public String getXzqdm() {
         return xzqdm;

+ 6 - 8
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/mapper/ghss/ZbmxJcpgyjMapper.java

@@ -18,19 +18,17 @@ public interface ZbmxJcpgyjMapper extends BaseMapper<ZbmxZbxDTO> {
 
     List<ZbmxJcpgyjViewDTO> SelectTXZB(String BSM);
 
-    List<ZbmxJcpgyjDTO> SelectJQZ(@Param("newidsList")String[] newidsList, @Param("xzqdm")String xzqdm, @Param("jqn")String jqn);
+    List<ZbmxJcpgyjDTO> SelectJQZ(@Param("newidsList") String[] newidsList, @Param("xzqdm") String xzqdm, @Param("jqn") String jqn);
 
-    List<ZbmxJcpgyjDTO> SelectJCZ(@Param("newidsList") String[] newidsList,@Param("xzqdm")String xzqdm,@Param("tjsj")String tjsj);
+    List<ZbmxJcpgyjDTO> SelectJCZ(@Param("newidsList") String[] newidsList, @Param("xzqdm") String xzqdm, @Param("tjsj") String tjsj);
 
-    List<ZbmxJcpgyjDTO> SelectGHZ(@Param("newidsList") String[] newidsList,@Param("xzqdm")String xzqdm);
+    List<ZbmxJcpgyjDTO> SelectGHZ(@Param("newidsList") String[] newidsList, @Param("xzqdm") String xzqdm);
 
-    ZbmxZbjczDTO SeletQSFX(@Param("xzqdm")String xzqdm,@Param("zbbh")String zbbh,@Param("jcsj")String jcsj);
-
-    ZbmxZbjczDTO SelectHBFX(@Param("xzqdm")String xzqdm,@Param("zbbh")String zbbh,@Param("jcsj")String jcsj);
-
-    double SelectGHMBZ(@Param("year")String year,@Param("xzqdm")String xzqdm,@Param("zbbh")String zbbh);
+    ZbmxZbjczDTO SeletQSFX(@Param("xzqdm") String xzqdm, @Param("zbbh") String zbbh, @Param("jcsj") String jcsj);
 
+    ZbmxZbjczDTO SelectHBFX(@Param("xzqdm") String xzqdm, @Param("zbbh") String zbbh, @Param("jcsj") String jcsj);
 
+    double SelectGHMBZ(@Param("year") String year, @Param("xzqdm") String xzqdm, @Param("zbbh") String zbbh);
 
 
 }

+ 4 - 0
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/mapper/sbjk/ZbsbMapper.java

@@ -2,6 +2,7 @@ package com.onemap.apply.mapper.sbjk;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.onemap.apply.domain.sbjk.ZbsbDTO;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 数据层
@@ -9,4 +10,7 @@ import com.onemap.apply.domain.sbjk.ZbsbDTO;
  * @author onemap
  */
 public interface ZbsbMapper extends BaseMapper<ZbsbDTO> {
+    void deleteSQL(@Param("runsql") String runsql);
+
+    void insertSQL(@Param("runsql") String runsql);
 }

+ 1 - 1
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/service/impl/ghss/ZbmxJcpgyjServiceImpl.java

@@ -127,7 +127,7 @@ public class ZbmxJcpgyjServiceImpl implements IZbmxJcpgyjService {
             Calendar calendar = Calendar.getInstance();
             SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd :hh:mm:ss");
             String jcsj = dateFormat.format(calendar.getTime());
-            ZbmxZbjczDTO hbfx = zbmxJcpgyjMapper.SelectHBFX(page.getXzqdm(), page.getZbbh(), jcsj);
+            ZbmxZbjczDTO hbfx = zbmxJcpgyjMapper.SelectHBFX(page.getXzqdm(), page.getZbbh(), page.getYear());
             //监测值(目标对比)
             String timejczmbdb = "";
             if (page.getYear() == null || Objects.equals(page.getYear(), "")) {

+ 33 - 34
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/service/impl/sbjk/TjpgsbServiceImpl.java

@@ -42,6 +42,7 @@ public class TjpgsbServiceImpl implements TjpgsbService {
     private String tjpgsbListUrl;
     @Value("${tjpgsb.tjpgsbUplaodUrl}")
     private String tjpgsbUplaodUrl;
+
     /**
      * 查询记录
      *
@@ -49,10 +50,9 @@ public class TjpgsbServiceImpl implements TjpgsbService {
      * @return 记录
      */
     @Override
-    public TjpgsbDTO selectByUuid(String uuid)
-    {
+    public TjpgsbDTO selectByUuid(String uuid) {
         QueryWrapper<TjpgsbDTO> wrapper = new QueryWrapper<>();
-        wrapper.eq("uuid",uuid);
+        wrapper.eq("uuid", uuid);
         return tjpgsbMapper.selectOne(wrapper);
     }
 
@@ -63,8 +63,7 @@ public class TjpgsbServiceImpl implements TjpgsbService {
      * @return 记录
      */
     @Override
-    public List<TjpgsbDTO> selectList(TjpgsbDTO tjpgsbDTO)
-    {
+    public List<TjpgsbDTO> selectList(TjpgsbDTO tjpgsbDTO) {
         QueryWrapper<TjpgsbDTO> giswrapper = new QueryWrapper<>();
         return tjpgsbMapper.selectList(giswrapper);
     }
@@ -76,8 +75,7 @@ public class TjpgsbServiceImpl implements TjpgsbService {
      * @return 结果
      */
     @Override
-    public int insert(TjpgsbDTO tjpgsbDTO)
-    {
+    public int insert(TjpgsbDTO tjpgsbDTO) {
         tjpgsbDTO.setUploadTime(new Date());
         tjpgsbDTO.setUuid(IdUtils.simpleUUID());
         return tjpgsbMapper.insert(tjpgsbDTO);
@@ -90,12 +88,11 @@ public class TjpgsbServiceImpl implements TjpgsbService {
      * @return 结果
      */
     @Override
-    public int update(TjpgsbDTO tjpgsbDTO)
-    {
-        if(tjpgsbDTO!=null && StringUtils.isNotEmpty(tjpgsbDTO.getUuid())){
+    public int update(TjpgsbDTO tjpgsbDTO) {
+        if (tjpgsbDTO != null && StringUtils.isNotEmpty(tjpgsbDTO.getUuid())) {
             QueryWrapper<TjpgsbDTO> wrapper = new QueryWrapper<>();
-            wrapper.eq("uuid",tjpgsbDTO.getUuid());
-            return tjpgsbMapper.update(tjpgsbDTO,wrapper);
+            wrapper.eq("uuid", tjpgsbDTO.getUuid());
+            return tjpgsbMapper.update(tjpgsbDTO, wrapper);
         }
         return 0;
     }
@@ -107,11 +104,10 @@ public class TjpgsbServiceImpl implements TjpgsbService {
      * @return 结果
      */
     @Override
-    public int deleteByUuid(String uuid)
-    {
+    public int deleteByUuid(String uuid) {
         int r = 0;
         TjpgsbDTO tjpgsbDTO = selectByUuid(uuid);
-        if(tjpgsbDTO!=null) {
+        if (tjpgsbDTO != null) {
             String filePath = tjpgsbDTO.getFilePath();
             QueryWrapper<TjpgsbDTO> wrapper = new QueryWrapper<>();
             wrapper.eq("uuid", uuid);
@@ -129,6 +125,7 @@ public class TjpgsbServiceImpl implements TjpgsbService {
         }
         return r;
     }
+
     /**
      * 上传zip文件
      */
@@ -137,9 +134,9 @@ public class TjpgsbServiceImpl implements TjpgsbService {
         try {
             SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
             String fileName = file.getOriginalFilename();
-            String fileDir = temp+ File.separator+"tjpgsb"+File.separator + sdf.format(new Date());
-            File dirFile= new File(fileDir);
-            if(!dirFile.exists()) {
+            String fileDir = temp + File.separator + "tjpgsb" + File.separator + sdf.format(new Date());
+            File dirFile = new File(fileDir);
+            if (!dirFile.exists()) {
                 dirFile.mkdirs();
             }
             File desc = new File(dirFile.getAbsolutePath() + File.separator + fileName);
@@ -150,11 +147,12 @@ public class TjpgsbServiceImpl implements TjpgsbService {
             return AjaxResult.error(e.getMessage());
         }
     }
+
     /**
      * 上报提交
      */
     @Override
-    public AjaxResult reportSubmit(String uuid){
+    public AjaxResult reportSubmit(String uuid) {
         TjpgsbDTO tjpgsbDTO = selectByUuid(uuid);
         if (tjpgsbDTO == null) {
             return AjaxResult.error("没有找到该数据!");
@@ -183,22 +181,23 @@ public class TjpgsbServiceImpl implements TjpgsbService {
                 tjpgsbDTO.setStatus("1");
                 tjpgsbDTO.setMsg(reStrFileUpload.toString());
                 update(tjpgsbDTO);
-                return AjaxResult.error("上传数据失败:" + reStrFileUpload.toString()+ "!");
+                return AjaxResult.error("上传数据失败:" + reStrFileUpload.toString() + "!");
             }
             tjpgsbDTO.setMsg(reStrFileUpload.toString());
             tjpgsbDTO.setStatus("2");
             update(tjpgsbDTO);
-        }else{
+        } else {
             error = tokenJson.toJSONString();
         }
-        if(StringUtils.isNotEmpty(error)){
+        if (StringUtils.isNotEmpty(error)) {
             return AjaxResult.error(error);
-        }else{
+        } else {
             return AjaxResult.success("上报成功");
         }
     }
+
     @Override
-    public AjaxResult listRemote(String reportYear,String status) {
+    public AjaxResult listRemote(String reportYear, String status) {
         //调用厅里接口
         JSONArray jsonArrayReturn = new JSONArray();
         //获取token授权
@@ -227,25 +226,25 @@ public class TjpgsbServiceImpl implements TjpgsbService {
                     wrapper.eq("task_id", taskId);
                     wrapper.orderByDesc("upload_time");
                     List<TjpgsbDTO> list = tjpgsbMapper.selectList(wrapper);
-                    if(list.size()>0){
-                        jsonObjectData.put("uploadStatus",list.get(0).getUploadStatus());
-                        jsonObjectData.put("uuid",list.get(0).getUuid());
-                        jsonObjectData.put("fileName",list.get(0).getFileName());
-                    }else{
-                        jsonObjectData.put("uploadStatus",0);
+                    if (list.size() > 0) {
+                        jsonObjectData.put("uploadStatus", list.get(0).getUploadStatus());
+                        jsonObjectData.put("uuid", list.get(0).getUuid());
+                        jsonObjectData.put("fileName", list.get(0).getFileName());
+                    } else {
+                        jsonObjectData.put("uploadStatus", 0);
                     }
                     jsonArrayReturn.add(jsonObjectData);
                 }
-            }else{
+            } else {
                 error = reStrList.toJSONString();
             }
             System.out.println(jsonArrayReturn);
-        }else{
+        } else {
             error = tokenJson.toJSONString();
         }
-        if(StringUtils.isNotEmpty(error)){
+        if (StringUtils.isNotEmpty(error)) {
             return AjaxResult.error(error);
-        }else{
+        } else {
             return AjaxResult.success(jsonArrayReturn);
         }
     }

+ 149 - 24
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/service/impl/sbjk/ZbsbServiceImpl.java

@@ -18,6 +18,7 @@ import org.apache.commons.io.FileUtils;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.http.MediaType;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -26,12 +27,15 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.File;
 import java.io.IOException;
+import java.text.DecimalFormat;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import static com.onemap.apply.utils.ExcelReader.readExcel;
+
 
 @Service
 public class ZbsbServiceImpl implements ZbsbService {
@@ -47,6 +51,7 @@ public class ZbsbServiceImpl implements ZbsbService {
     private String password;
     @Value("${zbsb.zbsbUrl}")
     private String zbsbUrl;
+
     /**
      * 查询记录
      *
@@ -54,10 +59,9 @@ public class ZbsbServiceImpl implements ZbsbService {
      * @return 记录
      */
     @Override
-    public ZbsbDTO selectByUuid(String uuid)
-    {
+    public ZbsbDTO selectByUuid(String uuid) {
         QueryWrapper<ZbsbDTO> wrapper = new QueryWrapper<>();
-        wrapper.eq("uuid",uuid);
+        wrapper.eq("uuid", uuid);
         return zbsbMapper.selectOne(wrapper);
     }
 
@@ -68,19 +72,18 @@ public class ZbsbServiceImpl implements ZbsbService {
      * @return 记录
      */
     @Override
-    public List<ZbsbDTO> selectList(ZbsbDTO tbFilesDataOpt)
-    {
+    public List<ZbsbDTO> selectList(ZbsbDTO tbFilesDataOpt) {
         QueryWrapper<ZbsbDTO> giswrapper = new QueryWrapper<>();
         return zbsbMapper.selectList(giswrapper);
     }
 
     /**
      * 新增记录
+     *
      * @return 结果
      */
     @Override
-    public String insert(ZbsbDTO zbsbDTO)
-    {
+    public String insert(ZbsbDTO zbsbDTO) {
         String uuid = IdUtils.simpleUUID();
         zbsbDTO.setUuid(uuid);
         zbsbDTO.setUploadTime(new Date());
@@ -96,12 +99,11 @@ public class ZbsbServiceImpl implements ZbsbService {
      * @return 结果
      */
     @Override
-    public int update(ZbsbDTO tbFilesDataOpt)
-    {
-        if(tbFilesDataOpt!=null && StringUtils.isNotEmpty(tbFilesDataOpt.getUuid())){
+    public int update(ZbsbDTO tbFilesDataOpt) {
+        if (tbFilesDataOpt != null && StringUtils.isNotEmpty(tbFilesDataOpt.getUuid())) {
             QueryWrapper<ZbsbDTO> wrapper = new QueryWrapper<>();
-            wrapper.eq("uuid",tbFilesDataOpt.getUuid());
-            return zbsbMapper.update(tbFilesDataOpt,wrapper);
+            wrapper.eq("uuid", tbFilesDataOpt.getUuid());
+            return zbsbMapper.update(tbFilesDataOpt, wrapper);
         }
         return 0;
     }
@@ -113,11 +115,10 @@ public class ZbsbServiceImpl implements ZbsbService {
      * @return 结果
      */
     @Override
-    public int deleteByUuid(String uuid)
-    {
+    public int deleteByUuid(String uuid) {
         int r = 0;
         ZbsbDTO zbsbDTO = selectByUuid(uuid);
-        if(zbsbDTO!=null) {
+        if (zbsbDTO != null) {
             String filePath = zbsbDTO.getFilePath();
             QueryWrapper<ZbsbDTO> wrapper = new QueryWrapper<>();
             wrapper.eq("uuid", uuid);
@@ -135,6 +136,7 @@ public class ZbsbServiceImpl implements ZbsbService {
         }
         return r;
     }
+
     /**
      * 上传Excel文件
      */
@@ -143,9 +145,9 @@ public class ZbsbServiceImpl implements ZbsbService {
         try {
             SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
             String fileName = file.getOriginalFilename();
-            String fileDir = temp+ File.separator+"zbsb"+File.separator + sdf.format(new Date());
-            File dirFile= new File(fileDir);
-            if(!dirFile.exists()) {
+            String fileDir = temp + File.separator + "zbsb" + File.separator + sdf.format(new Date());
+            File dirFile = new File(fileDir);
+            if (!dirFile.exists()) {
                 dirFile.mkdirs();
             }
             File desc = new File(dirFile.getAbsolutePath() + File.separator + fileName);
@@ -184,25 +186,148 @@ public class ZbsbServiceImpl implements ZbsbService {
             System.out.println("reStrFileUpload :" + reStrFileUpload);
             if (reStrFileUpload.containsKey("code") && !"200".equals(reStrFileUpload.getString("code"))) {
                 zbsbDTO.setUploadStatus(-1);
-                if(reStrFileUpload.containsKey("msg")){
+                if (reStrFileUpload.containsKey("msg")) {
                     zbsbDTO.setContent(reStrFileUpload.getString("msg"));
-                }else{
+                } else {
                     zbsbDTO.setContent(reStrFileUpload.getString("message"));
                 }
                 update(zbsbDTO);
                 return AjaxResult.error("上传数据失败:" + reStrFileUpload.getString("msg") + "!");
-            }else{
+            } else {
                 zbsbDTO.setContent(reStrFileUpload.getString("msg"));
                 zbsbDTO.setStatus("2");
                 update(zbsbDTO);
             }
-        }else{
+        } else {
             error = tokenJson.toJSONString();
         }
-        if(StringUtils.isNotEmpty(error)){
+        if (StringUtils.isNotEmpty(error)) {
             return AjaxResult.error(error);
-        }else{
+        } else {
             return AjaxResult.success("上报成功");
         }
     }
+
+    /**
+     * 新增记录
+     *
+     * @return 结果
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public AjaxResult tjpg(ZbsbDTO zbsbDTO) {
+        String filepath = zbsbDTO.getFilePath();
+        if (StringUtils.isNotEmpty(filepath)) {
+            try {
+                System.out.println("Start Import Tjpg Excel!!!");
+                List<List<String>> excelData = readExcel(filepath);
+
+                //TODO 获取前一年与当年的年份数据
+                List<String> header = excelData.get(0);
+                String preYear = header.get(9).substring(0, 4);
+                String curYear = header.get(10).substring(0, 4);
+
+                //TODO wanger 获取基期年
+                String JQN = excelData.get(1).get(6);
+
+                //TODO wanger 删除两年监测数据
+                String deleteSQL = String.format("delete from T_ZBMX_ZBJCZ t where t.zbbh not in ('A-150','A-151','A-152','A-153','A-154') and t.jcn in  ('%s' , '%s' )", preYear, curYear);
+                zbsbMapper.deleteSQL(deleteSQL);
+
+                //TODO wanger 删除基期值数据
+                deleteSQL = String.format("delete from T_ZBMX_ZBJQZ t where t.zbbh not in ('A-150','A-151','A-152','A-153','A-154') and t.jqn  = '%s'", JQN);
+                zbsbMapper.deleteSQL(deleteSQL);
+
+                //TODO wanger 删除指标项数据
+                deleteSQL = String.format("delete from T_ZBMX_ZBX t where t.zbbh not in ('A-150','A-151','A-152','A-153','A-154')");
+                zbsbMapper.deleteSQL(deleteSQL);
+
+                //TODO wanger 删除规划值数据
+                deleteSQL = String.format("delete from T_ZBMX_ZBGHZ t where t.zbbh not in ('A-150','A-151','A-152','A-153','A-154')");
+                zbsbMapper.deleteSQL(deleteSQL);
+
+                DecimalFormat df1 = new DecimalFormat("#.######");
+                // 打印每行数据
+                for (int i = 1; i < excelData.size(); i++) {
+                    //TODO wanger 获取当前行数据
+                    List<String> rowData = excelData.get(i);
+                    String zbbh = rowData.get(2);//指标编号
+                    String xzqdm = rowData.get(12);//行政区代码
+                    String xzqmc = rowData.get(13);//行政区名称
+                    String jqn = rowData.get(6);//基期年
+                    String jqz = rowData.get(5).replaceAll("——", "");//基期值
+                    String ghn = rowData.get(8);//规划年
+                    String ghz = rowData.get(7);//规划值
+                    String preValue = rowData.get(9).replaceAll("—", "");//前一年上报值
+                    String curValue = rowData.get(10).replaceAll("—", "");//今年上报值
+
+                    String insertSQL = "";
+
+                    String zbmctext = rowData.get(3);//指标名称
+                    if (zbmctext.contains("(")) {
+                        String zblx = rowData.get(4);//指标类型
+                        String[] res = zbmctext.split("\\(");
+                        String zbmc = res[0];
+                        String zbdw = res[1].split("\\)")[0];
+                        //TODO wanger 指标项
+                        insertSQL = String.format("insert into T_ZBMX_ZBX (zbbh , zbmc , zblx , ghsx , zbdw , zblh , zbfw , pgzq , sjly , cjsj) " +
+                                        "values ('%s' , '%s' , '%s' , '约束性' , '%s' , '' , '全域', '每年', 1, SYSDATE )"
+                                , zbbh, zbmc, zblx, zbdw);
+                        zbsbMapper.insertSQL(insertSQL);
+                    }
+
+                    if (StringUtils.isNotEmpty(ghz)) {
+                        if (ghz.contains(":")) {
+                            String[] vs = ghz.split(":");
+                            ghz = df1.format((Double.valueOf(vs[0]) / Double.valueOf(vs[1])));
+                        }
+                        //TODO wanger 规划值
+                        insertSQL = String.format("insert into T_ZBMX_ZBGHZ (bsm , zbbh, xzqdm , xzqmc, Jqmbtj , Jqmbz , Ghmbtj , ghmbz) " +
+                                        "values (sys_guid() , '%s', '%s' , '%s', '=' , %s , '=', %s)"
+                                , zbbh, xzqdm, xzqmc, ghz, ghz);
+                        zbsbMapper.insertSQL(insertSQL);
+
+                    }
+
+                    if (StringUtils.isNotEmpty(preValue) && !preValue.contains("涉及")) {
+                        if (preValue.contains(":")) {
+                            String[] vs = preValue.split(":");
+                            preValue = df1.format((Double.valueOf(vs[0]) / Double.valueOf(vs[1])));
+                        }
+                        //TODO wanger 当年监测值插入
+                        insertSQL = String.format("insert into T_ZBMX_ZBJCZ t (bsm , zbbh , xzqdm , xzqmc , jcsj , jcz , jcyh , tjsj , jcn , jcy) " +
+                                        "values(sys_guid() , '%s', '%s' , '%s', SYSDATE , %s , 'sys', SYSDATE, '%s' , '12')"
+                                , zbbh, xzqdm, xzqmc, preValue, preYear);
+                        zbsbMapper.insertSQL(insertSQL);
+                    }
+
+                    if (StringUtils.isNotEmpty(curValue) && !curValue.contains("涉及")) {
+                        if (curValue.contains(":")) {
+                            String[] vs = curValue.split(":");
+                            curValue = df1.format((Double.valueOf(vs[0]) / Double.valueOf(vs[1])));
+                        }
+                        //TODO wanger 去年监测值插入
+                        insertSQL = String.format("insert into T_ZBMX_ZBJCZ t (bsm , zbbh , xzqdm , xzqmc , jcsj , jcz , jcyh , tjsj , jcn , jcy) " +
+                                        "values(sys_guid() , '%s', '%s' , '%s', SYSDATE , %s , 'sys', SYSDATE, '%s' , '12')"
+                                , zbbh, xzqdm, xzqmc, curValue, curYear);
+                        zbsbMapper.insertSQL(insertSQL);
+                    }
+
+                    if (StringUtils.isNotEmpty(jqz) && !jqz.contains("涉及")) {
+                        //TODO wanger 基期值插入
+                        insertSQL = String.format("insert into T_ZBMX_ZBJQZ t (bsm , zbbh , xzqdm , xzqmc , jqn , jqz) " +
+                                        "values(sys_guid() , '%s', '%s' , '%s', '%s' , %s)"
+                                , zbbh, xzqdm, xzqmc, jqn, jqz);
+                        zbsbMapper.insertSQL(insertSQL);
+                    }
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+
+            System.out.println("End Import Tjpg Excel!!!");
+        }
+
+        return null;
+    }
 }

+ 2 - 0
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/service/sbjk/ZbsbService.java

@@ -55,4 +55,6 @@ public interface ZbsbService {
      * 上报提交
      */
     AjaxResult reportSubmit(String uuid);
+
+    AjaxResult tjpg(ZbsbDTO zbsbDTO);
 }

+ 190 - 0
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/utils/ExcelReader.java

@@ -0,0 +1,190 @@
+package com.onemap.apply.utils;
+
+import com.onemap.common.core.utils.StringUtils;
+import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.text.DecimalFormat;
+import java.util.ArrayList;
+import java.util.List;
+
+public class ExcelReader {
+
+    public static List<List<String>> readExcel(String filePath) {
+        List<List<String>> data = new ArrayList<>();
+
+        try (FileInputStream fis = new FileInputStream(new File(filePath))) {
+            Workbook workbook;
+
+            // 根据文件扩展名创建不同的Workbook
+            if (filePath.endsWith(".xlsx")) {
+                workbook = new XSSFWorkbook(fis);
+            } else if (filePath.endsWith(".xls")) {
+                workbook = new HSSFWorkbook(fis);
+            } else {
+                throw new IllegalArgumentException("文件格式不支持");
+            }
+
+            // 获取第一个sheet
+            Sheet sheet = workbook.getSheetAt(0);
+
+            // 遍历每一行
+            for (Row row : sheet) {
+                List<String> rowData = new ArrayList<>();
+
+                // 遍历每个单元格
+                for (Cell cell : row) {
+                    rowData.add(getCellValue(cell));
+                }
+
+                data.add(rowData);
+            }
+
+            workbook.close();
+
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+
+        return data;
+    }
+
+    // 获取单元格值的辅助方法
+    private static String getCellValue(Cell cell) {
+        if (cell == null) {
+            return "";
+        }
+
+        switch (cell.getCellType()) {
+            case STRING:
+                return cell.getStringCellValue().replaceAll("\n", "");
+            case NUMERIC:
+                if (DateUtil.isCellDateFormatted(cell)) {
+                    return cell.getDateCellValue().toString();
+                } else {
+                    // 避免科学计数法
+                    return String.valueOf((long) cell.getNumericCellValue());
+                }
+            case BOOLEAN:
+                return String.valueOf(cell.getBooleanCellValue());
+            case FORMULA:
+                return cell.getCellFormula();
+            default:
+                return "";
+        }
+    }
+
+    public static void main(String[] args) {
+        String filePath = "E:\\projects\\通辽市一张图监督实施系统\\体检成果\\23成果\\output.xlsx";
+        List<List<String>> excelData = readExcel(filePath);
+
+        //TODO 获取前一年与当年的年份数据
+        List<String> header = excelData.get(0);
+        String preYear = header.get(9).substring(0, 4);
+        String curYear = header.get(10).substring(0, 4);
+
+        //TODO wanger 获取基期年
+        String JQN = excelData.get(1).get(6);
+
+        //TODO wanger 删除两年监测数据
+        String deleteSQL = String.format("delete from T_ZBMX_ZBJCZ t where t.zbbh not in ('A-150','A-151','A-152','A-153','A-154') and t.jcn in  ('%s' , '%s' )", preYear, curYear);
+        System.out.println(String.format("%s ;", deleteSQL));
+
+        //TODO wanger 删除基期值数据
+        deleteSQL = String.format("delete from T_ZBMX_ZBJQZ t where t.zbbh not in ('A-150','A-151','A-152','A-153','A-154') and t.jqn  = '%s'", JQN);
+        System.out.println(String.format("%s ;", deleteSQL));
+
+        //TODO wanger 删除指标项数据
+        deleteSQL = String.format("delete from T_ZBMX_ZBX t where t.zbbh not in ('A-150','A-151','A-152','A-153','A-154')");
+        System.out.println(String.format("%s ;", deleteSQL));
+
+        //TODO wanger 删除规划值数据
+        deleteSQL = String.format("delete from T_ZBMX_ZBGHZ t where t.zbbh not in ('A-150','A-151','A-152','A-153','A-154')");
+        System.out.println(String.format("%s ;", deleteSQL));
+
+        DecimalFormat df1 = new DecimalFormat("#.######");
+        // 打印每行数据
+        for (int i = 1; i < excelData.size(); i++) {
+            //TODO wanger 获取当前行数据
+            List<String> rowData = excelData.get(i);
+            String zbbh = rowData.get(2);//指标编号
+            String xzqdm = rowData.get(12);//行政区代码
+            String xzqmc = rowData.get(13);//行政区名称
+            String jqn = rowData.get(6);//基期年
+            String jqz = rowData.get(5).replaceAll("——", "");//基期值
+            String ghn = rowData.get(8);//规划年
+            String ghz = rowData.get(7);//规划值
+            String preValue = rowData.get(9).replaceAll("—", "");//前一年上报值
+            String curValue = rowData.get(10).replaceAll("—", "");//今年上报值
+
+            String insertSQL = "";
+
+            String zbmctext = rowData.get(3);//指标名称
+            if (zbmctext.contains("(")) {
+                String zblx = rowData.get(4);//指标类型
+//                System.out.println(String.format(""));
+                String[] res = zbmctext.split("\\(");
+                String zbmc = res[0];
+                String zbdw = res[1].split("\\)")[0];
+                //TODO wanger 指标项
+                insertSQL = String.format("insert into T_ZBMX_ZBX (zbbh , zbmc , zblx , ghsx , zbdw , zblh , zbfw , pgzq , sjly , cjsj) " +
+                                "values ('%s' , '%s' , '%s' , '约束性' , '%s' , '' , '全域', '每年', 1, SYSDATE )"
+                        , zbbh, zbmc, zblx, zbdw);
+                System.out.println(String.format("%s ;", insertSQL));
+            }
+
+            if (StringUtils.isNotEmpty(ghz)) {
+                if (ghz.contains(":")) {
+                    String[] vs = ghz.split(":");
+                    ghz = df1.format((Double.valueOf(vs[0]) / Double.valueOf(vs[1])));
+                }
+                //TODO wanger 规划值
+                insertSQL = String.format("insert into T_ZBMX_ZBGHZ (bsm , zbbh, xzqdm , xzqmc, Jqmbtj , Jqmbz , Ghmbtj , ghmbz) " +
+                                "values (sys_guid() , '%s', '%s' , '%s', '=' , %s , '=', %s)"
+                        , zbbh, xzqdm, xzqmc, ghz, ghz);
+                System.out.println(String.format("%s ;", insertSQL));
+
+            }
+
+            if (StringUtils.isNotEmpty(preValue) && !preValue.contains("涉及")) {
+                if (preValue.contains(":")) {
+                    String[] vs = preValue.split(":");
+                    preValue = df1.format((Double.valueOf(vs[0]) / Double.valueOf(vs[1])));
+                }
+                //TODO wanger 当年监测值插入
+                insertSQL = String.format("insert into T_ZBMX_ZBJCZ t (bsm , zbbh , xzqdm , xzqmc , jcsj , jcz , jcyh , tjsj , jcn , jcy) " +
+                                "values(sys_guid() , '%s', '%s' , '%s', SYSDATE , %s , 'sys', SYSDATE, '%s' , '12')"
+                        , zbbh, xzqdm, xzqmc, preValue, preYear);
+
+                System.out.println(String.format("%s ;", insertSQL));
+            }
+
+            if (StringUtils.isNotEmpty(curValue) && !curValue.contains("涉及")) {
+                if (curValue.contains(":")) {
+                    String[] vs = curValue.split(":");
+                    curValue = df1.format((Double.valueOf(vs[0]) / Double.valueOf(vs[1])));
+                }
+                //TODO wanger 去年监测值插入
+                insertSQL = String.format("insert into T_ZBMX_ZBJCZ t (bsm , zbbh , xzqdm , xzqmc , jcsj , jcz , jcyh , tjsj , jcn , jcy) " +
+                                "values(sys_guid() , '%s', '%s' , '%s', SYSDATE , %s , 'sys', SYSDATE, '%s' , '12')"
+                        , zbbh, xzqdm, xzqmc, curValue, curYear);
+                System.out.println(String.format("%s ;", insertSQL));
+            }
+
+            if (StringUtils.isNotEmpty(jqz) && !jqz.contains("涉及")) {
+                //TODO wanger 基期值插入
+                insertSQL = String.format("insert into T_ZBMX_ZBJQZ t (bsm , zbbh , xzqdm , xzqmc , jqn , jqz) " +
+                                "values(sys_guid() , '%s', '%s' , '%s', '%s' , %s)"
+                        , zbbh, xzqdm, xzqmc, jqn, jqz);
+                System.out.println(String.format("%s ;", insertSQL));
+            }
+
+
+//            System.out.println("第 " + (i + 1) + " 行: " + excelData.get(i));
+        }
+    }
+}

+ 6 - 2
onemap-modules/onemap-apply/src/main/resources/mapper/oracle/ghss/ZbmxJcyjMapper.xml

@@ -14,7 +14,7 @@
 
     <select id="GetZbjcz" parameterType="com.onemap.apply.domain.ghss.ZbmxJcpgyjPageDTO"
             resultType="com.onemap.apply.domain.ghss.ZbmxJcpgyjListViewDTO">
-        select t.xzqdm as "xzqdm", t.xzqmc as "xzqmc", t.jcz as "xzz"
+        select t.xzqdm as "xzqdm", t.xzqmc as "xzqmc", t.jcz as "xzz", t.jcn as "year"
         from t_zbmx_zbjcz t
         where
         <if test="xzqdm != null and xzqdm != ''">
@@ -92,7 +92,7 @@
             and a.xzqdm = #{xzqdm}
         </if>
         <if test="tjsj != null and tjsj != ''">
-            and (to_char(a.jcsj,'yyyy') = #{tjsj})
+            and a.jcn = #{tjsj}
         </if>
         ORDER BY a.tjsj DESC
     </select>
@@ -142,6 +142,10 @@
             and t.zbbh = #{zbbh}
         </if>
 
+        <if test="jcsj != null and jcsj != ''">
+            and t.jcn = #{jcsj}
+        </if>
+
         order by t.jcsj desc) a
     </select>
 

+ 14 - 0
onemap-modules/onemap-apply/src/main/resources/mapper/oracle/sbjk/ZbsbMapper.xml

@@ -0,0 +1,14 @@
+<?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.onemap.apply.mapper.sbjk.ZbsbMapper">
+    <delete id="deleteSQL">
+        ${runsql}
+    </delete>
+
+    <insert id="insertSQL">
+        ${runsql}
+    </insert>
+
+</mapper>