瀏覽代碼

港口资料、集装箱和事务管理的修改

1021934019@qq.com 4 年之前
父節點
當前提交
fa71966b66
共有 15 個文件被更改,包括 469 次插入48 次删除
  1. 62 0
      blade-service-api/blade-client-api/src/main/java/org/springblade/client/vo/ContainerTypeVO.java
  2. 61 0
      blade-service-api/blade-client-api/src/main/java/org/springblade/client/vo/PortTypeVO.java
  3. 47 21
      blade-service/blade-client/src/main/java/org/springblade/client/container/controller/ContainerController.java
  4. 7 1
      blade-service/blade-client/src/main/java/org/springblade/client/container/mapper/BasicContainerDescMapper.java
  5. 36 2
      blade-service/blade-client/src/main/java/org/springblade/client/container/mapper/BasicContainerDescMapper.xml
  6. 8 1
      blade-service/blade-client/src/main/java/org/springblade/client/container/service/BasicContainerDescService.java
  7. 76 8
      blade-service/blade-client/src/main/java/org/springblade/client/container/service/imp/BasicContainerDescServiceImpl.java
  8. 38 3
      blade-service/blade-client/src/main/java/org/springblade/client/port/controller/PortController.java
  9. 7 1
      blade-service/blade-client/src/main/java/org/springblade/client/port/mapper/BasicPortDescMapper.java
  10. 36 2
      blade-service/blade-client/src/main/java/org/springblade/client/port/mapper/BasicPortDescMapper.xml
  11. 7 1
      blade-service/blade-client/src/main/java/org/springblade/client/port/service/BasicPortDescService.java
  12. 70 5
      blade-service/blade-client/src/main/java/org/springblade/client/port/service/impl/BasicPortDescServiceImpl.java
  13. 6 3
      blade-service/blade-project/src/main/java/org/springblade/project/controller/ProjectController.java
  14. 2 0
      blade-service/blade-project/src/main/java/org/springblade/project/controller/ProjectFilesController.java
  15. 6 0
      blade-service/blade-project/src/main/java/org/springblade/project/service/impl/ServiceProjectServiceImpl.java

+ 62 - 0
blade-service-api/blade-client-api/src/main/java/org/springblade/client/vo/ContainerTypeVO.java

@@ -0,0 +1,62 @@
+package org.springblade.client.vo;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.client.entity.BasicContainerType;
+import org.springblade.client.entity.BasicPortType;
+import org.springblade.core.tool.node.INode;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "PortTypeVO对象", description = "港口类别表")
+public class ContainerTypeVO extends BasicContainerType implements INode<ContainerTypeVO>
+{
+
+	/**
+	 * 父级中文名
+	 */
+	@ApiModelProperty(value = "父级名称")
+	private String parentName;
+	/**
+	 * 创建人中文名
+	 */
+	@ApiModelProperty(value = "创建人中文名")
+	private String createUserName;
+	/**
+	 * 修改人中文名
+	 */
+	@ApiModelProperty(value = "修改人中文名")
+	private String updateUserName;
+	/**
+	 * 状态中文名
+	 */
+	@ApiModelProperty(value = "状态中文名")
+	private String statusName;
+	/**
+	 * 子孙节点
+	 */
+	@JsonInclude(JsonInclude.Include.NON_EMPTY)
+	private List<ContainerTypeVO> children;
+	/**
+	 * 是否有子孙节点
+	 */
+	@JsonInclude(JsonInclude.Include.NON_EMPTY)
+	private Boolean hasChildren;
+	@Override
+	public List<ContainerTypeVO> getChildren() {
+		if (this.children == null) {
+			this.children = new ArrayList<>();
+		}
+		return this.children;
+	}
+
+
+
+
+}

+ 61 - 0
blade-service-api/blade-client-api/src/main/java/org/springblade/client/vo/PortTypeVO.java

@@ -0,0 +1,61 @@
+package org.springblade.client.vo;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.client.entity.BasicPortType;
+import org.springblade.core.tool.node.INode;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "PortTypeVO对象", description = "港口类别表")
+public class PortTypeVO extends BasicPortType implements INode<PortTypeVO>
+{
+
+	/**
+	 * 父级中文名
+	 */
+	@ApiModelProperty(value = "父级名称")
+	private String parentName;
+	/**
+	 * 创建人中文名
+	 */
+	@ApiModelProperty(value = "创建人中文名")
+	private String createUserName;
+	/**
+	 * 修改人中文名
+	 */
+	@ApiModelProperty(value = "修改人中文名")
+	private String updateUserName;
+	/**
+	 * 状态中文名
+	 */
+	@ApiModelProperty(value = "状态中文名")
+	private String statusName;
+	/**
+	 * 子孙节点
+	 */
+	@JsonInclude(JsonInclude.Include.NON_EMPTY)
+	private List<PortTypeVO> children;
+	/**
+	 * 是否有子孙节点
+	 */
+	@JsonInclude(JsonInclude.Include.NON_EMPTY)
+	private Boolean hasChildren;
+	@Override
+	public List<PortTypeVO> getChildren() {
+		if (this.children == null) {
+			this.children = new ArrayList<>();
+		}
+		return this.children;
+	}
+
+
+
+
+}

+ 47 - 21
blade-service/blade-client/src/main/java/org/springblade/client/container/controller/ContainerController.java

@@ -3,6 +3,8 @@ package org.springblade.client.container.controller;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import org.springblade.client.container.service.BasicContainerDescService;
 import org.springblade.client.container.service.BasicContainerTypeService;
