Преглед на файлове

增加井站关联基本功能,部分模块的微调

chenwen преди 2 години
родител
ревизия
b5354946a3

+ 57 - 0
src/main/java/com/hb/proj/base/controller/StationController.java

@@ -0,0 +1,57 @@
+package com.hb.proj.base.controller;
+
+import java.util.List;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.hb.proj.allconfig.AccessToken;
+import com.hb.proj.base.service.WellService;
+import com.hb.proj.model.SideTreeNode;
+import com.hb.proj.sys.service.OrgService;
+import com.hb.proj.utils.RespVO;
+import com.hb.proj.utils.RespVOBuilder;
+
+/**
+ * 井站管理相关api
+ * @author cwen
+ *
+ */
+
+@RestController
+@RequestMapping("/station")
+@Validated
+public class StationController {
+
+	@Autowired
+	private OrgService  orgService;
+	
+	@Autowired
+	private WellService  wellService;
+	
+	
+	/**
+	 * 主页侧边选井树,加载直接子节点
+	 * @param superId 上级节点id
+	 * @param nodeType  节点类型(well、org)
+	 * @param token  登录人信息,自动从请求获取
+	 * @return
+	 */
+	@RequestMapping("/loadSideTreeSubNodes")
+	public RespVO<List<SideTreeNode>> loadSideTreeSubNodes(String id,String nodeType,AccessToken token) {
+		if(StringUtils.isBlank(id)) {
+			id="0";
+		}
+		List<SideTreeNode> nodes=null;
+		if(SideTreeNode.WELL_NODE.equals(nodeType)) {
+			nodes=wellService.loadSideTreeSubNodes(id);
+		}
+		else {
+			nodes=orgService.loadSideTreeSubNodes(id);
+		}
+		return RespVOBuilder.ok(nodes);
+	}
+}

+ 78 - 0
src/main/java/com/hb/proj/base/controller/WellController.java

@@ -0,0 +1,78 @@
+package com.hb.proj.base.controller;
+
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.hb.proj.allconfig.AccessToken;
+import com.hb.proj.base.service.WellService;
+import com.hb.proj.model.Well;
+import com.hb.proj.model.WellVO;
+import com.hb.proj.utils.RespVO;
+import com.hb.proj.utils.RespVOBuilder;
+
+import jakarta.validation.constraints.NotBlank;
+
+@RestController
+@RequestMapping("/well")
+@Validated
+public class WellController {
+
+	private WellService service;
+	
+	/**
+	 * 获得单个井数据
+	 * @param wellId  井id
+	 * @return
+	 */
+	@RequestMapping("/get")
+	public RespVO<WellVO> get(@NotBlank(message = "井编号不能为空") String wellId){
+		return RespVOBuilder.ok(service.get(wellId));
+	}
+	
+	
+	/**
+	 * 增加新井
+	 * @param well  新井实体
+	 * @param token 登录人信息,自动从请求获取
+	 * @return
+	 */
+	@PostMapping("/add")
+	public RespVO<String> add(@Validated Well  well,AccessToken token){
+		if(service.existWellName(well.getWellName(),null)) {
+			return RespVOBuilder.error("该井名已存在");
+		}
+		well.setModifyBy(token!=null?token.getTokenId():"unknow");
+		well.setCreateBy(well.getModifyBy());
+		return RespVOBuilder.ok(service.insert(well));
+	}
+	
+	/**
+	 * 更新井数据
+	 * @param org  井实体
+	 * @param token 登录人信息,自动从请求获取
+	 * @return
+	 */
+	@PostMapping("/update")
+	public RespVO<Object> update(@Validated Well  well,AccessToken token){
+		if(service.existWellName(well.getWellName(),well.getWellId())) {
+			return RespVOBuilder.error("更换的新井名已存在");
+		}
+		well.setModifyBy(token!=null?token.getTokenId():"unknow");
+		service.update(well);
+		return RespVOBuilder.ok();
+	}
+	
+	
+	/**
+	 * 删除单个井数据
+	 * @param orgId  被删除井id
+	 * @return
+	 */
+	@RequestMapping("/delete")
+	public RespVO<Object> delete(@NotBlank(message = "井编号不能为空") String wellId){
+		service.delete(wellId);
+		return RespVOBuilder.ok();
+	}
+}

