Ver código fonte

一系列改造适配

wanger 3 meses atrás
pai
commit
103c0481c4
32 arquivos alterados com 1631 adições e 57 exclusões
  1. 4 2
      onemap-common/onemap-common-core/src/main/java/com/onemap/common/core/utils/StringUtils.java
  2. 50 0
      onemap-modules/onemap-apply/src/main/java/com/onemap/apply/controller/cggl/CgglController.java
  3. 25 0
      onemap-modules/onemap-apply/src/main/java/com/onemap/apply/controller/sbjk/SbSearchController.java
  4. 13 0
      onemap-modules/onemap-apply/src/main/java/com/onemap/apply/controller/sbjk/XzczghcgsbController.java
  5. 43 3
      onemap-modules/onemap-apply/src/main/java/com/onemap/apply/controller/scpz/ExamgctaskController.java
  6. 31 0
      onemap-modules/onemap-apply/src/main/java/com/onemap/apply/domain/cggl/CgscDto.java
  7. 9 0
      onemap-modules/onemap-apply/src/main/java/com/onemap/apply/domain/cggl/EscalationDTO.java
  8. 48 0
      onemap-modules/onemap-apply/src/main/java/com/onemap/apply/domain/cggl/ScmxDTO.java
  9. 85 0
      onemap-modules/onemap-apply/src/main/java/com/onemap/apply/domain/cggl/ScmxRecordDTO.java
  10. 9 1
      onemap-modules/onemap-apply/src/main/java/com/onemap/apply/mapper/cggl/EscalationMapper.java
  11. 14 0
      onemap-modules/onemap-apply/src/main/java/com/onemap/apply/mapper/cggl/ScmxMapper.java
  12. 19 0
      onemap-modules/onemap-apply/src/main/java/com/onemap/apply/mapper/cggl/ScmxRecordMapper.java
  13. 5 0
      onemap-modules/onemap-apply/src/main/java/com/onemap/apply/mapper/sbjk/XzczghcgsbMapper.java
  14. 9 0
      onemap-modules/onemap-apply/src/main/java/com/onemap/apply/service/cggl/CgglService.java
  15. 170 42
      onemap-modules/onemap-apply/src/main/java/com/onemap/apply/service/impl/cggl/CgglServiceImpl.java
  16. 93 0
      onemap-modules/onemap-apply/src/main/java/com/onemap/apply/service/impl/sbjk/SbSearchServiceImpl.java
  17. 49 1
      onemap-modules/onemap-apply/src/main/java/com/onemap/apply/service/impl/sbjk/XzczghcgsbServiceImpl.java
  18. 5 0
      onemap-modules/onemap-apply/src/main/java/com/onemap/apply/service/sbjk/SbSearchService.java
  19. 3 0
      onemap-modules/onemap-apply/src/main/java/com/onemap/apply/service/sbjk/XzczghcgsbService.java
  20. 2 2
      onemap-modules/onemap-apply/src/main/java/com/onemap/apply/task/CgjcSchedule.java
  21. 65 0
      onemap-modules/onemap-apply/src/main/java/com/onemap/apply/task/RedundancyFileSchedule.java
  22. 313 0
      onemap-modules/onemap-apply/src/main/java/com/onemap/apply/utils/RInterfaceUtilFromSheng.java
  23. 12 0
      onemap-modules/onemap-apply/src/main/resources/mapper/oracle/cggl/EscalationMapper.xml
  24. 36 6
      onemap-modules/onemap-apply/src/main/resources/mapper/postgresql/cggl/EscalationMapper.xml
  25. 25 0
      onemap-modules/onemap-apply/src/main/resources/mapper/postgresql/cggl/ScmxRecordMapper.xml
  26. 46 0
      onemap-modules/onemap-apply/src/main/resources/mapper/postgresql/sbjk/XzxzghcgsbMapper.xml
  27. 105 0
      onemap-modules/onemap-system/src/main/java/com/onemap/system/controller/TCgglScmxController.java
  28. 66 0
      onemap-modules/onemap-system/src/main/java/com/onemap/system/domain/TCgglScmx.java
  29. 61 0
      onemap-modules/onemap-system/src/main/java/com/onemap/system/mapper/TCgglScmxMapper.java
  30. 61 0
      onemap-modules/onemap-system/src/main/java/com/onemap/system/service/ITCgglScmxService.java
  31. 88 0
      onemap-modules/onemap-system/src/main/java/com/onemap/system/service/impl/TCgglScmxServiceImpl.java
  32. 67 0
      onemap-modules/onemap-system/src/main/resources/mapper/postgresql/system/TCgglScmxMapper.xml

+ 4 - 2
onemap-common/onemap-common-core/src/main/java/com/onemap/common/core/utils/StringUtils.java

@@ -612,7 +612,8 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils {
      */
     public static String getFileStaticPath(String filename) {
         filename = filename.replaceAll("\\\\", "/");
-        return filename.replace("/home/onemapfile/", "/file/statics/");
+//        return filename.replace("/home/onemapfile/", "/file/statics/");
+        return filename.replace("D:/onemapfile/", "/file/statics/");
     }
 
     /**
@@ -623,7 +624,8 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils {
      */
     public static String getFileAbsolutePath(String filename) {
         filename = filename.replaceAll("\\\\", "/");
-        return filename.replace("/file/statics/", "/home/onemapfile/");
+//        return filename.replace("/file/statics/", "/home/onemapfile/");
+        return filename.replace("/file/statics/", "D:\\onemapfile\\");
     }
 
     /**

+ 50 - 0
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/controller/cggl/CgglController.java

@@ -2,8 +2,10 @@ package com.onemap.apply.controller.cggl;
 
 import com.alibaba.fastjson.JSONObject;
 import com.fasterxml.jackson.annotation.JsonAlias;
+import com.onemap.apply.domain.cggl.CgscDto;
 import com.onemap.apply.domain.cggl.EscalationDTO;
 import com.onemap.apply.domain.cggl.EscalationInfoDTO;
+import com.onemap.apply.domain.cggl.ScmxDTO;
 import com.onemap.apply.service.cggl.CgglService;
 import com.onemap.apply.service.fzss.IFzxzService;
 import com.onemap.apply.utils.Md5Utils;
@@ -352,4 +354,52 @@ public class CgglController extends BaseController {
         List<String> instIds = cgglService.getInstIds(param);
         return AjaxResult.success("success!", instIds);
     }
+
+    /**
+     * 查询审查模型列表
+     *
+     * @param name
+     * @return
+     */
+    @GetMapping("/scmx")
+    public RequestResult scmx(String name) {
+        RequestResult res = cgglService.getScmxList(name);
+        return res;
+    }
+
+    /**
+     * 修改或者新增审查模型
+     *
+     * @param scmxDTO
+     * @return
+     */
+    @PostMapping("/scmx")
+    public RequestResult scmx(ScmxDTO scmxDTO) {
+        RequestResult res = cgglService.insertOrUpdateScmx(scmxDTO);
+        return res;
+    }
+
+    /**
+     * 删除审查模型
+     *
+     * @param id
+     * @return
+     */
+    @DeleteMapping("/scmx")
+    public RequestResult scmxDelete(String id) {
+        RequestResult res = cgglService.scmxDelete(id);
+        return res;
+    }
+
+    /**
+     * 发起成果审查
+     *
+     * @param cgscDto
+     * @return
+     */
+    @PostMapping("/startcgsc")
+    public RequestResult startcgsc(@RequestBody CgscDto cgscDto) {
+        RequestResult res = cgglService.startcgsc(cgscDto.getScmodel(), cgscDto.getJqscmodel(), cgscDto.getCgid());
+        return res;
+    }
 }

+ 25 - 0
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/controller/sbjk/SbSearchController.java

@@ -32,6 +32,31 @@ public class SbSearchController extends BaseController {
     @Resource
     private SbSearchService sbSearchService;
 
+    /**
+     * 上传修编成果文件
+     * @param file 修编文件
+     * @param instid 流程主键
+     * @return
+     */
+    @PostMapping("/reuploadThirdpartyReviseData")
+    public JSONObject reuploadThirdpartyReviseData(MultipartFile file, String instid) {
+        return sbSearchService.reuploadThirdpartyReviseData(file, instid);
+    }
+
+    /**
+     * 查询修编成果列表
+     *
+     * @param planType     规划类型,1:总体规划;2:村庄规划
+     * @param current      页码,1为第一页
+     * @param size         页数量, 例:10表示单页显示10条数据
+     * @param divisionCode 行政区域代码
+     * @return
+     */
+    @GetMapping("/getLandGetRevisePageData")
+    public JSONObject getLandGetRevisePageData(Integer planType, Integer current, Integer size, String divisionCode, String subject) {
+        return sbSearchService.getLandGetRevisePageData(planType, current, size , divisionCode, subject);
+    }
+
     /**
      * 查询已办成果流程
      *

+ 13 - 0
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/controller/sbjk/XzczghcgsbController.java

@@ -1,6 +1,7 @@
 package com.onemap.apply.controller.sbjk;
 
 import com.alibaba.fastjson.JSONArray;
+import com.onemap.apply.domain.cggl.CgscDto;
 import com.onemap.apply.domain.sbjk.TjpgsbDTO;
 import com.onemap.apply.domain.sbjk.XzczghcgsbDTO;
 import com.onemap.apply.service.sbjk.XzczghcgsbService;
@@ -179,4 +180,16 @@ public class XzczghcgsbController extends BaseController {
         }
         return AjaxResult.success("获取成功").put("success", true).put("data", "");
     }
+
+    /**
+     * 发起成果审查
+     *
+     * @param cgscDto
+     * @return
+     */
+    @PostMapping("/startcgsc")
+    public RequestResult startcgsc(@RequestBody CgscDto cgscDto) {
+        RequestResult res = xzczghcgsbService.startcgsc(cgscDto.getScmodel(), cgscDto.getJqscmodel(), cgscDto.getCgid());
+        return res;
+    }
 }

+ 43 - 3
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/controller/scpz/ExamgctaskController.java

@@ -8,12 +8,15 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.onemap.apply.domain.cggl.EscalationDTO;
 import com.onemap.apply.domain.cggl.EscalationIMPDTO;
 import com.onemap.apply.domain.fzss.HgxfxDTO;