@@ -15,6 +17,10 @@ import org.springblade.client.entity.BasicPortType;
 import org.springblade.client.port.service.BasicPortDescService;
 import org.springblade.client.port.service.BasicPortTypeDescService;
 import org.springblade.client.port.service.BasicPortTypeService;
+import org.springblade.client.vo.ContainerTypeVO;
+import org.springblade.client.vo.PortTypeVO;
+import org.springblade.core.secure.BladeUser;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tenant.annotation.NonDS;
 import org.springblade.core.tool.api.R;
@@ -55,6 +61,7 @@ public class ContainerController
 	{
 		LambdaQueryWrapper<BasicContainerType> typeLambdaQueryWrapper=new LambdaQueryWrapper<>();
 		typeLambdaQueryWrapper
+			.eq(BasicContainerType::getTenantId,AuthUtil.getTenantId())
 			.eq(parentId!=null,BasicContainerType::getParentId,parentId)
 			.orderByDesc(BasicContainerType::getCreateTime);
 		Page<BasicContainerType> page=new Page<>(current,size);
@@ -72,27 +79,12 @@ public class ContainerController
 		return R.data(iPage);
 	}
 
-	@GetMapping("getContainerTypeList")
-	public List<BasicContainerType> getContainerTypeList( @RequestParam(name = "pid", required = false) Long pid)
-	{
-		LambdaQueryWrapper<BasicContainerType> lambdaQueryWrapper=new LambdaQueryWrapper<>();
-		lambdaQueryWrapper.eq(pid!=null,BasicContainerType::getParentId,pid);
-		List<BasicContainerType> typeList = basicContainerTypeService.list(lambdaQueryWrapper);
-		if(!CollectionUtils.isEmpty(typeList))
-		{
-			typeList.forEach(e->{
-				LambdaQueryWrapper<BasicContainerType> basicPortTypeLambdaQueryWrapper=new LambdaQueryWrapper<>();
-				basicPortTypeLambdaQueryWrapper.eq(BasicContainerType::getParentId,e.getId());
-				int count = basicContainerTypeService.count(basicPortTypeLambdaQueryWrapper);
-				e.setHasChildren(count>0?true:false);
-			});
-		}
-		return typeList;
-	}
+
 
 	@PostMapping("type/add")
 	public R typeList(@RequestBody BasicContainerType containerType )
 	{
+		containerType.setTenantId(AuthUtil.getTenantId());
 		containerType.setCreateTime(new Date());
 		containerType.setCreateUser(SecureUtil.getUserId());
 		containerType.setCreateUserName(SecureUtil.getUser().getRoleName());
@@ -113,6 +105,13 @@ public class ContainerController
 	@DeleteMapping("type/delet")
 	public R  typeDelet(@RequestParam(name = "id", required = true) Long id)
 	{
+		LambdaQueryWrapper<BasicContainerType> typeLambdaQueryWrapper=new LambdaQueryWrapper<>();
+		typeLambdaQueryWrapper.eq(BasicContainerType::getParentId,id);
+		int count=basicContainerTypeService.count(typeLambdaQueryWrapper);
+		if(count>0)
+		{
+			throw new RuntimeException("存在子项无法删除");
+		}
 		List<Long> ids= Arrays.asList(id);
 		basicContainerTypeService.deleteLogic(ids);
 		return R.success("操作成功");
@@ -125,16 +124,17 @@ public class ContainerController
 				  @RequestParam(name = "size", defaultValue = "10") Integer size,
 				  @RequestParam(name = "name", required = false) String name,
 				  @RequestParam(name = "code", required = false) String code,
+				  @RequestParam(name = "typeId", required = false) Long typeId,
 				  @RequestParam(name = "status", required = false) String status)
 	{
 		Page<BasicContainerDescDTO> page=new Page<>(current,size);
-		IPage<BasicContainerDescDTO> iPage = basicContainerDescService.listBasicContainerDesc(page, name, code, status);
+		IPage<BasicContainerDescDTO> iPage = basicContainerDescService.listBasicContainerDesc(page, name, code, status,typeId,AuthUtil.getTenantId());
 		return R.data(iPage);
 	}
 
 	@PostMapping("add")
 	public R add (@RequestBody BasicContainerDescDTO dto)
-	{
+	{   dto.setTenantId(AuthUtil.getTenantId());
 		dto.setCreateTime(new Date());
 		dto.setCreateUser(SecureUtil.getUserId());
 		dto.setCreateUserName(SecureUtil.getUser().getRoleName());
@@ -143,12 +143,12 @@ public class ContainerController
 	}
 
 	@PutMapping("edit")
-	public R edit( @RequestBody BasicContainerDesc body )
+	public R edit( @RequestBody BasicContainerDescDTO body )
 	{
 		body.setUpdateTime(new Date());
 		body.setUpdateUser(SecureUtil.getUserId());
 		body.setUpdateUserName(SecureUtil.getUser().getRoleName());
-		basicContainerDescService.updateById(body);
+		basicContainerDescService.updateBasicPortDesc(body);
 		return R.success("操作成功");
 	}
 
@@ -160,5 +160,31 @@ public class ContainerController
 		return R.success("操作成功");
 	}
 
+	@GetMapping("/type/tree")
+	@ApiOperationSupport(order = 7)
+	@ApiOperation(value = "树形结构", notes = "树形结构")
+	public R<List<ContainerTypeVO>> tree(String tenantId, BladeUser bladeUser) {
+		List<ContainerTypeVO> ContainerTypeVO = basicContainerDescService.tree(AuthUtil.getTenantId());
+		return R.data(ContainerTypeVO);
+	}
+
+	@GetMapping("getContainerTypeList")
+	public List<BasicContainerType> getPortTypeList( @RequestParam(name = "pid", required = false) Long pid)
+	{
+		LambdaQueryWrapper<BasicContainerType> lambdaQueryWrapper=new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(pid!=null,BasicContainerType::getParentId,pid);
+		lambdaQueryWrapper.eq(BasicContainerType::getTenantId,AuthUtil.getTenantId());
+		List<BasicContainerType> typeList = basicContainerTypeService.list(lambdaQueryWrapper);
+		if(!CollectionUtils.isEmpty(typeList))
+		{
+			typeList.forEach(e->{
+				LambdaQueryWrapper<BasicContainerType> basicPortTypeLambdaQueryWrapper=new LambdaQueryWrapper<>();
+				basicPortTypeLambdaQueryWrapper.eq(BasicContainerType::getParentId,e.getId());
+				int count = basicContainerTypeService.count(basicPortTypeLambdaQueryWrapper);
+				e.setHasChildren(count>0?true:false);
+			});
+		}
+		return typeList;
+	}
 
 }