+ 92 - 0
src/main/java/com/hb/proj/base/service/WellService.java

@@ -0,0 +1,92 @@
+package com.hb.proj.base.service;
+
+
+import java.util.Date;
+import java.util.List;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.hb.proj.model.SideTreeNode;
+import com.hb.proj.model.Well;
+import com.hb.proj.model.WellVO;
+import com.hb.xframework.dao.core.SpringJdbcDAO;
+import com.hb.xframework.dao.util.UUIDHexGenerator;
+
+@Service
+public class WellService {
+	
+    @Autowired
+    private SpringJdbcDAO dao;
+    
+    
+    private String tabName="tzl_well";
+    
+    /**
+	 * 通过父节点查询直接子节点---用于主页侧边树
+	 * @param superId
+	 * @return
+	 */
+	public List<SideTreeNode>  loadSideTreeSubNodes(String superId){
+		StringBuilder sql=new StringBuilder();
+		sql.append("select w.well_id id,w.well_name name,w.org_id super_id,'"+SideTreeNode.WELL_NODE+"' node_type,1 type_end,1 is_leaf ");
+		sql.append(" from tzl_well w");
+		
+		sql.append(" where w.del_if=false and w.org_id=?");
+		return dao.queryForList(sql.toString(),SideTreeNode.class, superId);
+	}
+    
+    
+    public String insert(Well well) {
+    	UUIDHexGenerator uuid = UUIDHexGenerator.getInstance();
+    	well.setWellId(uuid.generate());
+    	well.setCreateTime(new Date());
+    	well.setModifyTime(well.getCreateTime());
+    	well.setDelIf(false);
+    	dao.insert(well, tabName);
+    	return well.getWellId();
+    }
+    
+    
+    public boolean update(Well well) {
+    	well.setModifyTime(new Date());
+        return dao.update(well, "tzl_well", "well_id")>0;
+    }
+    
+    
+    public void delete(String wellId) {
+    	dao.exeUpdate("update tzl_well set del_if=true,modify_time=now() where well_id=?",wellId);
+
+    }
+    
+    
+    public WellVO get(String wellId){
+        String sql="""
+				
+				select w.*,
+				(select group_concat(d.device_code) from tzl_gather_device d where d.well_id=w.well_id and d.del_if=false group by d.well_id) device_code 
+				from tzl_well w
+				where w.well_id=?
+				
+				""";
+        return dao.queryForPojo(sql,WellVO.class,wellId);
+    }
+    
+    
+    public boolean existWellName(String wellName,String wellId) {
+    	if(StringUtils.isBlank(wellName)) {
+    		return false;
+    	}
+    	String sql="select count(1) from tzl_well where del_if=false and well_name=?";
+    	Object[] args={wellName.trim()};
+    	if(StringUtils.isNotBlank(wellId)) {
+    		sql+=" and well_id!=?";
+    		args=new Object[]{wellName.trim(),wellId};
+    	}
+    	return dao.queryForObject(sql, Integer.class, args)>0;
+    }
+
+  
+
+}

+ 3 - 3
src/main/java/com/hb/proj/model/RolePO.java

@@ -1,10 +1,10 @@
 package com.hb.proj.model;
 
+import java.util.Date;
+
 import com.fasterxml.jackson.annotation.JsonFormat;
-import jakarta.validation.constraints.NotBlank;
-import lombok.Data;
 