+import com.onemap.apply.domain.sbjk.XzczghcgsbDTO;
 import com.onemap.apply.domain.scpz.ExamGCTaskDo;
 import com.onemap.apply.domain.scpz.ExamTaskDo;
 import com.onemap.apply.domain.scpz.ExamruledicDO;
 import com.onemap.apply.domain.yzt.ZttDTO;
 import com.onemap.apply.mapper.cggl.EscalationImpMapper;
 import com.onemap.apply.mapper.cggl.EscalationMapper;
+import com.onemap.apply.mapper.cggl.ScmxRecordMapper;
+import com.onemap.apply.mapper.sbjk.XzczghcgsbMapper;
 import com.onemap.apply.mapper.scpz.ExamtaskMapper;
 import com.onemap.apply.service.cggl.CgglService;
 import com.onemap.apply.service.impl.cggl.CgglServiceImpl;
@@ -69,6 +72,10 @@ public class ExamgctaskController extends BaseController {
 
     @Autowired
     CgglService cgglService;
+    @Autowired
+    private ScmxRecordMapper scmxRecordMapper;
+    @Autowired
+    private XzczghcgsbMapper xzczghcgsbMapper;
 
 
     /**
@@ -263,15 +270,36 @@ public class ExamgctaskController extends BaseController {
     public RequestResult saveandend(@RequestBody JSONObject jsonObject) {
         int k = 0;
         try {
+            String userid = SecurityUtils.getUsername();
             String xzqdm = SecurityUtils.getLoginUserXzq(); //当前用户 点击审查和完结 如果为旗县 则审查和完结sclevel=1的信息
             // 如果为市级 审查和完结sclevel=0的信息
             String sclevel = "0";
-
             String taskid = "";
             String ruleid = "";
             String scyj = jsonObject.get("scyj").toString();
             String sczt = jsonObject.get("sczt").toString();
             String gcid = jsonObject.get("gcid").toString();
+            //TODO wanger 我得先判断下  这个gcid是总体规划表还是村庄规划表
+            QueryWrapper<EscalationDTO> wrapper = new QueryWrapper();
+            wrapper.eq("id", gcid);
+            EscalationDTO result = escalationMapper.selectOne(wrapper);
+            if (result == null) {
+                //TODO wanger 这个就是村庄规划了
+                if (sczt.equals("保存")) {
+                    //TODO wanger 更新审查模型记录表
+                    scmxRecordMapper.updateScyj(scyj, "通过", gcid, userid);
+                    //TODO wanger 完结
+                    int count = scmxRecordMapper.scIsEnd(gcid);
+                    if (count == 0) {
+                        QueryWrapper<XzczghcgsbDTO> czghwrapper = new QueryWrapper();
+                        czghwrapper.eq("uuid", gcid);
+                        XzczghcgsbDTO dto = xzczghcgsbMapper.selectOne(czghwrapper);
+                        dto.setStatus("11");
+                        xzczghcgsbMapper.update(dto, czghwrapper);
+                    }
+                    return RequestResult.success("保存成功", k);
+                }
+            }
             JSONArray res = JSON.parseArray(jsonObject.getJSONArray("lists").toString());
             List<ExamGCTaskDo> lists = res.toJavaList(ExamGCTaskDo.class);
             if (scyj.isEmpty()) {
@@ -305,7 +333,6 @@ public class ExamgctaskController extends BaseController {
             } else {
                 sclevel = "0";//点击获取县级审查结果
             }
-            gcid = jsonObject.get("gcid").toString();
             //更新完后 更新最终意见 gcid taskid 意见 市级意见还是县级意见  sclevel
             if (sclevel.equals("0")) //市级给出意见
             {
@@ -328,7 +355,20 @@ public class ExamgctaskController extends BaseController {
             } else    //县级给出意见
             {
                 if (sczt.equals("保存")) {
-                    k = cgglService.updatescqxinfo(1, scyj, gcid, SecurityUtils.getUsername());
+//                    k = cgglService.updatescinfo(0, scyj, gcid, userid);
+                    //TODO wanger 更新审查模型记录表
+                    scmxRecordMapper.updateScyj(scyj, "通过", gcid, userid);
+                    //TODO wanger 完结
+                    int count = scmxRecordMapper.scIsEnd(gcid);
+                    if (count == 0) {
+                        k = cgglService.updatescinfo(2, scyj, gcid, userid);
+                        //点击完结后 插入入库表
+                        List<EscalationIMPDTO> list1 = escalationImpMapper.selectInfoImpList(gcid);
+                        if (list1.size() > 0) {
+                            EscalationIMPDTO escalationIMPDTO = list1.get(0);
+                            k = escalationImpMapper.insert(escalationIMPDTO);
+                        }
+                    }
                     return RequestResult.success("保存成功", k);
                 } else if (sczt.equals("完结")) {
                     k = cgglService.updatescqxinfo(2, scyj, gcid, SecurityUtils.getUsername());

+ 31 - 0
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/domain/cggl/CgscDto.java

@@ -0,0 +1,31 @@
+package com.onemap.apply.domain.cggl;
+
+public class CgscDto {
+    private String cgid ;
+    private String scmodel;
+    private String jqscmodel;
+
+    public String getCgid() {
+        return cgid;
+    }
+
+    public void setCgid(String cgid) {
+        this.cgid = cgid;
+    }
+
+    public String getScmodel() {
+        return scmodel;
+    }
+
+    public void setScmodel(String scmodel) {
+        this.scmodel = scmodel;
+    }
+
+    public String getJqscmodel() {
+        return jqscmodel;
+    }
+
+    public void setJqscmodel(String jqscmodel) {
+        this.jqscmodel = jqscmodel;
+    }
+}

+ 9 - 0
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/domain/cggl/EscalationDTO.java

@@ -27,6 +27,15 @@ public class EscalationDTO {
     private String lxdh;
     private String username;
     private String instid;
+    private String scmodel;
+
+    public String getScmodel() {
+        return scmodel;
+    }
+
+    public void setScmodel(String scmodel) {
+        this.scmodel = scmodel;
+    }
 
     public String getInstid() {
         return instid;

+ 48 - 0
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/domain/cggl/ScmxDTO.java

@@ -0,0 +1,48 @@
+package com.onemap.apply.domain.cggl;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+@TableName("t_cggl_scmx")
+public class ScmxDTO {
+    private String id;
+    private String name;
+    private String users;
+    private String remark;
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getUsers() {
+        return users;
+    }
+
+    public void setUsers(String users) {
+        this.users = users;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+}

+ 85 - 0
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/domain/cggl/ScmxRecordDTO.java

@@ -0,0 +1,85 @@
+package com.onemap.apply.domain.cggl;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+@TableName("t_cggl_scmx_record")
+public class ScmxRecordDTO {
+    private String id;
+    private String userid;
+    private String username;
+    private String scyj;
+    private String scjl;
+    private String cgid;
+    private String sort;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date sctime;
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getUserid() {
+        return userid;
+    }
+
+    public void setUserid(String userid) {
+        this.userid = userid;
+    }
+
+    public String getUsername() {
+        return username;
+    }
+
+    public void setUsername(String username) {
+        this.username = username;
+    }
+
+    public String getScyj() {
+        return scyj;
+    }
+
+    public void setScyj(String scyj) {
+        this.scyj = scyj;
+    }
+
+    public String getScjl() {
+        return scjl;
+    }
+
+    public void setScjl(String scjl) {
+        this.scjl = scjl;
+    }
+
+    public String getCgid() {
+        return cgid;
+    }
+
+    public void setCgid(String cgid) {
+        this.cgid = cgid;
+    }
+
+    public String getSort() {
+        return sort;
+    }
+
+    public void setSort(String sort) {
+        this.sort = sort;
+    }
+
+    public Date getSctime() {
+        return sctime;
+    }
+
+    public void setSctime(Date sctime) {
+        this.sctime = sctime;
+    }
+}

+ 9 - 1
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/mapper/cggl/EscalationMapper.java

@@ -52,7 +52,7 @@ public interface EscalationMapper extends BaseMapper<EscalationDTO> {
 
     void updateStatus(String id);
 
-    List<EscalationTaskDTO> getSelectCgSclistbyzt(@Param("type") String type, @Param("xzqdm") String xzqdm, @Param("cgmc") String cgmc, @Param("cglx") String cglx);
+    List<EscalationTaskDTO> getSelectCgSclistbyzt(@Param("type") String type, @Param("xzqdm") String xzqdm, @Param("cgmc") String cgmc, @Param("cglx") String cglx, @Param("username") String username);
 
     List<EscalationTaskDTO> getSelectCgSclistbyztwj(@Param("type") String type, @Param("xzqdm") String xzqdm, @Param("cgmc") String cgmc, @Param("cglx") String cglx);
 
@@ -65,4 +65,12 @@ public interface EscalationMapper extends BaseMapper<EscalationDTO> {
     List<String> getInstIds(String param);
 
     void insertScx(@Param("id")String id, @Param("taskid")String taskid);
+
+    void updateCgScModel(@Param("cgid") String cgid, @Param("scmodel") String scmodel);
+
+    List<String> selectRedundancyFiles();
+
+    void deleteRedundancyFiles();
+
+    void updateCgScZt(@Param("cgid") String cgid, @Param("sczt") String sczt);
 }

+ 14 - 0
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/mapper/cggl/ScmxMapper.java

@@ -0,0 +1,14 @@
+package com.onemap.apply.mapper.cggl;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.onemap.apply.domain.cggl.EscalationFileDTO;
+import com.onemap.apply.domain.cggl.ScmxDTO;
+
+/**
+ * 数据层
+ *
+ * @author onemap
+ */
+public interface ScmxMapper extends BaseMapper<ScmxDTO> {
+
+}

+ 19 - 0
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/mapper/cggl/ScmxRecordMapper.java

@@ -0,0 +1,19 @@
+package com.onemap.apply.mapper.cggl;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.onemap.apply.domain.cggl.ScmxDTO;
+import com.onemap.apply.domain.cggl.ScmxRecordDTO;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 数据层
+ *
+ * @author onemap
+ */
+public interface ScmxRecordMapper extends BaseMapper<ScmxRecordDTO> {
+    void updateUserName();
+
+    void updateScyj(@Param("scyj") String scyj, @Param("scjl") String scjl, @Param("cgid") String cgid, @Param("userid") String userid);
+
+    int scIsEnd(String cgid);
+}

+ 5 - 0
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/mapper/sbjk/XzczghcgsbMapper.java

@@ -1,7 +1,9 @@
 package com.onemap.apply.mapper.sbjk;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.onemap.apply.domain.cggl.EscalationTaskDTO;
 import com.onemap.apply.domain.sbjk.XzczghcgsbDTO;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -12,4 +14,7 @@ import java.util.List;
  */
 public interface XzczghcgsbMapper extends BaseMapper<XzczghcgsbDTO> {
     List<String> getInstIds(String param);
+
+    List<EscalationTaskDTO> getSelectCgSclistbyzt(@Param("type") String type, @Param("xzqdm") String xzqdm, @Param("cgmc") String cgmc, @Param("cglx") String cglx, @Param("username") String username);
+
 }

+ 9 - 0
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/service/cggl/CgglService.java

@@ -2,6 +2,7 @@ package com.onemap.apply.service.cggl;
 
 import com.onemap.apply.domain.cggl.EscalationDTO;
 import com.onemap.apply.domain.cggl.EscalationInfoDTO;
+import com.onemap.apply.domain.cggl.ScmxDTO;
 import com.onemap.common.core.web.domain.RequestResult;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -40,4 +41,12 @@ public interface CgglService {
     int updatescqxinfo(int sczt, String scyj, String gcid, String username);
 
     List<String> getInstIds(String param);
+
+    RequestResult insertOrUpdateScmx(ScmxDTO scmxDTO);
+
+    RequestResult scmxDelete(String id);
+
+    RequestResult getScmxList(String name);
+
+    RequestResult startcgsc(String scmodel, String jqscmodel, String cgid);
 }

+ 170 - 42
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/service/impl/cggl/CgglServiceImpl.java

@@ -5,9 +5,9 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.onemap.apply.domain.cggl.*;
-import com.onemap.apply.mapper.cggl.EscalationFileMapper;
-import com.onemap.apply.mapper.cggl.EscalationMapper;
-import com.onemap.apply.mapper.cggl.EscalationRzMapper;
+import com.onemap.apply.domain.sbjk.XzczghcgsbDTO;
+import com.onemap.apply.mapper.cggl.*;
+import com.onemap.apply.mapper.sbjk.XzczghcgsbMapper;
 import com.onemap.apply.service.cggl.CgglService;
 import com.onemap.apply.utils.*;
 import com.onemap.common.core.domain.UploadZipDTO;
@@ -60,6 +60,12 @@ public class CgglServiceImpl implements CgglService {
     private EscalationRzMapper escalationRzMapper;
     @Autowired
     private RedisService redisService;
+    @Autowired
+    private ScmxMapper scmxMapper;
+    @Autowired
+    private ScmxRecordMapper scmxRecordMapper;
+    @Autowired
+    private XzczghcgsbMapper xzczghcgsbMapper;
 
 
     @Value("${Cggl.temp}")
@@ -83,6 +89,8 @@ public class CgglServiceImpl implements CgglService {
 
     @Value("${Cggl.cgsc}")
     private String cgscUrl;
+    @Value("${Cggl.cgjc}")
+    private String cgjcUrl;
 
 
     private String Authorization = "Basic c2FiZXI6c2FiZXJfc2VjcmV0";
@@ -96,9 +104,9 @@ public class CgglServiceImpl implements CgglService {
         if (file == null) {
             return RequestResult.error("上传失败!", false);
         }
-        if (file.getOriginalFilename().getBytes().length > 100) {
-            return RequestResult.error("上传文件名不能大于100个字节!", false);
-        }
+//        if (file.getOriginalFilename().getBytes().length > 100) {
+//            return RequestResult.error("上传文件名不能大于100个字节!", false);
+//        }
         String uuid = StringUtils.getUUID();
         EscalationFileDTO dto = new EscalationFileDTO();
         dto.setId(uuid);
@@ -130,8 +138,8 @@ public class CgglServiceImpl implements CgglService {
                 //解压rar格式
                 new UnPackageUtils().unPackRar(copyFile, unzippath);
             }
-            //TODO wanger 总体规划跳过审查,原始赋值是9(待审查),现在改为1(审查结束)
-            curdto.setStatus("1");
+            //TODO wanger 总体规划跳过机器审查,原始赋值是9(待审查),现在改为1(审查结束)
+            curdto.setStatus("9");
             curdto.setPath(temppath);
             curdto.setUnzippath(unzippath);
             escalationFileMapper.update(curdto, wrapper);
@@ -177,9 +185,9 @@ public class CgglServiceImpl implements CgglService {
         if (res != null) {
             return RequestResult.error("该名称已存在!", false);
         }
-        if (escalationDTO.getName().getBytes().length > 100) {
-            return RequestResult.error("成果名称不能大于100个字节!", false);
-        }
+//        if (escalationDTO.getName().getBytes().length > 100) {
+//            return RequestResult.error("成果名称不能大于100个字节!", false);
+//        }
         String id = StringUtils.getUUID();
         escalationDTO.setUploadstatus("0");
         escalationDTO.setUploadtime(new Date());
@@ -204,6 +212,47 @@ public class CgglServiceImpl implements CgglService {
         return RequestResult.success("保存成功!", id);
     }
 
+    @Override
+    public RequestResult startcgsc(String scmodel, String jqscmodel, String cgid) {
+        try {
+            //机器审查
+            escalationMapper.updateWaitCheck(cgid);
+            if (StringUtils.isNotEmpty(jqscmodel)) {
+                String getUrl = cgjcUrl + "" + cgid;
+                System.out.println("开始进行成果完整性检查,调用地址" + getUrl);
+                String msg = HttpClientUtil.doGet(getUrl);
+                System.out.println("成果完整性检查结果" + msg);
+                System.out.println("成果完整性检查模块:" + cgid + "审查任务调用成果!!!!!!!! " + new Date().toString());
+            }
+            //人工审查
+            if (StringUtils.isNotEmpty(scmodel)) {
+                escalationMapper.updateCgScModel(cgid, scmodel);
+                //TODO wanger 增加人工审查模型详情表
+                ScmxDTO scmxdto = scmxMapper.selectById(scmodel);
+                String users = scmxdto.getUsers();
+                if (StringUtils.isNotEmpty(users)) {
+                    String[] userlist = users.split(",");
+                    for (int i = 0; i < userlist.length; i++) {
+                        String userid = userlist[i];
+                        ScmxRecordDTO recordDto = new ScmxRecordDTO();
+                        recordDto.setCgid(cgid);
+                        recordDto.setSort(String.valueOf(i));
+                        recordDto.setUserid(userid);
+                        scmxRecordMapper.insert(recordDto);
+                    }
+                    scmxRecordMapper.updateUserName();
+                } else {
+                    //空的人工审查流程  直接办结
+                    escalationMapper.updateCgScZt(cgid, "2");
+                }
+            }
+            return RequestResult.success("发起审查成功!");
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return RequestResult.error("发起审查失败!");
+    }
+
     @Override
     public List<EscalationInfoDTO> cgInfoList(String year, String xzqdm, String uploadstatus, String username, String cglevel, String plantype) {
         //判断是否为市级用户查看旗县数据,需要过滤uploadstatus != '0'
@@ -501,8 +550,29 @@ public class CgglServiceImpl implements CgglService {
 
     @Override
     public RequestResult cgDelete(String id) {
+        //主表
         QueryWrapper<EscalationDTO> wrapper = new QueryWrapper<EscalationDTO>();
         wrapper.eq("id", id);
+        EscalationDTO dto = escalationMapper.selectOne(wrapper);
+        //文件表
+        String fileid = dto.getFileid();
+        if (StringUtils.isNotEmpty(fileid)) {
+            //删除文件表和文件夹
+            QueryWrapper<EscalationFileDTO> filewrapper = new QueryWrapper<EscalationFileDTO>();
+            filewrapper.eq("id", fileid);
+            EscalationFileDTO fileDto = escalationFileMapper.selectOne(filewrapper);
+            String filepath = fileDto.getPath();
+            //删除文件夹
+            try {
+                File file = new File(filepath);
+                File parentDir = file.getParentFile();
+//                String parentDirPath = parentDir.getAbsolutePath();
+                FileUtils.deleteDirectory(parentDir);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+            escalationFileMapper.delete(filewrapper);
+        }
         escalationMapper.delete(wrapper);
         return RequestResult.success("删除成功!", true);
     }
@@ -542,19 +612,27 @@ public class CgglServiceImpl implements CgglService {
         }
         //判断为id数值还是直接传递的路径
         String fileDir = "";
-        if (id.contains("/")) {
+        if (id.contains("/")|| id.contains("\\") ) {
             fileDir = id.substring(0, id.lastIndexOf("."));
         } else {
             QueryWrapper<EscalationDTO> EscalationQrapper = new QueryWrapper<>();
             EscalationQrapper.eq("id", id);
             EscalationDTO escalationDTO = escalationMapper.selectOne(EscalationQrapper);
+            //TODO wanger 成果包id不是总规的   再查询下 是不是村庄规划的
             if (escalationDTO == null) {
-                return RequestResult.error("id数据传错了!", false);
+                QueryWrapper<XzczghcgsbDTO> wrapper = new QueryWrapper();
+                wrapper.eq("uuid", id);
+                XzczghcgsbDTO dto = xzczghcgsbMapper.selectOne(wrapper);
+                if (dto == null) {
+                    return RequestResult.error("id数据传错了!", false);
+                }
+                fileDir = dto.getFilePath().replace(".zip", "").replace(".rar", "");
+            } else {
+                QueryWrapper<EscalationFileDTO> EscalationFileQrapper = new QueryWrapper<>();
+                EscalationFileQrapper.eq("id", escalationDTO.getFileid());
+                EscalationFileDTO fileDto = escalationFileMapper.selectOne(EscalationFileQrapper);
+                fileDir = fileDto.getUnzippath();
             }
-            QueryWrapper<EscalationFileDTO> EscalationFileQrapper = new QueryWrapper<>();
-            EscalationFileQrapper.eq("id", escalationDTO.getFileid());
-            EscalationFileDTO fileDto = escalationFileMapper.selectOne(EscalationFileQrapper);
-            fileDir = fileDto.getUnzippath();
         }
         fileDir = fileDir.replaceAll("\\\\", "/");
         File c = new File(fileDir);
@@ -689,7 +767,7 @@ public class CgglServiceImpl implements CgglService {
 //        System.out.println("开始进行成果审查,调用地址" + getUrl);
 //        String msg = HttpClientUtil.doGet(getUrl);
 //        System.out.println("成果审查结果" + msg);
-        updatescqxinfo(1, "", gcid, SecurityUtils.getUsername());
+        updatescqxinfo(0, "", gcid, SecurityUtils.getUsername());
         System.out.println("成果审查模块:" + gcid + "审查任务调用成果!!!!!!!! " + new Date().toString());
     }
 
@@ -698,32 +776,29 @@ public class CgglServiceImpl implements CgglService {
         try {
             String username = SecurityUtils.getUsername();
             List<EscalationTaskDTO> lists = null;
-            if (StringUtils.isNotEmpty(cglx)) {
-                if (cglx.equals("总体规划")) {
-                    cglx = "3";
-                } else if (cglx.equals("详细规划")) {
-                    cglx = "4";
-                } else if (cglx.equals("专项规划")) {
-                    cglx = "5";
+            if ("9".equals(cglx)) {//TODO wanger 村庄规划
+                if ("0".equals(type) || "1".equals(type)) {
+                    type = "10";
+                } else if ("2".equals(type)) {
+                    type = "11";
                 }
-            }
-            if (SecurityUtils.getLoginUserXzq().length() == 4) //市级人员 获取到状态信息
-            {
-                lists = escalationMapper.getSelectCgSclistbyzt(type, xzqdm, cgmc, cglx);
-            } else  //县级人员 获取到状态信息
-            {
-                if (type.equals("2")) {
-                    xzqdm = SecurityUtils.getLoginUserXzq();
-                    lists = escalationMapper.getSelectCgSclistbyztwj(type, xzqdm, cgmc, cglx);
-                } else {
-                    xzqdm = SecurityUtils.getLoginUserXzq();
-                    lists = escalationMapper.getSelectCgSclistbyzt(type, xzqdm, cgmc, cglx);
+                lists = xzczghcgsbMapper.getSelectCgSclistbyzt(type, xzqdm, cgmc, cglx, username);
+            } else {
+                if (StringUtils.isNotEmpty(cglx)) {
+                    if (cglx.equals("总体规划")) {
+                        cglx = "3";
+                    } else if (cglx.equals("详细规划")) {
+                        cglx = "4";
+                    } else if (cglx.equals("专项规划")) {
+                        cglx = "5";
+                    }
                 }
-            }
-            if (lists.size() > 0) {
-                for (int i = lists.size() - 1; i > -1; i--) {
-                    if ("0".equals(lists.get(i).getStatus())) {
-                        lists.remove(i);
+                lists = escalationMapper.getSelectCgSclistbyzt(type, xzqdm, cgmc, cglx, username);
+                if (lists.size() > 0) {
+                    for (int i = lists.size() - 1; i > -1; i--) {
+                        if ("0".equals(lists.get(i).getStatus())) {
+                            lists.remove(i);
+                        }
                     }
                 }
             }
@@ -896,4 +971,57 @@ public class CgglServiceImpl implements CgglService {
         return new ArrayList<>();
     }
 
+    @Override
+    public RequestResult insertOrUpdateScmx(ScmxDTO scmxDTO) {
+        if (scmxDTO == null) {
+            return RequestResult.error("参数错误");
+        }
+        try {
+            String id = scmxDTO.getId();
+            if (StringUtils.isEmpty(id)) {
+                scmxDTO.setId(StringUtils.getUUID());
+                scmxMapper.insert(scmxDTO);
+            } else {
+                QueryWrapper<ScmxDTO> wrapper = new QueryWrapper();
+                wrapper.eq("id", id);
+                scmxMapper.update(scmxDTO, wrapper);
+            }
+            return RequestResult.success("成功!", 1);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return RequestResult.error("失败!");
+    }
+
+    @Override
+    public RequestResult scmxDelete(String id) {
+        if (StringUtils.isEmpty(id)) {
+            return RequestResult.error("参数错误");
+        }
+        try {
+            QueryWrapper<ScmxDTO> wrapper = new QueryWrapper();
+            wrapper.eq("id", id);
+            scmxMapper.delete(wrapper);
+            return RequestResult.success("成功!", 1);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return RequestResult.error("失败!");
+    }
+
+    @Override
+    public RequestResult getScmxList(String name) {
+        try {
+            QueryWrapper<ScmxDTO> wrapper = new QueryWrapper();
+            if (StringUtils.isNotEmpty(name)) {
+                wrapper.eq("name", name);
+            }
+            List<ScmxDTO> res = scmxMapper.selectList(wrapper);
+            return RequestResult.success("成功!", res);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return RequestResult.error("失败!");
+    }
+
 }

+ 93 - 0
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/service/impl/sbjk/SbSearchServiceImpl.java

@@ -8,6 +8,7 @@ import com.onemap.apply.service.sbjk.SbSearchService;
 import com.onemap.apply.service.sbjk.XzczghcgsbService;
 import com.onemap.apply.utils.Md5Utils;
 import com.onemap.apply.utils.RInterfaceUtil;
+import com.onemap.apply.utils.RInterfaceUtilFromSheng;
 import com.onemap.common.core.utils.StringUtils;
 import com.onemap.common.core.utils.uuid.IdUtils;
 import com.onemap.common.core.web.domain.AjaxResult;
@@ -35,6 +36,8 @@ public class SbSearchServiceImpl implements SbSearchService {
     private String temp;
     @Value("${Cggl.oauthUrl}")
     private String oauthUrl;
+    @Value("${Cggl.oauthFromShengUrl}")
+    private String oauthFromShengUrl;
     @Value("${Cggl.username}")
     private String username;
     @Value("${Cggl.password}")
@@ -47,9 +50,37 @@ public class SbSearchServiceImpl implements SbSearchService {
     private String landTaskStatusURI;
     @Value("${cgbcxjk.reportDownload}")
     private String reportDownloadURI;
+
+    @Value("${cgbcxjk.landGetRevisePage}")
+    private String landGetRevisePageURI;
+    @Value("${cgbcxjk.reuploadThirdpartyRevise}")
+    private String reuploadThirdpartyReviseURI;
     @Value("${Cggl.appid}")
     private String appid;
 
+    @Override
+    public JSONObject reuploadThirdpartyReviseData(MultipartFile file, String instid) {
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("instId", instid);
+        jsonObject.put("file", file);
+        return getRequestFileData(reuploadThirdpartyReviseURI, jsonObject);
+    }
+
+
+    @Override
+    public JSONObject getLandGetRevisePageData(Integer planType, Integer current, Integer size, String divisionCode, String subject) {
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("current", current);
+        jsonObject.put("size", size);
+        if (StringUtils.isNotEmpty(subject)) {
+            jsonObject.put("title", subject);
+        }
+        if (StringUtils.isNotEmpty(divisionCode)) {
+            jsonObject.put("divisionCode", divisionCode);
+        }
+        return getRequestDataFromSheng(landGetRevisePageURI, jsonObject);
+    }
+
     @Override
     public JSONObject getLandMyAttendsData(Integer planType, Integer current, Integer size, String divisionCode, String subject) {
         JSONObject jsonObject = new JSONObject();
@@ -227,6 +258,44 @@ public class SbSearchServiceImpl implements SbSearchService {
         return reStrMd5;
     }
 
+    /**
+     * 请求数据
+     *
+     * @param requestURI 请求地址
+     * @param params     请求参数
+     * @return
+     */
+    public JSONObject getRequestFileData(String requestURI, Map<String, Object> params) {
+        String token = getAccessTokenFromSheng();
+        if (StringUtils.isEmpty(token)) {
+            return null;
+        }
+        JSONObject reStrMd5 = RInterfaceUtilFromSheng.postRemote(token, requestURI, null, params);
+        System.out.println("请求地址:" + requestURI);
+//        System.out.println("请求参数:" + JSON.toJSONString(params));
+        System.out.println("请求结果:" + reStrMd5.toJSONString());
+        return reStrMd5;
+    }
+
+    /**
+     * 请求数据
+     *
+     * @param requestURI 请求地址
+     * @param params     请求参数
+     * @return
+     */
+    public JSONObject getRequestDataFromSheng(String requestURI, JSONObject params) {
+        String token = getAccessTokenFromSheng();
+        if (StringUtils.isEmpty(token)) {
+            return null;
+        }
+        JSONObject reStrMd5 = RInterfaceUtilFromSheng.postRemote(token, requestURI, params, null);
+        System.out.println("请求地址:" + requestURI);
+        System.out.println("请求参数:" + params.toJSONString());
+        System.out.println("请求结果:" + reStrMd5.toJSONString());
+        return reStrMd5;
+    }
+
     /**
      * 请求数据
      *
@@ -271,6 +340,30 @@ public class SbSearchServiceImpl implements SbSearchService {
         return token;
     }
 
+    /**
+     * 调用接口统一获取token
+     *
+     * @return
+     */
+    public String getAccessTokenFromSheng() {
+        //获取token授权
+        JSONObject jsonObject = new JSONObject();
+        //组装请求参数
+        jsonObject.put("grant_type", "password");
+        jsonObject.put("username", username);
+        jsonObject.put("password", Md5Utils.hash(password));
+        //调用post请求方法
+        JSONObject tokenJson = RInterfaceUtilFromSheng.postRemote(null, oauthFromShengUrl, jsonObject, null);
+        System.out.println(tokenJson);
+        String token = "";
+        if (tokenJson.containsKey("success") && tokenJson.getBoolean("success")
+                && tokenJson.containsKey("data") && tokenJson.getJSONObject("data").containsKey("access_token")) {
+            token = tokenJson.getJSONObject("data").getString("access_token");
+            System.out.println(token);
+        }
+        return token;
+    }
+
     public String getPlanType(Integer planType) {
         Map<Integer, String> map = new HashMap<>();
         map.put(1, "总体规划");

+ 49 - 1
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/service/impl/sbjk/XzczghcgsbServiceImpl.java

@@ -4,10 +4,16 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.onemap.apply.domain.cggl.EscalationDTO;
+import com.onemap.apply.domain.cggl.ScmxDTO;
+import com.onemap.apply.domain.cggl.ScmxRecordDTO;
 import com.onemap.apply.domain.sbjk.TjpgsbDTO;
 import com.onemap.apply.domain.sbjk.XzczghcgsbDTO;
+import com.onemap.apply.mapper.cggl.EscalationMapper;
+import com.onemap.apply.mapper.cggl.ScmxMapper;
+import com.onemap.apply.mapper.cggl.ScmxRecordMapper;
 import com.onemap.apply.mapper.sbjk.XzczghcgsbMapper;
 import com.onemap.apply.service.sbjk.XzczghcgsbService;
+import com.onemap.apply.utils.HttpClientUtil;
 import com.onemap.apply.utils.Md5Utils;
 import com.onemap.apply.utils.RInterfaceUtil;
 import com.onemap.apply.utils.UnPackageUtils;
@@ -57,6 +63,48 @@ public class XzczghcgsbServiceImpl implements XzczghcgsbService {
     private String requireFileName;
     @Autowired
     private RedisService redisService;
+    @Autowired
+    private EscalationMapper escalationMapper;
+    @Autowired
+    private ScmxMapper scmxMapper;
+    @Autowired
+    private ScmxRecordMapper scmxRecordMapper;
+
+    @Override
+    public RequestResult startcgsc(String scmodel, String jqscmodel, String cgid) {
+        try {
+            //人工审查
+            if (StringUtils.isNotEmpty(scmodel)) {
+                QueryWrapper<XzczghcgsbDTO> wrapper = new QueryWrapper();
+                wrapper.eq("uuid", cgid);
+                XzczghcgsbDTO dto = xzczghcgsbMapper.selectOne(wrapper);
+                dto.setMsg(scmodel);
+                //TODO wanger 增加人工审查模型详情表
+                ScmxDTO scmxdto = scmxMapper.selectById(scmodel);
+                String users = scmxdto.getUsers();
+                if (StringUtils.isNotEmpty(users)) {
+                    String[] userlist = users.split(",");
+                    for (int i = 0; i < userlist.length; i++) {
+                        String userid = userlist[i];
+                        ScmxRecordDTO recordDto = new ScmxRecordDTO();
+                        recordDto.setCgid(cgid);
+                        recordDto.setSort(String.valueOf(i));
+                        recordDto.setUserid(userid);
+                        scmxRecordMapper.insert(recordDto);
+                    }
+                    scmxRecordMapper.updateUserName();
+                } else {
+                    //空的人工审查流程  直接办结
+                    dto.setStatus("11");
+                }
+                xzczghcgsbMapper.update(dto, wrapper);
+            }
+            return RequestResult.success("发起审查成功!");
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return RequestResult.error("发起审查失败!");
+    }
 
     /**
      * 查询记录
@@ -371,7 +419,7 @@ public class XzczghcgsbServiceImpl implements XzczghcgsbService {
                                         System.out.println("合包请求结果:" + mergeResult);
                                         if (mergeResult != null && mergeResult.containsKey("success") && mergeResult.getBoolean("success")) {
                                             xzczghcgsbDTO.setMsg(reStrFileUpload.toString());
-                                            xzczghcgsbDTO.setStatus(cglevel + "1");
+                                            xzczghcgsbDTO.setStatus(cglevel + "2");
                                             xzczghcgsbDTO.setUploadTime(new Date());
                                             //补正的村庄规划成果上传完成后,将instid后面追加#标识为历史,当自治区再次推送到待办任务不再限制上传按钮
                                             if (!StringUtils.isEmpty(xzczghcgsbDTO.getInstid())) {

+ 5 - 0
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/service/sbjk/SbSearchService.java

@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.onemap.apply.domain.sbjk.ZbsbRzDTO;
 import com.onemap.common.core.web.domain.MsgResult;
 import com.onemap.common.core.web.domain.WebResult;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
 import java.util.List;
@@ -26,4 +27,8 @@ public interface SbSearchService {
     MsgResult reportDownload(String id, String solId, HttpServletResponse response);
 
     JSONObject reportDownloadAction(String id, String solId, HttpServletResponse response);
+
+    JSONObject getLandGetRevisePageData(Integer planType, Integer current, Integer size, String divisionCode, String subject);
+
+    JSONObject reuploadThirdpartyReviseData(MultipartFile file, String instid);
 }

+ 3 - 0
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/service/sbjk/XzczghcgsbService.java

@@ -3,6 +3,7 @@ package com.onemap.apply.service.sbjk;
 
 import com.onemap.apply.domain.sbjk.XzczghcgsbDTO;
 import com.onemap.common.core.web.domain.AjaxResult;
+import com.onemap.common.core.web.domain.RequestResult;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.util.List;
@@ -58,4 +59,6 @@ public interface XzczghcgsbService {
     AjaxResult reportSubmit(String uuid,String cglevel);
 
     List<String> getInstIds(String param);
+
+    RequestResult startcgsc(String scmodel, String jqscmodel, String cgid);
 }

+ 2 - 2
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/task/CgjcSchedule.java

@@ -36,8 +36,8 @@ public class CgjcSchedule {
      * initialDelay:表示延迟多久再第一次执行任务,参数类型为long ,单位:ms
      * initialDelayString:与initialDelay一样,只是参数类型String
      */
-    @Async("taskExecutor")
-    @Scheduled(fixedDelay = TIME_INTERVAL)
+//    @Async("taskExecutor")
+//    @Scheduled(fixedDelay = TIME_INTERVAL)
     public void CgscStatus() {
         try {
             String id = escalationMapper.selectWaitCheck("");

+ 65 - 0
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/task/RedundancyFileSchedule.java

@@ -0,0 +1,65 @@
+package com.onemap.apply.task;
+
+import com.onemap.apply.mapper.cggl.EscalationFileMapper;
+import com.onemap.apply.mapper.cggl.EscalationMapper;
+import com.onemap.apply.utils.HttpClientUtil;
+import com.onemap.common.core.utils.StringUtils;
+import org.apache.commons.io.FileUtils;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.io.File;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 删除冗余的规划成果包
+ */
+@Component
+public class RedundancyFileSchedule {
+    //间隔时间 单位ms
+    public static final long TIME_INTERVAL = 1 * 2000000;
+    //制图图片拼接时间戳格式
+    private SimpleDateFormat timeFormat = new SimpleDateFormat("yyyyMMddHHmmss");
+    @Resource
+    private EscalationMapper escalationMapper;
+    @Resource
+    private EscalationFileMapper escalationFileMapper;
+
+    /**
+     * Scheduled 定时器参数
+     * cron表达式:指定任务在特定时间执行
+     * fixedDelay:表示上一次任务执行完成后多久再执行,参数类型long,单位:ms
+     * fixedDelayString:与fixedDelay一样,只是参数类型是String
+     * fixedRate:表示按一定的频率执行任务,参数类型long,单位:ms 如: fixedRate(5000),表示这个定时器任务每5秒执行一次
+     * fixedRateString:与fixedRate一样,只是参数类型变为String
+     * initialDelay:表示延迟多久再第一次执行任务,参数类型为long ,单位:ms
+     * initialDelayString:与initialDelay一样,只是参数类型String
+     */
+    @Async("taskExecutor")
+    @Scheduled(fixedDelay = TIME_INTERVAL)
+    public void CgscStatus() {
+        try {
+            //查询所有未关联上的规划成果包数据列表
+            List<String> filepathlist =  escalationMapper.selectRedundancyFiles();
+            for(int i = 0 ; i < filepathlist.size() ;  i ++){
+                String filepath = filepathlist.get(i);
+                //删除文件夹
+                try{
+                    File file = new File(filepath);
+                    File parentDir = file.getParentFile();
+                    FileUtils.deleteDirectory(parentDir);
+                }catch (Exception e){
+                    e.printStackTrace();
+                }
+            }
+            escalationMapper.deleteRedundancyFiles();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+}

+ 313 - 0
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/utils/RInterfaceUtilFromSheng.java

@@ -0,0 +1,313 @@
+package com.onemap.apply.utils;
+
+import com.alibaba.fastjson.JSONObject;
+import com.onemap.common.core.utils.StringUtils;
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpStatus;
+import org.apache.http.client.config.RequestConfig;
+import org.apache.http.client.entity.UrlEncodedFormEntity;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.client.methods.HttpUriRequest;
+import org.apache.http.client.methods.RequestBuilder;
+import org.apache.http.entity.ContentType;
+import org.apache.http.entity.mime.HttpMultipartMode;
+import org.apache.http.entity.mime.MultipartEntityBuilder;
+import org.apache.http.entity.mime.content.StringBody;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.message.BasicNameValuePair;
+import org.apache.http.params.CoreConnectionPNames;
+import org.apache.http.util.EntityUtils;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.nio.channels.FileChannel;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * 调用厅里接口工具类
+ */
+public class RInterfaceUtilFromSheng {
+    public static String Authorization = "Basic c2FiZXI6c2FiZXJfc2VjcmV0";
+    public static String TenantId = "000000";
+
+    public static long sliceSize = 10 * 1024 * 1024;
+
+    /**
+     * 调用远程接口
+     *
+     * @param url
+     * @param jsonParam access_token、param都为空时,为获取token请求
+     *                  access_token不为空 param为空时,为gfindByMd5Url请求
+     *                  access_token、param都不为空时,为上传文件请求
+     * @return
+     */
+    public static JSONObject postRemote(String access_token, String url, JSONObject jsonParam, Map<String, Object> param) {
+        //CloseableHttpClient closeableHttpClient = HttpClients.createDefault();
+        RequestConfig config = RequestConfig.custom()
+                .setConnectTimeout(0)
+                .setSocketTimeout(0)
+                .setConnectionRequestTimeout(0)
+                .build();
+        CloseableHttpClient closeableHttpClient = HttpClients.custom()
+                .setDefaultRequestConfig(config)
+                .build();
+        CloseableHttpResponse closeableHttpResponse = null;
+        JSONObject jsonObject = new JSONObject();
+        try {
+            if (param != null) {
+                //文件上传
+                ContentType ctype = ContentType.create("content-disposition", "UTF-8");
+                MultipartEntityBuilder mentity = MultipartEntityBuilder.create().setMode(HttpMultipartMode.RFC6532);
+                Set<String> keyset = param.keySet();
+                for (String key : keyset) {
+                    System.out.println("postRemote 文件上传参数:" + key + ":" + param.get(key));
+                    Object paramObj = param.get(key);
+                    if (paramObj != null) {
+                        if (paramObj instanceof MultipartFile) {
+                            mentity.addBinaryBody(key, ((MultipartFile) paramObj).getInputStream(), ctype, ((MultipartFile) paramObj).getOriginalFilename());
+                        } else if (paramObj instanceof File) {
+                            mentity.addBinaryBody(key, (File) paramObj);//(key, new FileInputStream((File)paramObj),ctype,((File)paramObj).getName());
+                        } else {
+                            mentity.addPart(key, new StringBody(paramObj.toString(), ctype));
+                        }
+                    }
+                }
+                HttpEntity entity = mentity.build();
+                HttpUriRequest post = RequestBuilder.post().setUri(url).setEntity(entity).build();
+                //设置HTTP访问header
+                post.setHeader("Authorization", Authorization);
+                post.addHeader("Tenant-Id", TenantId);
+                if (StringUtils.isNotEmpty(access_token)) {
+                    post.setHeader("Token-Auth", access_token);
+                }
+                closeableHttpResponse = closeableHttpClient.execute(post);
+            } else {
+                //普通请求
+                HttpPost httpPost = new HttpPost(url);
+                //设置HTTP访问header
+                httpPost.setHeader("Authorization", Authorization);
+                httpPost.addHeader("Tenant-Id", TenantId);
+                if (StringUtils.isNotEmpty(access_token)) {
+                    httpPost.setHeader("Token-Auth", access_token);
+                }
+                //设置请求参数
+                //StringEntity entity = new StringEntity(jsonParam.toString(), ContentType.create("text/json", "UTF-8"));
+                List<BasicNameValuePair> list = new ArrayList<BasicNameValuePair>();
+                for (String str : jsonParam.keySet()) {
+                    list.add(new BasicNameValuePair(str, jsonParam.getString(str)));
+                    System.out.println(" key : str : " + str + " value : " + jsonParam.getString(str));
+                }
+                //创建参数集合
+                httpPost.setEntity(new UrlEncodedFormEntity(list, "UTF-8"));
+                //配置请求时间、超时时间
+                RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(10000).setConnectTimeout(10000).build();
+                httpPost.setConfig(requestConfig);
+
+                //开始发送请求
+                closeableHttpResponse = closeableHttpClient.execute(httpPost);
+            }
+            //获取请求状态码
+            int statusCode = closeableHttpResponse.getStatusLine().getStatusCode();
+            //请求状态码放入到返回json
+            jsonObject.put("code", statusCode);
+            if (statusCode != HttpStatus.SC_OK) {
+                //TODO:状态码非200代表没有正常返回,此处处理你的业务
+                HttpEntity httpEntity = closeableHttpResponse.getEntity();
+                String asset_synchronization = EntityUtils.toString(httpEntity, "UTF-8");
+                try {
+                    //错误是否能解析成json,不能的话直接返回字符串到msg
+                    jsonObject = JSONObject.parseObject(asset_synchronization);
+                } catch (Exception e) {
+                    jsonObject.put("msg", asset_synchronization);
+                }
+            } else {
+                //返回值200
+                HttpEntity httpEntity = closeableHttpResponse.getEntity();
+                String asset_synchronization = EntityUtils.toString(httpEntity, "UTF-8");
+                return JSONObject.parseObject(asset_synchronization);
+            }
+        } catch (IOException e) {
+            //程序异常返回值
+            jsonObject.put("code", -1);
+            jsonObject.put("msg", e.toString());
+            return jsonObject;
+        } finally {
+            if (closeableHttpResponse != null) {
+                try {
+                    //关闭http请求
+                    closeableHttpResponse.close();
+                } catch (IOException e) {
+                    System.out.println(e.toString());
+                }
+            }
+        }
+        System.out.println("postRemote jsonObject: " + jsonObject);
+        return jsonObject;
+    }
+
+    /**
+     * 调用远程文件流接口
+     *
+     * @param url
+     * @param jsonParam access_token、param都为空时,为获取token请求
+     *                  access_token不为空 param为空时,为gfindByMd5Url请求
+     *                  access_token、param都不为空时,为上传文件请求
+     * @return
+     */
+    public static JSONObject postRemoteFile(String access_token, String url, JSONObject jsonParam, Map<String, Object> param, HttpServletResponse response) {
+        CloseableHttpClient closeableHttpClient = HttpClients.createDefault();
+        CloseableHttpResponse closeableHttpResponse = null;
+        JSONObject jsonObject = new JSONObject();
+        try {
+            if (param != null) {
+                //文件上传
+                ContentType ctype = ContentType.create("content-disposition", "UTF-8");
+                MultipartEntityBuilder mentity = MultipartEntityBuilder.create().setMode(HttpMultipartMode.RFC6532);
+                Set<String> keyset = param.keySet();
+                for (String key : keyset) {
+                    System.out.println("postRemote 文件上传参数:" + key + ":" + param.get(key));
+                    Object paramObj = param.get(key);
+                    if (paramObj != null) {
+                        if (paramObj instanceof MultipartFile) {
+                            mentity.addBinaryBody(key, ((MultipartFile) paramObj).getInputStream(), ctype, ((MultipartFile) paramObj).getOriginalFilename());
+                        } else if (paramObj instanceof File) {
+                            mentity.addBinaryBody(key, (File) paramObj);//(key, new FileInputStream((File)paramObj),ctype,((File)paramObj).getName());
+                        } else {
+                            mentity.addPart(key, new StringBody(paramObj.toString(), ctype));
+                        }
+                    }
+                }
+                HttpEntity entity = mentity.build();
+                HttpUriRequest post = RequestBuilder.post().setUri(url).setEntity(entity).build();
+                //设置HTTP访问header
+                post.setHeader("Authorization", Authorization);
+                post.addHeader("Tenant-Id", TenantId);
+                if (StringUtils.isNotEmpty(access_token)) {
+                    post.setHeader("Token-Auth", access_token);
+                }
+                closeableHttpResponse = closeableHttpClient.execute(post);
+            } else {
+                //普通请求
+                HttpPost httpPost = new HttpPost(url);
+                //设置HTTP访问header
+                httpPost.setHeader("Authorization", Authorization);
+                httpPost.addHeader("Tenant-Id", TenantId);
+                if (StringUtils.isNotEmpty(access_token)) {
+                    httpPost.setHeader("Token-Auth", access_token);
+                }
+                //设置请求参数
+                //StringEntity entity = new StringEntity(jsonParam.toString(), ContentType.create("text/json", "UTF-8"));
+                List<BasicNameValuePair> list = new ArrayList<BasicNameValuePair>();
+                for (String str : jsonParam.keySet()) {
+                    list.add(new BasicNameValuePair(str, jsonParam.getString(str)));
+                    System.out.println(" key : str : " + str + " value : " + jsonParam.getString(str));
+                }
+                //创建参数集合
+                httpPost.setEntity(new UrlEncodedFormEntity(list, "UTF-8"));
+                //配置请求时间、超时时间
+                RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(10000).setConnectTimeout(10000).build();
+                httpPost.setConfig(requestConfig);
+
+                //开始发送请求
+                closeableHttpResponse = closeableHttpClient.execute(httpPost);
+            }
+            //获取请求状态码
+            int statusCode = closeableHttpResponse.getStatusLine().getStatusCode();
+            //请求状态码放入到返回json
+            jsonObject.put("code", statusCode);
+            if (statusCode != HttpStatus.SC_OK) {
+                //TODO:状态码非200代表没有正常返回,此处处理你的业务
+                HttpEntity httpEntity = closeableHttpResponse.getEntity();
+                String asset_synchronization = EntityUtils.toString(httpEntity, "UTF-8");
+                try {
+                    //错误是否能解析成json,不能的话直接返回字符串到msg
+                    jsonObject = JSONObject.parseObject(asset_synchronization);
+                } catch (Exception e) {
+                    jsonObject.put("msg", asset_synchronization);
+                }
+            } else {
+                //返回值200
+                HttpEntity httpEntity = closeableHttpResponse.getEntity();
+                String responseType = httpEntity.getContentType().getValue();
+                if (responseType.contains("zip")) {
+                    byte[] outstream = EntityUtils.toByteArray(httpEntity);
+                    response.getOutputStream().write(outstream);
+                    response.getOutputStream().close();
+                    return null;
+                } else {
+                    String asset_synchronization = EntityUtils.toString(httpEntity, "UTF-8");
+                    return JSONObject.parseObject(asset_synchronization);
+                }
+            }
+        } catch (IOException e) {
+            //程序异常返回值
+            jsonObject.put("code", -1);
+            jsonObject.put("msg", e.toString());
+            return jsonObject;
+        } finally {
+            if (closeableHttpResponse != null) {
+                try {
+                    //关闭http请求
+                    closeableHttpResponse.close();
+                } catch (IOException e) {
+                    System.out.println(e.toString());
+                }
+            }
+        }
+        System.out.println("postRemote jsonObject: " + jsonObject);
+        return jsonObject;
+    }
+
+    /**
+     * 切割文件
+     *
+     * @param fromFileName 源文件的完整路径带文件名
+     * @param toFileName   目标文件的完整路径带文件名
+     * @return
+     * @throws IOException
+     */
+    public static long spilt(String fromFileName, String toFileName, String splice) throws IOException {
+        long curSliceSize = 0;
+        File f = new File(fromFileName);
+        FileInputStream in = new FileInputStream(f);
+        FileOutputStream out = null;
+        FileChannel inChannel = in.getChannel();
+        FileChannel outChannel = null;
+        // 计算最终会分成几个文件
+        int count = (int) (f.length() / sliceSize);
+        for (int i = 0; i <= count; i++) {
+            // 生成文件的路径
+            String t = toFileName + splice + i;
+            try {
+                out = new FileOutputStream(new File(t));
+                outChannel = out.getChannel();
+                // 从inChannel的m*i处,读取固定长度的数据,写入outChannel
+                if (i != count) {
+                    curSliceSize = sliceSize;
+                    inChannel.transferTo(sliceSize * i, curSliceSize, outChannel);
+                } else {// 最后一个文件,大小不固定,所以需要重新计算长度
+                    curSliceSize = f.length() - sliceSize * count;
+                    inChannel.transferTo(sliceSize * i, curSliceSize, outChannel);
+                }
+            } catch (IOException e) {
+                System.out.println(e.toString());
+                return curSliceSize;
+            } finally {
+                out.close();
+                outChannel.close();
+            }
+        }
+        in.close();
+        inChannel.close();
+        return curSliceSize;
+    }
+}

+ 12 - 0
onemap-modules/onemap-apply/src/main/resources/mapper/oracle/cggl/EscalationMapper.xml

@@ -446,4 +446,16 @@ select distinct (t.instid)
      where t.instid is not null
        and t.instid not like '%#'
     </select>
+
+    <update id="updateCgScModel">
+        update t_cggl_escalation set scmodel = #{scmodel} where id = #{cgid}
+    </update>
+
+    <select id="selectRedundancyFiles" resultType="java.lang.String">
+        select path from T_CGGL_ESCALATION_FILE t where t.id not in (select fileid from T_CGGL_ESCALATION tt)
+    </select>
+
+    <delete id="deleteRedundancyFiles">
+        delete from T_CGGL_ESCALATION_FILE t where t.id not in (select fileid from T_CGGL_ESCALATION tt)
+    </delete>
 </mapper>

+ 36 - 6
onemap-modules/onemap-apply/src/main/resources/mapper/postgresql/cggl/EscalationMapper.xml

@@ -219,16 +219,28 @@
         s.path as "filepath",
         s.status as "status",
         m.modelsname as "modelsname"
-        from (select * from t_cggl_escalation where sczt=#{type} and uploadstatus != '6'
+        from (select * from t_cggl_escalation cg where cg.sczt=#{type} and cg.uploadstatus != '6'
         <if test="xzqdm != null and xzqdm != ''">
-            and xzqdm like '%'||#{xzqdm}||'%'
+            and cg.xzqdm like '%'||#{xzqdm}||'%'
         </if>
         <if test="cgmc != null and cgmc != ''">
-            and name like '%'||#{cgmc}||'%'
+            and cg.name like '%'||#{cgmc}||'%'
         </if>
         <if test="cglx != null and cglx != ''">
-            and plantype =#{cglx}
+            and cg.plantype =#{cglx}
         </if>
+        <choose>
+            <when test="type == '0'.toString() or type == '1'.toString()">
+                and (select record.userid from t_cggl_scmx_record record where record.cgid = cg.id and (record.scjl is
+                null or record.scjl = '') order by sort asc limit 1) = #{username}
+            </when>
+            <when test="type == '2'.toString() or type == '3'.toString()">
+                and cg.scmodel in ( select id from t_cggl_scmx where users like '%'||#{username}||'%' )
+            </when>
+            <otherwise>
+
+            </otherwise>
+        </choose>
         ) t
         left join t_cggl_escalation_file s
         on s.id = t.fileid
@@ -357,9 +369,10 @@
         on s.id = t.fileid
         order by uploadtime desc
     </select>
+
     <update id="updatescinfo">
         update t_cggl_escalation
-              set sczt=${sczt},scresult=#{scresult},scr=#{scr},sctime=sysdate  where id=#{gcid}
+              set sczt=${sczt},scresult=#{scresult},scr=#{scr},sctime=now()  where id=#{gcid}
     </update>
 
     <update id="updatescqxinfo">
@@ -389,7 +402,7 @@
     </select>
 
     <update id="updateWaitCheck" parameterType="java.lang.String">
-        update t_cggl_escalation_file t set status = '0'
+        update t_cggl_escalation_file t set status = '1'
         where t.id = (select fileid from t_cggl_escalation where id = #{param})
     </update>
 
@@ -452,4 +465,21 @@
                        left join
                        (select RULEID,RULEVALUE from TS_EXAMMoDEL where PID= '14') b on t.id=b.ruleid) t  where  ischeck='true' order by    t.id
     </insert>
+
+    <update id="updateCgScModel">
+        update t_cggl_escalation set scmodel = #{scmodel} where id = #{cgid}
+    </update>
+
+    <update id="updateCgScZt">
+        update t_cggl_escalation set sczt = #{sczt} where id = #{cgid}
+    </update>
+
+    <select id="selectRedundancyFiles" resultType="java.lang.String">
+        select path from T_CGGL_ESCALATION_FILE t where t.id not in (select fileid from T_CGGL_ESCALATION tt)
+    </select>
+
+    <delete id="deleteRedundancyFiles">
+        delete from T_CGGL_ESCALATION_FILE t where t.id not in (select fileid from T_CGGL_ESCALATION tt)
+    </delete>
+
 </mapper>

+ 25 - 0
onemap-modules/onemap-apply/src/main/resources/mapper/postgresql/cggl/ScmxRecordMapper.xml

@@ -0,0 +1,25 @@
+<?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.cggl.ScmxRecordMapper">
+
+    <update id="updateUserName">
+        update t_cggl_scmx_record t set username =
+        (select distinct(nick_name) from sys_user where user_name = t.userid and del_flag = '0' )
+        where t.username is null
+    </update>
+
+    <update id="updateScyj" parameterType="java.lang.String">
+        update t_cggl_scmx_record t set scyj = #{scyj} ,
+        scjl = #{scjl},
+        sctime = now()
+        where cgid = #{cgid} and userid = #{userid}
+    </update>
+
+    <select id="scIsEnd" parameterType="java.lang.String" resultType="java.lang.Integer">
+        select count(1) from t_cggl_scmx_record t where t.cgid = #{cgid} and t.scjl is null
+    </select>
+
+
+</mapper>

+ 46 - 0
onemap-modules/onemap-apply/src/main/resources/mapper/postgresql/sbjk/XzxzghcgsbMapper.xml

@@ -17,5 +17,51 @@
        and t.instid not like '%#'
     </select>
 
+    <select id="getSelectCgSclistbyzt" parameterType="java.lang.String"
+            resultType="com.onemap.apply.domain.cggl.EscalationTaskDTO">
+        select t.uuid "id",
+        '村庄规划' "plantype",
+        (case
+        when t.status = '10' then
+        '待审'
+        when t.status = '11' then
+        '完结'
+        end) "sczt",
+        t.file_path "filepath",
+        t.file_name "name",
+        t.upload_status,
+        t.upload_time "uploadtime",
+        t.task_id,
+        t.status,
+        t.cglevel,
+        t.county,
+        t.town,
+        t.village,
+        t.xzq_code "xzqdm",
+        t.xzq_name "xzqmc",
+        t.year,
+        t.msg,
+        t.instid from t_xzczghcgsb t
+        where 1 = 1
+        <if test="xzqdm != null and xzqdm != ''">
+            and t.xzq_code like '%'||#{xzqdm}||'%'
+        </if>
+        <if test="cgmc != null and cgmc != ''">
+            and t.xzq_name like '%'||#{cgmc}||'%'
+        </if>
+        <choose>
+            <when test="type == '10'.toString()">
+                and (select record.userid from t_cggl_scmx_record record where record.cgid = t.uuid and (record.scjl is
+                null or record.scjl = '') order by sort asc limit 1) = #{username}
+            </when>
+            <when test="type == '11'.toString()">
+                and t.msg in ( select id from t_cggl_scmx where users like '%'||#{username}||'%' )
+            </when>
+            <otherwise>
+
+            </otherwise>
+        </choose>
+        order by upload_time desc
+    </select>
 
 </mapper>

+ 105 - 0
onemap-modules/onemap-system/src/main/java/com/onemap/system/controller/TCgglScmxController.java

@@ -0,0 +1,105 @@
+package com.onemap.system.controller;
+
+import java.util.List;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.onemap.common.log.annotation.Log;
+import com.onemap.common.log.enums.BusinessType;
+import com.onemap.common.security.annotation.RequiresPermissions;
+import com.onemap.system.domain.TCgglScmx;
+import com.onemap.system.service.ITCgglScmxService;
+import com.onemap.common.core.web.controller.BaseController;
+import com.onemap.common.core.web.domain.AjaxResult;
+import com.onemap.common.core.utils.poi.ExcelUtil;
+import com.onemap.common.core.web.page.TableDataInfo;
+
+/**
+ * 规划成果审查模型配置Controller
+ * 
+ * @author siwei
+ * @date 2025-02-07
+ */
+@RestController
+@RequestMapping("/scmx")
+public class TCgglScmxController extends BaseController
+{
+    @Autowired
+    private ITCgglScmxService tCgglScmxService;
+
+    /**
+     * 查询规划成果审查模型配置列表
+     */
+    @RequiresPermissions("system:scmx:list")
+    @GetMapping("/list")
+    public TableDataInfo list(TCgglScmx tCgglScmx)
+    {
+        startPage();
+        List<TCgglScmx> list = tCgglScmxService.selectTCgglScmxList(tCgglScmx);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出规划成果审查模型配置列表
+     */
+    @RequiresPermissions("system:scmx:export")
+    @Log(title = "规划成果审查模型配置", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, TCgglScmx tCgglScmx)
+    {
+        List<TCgglScmx> list = tCgglScmxService.selectTCgglScmxList(tCgglScmx);
+        ExcelUtil<TCgglScmx> util = new ExcelUtil<TCgglScmx>(TCgglScmx.class);
+        util.exportExcel(response, list, "规划成果审查模型配置数据");
+    }
+
+    /**
+     * 获取规划成果审查模型配置详细信息
+     */
+    @RequiresPermissions("system:scmx:query")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") String id)
+    {
+        return success(tCgglScmxService.selectTCgglScmxById(id));
+    }
+
+    /**
+     * 新增规划成果审查模型配置
+     */
+    @RequiresPermissions("system:scmx:add")
+    @Log(title = "规划成果审查模型配置", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TCgglScmx tCgglScmx)
+    {
+        return toAjax(tCgglScmxService.insertTCgglScmx(tCgglScmx));
+    }
+
+    /**
+     * 修改规划成果审查模型配置
+     */
+    @RequiresPermissions("system:scmx:edit")
+    @Log(title = "规划成果审查模型配置", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TCgglScmx tCgglScmx)
+    {
+        return toAjax(tCgglScmxService.updateTCgglScmx(tCgglScmx));
+    }
+
+    /**
+     * 删除规划成果审查模型配置
+     */
+    @RequiresPermissions("system:scmx:remove")
+    @Log(title = "规划成果审查模型配置", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable String[] ids)
+    {
+        return toAjax(tCgglScmxService.deleteTCgglScmxByIds(ids));
+    }
+}

+ 66 - 0
onemap-modules/onemap-system/src/main/java/com/onemap/system/domain/TCgglScmx.java

@@ -0,0 +1,66 @@
+package com.onemap.system.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.onemap.common.core.annotation.Excel;
+import com.onemap.common.core.web.domain.BaseEntity;
+
+/**
+ * 规划成果审查模型配置对象 t_cggl_scmx
+ * 
+ * @author siwei
+ * @date 2025-02-07
+ */
+public class TCgglScmx extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键id */
+    private String id;
+
+    /** 名称 */
+    @Excel(name = "名称")
+    private String name;
+
+    /** 审批用户集合,有先后顺序 */
+    @Excel(name = "审批用户集合,有先后顺序")
+    private String users;
+
+    public void setId(String id) 
+    {
+        this.id = id;
+    }
+
+    public String getId() 
+    {
+        return id;
+    }
+    public void setName(String name) 
+    {
+        this.name = name;
+    }
+
+    public String getName() 
+    {
+        return name;
+    }
+    public void setUsers(String users) 
+    {
+        this.users = users;
+    }
+
+    public String getUsers() 
+    {
+        return users;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("name", getName())
+            .append("users", getUsers())
+            .append("remark", getRemark())
+            .toString();
+    }
+}

+ 61 - 0
onemap-modules/onemap-system/src/main/java/com/onemap/system/mapper/TCgglScmxMapper.java

@@ -0,0 +1,61 @@
+package com.onemap.system.mapper;
+
+import java.util.List;
+import com.onemap.system.domain.TCgglScmx;
+
+/**
+ * 规划成果审查模型配置Mapper接口
+ * 
+ * @author siwei
+ * @date 2025-02-07
+ */
+public interface TCgglScmxMapper 
+{
+    /**
+     * 查询规划成果审查模型配置
+     * 
+     * @param id 规划成果审查模型配置主键
+     * @return 规划成果审查模型配置
+     */
+    public TCgglScmx selectTCgglScmxById(String id);
+
+    /**
+     * 查询规划成果审查模型配置列表
+     * 
+     * @param tCgglScmx 规划成果审查模型配置
+     * @return 规划成果审查模型配置集合
+     */
+    public List<TCgglScmx> selectTCgglScmxList(TCgglScmx tCgglScmx);
+
+    /**
+     * 新增规划成果审查模型配置
+     * 
+     * @param tCgglScmx 规划成果审查模型配置
+     * @return 结果
+     */
+    public int insertTCgglScmx(TCgglScmx tCgglScmx);
+
+    /**
+     * 修改规划成果审查模型配置
+     * 
+     * @param tCgglScmx 规划成果审查模型配置
+     * @return 结果
+     */
+    public int updateTCgglScmx(TCgglScmx tCgglScmx);
+
+    /**
+     * 删除规划成果审查模型配置
+     * 
+     * @param id 规划成果审查模型配置主键
+     * @return 结果
+     */
+    public int deleteTCgglScmxById(String id);
+
+    /**
+     * 批量删除规划成果审查模型配置
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteTCgglScmxByIds(String[] ids);
+}

+ 61 - 0
onemap-modules/onemap-system/src/main/java/com/onemap/system/service/ITCgglScmxService.java

@@ -0,0 +1,61 @@
+package com.onemap.system.service;
+
+import java.util.List;
+import com.onemap.system.domain.TCgglScmx;
+
+/**
+ * 规划成果审查模型配置Service接口
+ * 
+ * @author siwei
+ * @date 2025-02-07
+ */
+public interface ITCgglScmxService 
+{
+    /**
+     * 查询规划成果审查模型配置
+     * 
+     * @param id 规划成果审查模型配置主键
+     * @return 规划成果审查模型配置
+     */
+    public TCgglScmx selectTCgglScmxById(String id);
+
+    /**
+     * 查询规划成果审查模型配置列表
+     * 
+     * @param tCgglScmx 规划成果审查模型配置
+     * @return 规划成果审查模型配置集合
+     */
+    public List<TCgglScmx> selectTCgglScmxList(TCgglScmx tCgglScmx);
+
+    /**
+     * 新增规划成果审查模型配置
+     * 
+     * @param tCgglScmx 规划成果审查模型配置
+     * @return 结果
+     */
+    public int insertTCgglScmx(TCgglScmx tCgglScmx);
+
+    /**
+     * 修改规划成果审查模型配置
+     * 
+     * @param tCgglScmx 规划成果审查模型配置
+     * @return 结果
+     */
+    public int updateTCgglScmx(TCgglScmx tCgglScmx);
+
+    /**
+     * 批量删除规划成果审查模型配置
+     * 
+     * @param ids 需要删除的规划成果审查模型配置主键集合
+     * @return 结果
+     */
+    public int deleteTCgglScmxByIds(String[] ids);
+
+    /**
+     * 删除规划成果审查模型配置信息
+     * 
+     * @param id 规划成果审查模型配置主键
+     * @return 结果
+     */
+    public int deleteTCgglScmxById(String id);
+}

+ 88 - 0
onemap-modules/onemap-system/src/main/java/com/onemap/system/service/impl/TCgglScmxServiceImpl.java

@@ -0,0 +1,88 @@
+package com.onemap.system.service.impl;
+
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.onemap.system.mapper.TCgglScmxMapper;
+import com.onemap.system.domain.TCgglScmx;
+import com.onemap.system.service.ITCgglScmxService;
+
+/**
+ * 规划成果审查模型配置Service业务层处理
+ *
+ * @author siwei
+ * @date 2025-02-07
+ */
+@Service
+public class TCgglScmxServiceImpl implements ITCgglScmxService {
+    @Autowired
+    private TCgglScmxMapper tCgglScmxMapper;
+
+    /**
+     * 查询规划成果审查模型配置
+     *
+     * @param id 规划成果审查模型配置主键
+     * @return 规划成果审查模型配置
+     */
+    @Override
+    public TCgglScmx selectTCgglScmxById(String id) {
+
+        return tCgglScmxMapper.selectTCgglScmxById(id);
+    }
+
+    /**
+     * 查询规划成果审查模型配置列表
+     *
+     * @param tCgglScmx 规划成果审查模型配置
+     * @return 规划成果审查模型配置
+     */
+    @Override
+    public List<TCgglScmx> selectTCgglScmxList(TCgglScmx tCgglScmx) {
+        return tCgglScmxMapper.selectTCgglScmxList(tCgglScmx);
+    }
+
+    /**
+     * 新增规划成果审查模型配置
+     *
+     * @param tCgglScmx 规划成果审查模型配置
+     * @return 结果
+     */
+    @Override
+    public int insertTCgglScmx(TCgglScmx tCgglScmx) {
+        return tCgglScmxMapper.insertTCgglScmx(tCgglScmx);
+    }
+
+    /**
+     * 修改规划成果审查模型配置
+     *
+     * @param tCgglScmx 规划成果审查模型配置
+     * @return 结果
+     */
+    @Override
+    public int updateTCgglScmx(TCgglScmx tCgglScmx) {
+        return tCgglScmxMapper.updateTCgglScmx(tCgglScmx);
+    }
+
+    /**
+     * 批量删除规划成果审查模型配置
+     *
+     * @param ids 需要删除的规划成果审查模型配置主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTCgglScmxByIds(String[] ids) {
+        return tCgglScmxMapper.deleteTCgglScmxByIds(ids);
+    }
+
+    /**
+     * 删除规划成果审查模型配置信息
+     *
+     * @param id 规划成果审查模型配置主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTCgglScmxById(String id) {
+        return tCgglScmxMapper.deleteTCgglScmxById(id);
+    }
+}

+ 67 - 0
onemap-modules/onemap-system/src/main/resources/mapper/postgresql/system/TCgglScmxMapper.xml

@@ -0,0 +1,67 @@
+<?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.system.mapper.TCgglScmxMapper">
+    
+    <resultMap type="TCgglScmx" id="TCgglScmxResult">
+        <result property="id"    column="id"    />
+        <result property="name"    column="name"    />
+        <result property="users"    column="users"    />
+        <result property="remark"    column="remark"    />
+    </resultMap>
+
+    <sql id="selectTCgglScmxVo">
+        select id, name, users, remark from t_cggl_scmx
+    </sql>
+
+    <select id="selectTCgglScmxList" parameterType="TCgglScmx" resultMap="TCgglScmxResult">
+        <include refid="selectTCgglScmxVo"/>
+        <where>  
+            <if test="name != null  and name != ''"> and name like '%'||#{name}||'%' </if>
+            <if test="users != null  and users != ''"> and users like '%'||#{users}||'%' </if>
+        </where>
+    </select>
+    
+    <select id="selectTCgglScmxById" parameterType="String" resultMap="TCgglScmxResult">
+        <include refid="selectTCgglScmxVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertTCgglScmx" parameterType="TCgglScmx">
+        insert into t_cggl_scmx
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="name != null and name != ''">name,</if>
+            <if test="users != null and users != ''">users,</if>
+            <if test="remark != null and remark != ''">remark,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="name != null and name != ''">#{name},</if>
+            <if test="users != null and users != ''">#{users},</if>
+            <if test="remark != null and remark != ''">#{remark},</if>
+         </trim>
+    </insert>
+
+    <update id="updateTCgglScmx" parameterType="TCgglScmx">
+        update t_cggl_scmx
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="name != null and name != ''">name = #{name},</if>
+            <if test="users != null">users = #{users},</if>
+            <if test="remark != null and remark != ''">remark = #{remark},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteTCgglScmxById" parameterType="String">
+        delete from t_cggl_scmx where id = #{id}
+    </delete>
+
+    <delete id="deleteTCgglScmxByIds" parameterType="String">
+        delete from t_cggl_scmx where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>