+ 7 - 1
blade-service/blade-client/src/main/java/org/springblade/client/container/mapper/BasicContainerDescMapper.java

@@ -8,6 +8,10 @@ import org.springblade.client.dto.BasicContainerDescDTO;
 import org.springblade.client.entity.BasicContainerDesc;
 
 import org.apache.ibatis.annotations.Mapper;
+import org.springblade.client.vo.ContainerTypeVO;
+import org.springblade.client.vo.PortTypeVO;
+
+import java.util.List;
 
 /**
  *
@@ -19,5 +23,7 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 public interface BasicContainerDescMapper extends BaseMapper<BasicContainerDesc>
 {
-      IPage<BasicContainerDescDTO> listBasicContainerDesc(Page<BasicContainerDescDTO> page,@Param("containerName") String containerName,@Param("code") String code,@Param("status") String status);
+      IPage<BasicContainerDescDTO> listBasicContainerDesc(Page<BasicContainerDescDTO> page,@Param("containerName") String containerName,@Param("code") String code,@Param("status") String status,@Param("typeId") Long typeId,@Param("tenantId") String tenantId);
+
+	  List<ContainerTypeVO> tree(@Param("tenantId") String tenantId);
 }

+ 36 - 2
blade-service/blade-client/src/main/java/org/springblade/client/container/mapper/BasicContainerDescMapper.xml

@@ -3,6 +3,16 @@
 
 <mapper namespace="org.springblade.client.container.mapper.BasicContainerDescMapper">
 
+    <resultMap id="treeNodeResultMap" type="org.springblade.core.tool.node.TreeNode">
+        <id column="id" property="id"/>
+        <result column="parent_id" property="parentId"/>
+        <result column="title" property="title"/>
+        <result column="value" property="value"/>
+        <result column="key" property="key"/>
+        <result column="has_children" property="hasChildren"/>
+    </resultMap>
+
+
     <select id="listBasicContainerDesc" resultType="org.springblade.client.dto.BasicContainerDescDTO">
         SELECT
         b.id as id,
@@ -23,21 +33,27 @@
         b.update_user_name as updateUserName,
         b.create_user_name as createUserName,
         b.`status` as `status`,
-        a.`name` as typeName
+        a.`name` as typeName,
+        a.id as typeId
         FROM
         basic_container_type a,
         basic_container_desc b,
         basic_container_type_desc c
         WHERE
-        a.id = c.container_type_id
+        b.tenant_id=#{tenantId}
+        and a.id = c.container_type_id
         AND b.id = c.container_id
         and b.is_deleted=0
+        and c.is_deleted=0
         <if test="containerName != null and containerName != ''">
             AND b.`name` LIKE CONCAT('%',#{containerName,jdbcType=VARCHAR},'%')
         </if>
         <if test="code != null and code != ''">
             AND b.`code`=#{code}
         </if>
+        <if test="typeId != null">
+            AND a.id=#{typeId}
+        </if>
         <if test="status != null and status != ''">
             AND b.status in
             (
@@ -50,4 +66,22 @@
 
     </select>
 
+
+    <select id="tree" resultMap="treeNodeResultMap">
+        SELECT
+        id,
+        parent_id,
+        name AS title,
+        id AS "value",
+        id AS "key"
+        FROM
+        basic_container_type
+        WHERE
+        is_deleted = 0
+        and status = 0
+        <if test="tenantId!=null and tenantId!=''">
+            and tenant_id = #{tenantId}
+        </if>
+        ORDER BY sort
+    </select>
 </mapper>

+ 8 - 1
blade-service/blade-client/src/main/java/org/springblade/client/container/service/BasicContainerDescService.java

@@ -6,7 +6,10 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.apache.ibatis.annotations.Param;
 import org.springblade.client.dto.BasicContainerDescDTO;
+import org.springblade.client.dto.BasicPortDescDTO;
 import org.springblade.client.entity.BasicContainerDesc;
+import org.springblade.client.vo.ContainerTypeVO;
+import org.springblade.client.vo.PortTypeVO;
 import org.springblade.core.mp.base.BaseService;
 
 import java.util.List;
@@ -21,7 +24,11 @@ import java.util.Map;
  */
 public interface BasicContainerDescService extends BaseService<BasicContainerDesc>
 {
-	IPage<BasicContainerDescDTO> listBasicContainerDesc(Page<BasicContainerDescDTO> page,String containerName, String code, String status);
+	IPage<BasicContainerDescDTO> listBasicContainerDesc(Page<BasicContainerDescDTO> page,String containerName, String code, String status,Long typeId,String tenantId);
 
 	void addBasicContainerDesc(BasicContainerDescDTO dto);
+
+	List<ContainerTypeVO> tree(String tenantId);
+
+	void updateBasicPortDesc(BasicContainerDescDTO dto);
 }