-import java.util.Date;
+import lombok.Data;
 
 @Data
 public class RolePO {

+ 23 - 0
src/main/java/com/hb/proj/model/SideTreeNode.java

@@ -0,0 +1,23 @@
+package com.hb.proj.model;
+
+import lombok.Data;
+
+@Data
+public class SideTreeNode {
+	
+	public static final String WELL_NODE="well";
+	
+	public static final String ORG_NODE="org";
+
+	private String id;
+	
+	private String superId;
+	
+	private String name;
+	
+	private String nodeType;
+	
+	private Boolean typeEnd;  //该类型节点是否为末级
+	
+	private boolean isLeaf=false;  //是否叶子节点
+}

+ 0 - 3
src/main/java/com/hb/proj/model/UserRolePO.java

@@ -1,10 +1,7 @@
 package com.hb.proj.model;
 
-import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 
-import java.util.Date;
-
 @Data
 public class UserRolePO {
 	/**

+ 2 - 0
src/main/java/com/hb/proj/model/UserVO.java

@@ -1,9 +1,11 @@
 package com.hb.proj.model;
 
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 
 
 @Data
+@EqualsAndHashCode(callSuper = false)
 public class UserVO extends User {
     private  String roleName;
 

+ 29 - 0
src/main/java/com/hb/proj/model/Well.java

@@ -4,6 +4,8 @@ import lombok.Data;
 
 import java.util.Date;
 
+import jakarta.validation.constraints.NotBlank;
+
 @Data
 public class Well {
     /**
@@ -13,11 +15,18 @@ public class Well {
     /**
      *井名
      */
+    @NotBlank(message="井名不能为空")
     private String wellName;
     /**
      *井别
      */
     private String wellSort;
+    
+    /**
+     * 井型
+     */
+    private String wellType;
+    
     /**
      *创建时间
      */
@@ -31,4 +40,24 @@ public class Well {
      *删除标志
      */
     private Boolean delIf;
+    
+    /**
+     * 创建人
+     */
+    private String createBy;
+    
+    /**
+     * 修改人
+     */
+    private String modifyBy;
+    
+    /**
+     * 所属井站
+     */
+    private String orgId;
+    
+    /**
+     * 巡查标准显示模板
+     */
+    private String patrolStdTemp;
 }

+ 24 - 0
src/main/java/com/hb/proj/model/WellVO.java

@@ -0,0 +1,24 @@
+package com.hb.proj.model;
+
+public class WellVO extends Well {
+
+	private String belongOrgName;
+	
+	private String deviceCode;
+
+	public String getBelongOrgName() {
+		return belongOrgName;
+	}
+
+	public void setBelongOrgName(String belongOrgName) {
+		this.belongOrgName = belongOrgName;
+	}
+
+	public String getDeviceCode() {
+		return deviceCode;
+	}
+
+	public void setDeviceCode(String deviceCode) {
+		this.deviceCode = deviceCode;
+	}
+}

+ 9 - 8
src/main/java/com/hb/proj/sys/controller/OrgController.java

@@ -1,5 +1,7 @@
 package com.hb.proj.sys.controller;
 
+import java.util.List;
+
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
@@ -10,6 +12,7 @@ import org.springframework.web.bind.annotation.RestController;
 import com.hb.proj.allconfig.AccessToken;
 import com.hb.proj.model.OrgPO;
 import com.hb.proj.model.OrgVO;
+import com.hb.proj.model.SideTreeNode;
 import com.hb.proj.sys.service.OrgService;
 import com.hb.proj.utils.RespVO;
 import com.hb.proj.utils.RespVOBuilder;
@@ -24,6 +27,11 @@ public class OrgController {
 	@Autowired
 	private OrgService  service;
 	
+	@RequestMapping("/loadOrgTree")
+	public RespVO<List<SideTreeNode>> loadOrgTree(){
+		return RespVOBuilder.ok(service.loadWholeOrgTree());
+	}
+	
 	/**
 	 * 获得单个组织机构
 	 * @param orgId  组织机构记录id
@@ -104,12 +112,5 @@ public class OrgController {
 		return RespVOBuilder.ok();
 	}
 	
-	/**
-	 * 获得组织机构子节点
-	 * @param superId   父组织机构id
-	 */
-	@RequestMapping("/loadSubOrgs")
-	public RespVO<Object> loadSubOrgs(String superId){
-		return RespVOBuilder.ok(service.loadBySuperId(StringUtils.isEmpty(superId)?"0":superId));
-	}
+	
 }

+ 29 - 0
src/main/java/com/hb/proj/sys/controller/SortCodeController.java

@@ -1,6 +1,8 @@
 package com.hb.proj.sys.controller;
 
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -26,6 +28,33 @@ public class SortCodeController {
 	@Autowired
 	private SortCodeService service;
 	
+	
+	/**
+	 * 加载多类直接子编码
+	 * @param superId
+	 * @return
+	 */
+	@RequestMapping("/loadMultiSubCodes")
+	public RespVO<Object> loadMultiSubCodes(@NotBlank(message="缺少分类编码参数") String superIds){
+		String[] ids=superIds.split(",");
+		Map<String,Object>  mapdatas=new HashMap<String,Object>();
+		for(String id : ids) {
+			mapdatas.put(id, service.loadSubCodes(id));
+		}
+		return RespVOBuilder.ok(mapdatas);
+	}
+	
+	
+	/**
+	 * 加载直接子编码
+	 * @param superId
+	 * @return
+	 */
+	@RequestMapping("/loadSubCodes")
+	public RespVO<List<SortCodeVO>> loadSubCodes(@NotBlank(message="缺少分类编码参数") String superId){
+		return RespVOBuilder.ok(service.loadSubCodes(superId));
+	}
+	
 	/**
 	 * 获取所有编码记录
 	 * @return

+ 20 - 6
src/main/java/com/hb/proj/sys/service/OrgService.java

@@ -2,7 +2,6 @@ package com.hb.proj.sys.service;
 
 import java.util.Date;
 import java.util.List;
-import java.util.Map;
 
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -10,6 +9,7 @@ import org.springframework.stereotype.Service;
 
 import com.hb.proj.model.OrgPO;
 import com.hb.proj.model.OrgVO;
+import com.hb.proj.model.SideTreeNode;
 import com.hb.xframework.dao.core.SpringJdbcDAO;
 import com.hb.xframework.dao.util.UUIDHexGenerator;
 
@@ -19,16 +19,30 @@ public class OrgService {
 	@Autowired
 	private SpringJdbcDAO dao;
 	
+	public List<SideTreeNode> loadWholeOrgTree(){
+		StringBuilder sql=new StringBuilder();
+		sql.append("select g.org_id id,g.org_name name,g.super_id ");
+		sql.append(" from tsys_org g");
+		sql.append(" where g.del_if=false");
+		sql.append(" order by display_num");
+		return dao.queryForList(sql.toString(),SideTreeNode.class);
+	}
+	
 	/**
-	 * 通过父节点查询直接子节点
+	 * 通过父节点查询直接子节点---用于主页侧边树
 	 * @param superId
 	 * @return
 	 */
-	public List<Map<String,Object>>  loadBySuperId(String superId){
+	public List<SideTreeNode>  loadSideTreeSubNodes(String superId){
 		StringBuilder sql=new StringBuilder();
-		sql.append("select * from tsys_org");
-		sql.append(" where del_if=false and super_id=?");
-		return dao.queryForList(sql.toString(), superId);
+		sql.append("select g.org_id id,g.org_name name,g.super_id,'"+SideTreeNode.ORG_NODE+"' node_type, ");
+		sql.append(" (select count(1) from tsys_org gs where gs.del_if=false and gs.super_id=g.org_id) type_end");
+		sql.append(" from tsys_org g");
+		
+		sql.append(" where g.del_if=false and g.super_id=?");
+		sql.append(" order by display_num");
+		
+		return dao.queryForList(sql.toString(),SideTreeNode.class, superId);
 	}
 	
 	public String add(OrgPO org) {

+ 3 - 4
src/main/java/com/hb/proj/sys/service/SortCodeService.java

@@ -79,14 +79,13 @@ public class SortCodeService {
 		return dao.queryForList(sql.toString());
 	}
 
-	public List<Map<String, Object>> queryCodeNodes(String fatherCodeId) {
+	public List<SortCodeVO> loadSubCodes(String fatherCodeId) {
 		StringBuilder sql = new StringBuilder();
-		sql.append("select code_id id,code_name name,father_code_id p_id,'code' node_type,");
-		sql.append("(select count(1) from tsys_sort_code sub where sub.father_code_id=d.code_id) child_count");
+		sql.append("select code_id,code_name,father_code_id");
 		sql.append(" from tsys_sort_code d");
 		sql.append(" where d.del_if=0 and d.father_code_id=?");
 		sql.append(" order by d.display_num");
-		return dao.queryForList(sql.toString(), fatherCodeId);
+		return dao.queryForList(sql.toString(), SortCodeVO.class,fatherCodeId);
 	}
 
 	public SortCodeVO getSortCode(String codeId) {

+ 0 - 87
src/main/java/com/hb/proj/well/controller/WellController.java

@@ -1,87 +0,0 @@
-package com.hb.proj.well.controller;
-
-
-import cn.hutool.core.util.IdUtil;
-import com.hb.proj.model.Well;
-import com.hb.proj.utils.RespVO;
-import com.hb.proj.utils.RespVOBuilder;
-import com.hb.proj.well.service.WellService;
-import com.hb.xframework.dao.util.PageModel;
-import jakarta.validation.constraints.NotBlank;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.CrossOrigin;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.Date;
-import java.util.Map;
-
-/**
- * 井相关接口
- */
-@RestController
-@RequestMapping("/api/well")
-@Validated
-public class WellController {
-    @Autowired
-    private WellService wellService;
-    /**
-     * 井保存
-     * @apiNote 通过传入对象保存
-     * @return 无
-     */
-    @RequestMapping("/save")
-    public void save(){
-        Well well = new Well();
-        well.setWellId(IdUtil.fastSimpleUUID());
-        well.setWellName("井名");
-        well.setWellSort("测试井");
-        well.setCreateTime(new Date());
-        wellService.insert(well);
-    }
-    /**
-     * 井修改
-     * @apiNote 修改井信息
-     * @return 无
-     */
-    @RequestMapping("/update")
-    public void update(){
-        Well well = wellService.get("c15404d0d40e442ca35544d1f36a40bf");
-        well.setModifyTime(new Date());
-        well.setWellName("修改井名");
-        wellService.update(well);
-    }
-    /**
-     * 井删除
-     * @apiNote 删除井信息
-     * @return 无
-     */
-    @RequestMapping("/delete")
-    public void delete(){
-        Well well = wellService.get("c15404d0d40e442ca35544d1f36a40bf");
-        well.setModifyTime(new Date());
-        well.setDelIf(true);
-        wellService.update(well);
-    }
-    /**
-     * 获得单个井数据.
-     *  @apiNote <p>通过指定的井编号获取数据<br>
-     * @param id
-     * @return
-     */
-    @RequestMapping("/get")
-    RespVO<Well> getUser(@NotBlank(message = "井编号【wellId】不能为空") String id) {
-        return RespVOBuilder.ok(wellService.get(id));
-    }
-    /**
-     * 查询分页井数据.
-     *  @apiNote <p>通过条件获取数据<br>
-     * @return
-     */
-    @RequestMapping("/queryPaged")
-    RespVO<PageModel<Map<String,Object>>> queryPaged() {
-        PageModel<Map<String,Object>> page= wellService.queryPagedMap();
-        return RespVOBuilder.ok(page);
-    }
-}

+ 0 - 42
src/main/java/com/hb/proj/well/service/WellService.java

@@ -1,42 +0,0 @@
-package com.hb.proj.well.service;
-
-
-import java.util.Map;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import com.hb.proj.model.Well;
-import com.hb.xframework.dao.core.SpringJdbcDAO;
-import com.hb.xframework.dao.util.PageModel;
-
-@Service
-public class WellService {
-    @Autowired
-    private SpringJdbcDAO springDAO;
-    private String tabName="tzl_well";
-    public void insert(Well well) {
-        springDAO.insert(well, tabName);
-    }
-    public boolean update(Well well) {
-        return springDAO.update(well, "tzl_well", "well_id")>0;
-    }
-    public void delete(Well well) {
-         springDAO.update(well, "tzl_well", "well_id");
-
-    }
-    public Well get(String id){
-        String sql="""
-				
-				select * from tzl_well
-				where well_id=?
-				
-				""";
-        return springDAO.queryForPojo(sql,Well.class,id);
-    }
-
-    public PageModel<Map<String,Object>> queryPagedMap(){
-        return springDAO.queryForPagedData("select * from tzl_well", 1, 10);
-    }
-
-}