+ 76 - 8
blade-service/blade-client/src/main/java/org/springblade/client/container/service/imp/BasicContainerDescServiceImpl.java

@@ -1,6 +1,9 @@
 package org.springblade.client.container.service.imp;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.springblade.client.container.mapper.BasicContainerDescMapper;
 import org.springblade.client.container.mapper.BasicContainerTypeDescMapper;
@@ -8,11 +11,13 @@ import org.springblade.client.container.mapper.BasicContainerTypeMapper;
 import org.springblade.client.container.service.BasicContainerDescService;
 import org.springblade.client.container.service.BasicContainerTypeService;
 import org.springblade.client.dto.BasicContainerDescDTO;
-import org.springblade.client.entity.BasicContainerDesc;
-import org.springblade.client.entity.BasicContainerType;
-import org.springblade.client.entity.BasicContainerTypeDesc;
+import org.springblade.client.entity.*;
+import org.springblade.client.vo.ContainerTypeVO;
+import org.springblade.client.vo.PortTypeVO;
 import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.secure.utils.SecureUtil;
+import org.springblade.core.tool.node.ForestNodeMerger;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -22,9 +27,7 @@ import javax.validation.constraints.NotBlank;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
-
-
-
+import java.util.stream.Collectors;
 
 
 @Service
@@ -36,8 +39,8 @@ public class BasicContainerDescServiceImpl extends BaseServiceImpl<BasicContaine
 	private BasicContainerTypeDescMapper basicContainerTypeDescMapper;
 
 	@Override
-	public IPage<BasicContainerDescDTO> listBasicContainerDesc(Page<BasicContainerDescDTO> page, String containerName, String code, String status) {
-		return basicContainerDescMapper.listBasicContainerDesc(page,containerName,code,status);
+	public IPage<BasicContainerDescDTO> listBasicContainerDesc(Page<BasicContainerDescDTO> page, String containerName, String code, String status,Long typeId,String tenantId) {
+		return basicContainerDescMapper.listBasicContainerDesc(page,containerName,code,status,typeId,tenantId);
 	}
 
 	@Override
@@ -62,4 +65,69 @@ public class BasicContainerDescServiceImpl extends BaseServiceImpl<BasicContaine
 		 middle.setCreateUserName(SecureUtil.getUser().getRoleName());
 		 basicContainerTypeDescMapper.insert(middle);
 	}
+
+	@Override
+	public List<ContainerTypeVO> tree(String tenantId)
+	{
+		if (StringUtils.isBlank(tenantId)) {
+			tenantId = SecureUtil.getTenantId();
+		}
+		return ForestNodeMerger.merge(basicContainerDescMapper.tree(tenantId));
+	}
+
+	@Override
+	public void updateBasicPortDesc(BasicContainerDescDTO dto)
+	{
+		//类型id
+		Long typeId = dto.getTypeId();
+		BasicContainerDesc basicContainerDesc=new BasicContainerDesc();
+		BeanUtils.copyProperties(dto,basicContainerDesc);
+		basicContainerDescMapper.updateById(basicContainerDesc);
+
+		//查询中间关系表, 是否需要解绑
+		LambdaQueryWrapper<BasicContainerTypeDesc> lambdaQueryWrapper=new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(BasicContainerTypeDesc::getContainerId,basicContainerDesc.getId());
+		List<BasicContainerTypeDesc> basicContainerTypeDescs = basicContainerTypeDescMapper.selectList(lambdaQueryWrapper);
+
+		//如果存在绑定关系,检查是否需要换绑
+		if(!CollectionUtils.isEmpty(basicContainerTypeDescs))
+		{
+			List<BasicContainerTypeDesc> collect = basicContainerTypeDescs.stream().filter(e -> e.getContainerTypeId() == typeId).collect(Collectors.toList());
+			//如果为空,解绑操作
+			if(CollectionUtils.isEmpty(collect))
+			{
+				basicContainerTypeDescs.forEach(e->{
+					basicContainerTypeDescMapper.deleteById(e.getId());
+				});
+
+				BasicContainerTypeDesc middle=new BasicContainerTypeDesc();
+				middle.setContainerId(basicContainerDesc.getId());
+				middle.setTenantId(AuthUtil.getTenantId());
+				middle.setContainerTypeId(typeId);
+				middle.setCreateTime(new Date());
+				middle.setCreateUser(SecureUtil.getUserId());
+				middle.setCreateUserName(SecureUtil.getUser().getRoleName());
+				basicContainerTypeDescMapper.insert(middle);
+
+
+
+
+			}
+
+		}
+		//如果没有绑定关系,则完成新增
+		else
+		{
+			BasicContainerTypeDesc middle=new BasicContainerTypeDesc();
+			middle.setContainerId(basicContainerDesc.getId());
+			middle.setTenantId(AuthUtil.getTenantId());
+			middle.setContainerTypeId(typeId);
+			middle.setCreateTime(new Date());
+			middle.setCreateUser(SecureUtil.getUserId());
+			middle.setCreateUserName(SecureUtil.getUser().getRoleName());
+			basicContainerTypeDescMapper.insert(middle);
+		}
+
+
+	}
 }

+ 38 - 3
blade-service/blade-client/src/main/java/org/springblade/client/port/controller/PortController.java

@@ -4,26 +4,37 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import io.swagger.annotations.ApiOperation;
 import io.undertow.attribute.SubstituteEmptyWrapper;
 import lombok.AllArgsConstructor;
+import lombok.Data;
 import oracle.jdbc.proxy.annotation.Post;
 import org.apache.commons.lang.StringUtils;
 import org.springblade.client.container.service.BasicContainerDescService;
 import org.springblade.client.container.service.BasicContainerTypeService;
 import org.springblade.client.dto.BasicPortDescDTO;
+import org.springblade.client.entity.BasicContainerType;
 import org.springblade.client.entity.BasicPortDesc;
 import org.springblade.client.entity.BasicPortType;
+import org.springblade.client.goods.enums.GoodsTypeEnum;
 import org.springblade.client.port.service.BasicPortDescService;
 import org.springblade.client.port.service.BasicPortTypeDescService;
 import org.springblade.client.port.service.BasicPortTypeService;
+import org.springblade.client.vo.GoodsTypeVO;
+import org.springblade.client.vo.PortTypeVO;
+import org.springblade.core.secure.BladeUser;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tenant.annotation.NonDS;
 import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 import springfox.documentation.annotations.ApiIgnore;
 
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
@@ -52,16 +63,18 @@ public class PortController
 				  @RequestParam(name = "name", required = false) String name,
 				  @RequestParam(name = "lines", required = false) String lines,
 				  @RequestParam(name = "unCode", required = false) String unCode,
+				  @RequestParam(name = "typeId", required = false) Long typeId,
 				  @RequestParam(name = "status", required = false) String status)
 	{
 		Page<BasicPortDescDTO> page=new Page<>(current,size);
-		IPage<BasicPortDescDTO> iPage = basicPortDescService.listBasicPortDesc(page, name, lines, unCode, status);
+		IPage<BasicPortDescDTO> iPage = basicPortDescService.listBasicPortDesc(page, name, lines, unCode, status,typeId,AuthUtil.getTenantId());
 		return R.data(iPage);
 	}
 
     @PostMapping("add")
 	public R add (@RequestBody BasicPortDescDTO dto)
 	{
+		dto.setTenantId(AuthUtil.getTenantId());
 		dto.setCreateTime(new Date());
 		dto.setCreateUser(SecureUtil.getUserId());
 		dto.setCreateUserName(SecureUtil.getUser().getRoleName());
@@ -70,12 +83,12 @@ public class PortController
 	}
 
 	@PutMapping("edit")
-	public R edit( @RequestBody BasicPortDesc body )
+	public R edit( @RequestBody BasicPortDescDTO body )
 	{
 		body.setUpdateTime(new Date());
 		body.setUpdateUser(SecureUtil.getUserId());
 		body.setUpdateUserName(SecureUtil.getUser().getRoleName());
-		basicPortDescService.updateById(body);
+		basicPortDescService.updateBasicPortDesc(body);
 		return R.success("操作成功");
 	}
 
@@ -90,11 +103,16 @@ public class PortController
 	@GetMapping("type/list")
 	public R typeList(@RequestParam(name = "current", defaultValue = "1") Integer current,
 					  @RequestParam(name = "size", defaultValue = "10") Integer size,
+					  @RequestParam(name = "portName", required = false) String portName ,
+					  @RequestParam(name = "status", required = false) Integer status,
 					  @RequestParam(name = "parentId", required = false) Long parentId)
 
 	{
 		LambdaQueryWrapper<BasicPortType> typeLambdaQueryWrapper=new LambdaQueryWrapper<>();
 		typeLambdaQueryWrapper
+			.eq(BasicPortType::getTenantId,AuthUtil.getTenantId())
+			.like(StringUtils.isNotBlank(portName),BasicPortType::getName,portName)
+			.eq(status!=null,BasicPortType::getStatus,status)
 			.eq(parentId!=null,BasicPortType::getParentId,parentId)
 		    .orderByDesc(BasicPortType::getCreateTime);
 		Page<BasicPortType> page=new Page<>(current,size);
@@ -118,6 +136,7 @@ public class PortController
 	{
 		LambdaQueryWrapper<BasicPortType> lambdaQueryWrapper=new LambdaQueryWrapper<>();
 		lambdaQueryWrapper.eq(pid!=null,BasicPortType::getParentId,pid);
+		lambdaQueryWrapper.eq(BasicPortType::getTenantId,AuthUtil.getTenantId());
 		List<BasicPortType> typeList = basicPortTypeService.list(lambdaQueryWrapper);
 		if(!CollectionUtils.isEmpty(typeList))
 		{
@@ -134,6 +153,7 @@ public class PortController
 	@PostMapping("type/add")
 	public R typeList(@RequestBody BasicPortType portType )
 	{
+		portType.setTenantId(AuthUtil.getTenantId());
 		portType.setCreateTime(new Date());
 		portType.setCreateUser(SecureUtil.getUserId());
 		portType.setCreateUserName(SecureUtil.getUser().getRoleName());
@@ -154,11 +174,26 @@ public class PortController
 	@DeleteMapping("type/delete")
 	public R  typeDelet(@RequestParam(name = "id", required = true) Long id)
 	{
+		LambdaQueryWrapper<BasicPortType> typeLambdaQueryWrapper=new LambdaQueryWrapper<>();
+		typeLambdaQueryWrapper.eq(BasicPortType::getParentId,id);
+		int count=basicPortTypeService.count(typeLambdaQueryWrapper);
+		if(count>0)
+		{
+			throw new RuntimeException("存在子项无法删除");
+		}
+
 		List<Long> ids= Arrays.asList(id);
 		basicPortTypeService.deleteLogic(ids);
 		return R.success("操作成功");
 	}
 
+	@GetMapping("/type/tree")
+	@ApiOperationSupport(order = 7)
+	@ApiOperation(value = "树形结构", notes = "树形结构")
+	public R<List<PortTypeVO>> tree(String tenantId, BladeUser bladeUser) {
+		List<PortTypeVO> portTypeVOS = basicPortDescService.tree(AuthUtil.getTenantId());
+		return R.data(portTypeVOS);
+	}
 
 
 

+ 7 - 1
blade-service/blade-client/src/main/java/org/springblade/client/port/mapper/BasicPortDescMapper.java

@@ -8,6 +8,10 @@ import org.springblade.client.dto.BasicPortDescDTO;
 import org.springblade.client.entity.BasicContainerDesc;
 import org.apache.ibatis.annotations.Mapper;
 import org.springblade.client.entity.BasicPortDesc;
+import org.springblade.client.vo.GoodsTypeVO;
+import org.springblade.client.vo.PortTypeVO;
+
+import java.util.List;
 
 /**
  *
@@ -19,5 +23,7 @@ import org.springblade.client.entity.BasicPortDesc;
 @Mapper
 public interface BasicPortDescMapper extends BaseMapper<BasicPortDesc>
 {
-   IPage<BasicPortDescDTO> listBasicPortDesc(Page<BasicPortDescDTO> page, @Param("portName") String portName, @Param("lines")String lines,@Param("unCode") String unCode,@Param("status") String status);
+   IPage<BasicPortDescDTO> listBasicPortDesc(Page<BasicPortDescDTO> page, @Param("portName") String portName, @Param("lines")String lines,@Param("unCode") String unCode,@Param("status") String status,@Param("typeId") Long typeId,@Param("tenantId") String tenantId);
+
+	List<PortTypeVO> tree(@Param("tenantId") String tenantId);
 }

+ 36 - 2
blade-service/blade-client/src/main/java/org/springblade/client/port/mapper/BasicPortDescMapper.xml

@@ -3,6 +3,15 @@
 
 <mapper namespace="org.springblade.client.port.mapper.BasicPortDescMapper">
 
+    <resultMap id="treeNodeResultMap" type="org.springblade.core.tool.node.TreeNode">
+        <id column="id" property="id"/>
+        <result column="parent_id" property="parentId"/>
+        <result column="title" property="title"/>
+        <result column="value" property="value"/>
+        <result column="key" property="key"/>
+        <result column="has_children" property="hasChildren"/>
+    </resultMap>
+
     <select id="listBasicPortDesc" resultType="org.springblade.client.dto.BasicPortDescDTO">
 
     SELECT
@@ -23,15 +32,18 @@
 	b.update_user_name as updateUserName,
 	b.create_user_name as createUserName,
 	b.`status` as `status`,
-	a.`name` as typeName
+	a.`name` as typeName,
+	a.id as typeId
 FROM
 	basic_port_type a,
 	basic_port_desc b,
 	basic_port_type_desc c
 WHERE
-	a.id = c.ports_type_id
+    b.tenant_id=#{tenantId}
+	and a.id = c.ports_type_id
 	AND b.id = c.ports_id
     and b.is_deleted=0
+        and c.is_deleted=0
         <if test="portName != null and portName != ''">
             AND b.`name` LIKE CONCAT('%',#{portName,jdbcType=VARCHAR},'%')
         </if>
@@ -41,6 +53,9 @@ WHERE
         <if test="unCode != null and unCode != ''">
             AND b.un_code=#{unCode}
         </if>
+        <if test="typeId != null">
+            AND a.id=#{typeId}
+        </if>
         <if test="status != null and status != ''">
             AND b.status in
             (
@@ -54,4 +69,23 @@ WHERE
 
     </select>
 
+
+    <select id="tree" resultMap="treeNodeResultMap">
+        SELECT
+        id,
+        parent_id,
+        name AS title,
+        id AS "value",
+        id AS "key"
+        FROM
+        basic_port_type
+        WHERE
+        is_deleted = 0
+        and status = 0
+        <if test="tenantId!=null and tenantId!=''">
+            and tenant_id = #{tenantId}
+        </if>
+        ORDER BY sort
+    </select>
+
 </mapper>

+ 7 - 1
blade-service/blade-client/src/main/java/org/springblade/client/port/service/BasicPortDescService.java

@@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.springblade.client.dto.BasicPortDescDTO;
 import org.springblade.client.entity.BasicContainerDesc;
 import org.springblade.client.entity.BasicPortDesc;
+import org.springblade.client.vo.GoodsTypeVO;
+import org.springblade.client.vo.PortTypeVO;
 import org.springblade.core.mp.base.BaseService;
 
 import java.util.List;
@@ -21,7 +23,11 @@ import java.util.Map;
  */
 public interface BasicPortDescService extends BaseService<BasicPortDesc>
 {
-    IPage<BasicPortDescDTO> listBasicPortDesc(Page<BasicPortDescDTO> page,String portName,String lines,String unCode,String status );
+    IPage<BasicPortDescDTO> listBasicPortDesc(Page<BasicPortDescDTO> page,String portName,String lines,String unCode,String status ,Long typeId,String tenantId);
 
     void addBasicPortDesc(BasicPortDescDTO dto);
+
+	List<PortTypeVO> tree(String tenantId);
+
+	void updateBasicPortDesc(BasicPortDescDTO dto);
 }

+ 70 - 5
blade-service/blade-client/src/main/java/org/springblade/client/port/service/impl/BasicPortDescServiceImpl.java

@@ -1,6 +1,9 @@
 package org.springblade.client.port.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.springblade.client.container.mapper.BasicContainerDescMapper;
 import org.springblade.client.container.service.BasicContainerDescService;
@@ -13,8 +16,11 @@ import org.springblade.client.port.mapper.BasicPortDescMapper;
 import org.springblade.client.port.mapper.BasicPortTypeDescMapper;
 import org.springblade.client.port.mapper.BasicPortTypeMapper;
 import org.springblade.client.port.service.BasicPortDescService;
+import org.springblade.client.vo.PortTypeVO;
 import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.secure.utils.SecureUtil;
+import org.springblade.core.tool.node.ForestNodeMerger;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -24,9 +30,7 @@ import javax.validation.constraints.NotBlank;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
-
-
-
+import java.util.stream.Collectors;
 
 
 @Service
@@ -40,9 +44,9 @@ public class BasicPortDescServiceImpl extends BaseServiceImpl<BasicPortDescMappe
    private BasicPortTypeDescMapper basicPortTypeDescMapper;
 
 	@Override
-	public IPage<BasicPortDescDTO> listBasicPortDesc(Page<BasicPortDescDTO> page, String portName, String lines, String unCode, String status)
+	public IPage<BasicPortDescDTO> listBasicPortDesc(Page<BasicPortDescDTO> page, String portName, String lines, String unCode, String status,Long typeId,String tenantId)
 	{
-		return	basicPortDescMapper.listBasicPortDesc(page,portName,lines,unCode,status);
+		return	basicPortDescMapper.listBasicPortDesc(page,portName,lines,unCode,status,typeId,tenantId);
 	}
 
 	@Override
@@ -60,6 +64,7 @@ public class BasicPortDescServiceImpl extends BaseServiceImpl<BasicPortDescMappe
 		basicPortDescMapper.insert(basicPortDesc);
 
 		BasicPortTypeDesc middle=new BasicPortTypeDesc();
+		middle.setTenantId(AuthUtil.getTenantId());
 		middle.setPortsId(basicPortDesc.getId());
 		middle.setPortsTypeId(typeId);
 		middle.setCreateTime(new Date());
@@ -69,4 +74,64 @@ public class BasicPortDescServiceImpl extends BaseServiceImpl<BasicPortDescMappe
 
 
 	}
+
+	@Override
+	public List<PortTypeVO> tree(String tenantId)
+	{
+		if (StringUtils.isBlank(tenantId)) {
+			tenantId = SecureUtil.getTenantId();
+		}
+		return ForestNodeMerger.merge(basicPortDescMapper.tree(tenantId));
+	}
+
+	@Override
+	@Transactional
+	public void updateBasicPortDesc(BasicPortDescDTO dto)
+	{
+		//类型id
+		Long typeId = dto.getTypeId();
+		BasicPortDesc basicPortDesc=new BasicPortDesc();
+		BeanUtils.copyProperties(dto,basicPortDesc);
+		basicPortDescMapper.updateById(basicPortDesc);
+
+		//查询中间关系表, 是否需要解绑
+		LambdaQueryWrapper<BasicPortTypeDesc> lambdaQueryWrapper=new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(BasicPortTypeDesc::getPortsId,basicPortDesc.getId());
+		List<BasicPortTypeDesc> basicPortTypeDescs = basicPortTypeDescMapper.selectList(lambdaQueryWrapper);
+		//如果存在绑定关系,检查是否需要换绑
+		if(!CollectionUtils.isEmpty(basicPortTypeDescs))
+		{
+			List<BasicPortTypeDesc> collect = basicPortTypeDescs.stream().filter(e -> e.getPortsTypeId() == typeId).collect(Collectors.toList());
+			//如果为空,解绑操作
+			if(CollectionUtils.isEmpty(collect))
+			{
+				basicPortTypeDescs.forEach(e->{
+					basicPortTypeDescMapper.deleteById(e.getId());
+				});
+				BasicPortTypeDesc middle=new BasicPortTypeDesc();
+				middle.setTenantId(AuthUtil.getTenantId());
+				middle.setPortsId(basicPortDesc.getId());
+				middle.setPortsTypeId(typeId);
+				middle.setCreateTime(new Date());
+				middle.setCreateUser(SecureUtil.getUserId());
+				middle.setCreateUserName(SecureUtil.getUser().getRoleName());
+				basicPortTypeDescMapper.insert(middle);
+			}
+
+		}
+		//如果没有绑定关系,则完成新增
+		else
+		{
+			BasicPortTypeDesc middle=new BasicPortTypeDesc();
+			middle.setTenantId(AuthUtil.getTenantId());
+			middle.setPortsId(basicPortDesc.getId());
+			middle.setPortsTypeId(typeId);
+			middle.setCreateTime(new Date());
+			middle.setCreateUser(SecureUtil.getUserId());
+			middle.setCreateUserName(SecureUtil.getUser().getRoleName());
+			basicPortTypeDescMapper.insert(middle);
+		}
+
+
+	}
 }

+ 6 - 3
blade-service/blade-project/src/main/java/org/springblade/project/controller/ProjectController.java

@@ -6,6 +6,7 @@ import lombok.AllArgsConstructor;
 import org.apache.commons.lang.StringUtils;
 import org.springblade.client.feign.ICorpsDescClient;
 import org.springblade.core.log.exception.ServiceException;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tenant.annotation.NonDS;
 import org.springblade.core.tool.api.R;
@@ -59,6 +60,7 @@ public class ProjectController {
 	{
 		LambdaQueryWrapper<ServiceProject> serviceProjectLambdaQueryWrapper = new LambdaQueryWrapper<>();
 		serviceProjectLambdaQueryWrapper
+			.eq(ServiceProject::getTenantId, AuthUtil.getTenantId())
 			.like(StringUtils.isNotBlank(dutyName), ServiceProject::getDutyName, dutyName)
 			.like(StringUtils.isNotBlank(remark), ServiceProject::getRemark, remark)
 			.like(StringUtils.isNotBlank(corpAttn), ServiceProject::getCorpAttn, corpAttn)
@@ -111,7 +113,7 @@ public class ProjectController {
 	public R edit(@RequestBody ServiceProject serviceProject)
 	{
 		serviceProjectService.modify(serviceProject);
-		return R.success("操作成功");
+		return R.data(serviceProject.getId());
 	}
 
 	@DeleteMapping("delete")
@@ -191,9 +193,10 @@ public class ProjectController {
 
 		  LambdaQueryWrapper<ServiceProjectItem> itemLambdaQueryWrapper=new LambdaQueryWrapper<>();
 		  itemLambdaQueryWrapper
+			  .eq(ServiceProjectItem::getTenantId,AuthUtil.getTenantId())
 			  .like(StringUtils.isNotBlank(pName),ServiceProjectItem::getPName,pName)
-			.	apply(StringUtils.isNotBlank(beginTime),"date_format(begin_time,'%Y-%m-%d') = '"+beginTime+"'")
-			.	apply(StringUtils.isNotBlank(actualDate),"date_format(actual_date,'%Y-%m-%d') = '"+actualDate+"'")
+			  .apply(StringUtils.isNotBlank(beginTime),"date_format(begin_time,'%Y-%m-%d') = '"+beginTime+"'")
+			  .apply(StringUtils.isNotBlank(actualDate),"date_format(actual_date,'%Y-%m-%d') = '"+actualDate+"'")
 			  .eq(ServiceProjectItem::getUserid,SecureUtil.getUserId())
 			  .orderByDesc(ServiceProjectItem::getUpdateTime)
 			  .eq(deptid!=null,ServiceProjectItem::getDeptid,deptid)

+ 2 - 0
blade-service/blade-project/src/main/java/org/springblade/project/controller/ProjectFilesController.java

@@ -1,6 +1,7 @@
 package org.springblade.project.controller;
 
 import lombok.AllArgsConstructor;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tenant.annotation.NonDS;
 import org.springblade.core.tool.api.R;
@@ -27,6 +28,7 @@ public class ProjectFilesController
 	@PostMapping("save")
     public R save(@RequestBody ServiceProjectFiles serviceProjectFiles)
 	{
+		serviceProjectFiles.setTenantId(AuthUtil.getTenantId());
 		serviceProjectFiles.setCreateTime(new Date());
 		serviceProjectFiles.setCreateUser(SecureUtil.getUserId());
 		serviceProjectFiles.setCreateUserName(SecureUtil.getUser().getRoleName());

+ 6 - 0
blade-service/blade-project/src/main/java/org/springblade/project/service/impl/ServiceProjectServiceImpl.java

@@ -6,6 +6,7 @@ import net.logstash.logback.encoder.org.apache.commons.lang3.StringUtils;
 import org.springblade.client.feign.ISerialClient;
 import org.springblade.core.mp.base.BaseService;
 import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.project.entity.ServiceProject;
@@ -59,6 +60,7 @@ public class ServiceProjectServiceImpl extends BaseServiceImpl<ServiceProjectMap
           {
              throw new RuntimeException("已收金额+未收金额≠合同总金额,请确认后提交");
 		  }
+		  serviceProject.setTenantId(AuthUtil.getTenantId());
 		  serviceProject.setCreateTime(new Date());
 		  serviceProject.setCreateUser(SecureUtil.getUserId());
 		  serviceProject.setCreateUserName(SecureUtil.getUser().getRoleName());
@@ -66,6 +68,7 @@ public class ServiceProjectServiceImpl extends BaseServiceImpl<ServiceProjectMap
 		  if(!CollectionUtils.isEmpty(itemList))
 		  {
 			  itemList.forEach(e->{
+			  	e.setTenantId(AuthUtil.getTenantId());
 			  	e.setPId(serviceProject.getId());
                 e.setCreateTime(new Date());
                 e.setCreateUser(SecureUtil.getUserId());
@@ -77,6 +80,7 @@ public class ServiceProjectServiceImpl extends BaseServiceImpl<ServiceProjectMap
 		  if(!CollectionUtils.isEmpty(filesList))
 		  {
 			  filesList.forEach(e->{
+				  e.setTenantId(AuthUtil.getTenantId());
 				  e.setPId(serviceProject.getId());
 				  e.setCreateTime(new Date());
 				  e.setCreateUser(SecureUtil.getUserId());
@@ -114,6 +118,7 @@ public class ServiceProjectServiceImpl extends BaseServiceImpl<ServiceProjectMap
 				  //新增
 				  else
 				  {
+					  ls.setTenantId(AuthUtil.getTenantId());
 				  	  ls.setPId(serviceProject.getId());
 					  ls.setCreateTime(new Date());
 					  ls.setCreateUser(SecureUtil.getUserId());
@@ -139,6 +144,7 @@ public class ServiceProjectServiceImpl extends BaseServiceImpl<ServiceProjectMap
 					  //新增
 					  else
 					  {
+						  ls.setTenantId(AuthUtil.getTenantId());
 						  ls.setPId(serviceProject.getId());
 						  ls.setCreateTime(new Date());
 						  ls.setCreateUser(SecureUtil.getUserId());