Browse Source

基础资料、同海APP接口调整

sunhz 4 years ago
parent
commit
0fa7620c20
16 changed files with 797 additions and 896 deletions
  1. 4 9
      blade-service/blade-client/src/main/java/org/springblade/client/container/mapper/BasicContainerDescMapper.java
  2. 6 2
      blade-service/blade-client/src/main/java/org/springblade/client/container/mapper/BasicContainerDescMapper.xml
  3. 63 50
      blade-service/blade-client/src/main/java/org/springblade/client/container/service/imp/BasicContainerDescServiceImpl.java
  4. 60 102
      blade-service/blade-client/src/main/java/org/springblade/client/corps/service/impl/CorpsDescServiceImpl.java
  5. 37 46
      blade-service/blade-client/src/main/java/org/springblade/client/corps/service/impl/CorpsTypeServiceImpl.java
  6. 33 25
      blade-service/blade-client/src/main/java/org/springblade/client/fees/service/impl/FeesDescServiceImpl.java
  7. 41 26
      blade-service/blade-client/src/main/java/org/springblade/client/fees/service/impl/FeesTypeServiceImpl.java
  8. 123 141
      blade-service/blade-client/src/main/java/org/springblade/client/goods/controller/GoodsDescController.java
  9. 4 8
      blade-service/blade-client/src/main/java/org/springblade/client/port/mapper/BasicPortDescMapper.java
  10. 34 33
      blade-service/blade-client/src/main/java/org/springblade/client/port/mapper/BasicPortDescMapper.xml
  11. 48 38
      blade-service/blade-client/src/main/java/org/springblade/client/port/service/impl/BasicPortDescServiceImpl.java
  12. 22 18
      blade-service/blade-client/src/main/java/org/springblade/client/serial/service/impl/StorageDescServiceImpl.java
  13. 14 18
      blade-service/blade-client/src/main/java/org/springblade/client/serial/service/impl/StorageTypeServiceImpl.java
  14. 1 1
      blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/controller/DeliveryReportController.java
  15. 301 373
      blade-service/blade-project/src/main/java/org/springblade/project/controller/ProjectController.java
  16. 6 6
      blade-service/trade-finance/src/main/java/org/springblade/finance/controller/AccController.java

+ 4 - 9
blade-service/blade-client/src/main/java/org/springblade/client/container/mapper/BasicContainerDescMapper.java

@@ -3,27 +3,22 @@ package org.springblade.client.container.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 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;
 
 /**
- *
- *
  * @author castiel
  * @email sunlightcs@gmail.com
  * @date 2021-10-29 10:50:07
  */
 @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,@Param("typeId") Long typeId,@Param("tenantId") String tenantId);
+public interface BasicContainerDescMapper extends BaseMapper<BasicContainerDesc> {
+	IPage<BasicContainerDescDTO> listBasicContainerDesc(Page<BasicContainerDescDTO> page, @Param("containerName") String containerName, @Param("code") String code, @Param("status") String status, @Param("typeIdList") List<Long> typeIdList, @Param("tenantId") String tenantId);
 
-	  List<ContainerTypeVO> tree(@Param("tenantId") String tenantId);
+	List<ContainerTypeVO> tree(@Param("tenantId") String tenantId);
 }

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

@@ -51,8 +51,12 @@
         <if test="code != null and code != ''">
             AND b.`code`=#{code}
         </if>
-        <if test="typeId != null">
-            AND a.id=#{typeId}
+        <if test="typeIdList != null and typeIdList.size > 0">
+            AND a.id in (
+            <foreach collection="typeIdList" index="index" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+            )
         </if>
         <if test="status != null and status != ''">
             AND b.status in

+ 63 - 50
blade-service/blade-client/src/main/java/org/springblade/client/container/service/imp/BasicContainerDescServiceImpl.java

@@ -9,11 +9,12 @@ import org.springblade.client.container.mapper.BasicContainerDescMapper;
 import org.springblade.client.container.mapper.BasicContainerTypeDescMapper;
 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.*;
+import org.springblade.client.entity.BasicContainerDesc;
+import org.springblade.client.entity.BasicContainerType;
+import org.springblade.client.entity.BasicContainerTypeDesc;
+import org.springblade.client.entity.StorageType;
 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;
@@ -23,52 +24,58 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import javax.validation.constraints.NotBlank;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
-import java.util.Map;
 import java.util.stream.Collectors;
 
 
 @Service
-public class BasicContainerDescServiceImpl extends BaseServiceImpl<BasicContainerDescMapper, BasicContainerDesc> implements BasicContainerDescService
-{
-    @Autowired
+public class BasicContainerDescServiceImpl extends BaseServiceImpl<BasicContainerDescMapper, BasicContainerDesc> implements BasicContainerDescService {
+	@Autowired
 	private BasicContainerDescMapper basicContainerDescMapper;
-    @Autowired
+
+	@Autowired
+	private BasicContainerTypeMapper basicContainerTypeMapper;
+
+	@Autowired
 	private BasicContainerTypeDescMapper basicContainerTypeDescMapper;
 
 	@Override
-	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);
+	public IPage<BasicContainerDescDTO> listBasicContainerDesc(Page<BasicContainerDescDTO> page, String containerName, String code, String status, Long typeId, String tenantId) {
+		List<Long> containerTypeIdList = new ArrayList<>();
+		if (typeId != null) {
+			selectChildById(typeId, containerTypeIdList);
+			containerTypeIdList.add(typeId);
+		}
+
+		return basicContainerDescMapper.listBasicContainerDesc(page, containerName, code, status, containerTypeIdList, tenantId);
 	}
 
 	@Override
 	@Transactional
-	public void addBasicContainerDesc(BasicContainerDescDTO dto)
-	{
-		 //集装箱类型id
-		 Long typeId = dto.getTypeId();
-
-		 BasicContainerDesc target=new BasicContainerDesc();
-		 BeanUtils.copyProperties(dto,target);
-		 target.setCreateTime(new Date());
-		 target.setCreateUser(SecureUtil.getUserId());
-		 target.setCreateUserName(SecureUtil.getUser().getUserName());
-		 basicContainerDescMapper.insert(target);
-
-		 BasicContainerTypeDesc middle=new BasicContainerTypeDesc();
-		 middle.setContainerId(target.getId());
-		 middle.setContainerTypeId(typeId);
-		 middle.setCreateTime(new Date());
-		 middle.setCreateUser(SecureUtil.getUserId());
-		 middle.setCreateUserName(SecureUtil.getUser().getUserName());
-		 basicContainerTypeDescMapper.insert(middle);
+	public void addBasicContainerDesc(BasicContainerDescDTO dto) {
+		//集装箱类型id
+		Long typeId = dto.getTypeId();
+
+		BasicContainerDesc target = new BasicContainerDesc();
+		BeanUtils.copyProperties(dto, target);
+		target.setCreateTime(new Date());
+		target.setCreateUser(SecureUtil.getUserId());
+		target.setCreateUserName(SecureUtil.getUser().getUserName());
+		basicContainerDescMapper.insert(target);
+
+		BasicContainerTypeDesc middle = new BasicContainerTypeDesc();
+		middle.setContainerId(target.getId());
+		middle.setContainerTypeId(typeId);
+		middle.setCreateTime(new Date());
+		middle.setCreateUser(SecureUtil.getUserId());
+		middle.setCreateUserName(SecureUtil.getUser().getUserName());
+		basicContainerTypeDescMapper.insert(middle);
 	}
 
 	@Override
-	public List<ContainerTypeVO> tree(String tenantId)
-	{
+	public List<ContainerTypeVO> tree(String tenantId) {
 		if (StringUtils.isBlank(tenantId)) {
 			tenantId = SecureUtil.getTenantId();
 		}
@@ -76,31 +83,28 @@ public class BasicContainerDescServiceImpl extends BaseServiceImpl<BasicContaine
 	}
 
 	@Override
-	public void updateBasicPortDesc(BasicContainerDescDTO dto)
-	{
+	public void updateBasicPortDesc(BasicContainerDescDTO dto) {
 		//类型id
 		Long typeId = dto.getTypeId();
-		BasicContainerDesc basicContainerDesc=new BasicContainerDesc();
-		BeanUtils.copyProperties(dto,basicContainerDesc);
+		BasicContainerDesc basicContainerDesc = new BasicContainerDesc();
+		BeanUtils.copyProperties(dto, basicContainerDesc);
 		basicContainerDescMapper.updateById(basicContainerDesc);
 
 		//查询中间关系表, 是否需要解绑
-		LambdaQueryWrapper<BasicContainerTypeDesc> lambdaQueryWrapper=new LambdaQueryWrapper<>();
-		lambdaQueryWrapper.eq(BasicContainerTypeDesc::getContainerId,basicContainerDesc.getId());
+		LambdaQueryWrapper<BasicContainerTypeDesc> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(BasicContainerTypeDesc::getContainerId, basicContainerDesc.getId());
 		List<BasicContainerTypeDesc> basicContainerTypeDescs = basicContainerTypeDescMapper.selectList(lambdaQueryWrapper);
 
 		//如果存在绑定关系,检查是否需要换绑
-		if(!CollectionUtils.isEmpty(basicContainerTypeDescs))
-		{
+		if (!CollectionUtils.isEmpty(basicContainerTypeDescs)) {
 			List<BasicContainerTypeDesc> collect = basicContainerTypeDescs.stream().filter(e -> e.getContainerTypeId() == typeId).collect(Collectors.toList());
 			//如果为空,解绑操作
-			if(CollectionUtils.isEmpty(collect))
-			{
-				basicContainerTypeDescs.forEach(e->{
+			if (CollectionUtils.isEmpty(collect)) {
+				basicContainerTypeDescs.forEach(e -> {
 					basicContainerTypeDescMapper.deleteById(e.getId());
 				});
 
-				BasicContainerTypeDesc middle=new BasicContainerTypeDesc();
+				BasicContainerTypeDesc middle = new BasicContainerTypeDesc();
 				middle.setContainerId(basicContainerDesc.getId());
 				middle.setTenantId(AuthUtil.getTenantId());
 				middle.setContainerTypeId(typeId);
@@ -110,15 +114,12 @@ public class BasicContainerDescServiceImpl extends BaseServiceImpl<BasicContaine
 				basicContainerTypeDescMapper.insert(middle);
 
 
-
-
 			}
 
 		}
 		//如果没有绑定关系,则完成新增
-		else
-		{
-			BasicContainerTypeDesc middle=new BasicContainerTypeDesc();
+		else {
+			BasicContainerTypeDesc middle = new BasicContainerTypeDesc();
 			middle.setContainerId(basicContainerDesc.getId());
 			middle.setTenantId(AuthUtil.getTenantId());
 			middle.setContainerTypeId(typeId);
@@ -127,7 +128,19 @@ public class BasicContainerDescServiceImpl extends BaseServiceImpl<BasicContaine
 			middle.setCreateUserName(SecureUtil.getUser().getUserName());
 			basicContainerTypeDescMapper.insert(middle);
 		}
+	}
 
-
+	/**
+	 * 递归查询ID
+	 */
+	public void selectChildById(Long id, List<Long> idList) {
+		LambdaQueryWrapper<BasicContainerType> idListWrapper = new LambdaQueryWrapper<>();
+		idListWrapper.select(BasicContainerType::getId);
+		idListWrapper.eq(BasicContainerType::getParentId, id);
+		List<BasicContainerType> childIdList = basicContainerTypeMapper.selectList(idListWrapper);
+		childIdList.forEach(item -> {
+			idList.add(item.getId());
+			this.selectChildById(item.getId(), idList);
+		});
 	}
 }

+ 60 - 102
blade-service/blade-client/src/main/java/org/springblade/client/corps/service/impl/CorpsDescServiceImpl.java

@@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 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.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.AllArgsConstructor;
 import org.springblade.client.corps.excel.CorpsCompanyExcel;
@@ -18,12 +17,9 @@ import org.springblade.client.corps.mapper.CorpsTypeMapper;
 import org.springblade.client.corps.service.ICorpsDescService;
 import org.springblade.client.entity.*;
 import org.springblade.client.vo.CorpsDescVO;
-import org.springblade.core.mp.support.Condition;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tool.api.R;
-import org.springblade.system.entity.Dept;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
@@ -58,9 +54,12 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, CorpsDesc
 	@Override
 	public IPage<CorpsDescVO> selectCorpsDescPage(IPage<CorpsDescVO> page, CorpsDescVO corpsDesc) {
 		//获取客户子类别
-		if (StringUtils.isNotBlank(corpsDesc.getCorpsTypeId())){
-			List<Long> longList = corpsTypeService.getCorpTypeIds(corpsDesc.getCorpsTypeId());
-			corpsDesc.setTypeList(longList);
+		if (StringUtils.isNotBlank(corpsDesc.getCorpsTypeId())) {
+			Long corpsTypeId = Long.parseLong(corpsDesc.getCorpsTypeId());
+			List<Long> corpsTypeIdList = new ArrayList<>();
+			corpsTypeService.selectChildById(corpsTypeId, corpsTypeIdList);
+			corpsTypeIdList.add(corpsTypeId);
+			corpsDesc.setTypeList(corpsTypeIdList);
 		}
 		return page.setRecords(baseMapper.selectCorpsDescPage(page, corpsDesc));
 	}
@@ -104,7 +103,7 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, CorpsDesc
 		}
 		//保存客户地址信息
 		R addr = corpsAddrService.saveOrUpdateAddr(corpsDesc, userId, pId, tenantId, date);
-		if (!addr.isSuccess()){
+		if (!addr.isSuccess()) {
 			TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
 			return addr;
 		}
@@ -160,6 +159,7 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, CorpsDesc
 
 	/**
 	 * 获取多个客户
+	 *
 	 * @param corps
 	 * @return
 	 */
@@ -173,27 +173,24 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, CorpsDesc
 
 	@Override
 	public CorpsDesc getCorpByName(String cname, String tenantId) {
-		return baseMapper.selectCorpsDescCname(cname,tenantId);
+		return baseMapper.selectCorpsDescCname(cname, tenantId);
 	}
 
 	@Override
 	@Transactional
-	public R importUser(List<CorpsExcel> data, Boolean isCovered,String corpType)
-	{
+	public R importUser(List<CorpsExcel> data, Boolean isCovered, String corpType) {
 		try {
-			if(org.springframework.util.CollectionUtils.isEmpty(data))
-			{
+			if (org.springframework.util.CollectionUtils.isEmpty(data)) {
 				throw new SecurityException("导入数据不能为空");
 			}
-			List<Boolean> countList=new ArrayList<>();
+			List<Boolean> countList = new ArrayList<>();
 
-			data.forEach(e->{
+			data.forEach(e -> {
 				String type = e.getType();
 				CorpsType corpsType = corpsTypeMapper.selectCorpsTypeCname(type, AuthUtil.getTenantId());
-				if(corpsType!=null)
-				{
+				if (corpsType != null) {
 					countList.add(true);
-					CorpsDesc corpsDesc=new CorpsDesc();
+					CorpsDesc corpsDesc = new CorpsDesc();
 					corpsDesc.setCode(e.getCode());
 					corpsDesc.setCname(e.getCname());
 					corpsDesc.setAttn(e.getAttn());
@@ -217,18 +214,17 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, CorpsDesc
 					corpsDesc.setCorpType("KH");
 					//名称相等视为重复数据
 					LambdaQueryWrapper<CorpsDesc> queryWrapper = new LambdaQueryWrapper<>();
-					queryWrapper.eq(CorpsDesc::getCname,corpsDesc.getCname());
-					queryWrapper.eq(CorpsDesc::getCorpType,"KH");
-					queryWrapper.eq(CorpsDesc::getIsDeleted,0);
+					queryWrapper.eq(CorpsDesc::getCname, corpsDesc.getCname());
+					queryWrapper.eq(CorpsDesc::getCorpType, "KH");
+					queryWrapper.eq(CorpsDesc::getIsDeleted, 0);
 					CorpsDesc selectOne = baseMapper.selectOne(queryWrapper);
-					if(selectOne==null)
-					{
+					if (selectOne == null) {
 						corpsDesc.setCreateTime(new Date());
 						corpsDesc.setCreateUser(AuthUtil.getUserId());
 						corpsDesc.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
 						baseMapper.insert(corpsDesc);
 
-						CorpsTypeDesc middle=new CorpsTypeDesc();
+						CorpsTypeDesc middle = new CorpsTypeDesc();
 						middle.setCorpId(corpsDesc.getId());
 						middle.setCorpTypeId(corpsType.getId());
 						middle.setCreateTime(new Date());
@@ -240,10 +236,9 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, CorpsDesc
 						String addressList = e.getAddressList();
 						String[] split = addressList.split("-");
 						List<String> list = Arrays.asList(split);
-						if(CollectionUtils.isNotEmpty(list))
-						{
-							list.forEach(lt->{
-								CorpsAddr corpsAddr=new CorpsAddr();
+						if (CollectionUtils.isNotEmpty(list)) {
+							list.forEach(lt -> {
+								CorpsAddr corpsAddr = new CorpsAddr();
 								corpsAddr.setPid(corpsDesc.getId());
 								corpsAddr.setAddr(lt);
 								corpsAddr.setCreateTime(new Date());
@@ -254,31 +249,22 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, CorpsDesc
 
 						}
 
-					}
-					else
-					{
+					} else {
 						corpsDesc.setId(selectOne.getId());
 						corpsDesc.setUpdateTime(new Date());
 						corpsDesc.setUpdateUser(AuthUtil.getUserId());
 						baseMapper.updateById(corpsDesc);
 					}
-				}
-				else
-				{
+				} else {
 					countList.add(false);
 				}
 			});
 			List<Boolean> booleanList = countList.stream().filter(e -> e == true).collect(Collectors.toList());
-			if(data.size()>booleanList.size())
-			{
+			if (data.size() > booleanList.size()) {
 				return R.fail("导入中的数据,分类字段不存在或者未填分类字段");
-			}
-			else if(data.size()==booleanList.size())
-			{
+			} else if (data.size() == booleanList.size()) {
 				return R.success("导入成功");
-			}
-			else
-			{
+			} else {
 				throw new SecurityException("导入失败,请仔细检查导入数据");
 			}
 
@@ -289,22 +275,19 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, CorpsDesc
 
 	@Override
 	@Transactional
-	public R importCompanyDesc(List<CorpsCompanyExcel> data, Boolean isCovered, String corpType)
-	{
+	public R importCompanyDesc(List<CorpsCompanyExcel> data, Boolean isCovered, String corpType) {
 		try {
-			if(org.springframework.util.CollectionUtils.isEmpty(data))
-			{
+			if (org.springframework.util.CollectionUtils.isEmpty(data)) {
 				throw new SecurityException("导入数据不能为空");
 			}
-			List<Boolean> countList=new ArrayList<>();
+			List<Boolean> countList = new ArrayList<>();
 
-			data.forEach(e->{
+			data.forEach(e -> {
 				String type = e.getType();
 				CorpsType corpsType = corpsTypeMapper.selectCorpsTypeCname(type, AuthUtil.getTenantId());
-				if(corpsType!=null)
-				{
+				if (corpsType != null) {
 					countList.add(true);
-					CorpsDesc corpsDesc=new CorpsDesc();
+					CorpsDesc corpsDesc = new CorpsDesc();
 					corpsDesc.setCode(e.getCode());
 					corpsDesc.setCname(e.getCname());
 					corpsDesc.setAccountBank(e.getAccountBank());
@@ -316,51 +299,41 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, CorpsDesc
 					corpsDesc.setCorpType("GS");
 					//名称相等视为重复数据
 					LambdaQueryWrapper<CorpsDesc> queryWrapper = new LambdaQueryWrapper<>();
-					queryWrapper.eq(CorpsDesc::getCname,corpsDesc.getCname());
-					queryWrapper.eq(CorpsDesc::getIsDeleted,0);
-					queryWrapper.eq(CorpsDesc::getCorpType,"GS");
+					queryWrapper.eq(CorpsDesc::getCname, corpsDesc.getCname());
+					queryWrapper.eq(CorpsDesc::getIsDeleted, 0);
+					queryWrapper.eq(CorpsDesc::getCorpType, "GS");
 					CorpsDesc selectOne = baseMapper.selectOne(queryWrapper);
-					if(selectOne==null)
-					{
+					if (selectOne == null) {
 						corpsDesc.setCorpType("GS");
 						corpsDesc.setCreateTime(new Date());
 						corpsDesc.setCreateUser(AuthUtil.getUserId());
 						corpsDesc.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
 						baseMapper.insert(corpsDesc);
 
-						CorpsTypeDesc middle=new CorpsTypeDesc();
+						CorpsTypeDesc middle = new CorpsTypeDesc();
 						middle.setCorpId(corpsDesc.getId());
 						middle.setCorpTypeId(corpsType.getId());
 						middle.setCreateTime(new Date());
 						middle.setCreateUser(AuthUtil.getUserId());
 						middle.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
 						middleMapper.insert(middle);
-					}
-					else
-					{
+					} else {
 						corpsDesc.setCorpType("GS");
 						corpsDesc.setId(selectOne.getId());
 						corpsDesc.setUpdateTime(new Date());
 						corpsDesc.setUpdateUser(AuthUtil.getUserId());
 						baseMapper.updateById(corpsDesc);
 					}
-				}
-				else
-				{
+				} else {
 					countList.add(false);
 				}
 			});
 			List<Boolean> booleanList = countList.stream().filter(e -> e == true).collect(Collectors.toList());
-			if(data.size()>booleanList.size())
-			{
+			if (data.size() > booleanList.size()) {
 				return R.fail("导入中的数据,输入的公司分类不存在或者未填分类字段");
-			}
-			else if(data.size()==booleanList.size())
-			{
+			} else if (data.size() == booleanList.size()) {
 				return R.success("导入成功");
-			}
-			else
-			{
+			} else {
 				throw new SecurityException("导入失败,请仔细检查导入数据");
 			}
 
@@ -371,22 +344,19 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, CorpsDesc
 
 	@Override
 	@Transactional
-	public R importSupplierDesc(List<CorpsSupplierExcel> data, Boolean isCovered, String corpType)
-	{
+	public R importSupplierDesc(List<CorpsSupplierExcel> data, Boolean isCovered, String corpType) {
 		try {
-			if(org.springframework.util.CollectionUtils.isEmpty(data))
-			{
+			if (org.springframework.util.CollectionUtils.isEmpty(data)) {
 				throw new SecurityException("导入数据不能为空");
 			}
-			List<Boolean> countList=new ArrayList<>();
+			List<Boolean> countList = new ArrayList<>();
 
-			data.forEach(e->{
+			data.forEach(e -> {
 				String type = e.getType();
 				CorpsType corpsType = corpsTypeMapper.selectCorpsTypeCname(type, AuthUtil.getTenantId());
-				if(corpsType!=null)
-				{
+				if (corpsType != null) {
 					countList.add(true);
-					CorpsDesc corpsDesc=new CorpsDesc();
+					CorpsDesc corpsDesc = new CorpsDesc();
 					corpsDesc.setCode(e.getCode());
 					corpsDesc.setCname(e.getCname());
 					corpsDesc.setAccountBank(e.getAccountBank());
@@ -398,51 +368,41 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, CorpsDesc
 					corpsDesc.setCorpType("GYS");
 					//名称相等视为重复数据
 					LambdaQueryWrapper<CorpsDesc> queryWrapper = new LambdaQueryWrapper<>();
-					queryWrapper.eq(CorpsDesc::getCname,corpsDesc.getCname());
-					queryWrapper.eq(CorpsDesc::getIsDeleted,0);
-					queryWrapper.eq(CorpsDesc::getCorpType,"GYS");
+					queryWrapper.eq(CorpsDesc::getCname, corpsDesc.getCname());
+					queryWrapper.eq(CorpsDesc::getIsDeleted, 0);
+					queryWrapper.eq(CorpsDesc::getCorpType, "GYS");
 					CorpsDesc selectOne = baseMapper.selectOne(queryWrapper);
-					if(selectOne==null)
-					{
+					if (selectOne == null) {
 						corpsDesc.setCorpType("GYS");
 						corpsDesc.setCreateTime(new Date());
 						corpsDesc.setCreateUser(AuthUtil.getUserId());
 						corpsDesc.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
 						baseMapper.insert(corpsDesc);
 
-						CorpsTypeDesc middle=new CorpsTypeDesc();
+						CorpsTypeDesc middle = new CorpsTypeDesc();
 						middle.setCorpId(corpsDesc.getId());
 						middle.setCorpTypeId(corpsType.getId());
 						middle.setCreateTime(new Date());
 						middle.setCreateUser(AuthUtil.getUserId());
 						middle.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
 						middleMapper.insert(middle);
-					}
-					else
-					{
+					} else {
 						corpsDesc.setCorpType("GYS");
 						corpsDesc.setId(selectOne.getId());
 						corpsDesc.setUpdateTime(new Date());
 						corpsDesc.setUpdateUser(AuthUtil.getUserId());
 						baseMapper.updateById(corpsDesc);
 					}
-				}
-				else
-				{
+				} else {
 					countList.add(false);
 				}
 			});
 			List<Boolean> booleanList = countList.stream().filter(e -> e == true).collect(Collectors.toList());
-			if(data.size()>booleanList.size())
-			{
+			if (data.size() > booleanList.size()) {
 				return R.fail("导入中的数据,输入的公司分类不存在或者未填分类字段");
-			}
-			else if(data.size()==booleanList.size())
-			{
+			} else if (data.size() == booleanList.size()) {
 				return R.success("导入成功");
-			}
-			else
-			{
+			} else {
 				throw new SecurityException("导入失败,请仔细检查导入数据");
 			}
 
@@ -628,6 +588,4 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, CorpsDesc
 	}
 
 
-
-
 }

+ 37 - 46
blade-service/blade-client/src/main/java/org/springblade/client/corps/service/impl/CorpsTypeServiceImpl.java

@@ -16,31 +16,27 @@
  */
 package org.springblade.client.corps.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.core.toolkit.Wrappers;
-import org.springblade.client.entity.CorpsType;
-import org.springblade.client.vo.CorpsTypeVO;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springblade.client.corps.mapper.CorpsTypeMapper;
 import org.springblade.client.corps.service.ICorpsTypeService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springblade.client.entity.CorpsType;
+import org.springblade.client.vo.CorpsTypeVO;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.node.ForestNodeMerger;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.StringPool;
-import org.springblade.system.entity.Dept;
 import org.springblade.system.user.entity.User;
 import org.springblade.system.user.feign.IUserClient;
 import org.springframework.stereotype.Service;
-import com.baomidou.mybatisplus.core.metadata.IPage;
 
-import java.sql.Wrapper;
-import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
-import java.util.stream.Collectors;
 
 /**
  * 客户类别表 服务实现类
@@ -59,21 +55,21 @@ public class CorpsTypeServiceImpl extends ServiceImpl<CorpsTypeMapper, CorpsType
 	@Override
 	public IPage<CorpsTypeVO> selectCorpsTypePage(IPage<CorpsTypeVO> page, CorpsTypeVO corpsType) {
 		List<CorpsTypeVO> corpsTypeVOS = baseMapper.selectCorpsTypePage(page, corpsType);
-		if (CollectionUtils.isNotEmpty(corpsTypeVOS)){
-			corpsTypeVOS.stream().forEach(item ->{
+		if (CollectionUtils.isNotEmpty(corpsTypeVOS)) {
+			corpsTypeVOS.stream().forEach(item -> {
 				CorpsType type = baseMapper.selectById(item.getParentId());
 				//获取上级中文名
-				if (type!= null){
+				if (type != null) {
 					item.setParentName(type.getCname());
 				}
 				//获取创建人中文名
 				R<User> createUser = userClient.userInfoById(item.getCreateUser());
-				if (createUser.isSuccess()){
+				if (createUser.isSuccess()) {
 					item.setCreateUserName(createUser.getData().getName());
 				}
 				//获取修改人中文名
 				R<User> updateUser = userClient.userInfoById(item.getCreateUser());
-				if (updateUser.isSuccess()){
+				if (updateUser.isSuccess()) {
 					item.setUpdateUserName(updateUser.getData().getName());
 				}
 			});
@@ -83,91 +79,86 @@ public class CorpsTypeServiceImpl extends ServiceImpl<CorpsTypeMapper, CorpsType
 
 	@Override
 	public boolean saveMessage(CorpsType corpsType) {
-		Integer i ;
+		Integer i;
 		//生成父级信息
-		if (corpsType.getParentId() != null){
+		if (corpsType.getParentId() != null) {
 			CorpsType type = getById(corpsType.getParentId());
 			if (type != null && corpsType.getId() != null && Func.toLong(corpsType.getParentId()) == Func.toLong(corpsType.getId())) {
 				throw new ServiceException("父节点不可选择自身!");
 			}
-			if (type != null){
+			if (type != null) {
 				String ancestors = type.getAncestors() + StringPool.COMMA + corpsType.getParentId();
 				corpsType.setAncestors(ancestors);
 			}
 		}
-		if (corpsType.getId() == null){
+		if (corpsType.getId() == null) {
 			corpsType.setCreateUser(SecureUtil.getUserId());
 			corpsType.setCreateTime(new Date());
 			corpsType.setCreateDept(Long.valueOf(SecureUtil.getUser().getDeptId()));
 			corpsType.setTenantId(SecureUtil.getTenantId());
 			i = baseMapper.insert(corpsType);
-		}else {
+		} else {
 			corpsType.setUpdateUser(SecureUtil.getUserId());
 			corpsType.setCreateTime(new Date());
 			corpsType.setCreateDept(Long.valueOf(SecureUtil.getUser().getDeptId()));
 			corpsType.setTenantId(SecureUtil.getTenantId());
 			i = baseMapper.updateById(corpsType);
 		}
-		if (i != null && i>0){
+		if (i != null && i > 0) {
 			return true;
 		}
 		return false;
 	}
 
 	@Override
-	public List<CorpsTypeVO> tree(String tenantId,String corpType) {
-		if (StringUtils.isBlank(tenantId)){
+	public List<CorpsTypeVO> tree(String tenantId, String corpType) {
+		if (StringUtils.isBlank(tenantId)) {
 			tenantId = SecureUtil.getTenantId();
 		}
-		return ForestNodeMerger.merge(baseMapper.tree(tenantId,corpType));
+		return ForestNodeMerger.merge(baseMapper.tree(tenantId, corpType));
 	}
 
 	@Override
 	public CorpsType getMessageById(CorpsType corpsType) {
 		CorpsType type = baseMapper.selectById(corpsType.getId());
 		CorpsType corp = baseMapper.selectById(type.getParentId());
-		if (corp!= null){
+		if (corp != null) {
 			type.setParentName(corp.getCname());
 		}
 		return type;
 	}
 
 	@Override
-	public List<CorpsTypeVO> lazyTree(String tenantId, Long parentId,String corpType) {
-		if (StringUtils.isBlank(tenantId)){
+	public List<CorpsTypeVO> lazyTree(String tenantId, Long parentId, String corpType) {
+		if (StringUtils.isBlank(tenantId)) {
 			tenantId = SecureUtil.getTenantId();
 		}
-		return baseMapper.lazyTree(tenantId,parentId,corpType);
+		return baseMapper.lazyTree(tenantId, parentId, corpType);
 	}
 
 	@Override
 	public String selectCorpsTypeCname(CorpsType corpsType) {
-		CorpsType typeCname = baseMapper.selectCorpsTypeCname(corpsType.getCname(),corpsType.getTenantId());
-		if (typeCname != null && corpsType.getId() == null){
+		CorpsType typeCname = baseMapper.selectCorpsTypeCname(corpsType.getCname(), corpsType.getTenantId());
+		if (typeCname != null && corpsType.getId() == null) {
 			return "NotUNIQUE";
-		}else if (typeCname != null && !corpsType.getId().equals(typeCname.getId())){
+		} else if (typeCname != null && !corpsType.getId().equals(typeCname.getId())) {
 			return "NotUNIQUE";
-		}else {
+		} else {
 			return "UNIQUE";
 		}
 	}
 
 	/**
-	 * 获取客户类别及他的子类别
-	 * @param corpTypeId
-	 * @return
+	 * 递归查询ID
 	 */
-	public List<Long> getCorpTypeIds(String corpTypeId){
-		if (StringUtils.isBlank(corpTypeId)){
-			return null;
-		}
-		List<Long> corpTypeList = new ArrayList<>();
-		List<CorpsType> corpsTypes = baseMapper.selectList(Wrappers.<CorpsType>query().lambda().like(CorpsType::getAncestors, corpTypeId));
-		if (CollectionUtils.isNotEmpty(corpsTypes)){
-			List<Long> collect = corpsTypes.stream().map(CorpsType::getId).collect(Collectors.toList());
-			corpTypeList.addAll(collect);
-		}
-		corpTypeList.add(Long.valueOf(corpTypeId));
-		return corpTypeList;
+	public void selectChildById(Long id, List<Long> idList) {
+		LambdaQueryWrapper<CorpsType> idListWrapper = new LambdaQueryWrapper<>();
+		idListWrapper.select(CorpsType::getId);
+		idListWrapper.eq(CorpsType::getParentId, id);
+		List<CorpsType> childIdList = baseMapper.selectList(idListWrapper);
+		childIdList.forEach(item -> {
+			idList.add(item.getId());
+			this.selectChildById(item.getId(), idList);
+		});
 	}
 }

+ 33 - 25
blade-service/blade-client/src/main/java/org/springblade/client/fees/service/impl/FeesDescServiceImpl.java

@@ -17,19 +17,20 @@
 package org.springblade.client.fees.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.AllArgsConstructor;
 import org.springblade.client.entity.FeesDesc;
 import org.springblade.client.entity.FeesTypeDesc;
-import org.springblade.client.vo.FeesDescVO;
 import org.springblade.client.fees.mapper.FeesDescMapper;
 import org.springblade.client.fees.service.IFeesDescService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springblade.client.vo.FeesDescVO;
 import org.springblade.core.secure.utils.SecureUtil;
 import org.springframework.stereotype.Service;
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
@@ -46,12 +47,16 @@ public class FeesDescServiceImpl extends ServiceImpl<FeesDescMapper, FeesDesc> i
 
 	private FeesTypeDescServiceImpl feesTypeDescService;//费用-费用类别对应表
 	private FeesTypeServiceImpl feesTypeService;//费用类别
+
 	@Override
 	public IPage<FeesDescVO> selectFeesDescPage(IPage<FeesDescVO> page, FeesDescVO feesDesc) {
 		//获取类别子类别
-		if (StringUtils.isNotBlank(feesDesc.getFeesTypeId())){
-			List<Long> feesTypeIds = feesTypeService.feesTypeIds(feesDesc.getFeesTypeId());
-			feesDesc.setTypeIdList(feesTypeIds);
+		if (StringUtils.isNotBlank(feesDesc.getFeesTypeId())) {
+			Long corpsTypeId = Long.parseLong(feesDesc.getFeesTypeId());
+			List<Long> feesTypeIdList = new ArrayList<>();
+			feesTypeService.selectChildById(corpsTypeId, feesTypeIdList);
+			feesTypeIdList.add(corpsTypeId);
+			feesDesc.setTypeIdList(feesTypeIdList);
 		}
 		return page.setRecords(baseMapper.selectFeesDescPage(page, feesDesc));
 	}
@@ -60,20 +65,20 @@ public class FeesDescServiceImpl extends ServiceImpl<FeesDescMapper, FeesDesc> i
 	@Transactional
 	public FeesDesc saveMessage(FeesDesc feesDesc) {
 		//保存费用信息
-		if (StringUtils.isBlank(feesDesc.getTenantId())){
+		if (StringUtils.isBlank(feesDesc.getTenantId())) {
 			feesDesc.setTenantId(SecureUtil.getTenantId());
 		}
-		if (feesDesc.getId() == null){
+		if (feesDesc.getId() == null) {
 			feesDesc.setCreateUser(SecureUtil.getUserId());
 			feesDesc.setCreateTime(new Date());
 			baseMapper.insert(feesDesc);
-		}else {
+		} else {
 			feesDesc.setCreateUser(SecureUtil.getUserId());
 			feesDesc.setCreateTime(new Date());
 			baseMapper.updateById(feesDesc);
 		}
 		//保存费用类别信息
-		this.saveType(feesDesc.getId(),feesDesc.getFeesTypeId());
+		this.saveType(feesDesc.getId(), feesDesc.getFeesTypeId());
 		return feesDesc;
 	}
 
@@ -82,30 +87,30 @@ public class FeesDescServiceImpl extends ServiceImpl<FeesDescMapper, FeesDesc> i
 		FeesDesc desc = baseMapper.selectById(feesDesc.getId());
 		//获取费用类别
 		List<String> list = feesTypeDescService.selectTypeId(feesDesc.getId());
-		desc.setFeesTypeId(String.join(",",list));
+		desc.setFeesTypeId(String.join(",", list));
 		return desc;
 	}
 
 	@Override
 	public String selectFeesDescCode(FeesDesc feesDesc) {
-		FeesDesc feesDescCode = baseMapper.selectFeesDescCode(feesDesc.getCode(),feesDesc.getTenantId());
-		if (feesDescCode != null && feesDesc.getId() == null){
+		FeesDesc feesDescCode = baseMapper.selectFeesDescCode(feesDesc.getCode(), feesDesc.getTenantId());
+		if (feesDescCode != null && feesDesc.getId() == null) {
 			return "NotUNIQUE";
-		}else if (feesDescCode != null && !feesDesc.getId().equals(feesDescCode.getId())){
+		} else if (feesDescCode != null && !feesDesc.getId().equals(feesDescCode.getId())) {
 			return "NotUNIQUE";
-		}else {
+		} else {
 			return "UNIQUE";
 		}
 	}
 
 	@Override
 	public String selectFeesDescCname(FeesDesc feesDesc) {
-		FeesDesc feesDescCname = baseMapper.selectFeesDescCname(feesDesc.getCname(),feesDesc.getTenantId());
-		if (feesDescCname != null && feesDesc.getId() == null){
+		FeesDesc feesDescCname = baseMapper.selectFeesDescCname(feesDesc.getCname(), feesDesc.getTenantId());
+		if (feesDescCname != null && feesDesc.getId() == null) {
 			return "NotUNIQUE";
-		}else if (feesDescCname != null && !feesDesc.getId().equals(feesDescCname.getId())){
+		} else if (feesDescCname != null && !feesDesc.getId().equals(feesDescCname.getId())) {
 			return "NotUNIQUE";
-		}else {
+		} else {
 			return "UNIQUE";
 		}
 
@@ -118,15 +123,16 @@ public class FeesDescServiceImpl extends ServiceImpl<FeesDescMapper, FeesDesc> i
 
 	/**
 	 * 保存费用与费用类别对应关系
-	 * @param feeId 费用id
+	 *
+	 * @param feeId      费用id
 	 * @param feesTypeId 费用类别id
 	 * @return
 	 */
-	private void saveType(Long feeId,String feesTypeId){
-		feesTypeDescService.remove(new QueryWrapper<FeesTypeDesc>().eq("fees_id",feeId));
-		if (StringUtils.isNotBlank(feesTypeId)){
+	private void saveType(Long feeId, String feesTypeId) {
+		feesTypeDescService.remove(new QueryWrapper<FeesTypeDesc>().eq("fees_id", feeId));
+		if (StringUtils.isNotBlank(feesTypeId)) {
 			List<String> list = Arrays.asList(feesTypeId.split(","));
-			list.stream().forEach(item ->{
+			list.stream().forEach(item -> {
 				FeesTypeDesc feesTypeDesc = new FeesTypeDesc();
 				feesTypeDesc.setTenantId(SecureUtil.getTenantId());
 				feesTypeDesc.setCreateDept(Long.valueOf(SecureUtil.getDeptId()));
@@ -137,6 +143,8 @@ public class FeesDescServiceImpl extends ServiceImpl<FeesDescMapper, FeesDesc> i
 				feesTypeDescService.save(feesTypeDesc);
 			});
 		}
-	};
+	}
+
+	;
 
 }

+ 41 - 26
blade-service/blade-client/src/main/java/org/springblade/client/fees/service/impl/FeesTypeServiceImpl.java

@@ -16,15 +16,16 @@
  */
 package org.springblade.client.fees.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.core.toolkit.Wrappers;
-import org.springblade.client.entity.CorpsType;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springblade.client.entity.FeesType;
-import org.springblade.client.vo.FeesTypeVO;
 import org.springblade.client.fees.mapper.FeesTypeMapper;
 import org.springblade.client.fees.service.IFeesTypeService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springblade.client.vo.FeesTypeVO;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tool.api.R;
@@ -34,7 +35,6 @@ import org.springblade.core.tool.utils.StringPool;
 import org.springblade.system.user.entity.User;
 import org.springblade.system.user.feign.IUserClient;
 import org.springframework.stereotype.Service;
-import com.baomidou.mybatisplus.core.metadata.IPage;
 
 import java.util.ArrayList;
 import java.util.Date;
@@ -58,22 +58,22 @@ public class FeesTypeServiceImpl extends ServiceImpl<FeesTypeMapper, FeesType> i
 	@Override
 	public IPage<FeesTypeVO> selectFeesTypePage(IPage<FeesTypeVO> page, FeesTypeVO feesType) {
 		List<FeesTypeVO> feesTypeVOS = baseMapper.selectFeesTypePage(page, feesType);
-		if (CollectionUtils.isNotEmpty(feesTypeVOS)){
-			feesTypeVOS.stream().forEach(item ->{
+		if (CollectionUtils.isNotEmpty(feesTypeVOS)) {
+			feesTypeVOS.stream().forEach(item -> {
 				//获取上级中文名
 				FeesType type = baseMapper.selectById(item.getParentId());
-				if (type != null){
+				if (type != null) {
 					item.setParentName(type.getCname());
 				}
 				//获取创建人中文名
 				R<User> createUser = userClient.userInfoById(item.getCreateUser());
-				if (createUser.isSuccess()){
+				if (createUser.isSuccess()) {
 					item.setCreateUserName(createUser.getData().getName());
 				}
 				//获取修改人中文名
-				if (item.getUpdateUser() != null){
+				if (item.getUpdateUser() != null) {
 					R<User> updateUser = userClient.userInfoById(item.getCreateUser());
-					if (updateUser.isSuccess()){
+					if (updateUser.isSuccess()) {
 						item.setUpdateUserName(updateUser.getData().getName());
 					}
 				}
@@ -84,7 +84,7 @@ public class FeesTypeServiceImpl extends ServiceImpl<FeesTypeMapper, FeesType> i
 
 	@Override
 	public List<FeesTypeVO> tree(String tenantId) {
-		if (StringUtils.isBlank(tenantId)){
+		if (StringUtils.isBlank(tenantId)) {
 			tenantId = SecureUtil.getTenantId();
 		}
 		return ForestNodeMerger.merge(baseMapper.tree(tenantId));
@@ -92,24 +92,24 @@ public class FeesTypeServiceImpl extends ServiceImpl<FeesTypeMapper, FeesType> i
 
 	@Override
 	public FeesType saveMessage(FeesType feesType) {
-		if (feesType.getParentId() != null){
+		if (feesType.getParentId() != null) {
 			FeesType type = getById(feesType.getParentId());
 			if (type != null && feesType.getId() != null && Func.toLong(feesType.getParentId()) == Func.toLong(feesType.getId())) {
 				throw new ServiceException("父节点不可选择自身!");
 			}
-			if (type != null){
+			if (type != null) {
 				String ancestors = type.getAncestors() + StringPool.COMMA + feesType.getParentId();
 				feesType.setAncestors(ancestors);
 			}
 		}
-		if (StringUtils.isBlank(feesType.getTenantId())){
+		if (StringUtils.isBlank(feesType.getTenantId())) {
 			feesType.setTenantId(SecureUtil.getTenantId());
 		}
-		if (feesType.getId() == null){
+		if (feesType.getId() == null) {
 			feesType.setCreateUser(SecureUtil.getUserId());
 			feesType.setCreateTime(new Date());
 			baseMapper.insert(feesType);
-		}else {
+		} else {
 			feesType.setUpdateUser(SecureUtil.getUserId());
 			feesType.setUpdateTime(new Date());
 			baseMapper.updateById(feesType);
@@ -121,7 +121,7 @@ public class FeesTypeServiceImpl extends ServiceImpl<FeesTypeMapper, FeesType> i
 	public FeesType getMessageId(FeesType feesType) {
 		FeesType type = baseMapper.selectById(feesType.getId());
 		FeesType selectById = baseMapper.selectById(type.getParentId());
-		if (selectById != null){
+		if (selectById != null) {
 			type.setParentName(selectById.getCname());
 		}
 		return type;
@@ -129,36 +129,37 @@ public class FeesTypeServiceImpl extends ServiceImpl<FeesTypeMapper, FeesType> i
 
 	@Override
 	public List<FeesTypeVO> lazyTree(String tenantId, Long parentId) {
-		if (StringUtils.isBlank(tenantId)){
+		if (StringUtils.isBlank(tenantId)) {
 			tenantId = SecureUtil.getTenantId();
 		}
-		return baseMapper.lazyTree(tenantId,parentId);
+		return baseMapper.lazyTree(tenantId, parentId);
 	}
 
 	@Override
 	public String selectFeesTypeCname(FeesType feesType) {
-		FeesType feesTypeCname = baseMapper.selectFeesTypeCname(feesType.getCname(),feesType.getTenantId());
-		if (feesTypeCname != null && feesType.getId() == null){
+		FeesType feesTypeCname = baseMapper.selectFeesTypeCname(feesType.getCname(), feesType.getTenantId());
+		if (feesTypeCname != null && feesType.getId() == null) {
 			return "NotUNIQUE";
-		}else if (feesTypeCname != null && !feesType.getId().equals(feesTypeCname.getId())){
+		} else if (feesTypeCname != null && !feesType.getId().equals(feesTypeCname.getId())) {
 			return "NotUNIQUE";
-		}else {
+		} else {
 			return "UNIQUE";
 		}
 	}
 
 	/**
 	 * 根据费用类别获取费用的子类别
+	 *
 	 * @param feeTypeId
 	 * @return
 	 */
-	public List<Long> feesTypeIds(String feeTypeId){
-		if (StringUtils.isBlank(feeTypeId)){
+	public List<Long> feesTypeIds(String feeTypeId) {
+		if (StringUtils.isBlank(feeTypeId)) {
 			return null;
 		}
 		List<Long> feesTypeIdList = new ArrayList<>();
 		List<FeesType> corpsTypes = baseMapper.selectList(Wrappers.<FeesType>query().lambda().like(FeesType::getAncestors, feeTypeId));
-		if (CollectionUtils.isNotEmpty(corpsTypes)){
+		if (CollectionUtils.isNotEmpty(corpsTypes)) {
 			List<Long> collect = corpsTypes.stream().map(FeesType::getId).collect(Collectors.toList());
 			feesTypeIdList.addAll(collect);
 		}
@@ -166,4 +167,18 @@ public class FeesTypeServiceImpl extends ServiceImpl<FeesTypeMapper, FeesType> i
 		return feesTypeIdList;
 	}
 
+	/**
+	 * 递归查询ID
+	 */
+	public void selectChildById(Long id, List<Long> idList) {
+		LambdaQueryWrapper<FeesType> idListWrapper = new LambdaQueryWrapper<>();
+		idListWrapper.select(FeesType::getId);
+		idListWrapper.eq(FeesType::getParentId, id);
+		List<FeesType> childIdList = baseMapper.selectList(idListWrapper);
+		childIdList.forEach(item -> {
+			idList.add(item.getId());
+			this.selectChildById(item.getId(), idList);
+		});
+	}
+
 }

+ 123 - 141
blade-service/blade-client/src/main/java/org/springblade/client/goods/controller/GoodsDescController.java

@@ -16,32 +16,25 @@
  */
 package org.springblade.client.goods.controller;
 
-import com.alibaba.nacos.api.utils.StringUtils;
 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.extension.plugins.pagination.Page;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import lombok.AllArgsConstructor;
-
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.Valid;
-
-import org.springblade.client.corps.excel.CorpsExcel;
-import org.springblade.client.corps.excel.CorpsImport;
-import org.springblade.client.entity.GoodsDesc;
-import org.springblade.client.entity.GoodsFiles;
-import org.springblade.client.entity.GoodsPrice;
-import org.springblade.client.entity.GoodsType;
+import org.apache.commons.lang3.StringUtils;
+import org.springblade.client.corps.service.ICorpsDescService;
 import org.springblade.client.entity.*;
 import org.springblade.client.goods.enums.GoodsTypeEnum;
 import org.springblade.client.goods.excel.GoodsExcel;
-import org.springblade.client.goods.excel.GoodsImport;
 import org.springblade.client.goods.excel.GoodsInfoExcel;
 import org.springblade.client.goods.excel.GoodsOutExcel;
 import org.springblade.client.goods.service.*;
+import org.springblade.client.vo.GoodsDescVO;
+import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.excel.util.ExcelUtil;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
@@ -56,11 +49,10 @@ import org.springblade.stock.feign.IStockGoodsClient;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import org.springblade.client.vo.GoodsDescVO;
-import org.springblade.core.boot.ctrl.BladeController;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
 import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -80,18 +72,21 @@ import java.util.stream.Collectors;
 public class GoodsDescController extends BladeController {
 
 	private final IGoodsDescService goodsDescService;
-	@Autowired
-	private IGoodsPriceService goodsPriceService;
-    @Autowired
-	private IGoodsFilesService goodsFilesService;
-    @Autowired
-	private IGoodsSpecificationService goodsSpecificationService;
 
-    private final IGoodsTypeService goodsDescType;
+	private final IGoodsPriceService goodsPriceService;
+
+	private final IGoodsFilesService goodsFilesService;
 
-    private final IStockGoodsClient stockGoodsClient;//库存接口
+	private final IGoodsSpecificationService goodsSpecificationService;
+
+	private final IGoodsTypeService goodsDescType;
+
+	private final IStockGoodsClient stockGoodsClient;//库存接口
 
 	private final IOrderItemsClient orderItemsClient;
+
+	private final ICorpsDescService corpsDescService;
+
 	/**
 	 * 详情
 	 */
@@ -111,12 +106,12 @@ public class GoodsDescController extends BladeController {
 	@GetMapping("/list")
 	@ApiOperationSupport(order = 2)
 	@ApiOperation(value = "分页", notes = "传入goodsDesc")
-		public R<IPage<GoodsDescVO>> list(GoodsDescVO goodsDesc, Query query) {
-			goodsDesc.setTenantId(SecureUtil.getTenantId());
-			goodsDesc.setIsDeleted(0);
-			IPage<GoodsDescVO> pages = goodsDescService.selectGoodsDescPage(Condition.getPage(query),goodsDesc);
-			return R.data(pages);
-		}
+	public R<IPage<GoodsDescVO>> list(GoodsDescVO goodsDesc, Query query) {
+		goodsDesc.setTenantId(SecureUtil.getTenantId());
+		goodsDesc.setIsDeleted(0);
+		IPage<GoodsDescVO> pages = goodsDescService.selectGoodsDescPage(Condition.getPage(query), goodsDesc);
+		return R.data(pages);
+	}
 
 
 	@GetMapping("/descList")
@@ -126,70 +121,51 @@ public class GoodsDescController extends BladeController {
 					 @RequestParam(name = "size", defaultValue = "10") Integer size,
 					 @RequestParam(name = "cname", required = false) String cname,
 					 @RequestParam(name = "code", required = false) String code,
-					 @RequestParam(name = "goodsTypeId", required = false) String goodsTypeId
-					 )
-	{
-		Boolean flag=false;
-		List<Long> typeIds=null;
-		if(!StringUtils.isBlank(goodsTypeId))
-		{
-			//先查询这个typeId是不是顶级, 如果是顶级把所有下级参数都查出来
-			GoodsType goodsType = goodsDescType.getById(goodsTypeId);
-			if(goodsType==null)
-			{
-				throw new SecurityException("查不到指定商品类型信息");
-			}
-			Long parentId = goodsType.getParentId();
-			//如果是一级分类,查询所有的二级分类
-			if(parentId==0)
-			{
-              LambdaQueryWrapper<GoodsType> goodsTypeLambdaQueryWrapper=new LambdaQueryWrapper<>();
-				goodsTypeLambdaQueryWrapper
-					.eq(GoodsType::getParentId,goodsTypeId)
-					.eq(GoodsType::getIsDeleted,0)
-					.eq(GoodsType::getTenantId,AuthUtil.getTenantId());
-				typeIds = goodsDescType.list(goodsTypeLambdaQueryWrapper).stream().map(GoodsType::getId).collect(Collectors.toList());
-			    if(CollectionUtils.isNotEmpty(typeIds))
-			    {
-					flag=true;
-				}
-			}
+					 @RequestParam(name = "goodsTypeId", required = false) String goodsTypeId,
+					 @RequestParam(name = "belongToCorpId", required = false) String belongToCorpId) {
+
+		LambdaQueryWrapper<GoodsDesc> goodsDescLambdaQueryWrapper = new LambdaQueryWrapper<>();
+
+		//指定分类为一级分类,查询此分类所有二级分类的商品
+		if (StringUtils.isNotBlank(goodsTypeId)) {
+			Long goodsId = Long.parseLong(goodsTypeId);
+			List<Long> goodsIdList = new ArrayList<>();
+			selectChildById(goodsId, goodsIdList);
+			goodsIdList.add(goodsId);
+
+			goodsDescLambdaQueryWrapper.in(GoodsDesc::getGoodsTypeId, goodsIdList);
 		}
 
+		if (StringUtils.isNotBlank(belongToCorpId)) {
+			LambdaQueryWrapper<CorpsDesc> gysIdListQueryWrapper = new LambdaQueryWrapper<>();
+			gysIdListQueryWrapper.select(CorpsDesc::getId)
+				.eq(CorpsDesc::getCorpType, "GYS")
+				.eq(CorpsDesc::getIsDeleted, 0)
+				.eq(CorpsDesc::getTenantId, AuthUtil.getTenantId());
 
-		LambdaQueryWrapper<GoodsDesc> goodsDescLambdaQueryWrapper=new LambdaQueryWrapper<>();
-
-		    //指定分类为一级分类,查询此分类所有二级分类的商品
-			if(flag)
-			{
-				goodsDescLambdaQueryWrapper	.in(GoodsDesc::getGoodsTypeId,typeIds);
-			}
-			//查询指定分类下的所有商品
-			else
-			{
-				goodsDescLambdaQueryWrapper	.like(!StringUtils.isBlank(goodsTypeId),GoodsDesc::getGoodsTypeId,goodsTypeId);
-			}
-			goodsDescLambdaQueryWrapper
-			.like(!StringUtils.isBlank(cname),GoodsDesc::getCname,cname)
-			.like(!StringUtils.isBlank(code),GoodsDesc::getCode,code)
-			.eq(GoodsDesc::getTenantId,AuthUtil.getTenantId())
-			.eq(GoodsDesc::getType,0)
-		    .orderByDesc(GoodsDesc::getCreateTime);
-		Page<GoodsDesc> page=new Page<>(current,size);
-		IPage<GoodsDesc> iPage=goodsDescService.page(page,goodsDescLambdaQueryWrapper);
-		if(CollectionUtils.isNotEmpty(iPage.getRecords()))
-		{
-			iPage.getRecords().forEach(e->{
+			List<Long> gysIdList = corpsDescService.list(gysIdListQueryWrapper).stream().map(CorpsDesc::getId).collect(Collectors.toList());
+			goodsDescLambdaQueryWrapper.in(GoodsDesc::getCorpId, gysIdList);
+		}
+
+		goodsDescLambdaQueryWrapper
+			.like(!StringUtils.isBlank(cname), GoodsDesc::getCname, cname)
+			.like(!StringUtils.isBlank(code), GoodsDesc::getCode, code)
+			.eq(GoodsDesc::getTenantId, AuthUtil.getTenantId())
+			.eq(GoodsDesc::getType, 0)
+			.orderByDesc(GoodsDesc::getCreateTime);
+		Page<GoodsDesc> page = new Page<>(current, size);
+		IPage<GoodsDesc> iPage = goodsDescService.page(page, goodsDescLambdaQueryWrapper);
+		if (CollectionUtils.isNotEmpty(iPage.getRecords())) {
+			iPage.getRecords().forEach(e -> {
 				String TypeId = e.getGoodsTypeId();
 				String[] split = TypeId.split(",");
 				List<String> stringList = Arrays.asList(split);
-				LambdaQueryWrapper<GoodsType> goodsTypeLambdaQueryWrapper=new LambdaQueryWrapper<>();
-				goodsTypeLambdaQueryWrapper.in(GoodsType::getId,stringList);
+				LambdaQueryWrapper<GoodsType> goodsTypeLambdaQueryWrapper = new LambdaQueryWrapper<>();
+				goodsTypeLambdaQueryWrapper.in(GoodsType::getId, stringList);
 				List<GoodsType> types = goodsDescType.list(goodsTypeLambdaQueryWrapper);
-				if(CollectionUtils.isNotEmpty(types))
-				{
+				if (CollectionUtils.isNotEmpty(types)) {
 					List<String> typeStr = types.stream().map(GoodsType::getCname).collect(Collectors.toList());
-					e.setGoodsTypeName(typeStr.toString().replace("[","").replace("]",""));
+					e.setGoodsTypeName(typeStr.toString().replace("[", "").replace("]", ""));
 				}
 			});
 		}
@@ -199,24 +175,22 @@ public class GoodsDescController extends BladeController {
 	@GetMapping("/findById")
 	@ApiOperationSupport(order = 2)
 	@ApiOperation(value = "分页", notes = "传入goodsDesc")
-	public R list(@RequestParam(name = "id", required = true) String id)
-	{
+	public R list(@RequestParam(name = "id", required = true) String id) {
 		GoodsDesc goodsDesc = goodsDescService.getById(id);
-		LambdaQueryWrapper<GoodsPrice> lambdaQueryWrapper=new LambdaQueryWrapper<>();
-		lambdaQueryWrapper.eq(GoodsPrice::getPid,id);
+		LambdaQueryWrapper<GoodsPrice> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(GoodsPrice::getPid, id);
 		List<GoodsPrice> priceList = goodsPriceService.list(lambdaQueryWrapper);
 
-		LambdaQueryWrapper<GoodsFiles> filesLambdaQueryWrapper=new LambdaQueryWrapper<>();
-		filesLambdaQueryWrapper.eq(GoodsFiles::getPid,id);
+		LambdaQueryWrapper<GoodsFiles> filesLambdaQueryWrapper = new LambdaQueryWrapper<>();
+		filesLambdaQueryWrapper.eq(GoodsFiles::getPid, id);
 		List<GoodsFiles> filesList = goodsFilesService.list(filesLambdaQueryWrapper);
 		//查询商品规格明细
 		LambdaQueryWrapper<GoodsSpecification> specificationWrapper = new LambdaQueryWrapper<>();
-		specificationWrapper.eq(GoodsSpecification::getPid,id);
-		specificationWrapper.eq(GoodsSpecification::getIsDeleted,0);
-		specificationWrapper.eq(GoodsSpecification::getTenantId,SecureUtil.getTenantId());
+		specificationWrapper.eq(GoodsSpecification::getPid, id);
+		specificationWrapper.eq(GoodsSpecification::getIsDeleted, 0);
+		specificationWrapper.eq(GoodsSpecification::getTenantId, SecureUtil.getTenantId());
 		List<GoodsSpecification> goodsSpecificationList = goodsSpecificationService.list(specificationWrapper);
-		if(!CollectionUtils.isEmpty(priceList))
-		{
+		if (!CollectionUtils.isEmpty(priceList)) {
 			List<GoodsPrice> sale = priceList.stream().filter(e -> e.getBillType().equals("0")).collect(Collectors.toList());
 			List<GoodsPrice> buy = priceList.stream().filter(e -> e.getBillType().equals("1")).collect(Collectors.toList());
 			goodsDesc.setSaleGoodsPrice(sale);
@@ -233,22 +207,19 @@ public class GoodsDescController extends BladeController {
 	@PostMapping("/modify")
 	@ApiOperationSupport(order = 2)
 	@ApiOperation(value = "分页", notes = "传入goodsDesc")
-	public R<?> modify(@RequestBody GoodsDesc goodsDesc)
-	{
+	public R<?> modify(@RequestBody GoodsDesc goodsDesc) {
 		goodsDescService.modify(goodsDesc);
 		return R.data(goodsDesc);
 	}
 
 	@DeleteMapping("delete")
-	public R delete(@RequestParam(name = "id", required = true) String id)
-	{
-		 goodsDescService.removeByIds(Func.toLongList(id));
+	public R delete(@RequestParam(name = "id", required = true) String id) {
+		goodsDescService.removeByIds(Func.toLongList(id));
 		return R.success("操作成功");
 	}
 
 	@DeleteMapping("priceDelete")
-	public R priceDelete(@RequestParam(name = "id", required = true) String id)
-	{
+	public R priceDelete(@RequestParam(name = "id", required = true) String id) {
 		goodsPriceService.removeById(id);
 		return R.success("操作成功");
 	}
@@ -285,15 +256,14 @@ public class GoodsDescController extends BladeController {
 	@ApiOperationSupport(order = 5)
 	@ApiOperation(value = "修改", notes = "传入goodsDesc")
 	public R update(@Valid @RequestBody GoodsDesc goodsDesc) {
-		if(goodsDesc.getId() == null){
-			return R.fail(500,"请选择要删除的数据");
+		if (goodsDesc.getId() == null) {
+			return R.fail(500, "请选择要删除的数据");
 		}
 		goodsDesc.setIsDeleted(1);
 
 
 		R<List<OrderItems>> listR = orderItemsClient.listByItemId(goodsDesc.getId());
-		if(listR.isSuccess()&&listR.getData().size()>0)
-		{
+		if (listR.isSuccess() && listR.getData().size() > 0) {
 			throw new SecurityException("存在绑定明细信息,禁止删除");
 		}
 
@@ -307,14 +277,14 @@ public class GoodsDescController extends BladeController {
 	@ApiOperationSupport(order = 6)
 	@ApiOperation(value = "新增或修改", notes = "传入goodsDesc")
 	public R submit(@Valid @RequestBody GoodsDesc goodsDesc) {
-		if (StringUtils.isBlank(goodsDesc.getTenantId())){
+		if (StringUtils.isBlank(goodsDesc.getTenantId())) {
 			goodsDesc.setTenantId(SecureUtil.getTenantId());
 		}
-		if (StringUtils.isBlank(goodsDesc.getCode())){
-			return R.fail(500,"商品编码不能为空");
+		if (StringUtils.isBlank(goodsDesc.getCode())) {
+			return R.fail(500, "商品编码不能为空");
 		}
-		if (StringUtils.isBlank(goodsDesc.getCname())){
-			return R.fail(500,"商品名称不能为空");
+		if (StringUtils.isBlank(goodsDesc.getCname())) {
+			return R.fail(500, "商品名称不能为空");
 		}
 		// 校验唯一性
 		goodsDescService.selectGoodsCode(goodsDesc);
@@ -333,24 +303,24 @@ public class GoodsDescController extends BladeController {
 	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
 		return R.status(goodsDescService.removeByIds(Func.toLongList(ids)));
 	}
+
 	/**
 	 * 获取商品详情
 	 */
 	@GetMapping("/selectGoods")
 	@ApiOperationSupport(order = 5)
 	@ApiOperation(value = "获取商品详情", notes = "传入goodsDesc")
-	public R<IPage<GoodsDescVO>> selectGoods(GoodsDesc goodsDesc,Query query) {
+	public R<IPage<GoodsDescVO>> selectGoods(GoodsDesc goodsDesc, Query query) {
 		goodsDesc.setIsDeleted(0);
 		goodsDesc.setTenantId(AuthUtil.getTenantId());
 		goodsDesc.setType(GoodsTypeEnum.GOODS.getType());
 		IPage<GoodsDescVO> goodsDescVOIPage = goodsDescService.selectGoods(Condition.getPage(query), goodsDesc);
-		if(CollectionUtils.isNotEmpty(goodsDescVOIPage.getRecords()))
-		{
-			goodsDescVOIPage.getRecords().forEach(e->{
+		if (CollectionUtils.isNotEmpty(goodsDescVOIPage.getRecords())) {
+			goodsDescVOIPage.getRecords().forEach(e -> {
 				LambdaQueryWrapper<GoodsSpecification> specificationWrapper = new LambdaQueryWrapper<>();
-				specificationWrapper.eq(GoodsSpecification::getPid,e.getId());
-				specificationWrapper.eq(GoodsSpecification::getIsDeleted,0);
-				specificationWrapper.eq(GoodsSpecification::getTenantId,SecureUtil.getTenantId());
+				specificationWrapper.eq(GoodsSpecification::getPid, e.getId());
+				specificationWrapper.eq(GoodsSpecification::getIsDeleted, 0);
+				specificationWrapper.eq(GoodsSpecification::getTenantId, SecureUtil.getTenantId());
 				List<GoodsSpecification> goodsSpecificationList = goodsSpecificationService.list(specificationWrapper);
 				e.setGoodsSpecificationList(goodsSpecificationList);
 			});
@@ -367,11 +337,10 @@ public class GoodsDescController extends BladeController {
 	@ApiOperation(value = "导入商品资料", notes = "传入excel")
 	public R importUser(MultipartFile file) {
 		List<GoodsExcel> excelList = ExcelUtil.read(file, GoodsExcel.class);
-		if(CollectionUtils.isEmpty(excelList))
-		{
+		if (CollectionUtils.isEmpty(excelList)) {
 			throw new SecurityException("数据不能为空");
 		}
-		return goodsDescService.importGoods(excelList,false);
+		return goodsDescService.importGoods(excelList, false);
 	}
 
 	/**
@@ -405,32 +374,31 @@ public class GoodsDescController extends BladeController {
 	@ApiOperation(value = "导入商品资料", notes = "传入excel")
 	public R importDescInfo(MultipartFile file) {
 		List<GoodsInfoExcel> excelList = ExcelUtil.read(file, GoodsInfoExcel.class);
-		if(CollectionUtils.isEmpty(excelList))
-		{
+		if (CollectionUtils.isEmpty(excelList)) {
 			throw new SecurityException("数据不能为空");
 		}
-		return goodsDescService.importGoodsInfo(excelList,false);
+		return goodsDescService.importGoodsInfo(excelList, false);
 	}
 
-	/** 导出商品*/
+	/**
+	 * 导出商品
+	 */
 	@GetMapping("/export-out-info")
 	@ApiOperationSupport(order = 9)
 	@ApiOperation(value = "导出模板")
-	public void exportOutInfo(HttpServletResponse response)
-	{
+	public void exportOutInfo(HttpServletResponse response) {
 		List<GoodsOutExcel> list = new ArrayList<>();
-		LambdaQueryWrapper<GoodsDesc> goodsDescLambdaQueryWrapper=new LambdaQueryWrapper<>();
+		LambdaQueryWrapper<GoodsDesc> goodsDescLambdaQueryWrapper = new LambdaQueryWrapper<>();
 		goodsDescLambdaQueryWrapper
-			.eq(GoodsDesc::getType,0)
+			.eq(GoodsDesc::getType, 0)
 			.orderByAsc(GoodsDesc::getCode)
-			.eq(GoodsDesc::getIsDeleted,0)
-			.eq(GoodsDesc::getTenantId,AuthUtil.getTenantId());
+			.eq(GoodsDesc::getIsDeleted, 0)
+			.eq(GoodsDesc::getTenantId, AuthUtil.getTenantId());
 		List<GoodsDesc> goodsDescs = goodsDescService.list(goodsDescLambdaQueryWrapper);
-		if(CollectionUtils.isNotEmpty(goodsDescs))
-		{
-			goodsDescs.forEach(e->{
-				GoodsOutExcel goodsOutExcel=new GoodsOutExcel();
-				BeanUtils.copyProperties(e,goodsOutExcel);
+		if (CollectionUtils.isNotEmpty(goodsDescs)) {
+			goodsDescs.forEach(e -> {
+				GoodsOutExcel goodsOutExcel = new GoodsOutExcel();
+				BeanUtils.copyProperties(e, goodsOutExcel);
 				//查询库存
 				StockGoods stockGoods = new StockGoods();
 				stockGoods.setGoodsId(e.getId());
@@ -438,9 +406,9 @@ public class GoodsDescController extends BladeController {
 				stockGoods.setItemType(e.getTypeno());
 				stockGoods.setTenantId(SecureUtil.getTenantId());
 				List<StockGoods> stockGoodsList = stockGoodsClient.postListStockByCondition(stockGoods);
-				if (CollectionUtils.isNotEmpty(stockGoodsList)){
-					goodsOutExcel.setStorageQuantity(stockGoodsList.stream().filter(ei->ei.getSurplusRouteQuantity()!=null).map(StockGoods::getSurplusRouteQuantity).reduce(BigDecimal.ZERO,BigDecimal::add));
-				}else {
+				if (CollectionUtils.isNotEmpty(stockGoodsList)) {
+					goodsOutExcel.setStorageQuantity(stockGoodsList.stream().filter(ei -> ei.getSurplusRouteQuantity() != null).map(StockGoods::getSurplusRouteQuantity).reduce(BigDecimal.ZERO, BigDecimal::add));
+				} else {
 					goodsOutExcel.setStorageQuantity(BigDecimal.ZERO);
 				}
 				list.add(goodsOutExcel);
@@ -448,4 +416,18 @@ public class GoodsDescController extends BladeController {
 		}
 		ExcelUtil.export(response, "导出产品信息", "导出数据表", list, GoodsOutExcel.class);
 	}
+
+	/**
+	 * 递归查询ID
+	 */
+	private void selectChildById(Long id, List<Long> idList) {
+		LambdaQueryWrapper<GoodsType> idListWrapper = new LambdaQueryWrapper<>();
+		idListWrapper.select(GoodsType::getId);
+		idListWrapper.eq(GoodsType::getParentId, id);
+		List<GoodsType> childIdList = goodsDescType.list(idListWrapper);
+		childIdList.forEach(item -> {
+			idList.add(item.getId());
+			this.selectChildById(item.getId(), idList);
+		});
+	}
 }

+ 4 - 8
blade-service/blade-client/src/main/java/org/springblade/client/port/mapper/BasicPortDescMapper.java

@@ -3,27 +3,23 @@ package org.springblade.client.port.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 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;
 
 /**
- *
- *
  * @author castiel
  * @email sunlightcs@gmail.com
  * @date 2021-10-29 10:50:06
  */
 @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,@Param("typeId") Long typeId,@Param("tenantId") String tenantId,@Param("enName") String enName);
+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, @Param("typeIdList") List<Long> typeIdList, @Param("tenantId") String tenantId, @Param("enName") String enName);
 
 	List<PortTypeVO> tree(@Param("tenantId") String tenantId);
 }

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

@@ -15,34 +15,34 @@
     <select id="listBasicPortDesc" resultType="org.springblade.client.dto.BasicPortDescDTO">
 
     SELECT
-	b.id as id,
-	b.`code` as code,
-	b.`name` as `name`,
-	b.en_name as enName,
-	b.un_code as unCode,
-	b.country as country,
-	b.province as province,
-	b.city as city,
-	b.`line` as `line`,
-	b.remarks as remarks,
-	b.create_user as createUser,
-	b.create_time as createTime,
-	b.update_user as updateUser,
-	b.update_time as updateTime,
-	b.update_user_name as updateUserName,
-	b.create_user_name as createUserName,
-	b.`status` as `status`,
-	a.`name` as typeName,
-	a.id as typeId
-FROM
-	basic_port_type a,
-	basic_port_desc b,
-	basic_port_type_desc c
-WHERE
-    b.tenant_id=#{tenantId}
-	and a.id = c.ports_type_id
-	AND b.id = c.ports_id
-    and b.is_deleted=0
+        b.id as id,
+        b.`code` as code,
+        b.`name` as `name`,
+        b.en_name as enName,
+        b.un_code as unCode,
+        b.country as country,
+        b.province as province,
+        b.city as city,
+        b.`line` as `line`,
+        b.remarks as remarks,
+        b.create_user as createUser,
+        b.create_time as createTime,
+        b.update_user as updateUser,
+        b.update_time as updateTime,
+        b.update_user_name as updateUserName,
+        b.create_user_name as createUserName,
+        b.`status` as `status`,
+        a.`name` as typeName,
+        a.id as typeId
+    FROM
+        basic_port_type a,
+        basic_port_desc b,
+        basic_port_type_desc c
+    WHERE
+        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},'%')
@@ -56,8 +56,12 @@ WHERE
         <if test="unCode != null and unCode != ''">
             AND b.un_code=#{unCode}
         </if>
-        <if test="typeId != null">
-            AND a.id=#{typeId}
+        <if test="typeIdList != null and typeIdList.size > 0">
+            AND a.id in (
+            <foreach collection="typeIdList" index="index" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+            )
         </if>
         <if test="status != null and status != ''">
             AND b.status in
@@ -67,9 +71,6 @@ WHERE
                 </foreach>
             )
         </if>
-
-
-
     </select>
 
 

+ 48 - 38
blade-service/blade-client/src/main/java/org/springblade/client/port/service/impl/BasicPortDescServiceImpl.java

@@ -8,10 +8,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.springblade.client.container.mapper.BasicContainerDescMapper;
 import org.springblade.client.container.service.BasicContainerDescService;
 import org.springblade.client.dto.BasicPortDescDTO;
-import org.springblade.client.entity.BasicContainerDesc;
-import org.springblade.client.entity.BasicPortDesc;
-import org.springblade.client.entity.BasicPortType;
-import org.springblade.client.entity.BasicPortTypeDesc;
+import org.springblade.client.entity.*;
 import org.springblade.client.port.mapper.BasicPortDescMapper;
 import org.springblade.client.port.mapper.BasicPortTypeDescMapper;
 import org.springblade.client.port.mapper.BasicPortTypeMapper;
@@ -27,6 +24,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.validation.constraints.NotBlank;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -34,36 +32,41 @@ import java.util.stream.Collectors;
 
 
 @Service
-public class BasicPortDescServiceImpl extends BaseServiceImpl<BasicPortDescMapper, BasicPortDesc> implements BasicPortDescService
-{
-   @Autowired
-   private BasicPortDescMapper basicPortDescMapper;
-   @Autowired
-   private BasicPortTypeMapper basicPortTypeMapper;
-   @Autowired
-   private BasicPortTypeDescMapper basicPortTypeDescMapper;
+public class BasicPortDescServiceImpl extends BaseServiceImpl<BasicPortDescMapper, BasicPortDesc> implements BasicPortDescService {
+	@Autowired
+	private BasicPortDescMapper basicPortDescMapper;
+
+	@Autowired
+	private BasicPortTypeMapper basicPortTypeMapper;
+
+	@Autowired
+	private BasicPortTypeDescMapper basicPortTypeDescMapper;
 
 	@Override
-	public IPage<BasicPortDescDTO> listBasicPortDesc(Page<BasicPortDescDTO> page, String portName, String lines, String unCode, String status,Long typeId,String tenantId,String enName)
-	{
-		return	basicPortDescMapper.listBasicPortDesc(page,portName,lines,unCode,status,typeId,tenantId,enName);
+	public IPage<BasicPortDescDTO> listBasicPortDesc(Page<BasicPortDescDTO> page, String portName, String lines, String unCode, String status, Long typeId, String tenantId, String enName) {
+		List<Long> portTypeIdList = new ArrayList<>();
+		if (typeId != null) {
+			selectChildById(typeId, portTypeIdList);
+			portTypeIdList.add(typeId);
+		}
+
+		return basicPortDescMapper.listBasicPortDesc(page, portName, lines, unCode, status, portTypeIdList, tenantId, enName);
 	}
 
 	@Override
 	@Transactional
-	public void addBasicPortDesc(BasicPortDescDTO dto)
-	{
+	public void addBasicPortDesc(BasicPortDescDTO dto) {
 		//类型id
 		Long typeId = dto.getTypeId();
-		BasicPortDesc basicPortDesc=new BasicPortDesc();
-		BeanUtils.copyProperties(dto,basicPortDesc);
+		BasicPortDesc basicPortDesc = new BasicPortDesc();
+		BeanUtils.copyProperties(dto, basicPortDesc);
 		basicPortDesc.setCreateTime(new Date());
 		basicPortDesc.setCreateUser(SecureUtil.getUserId());
 		basicPortDesc.setCreateUserName(SecureUtil.getUser().getUserName());
 
 		basicPortDescMapper.insert(basicPortDesc);
 
-		BasicPortTypeDesc middle=new BasicPortTypeDesc();
+		BasicPortTypeDesc middle = new BasicPortTypeDesc();
 		middle.setTenantId(AuthUtil.getTenantId());
 		middle.setPortsId(basicPortDesc.getId());
 		middle.setPortsTypeId(typeId);
@@ -76,8 +79,7 @@ public class BasicPortDescServiceImpl extends BaseServiceImpl<BasicPortDescMappe
 	}
 
 	@Override
-	public List<PortTypeVO> tree(String tenantId)
-	{
+	public List<PortTypeVO> tree(String tenantId) {
 		if (StringUtils.isBlank(tenantId)) {
 			tenantId = SecureUtil.getTenantId();
 		}
@@ -86,29 +88,26 @@ public class BasicPortDescServiceImpl extends BaseServiceImpl<BasicPortDescMappe
 
 	@Override
 	@Transactional
-	public void updateBasicPortDesc(BasicPortDescDTO dto)
-	{
+	public void updateBasicPortDesc(BasicPortDescDTO dto) {
 		//类型id
 		Long typeId = dto.getTypeId();
-		BasicPortDesc basicPortDesc=new BasicPortDesc();
-		BeanUtils.copyProperties(dto,basicPortDesc);
+		BasicPortDesc basicPortDesc = new BasicPortDesc();
+		BeanUtils.copyProperties(dto, basicPortDesc);
 		basicPortDescMapper.updateById(basicPortDesc);
 
 		//查询中间关系表, 是否需要解绑
-		LambdaQueryWrapper<BasicPortTypeDesc> lambdaQueryWrapper=new LambdaQueryWrapper<>();
-		lambdaQueryWrapper.eq(BasicPortTypeDesc::getPortsId,basicPortDesc.getId());
+		LambdaQueryWrapper<BasicPortTypeDesc> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(BasicPortTypeDesc::getPortsId, basicPortDesc.getId());
 		List<BasicPortTypeDesc> basicPortTypeDescs = basicPortTypeDescMapper.selectList(lambdaQueryWrapper);
 		//如果存在绑定关系,检查是否需要换绑
-		if(!CollectionUtils.isEmpty(basicPortTypeDescs))
-		{
+		if (!CollectionUtils.isEmpty(basicPortTypeDescs)) {
 			List<BasicPortTypeDesc> collect = basicPortTypeDescs.stream().filter(e -> e.getPortsTypeId() == typeId).collect(Collectors.toList());
 			//如果为空,解绑操作
-			if(CollectionUtils.isEmpty(collect))
-			{
-				basicPortTypeDescs.forEach(e->{
+			if (CollectionUtils.isEmpty(collect)) {
+				basicPortTypeDescs.forEach(e -> {
 					basicPortTypeDescMapper.deleteById(e.getId());
 				});
-				BasicPortTypeDesc middle=new BasicPortTypeDesc();
+				BasicPortTypeDesc middle = new BasicPortTypeDesc();
 				middle.setTenantId(AuthUtil.getTenantId());
 				middle.setPortsId(basicPortDesc.getId());
 				middle.setPortsTypeId(typeId);
@@ -120,9 +119,8 @@ public class BasicPortDescServiceImpl extends BaseServiceImpl<BasicPortDescMappe
 
 		}
 		//如果没有绑定关系,则完成新增
-		else
-		{
-			BasicPortTypeDesc middle=new BasicPortTypeDesc();
+		else {
+			BasicPortTypeDesc middle = new BasicPortTypeDesc();
 			middle.setTenantId(AuthUtil.getTenantId());
 			middle.setPortsId(basicPortDesc.getId());
 			middle.setPortsTypeId(typeId);
@@ -131,7 +129,19 @@ public class BasicPortDescServiceImpl extends BaseServiceImpl<BasicPortDescMappe
 			middle.setCreateUserName(SecureUtil.getUser().getUserName());
 			basicPortTypeDescMapper.insert(middle);
 		}
+	}
 
-
+	/**
+	 * 递归查询ID
+	 */
+	public void selectChildById(Long id, List<Long> idList) {
+		LambdaQueryWrapper<BasicPortType> idListWrapper = new LambdaQueryWrapper<>();
+		idListWrapper.select(BasicPortType::getId);
+		idListWrapper.eq(BasicPortType::getParentId, id);
+		List<BasicPortType> childIdList = basicPortTypeMapper.selectList(idListWrapper);
+		childIdList.forEach(item -> {
+			idList.add(item.getId());
+			this.selectChildById(item.getId(), idList);
+		});
 	}
 }

+ 22 - 18
blade-service/blade-client/src/main/java/org/springblade/client/serial/service/impl/StorageDescServiceImpl.java

@@ -17,20 +17,20 @@
 package org.springblade.client.serial.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.AllArgsConstructor;
 import org.springblade.client.entity.StorageDesc;
 import org.springblade.client.entity.StorageType;
 import org.springblade.client.entity.StorageTypeDesc;
-import org.springblade.client.vo.StorageDescVO;
 import org.springblade.client.serial.mapper.StorageDescMapper;
 import org.springblade.client.serial.service.IStorageDescService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springblade.client.vo.StorageDescVO;
 import org.springblade.core.secure.utils.SecureUtil;
 import org.springframework.stereotype.Service;
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -46,12 +46,16 @@ import java.util.Map;
 public class StorageDescServiceImpl extends ServiceImpl<StorageDescMapper, StorageDesc> implements IStorageDescService {
 	private StorageTypeDescServiceImpl storageTypeDescService;//仓库库区对应表
 	private StorageTypeServiceImpl storageTypeService;//仓库表
+
 	@Override
 	public IPage<StorageDescVO> selectStorageDescPage(IPage<StorageDescVO> page, StorageDescVO storageDesc) {
 		//获取仓库及下属仓库
-		if (storageDesc.getStorageTypeId() != null){
-			List<Long> longList = storageTypeService.storageTypeList(storageDesc.getStorageTypeId());
-			storageDesc.setStorageTypeIdList(longList);
+		if (storageDesc.getStorageTypeId() != null) {
+			Long storageTypeId = storageDesc.getStorageTypeId();
+			List<Long> feesTypeIdList = new ArrayList<>();
+			storageTypeService.selectChildById(storageTypeId, feesTypeIdList);
+			feesTypeIdList.add(storageTypeId);
+			storageDesc.setStorageTypeIdList(feesTypeIdList);
 		}
 		return page.setRecords(baseMapper.selectStorageDescPage(page, storageDesc));
 	}
@@ -60,12 +64,12 @@ public class StorageDescServiceImpl extends ServiceImpl<StorageDescMapper, Stora
 	@Transactional
 	public StorageDesc saveMessage(StorageDesc storageDesc) {
 		//保存库区信息
-		if (storageDesc.getId() == null){
+		if (storageDesc.getId() == null) {
 			storageDesc.setCreateTime(new Date());
 			storageDesc.setCreateUser(SecureUtil.getUserId());
 			storageDesc.setTenantId(SecureUtil.getTenantId());
 			baseMapper.insert(storageDesc);
-		}else {
+		} else {
 			storageDesc.setUpdateTime(new Date());
 			storageDesc.setUpdateUser(SecureUtil.getUserId());
 			storageDesc.setTenantId(SecureUtil.getTenantId());
@@ -81,11 +85,11 @@ public class StorageDescServiceImpl extends ServiceImpl<StorageDescMapper, Stora
 		StorageDesc desc = baseMapper.selectById(storageDesc.getId());
 		//获取库区和仓库对应表
 		StorageTypeDesc storageId = storageTypeDescService.getOne(new QueryWrapper<StorageTypeDesc>().eq("storage_id", desc.getId())
-		.eq("status",0));
-		if (storageId != null){
+			.eq("status", 0));
+		if (storageId != null) {
 			desc.setStorageTypeId(storageId.getStorageTypeId());
 			StorageType storageType = storageTypeService.getById(storageId.getStorageTypeId());
-			if (storageType != null){
+			if (storageType != null) {
 				desc.setStorageTypeName(storageType.getCname());
 			}
 		}
@@ -95,11 +99,11 @@ public class StorageDescServiceImpl extends ServiceImpl<StorageDescMapper, Stora
 	@Override
 	public String selectStorageDescCode(StorageDesc storageDesc) {
 		StorageDesc storageDescCode = baseMapper.selectStorageDescCode(storageDesc.getCode(), storageDesc.getTenantId());
-		if (storageDescCode != null && storageDesc.getId() == null){
+		if (storageDescCode != null && storageDesc.getId() == null) {
 			return "NotUNIQUE";
-		}else if (storageDescCode != null && !storageDesc.getId().equals(storageDescCode.getId())){
+		} else if (storageDescCode != null && !storageDesc.getId().equals(storageDescCode.getId())) {
 			return "NotUNIQUE";
-		}else {
+		} else {
 			return "UNIQUE";
 		}
 	}
@@ -107,11 +111,11 @@ public class StorageDescServiceImpl extends ServiceImpl<StorageDescMapper, Stora
 	@Override
 	public String selectStorageDescCname(StorageDesc storageDesc) {
 		StorageDesc storageDescCname = baseMapper.selectStorageDescCname(storageDesc.getCname(), storageDesc.getTenantId());
-		if (storageDescCname != null && storageDesc.getId() == null){
+		if (storageDescCname != null && storageDesc.getId() == null) {
 			return "NotUNIQUE";
-		}else if (storageDescCname != null && !storageDesc.getId().equals(storageDescCname.getId())){
+		} else if (storageDescCname != null && !storageDesc.getId().equals(storageDescCname.getId())) {
 			return "NotUNIQUE";
-		}else {
+		} else {
 			return "UNIQUE";
 		}
 	}

+ 14 - 18
blade-service/blade-client/src/main/java/org/springblade/client/serial/service/impl/StorageTypeServiceImpl.java

@@ -1,11 +1,13 @@
 package org.springblade.client.serial.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.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springblade.client.entity.CorpsType;
+import org.springblade.client.entity.FeesType;
 import org.springblade.client.entity.GoodsType;
 import org.springblade.client.entity.StorageType;
 import org.springblade.client.serial.mapper.StorageTypeMapper;
@@ -67,12 +69,12 @@ public class StorageTypeServiceImpl extends ServiceImpl<StorageTypeMapper, Stora
 
 	@Override
 	public StorageType saveMessage(StorageType storageType) {
-		if (storageType.getParentId() != null){
+		if (storageType.getParentId() != null) {
 			StorageType storage = getById(storageType.getParentId());
 			if (storage != null && storageType.getId() != null && Func.toLong(storageType.getParentId()) == Func.toLong(storageType.getId())) {
 				throw new ServiceException("父节点不可选择自身!");
 			}
-			if (storage != null){
+			if (storage != null) {
 				String ancestors = storage.getAncestors() + StringPool.COMMA + storageType.getParentId();
 				storageType.setAncestors(ancestors);
 			}
@@ -144,23 +146,17 @@ public class StorageTypeServiceImpl extends ServiceImpl<StorageTypeMapper, Stora
 	}
 
 	/**
-	 * 获取仓库及其下属仓库
-	 * @param storageTypeId
-	 * @return
+	 * 递归查询ID
 	 */
-	public List<Long> storageTypeList(Long storageTypeId){
-		if (storageTypeId == null){
-			return null;
-		}
-		List<Long> storageTypeList = new ArrayList<>();
-		List<StorageType> corpsTypes = baseMapper.selectList(Wrappers.<StorageType>query().lambda().like(StorageType::getAncestors, storageTypeId));
-		if (CollectionUtils.isNotEmpty(corpsTypes)){
-			List<Long> collect = corpsTypes.stream().map(StorageType::getId).collect(Collectors.toList());
-			storageTypeList.addAll(collect);
-		}
-		storageTypeList.add(Long.valueOf(storageTypeId));
-		return storageTypeList;
-
+	public void selectChildById(Long id, List<Long> idList) {
+		LambdaQueryWrapper<StorageType> idListWrapper = new LambdaQueryWrapper<>();
+		idListWrapper.select(StorageType::getId);
+		idListWrapper.eq(StorageType::getParentId, id);
+		List<StorageType> childIdList = baseMapper.selectList(idListWrapper);
+		childIdList.forEach(item -> {
+			idList.add(item.getId());
+			this.selectChildById(item.getId(), idList);
+		});
 	}
 
 }

+ 1 - 1
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/controller/DeliveryReportController.java

@@ -64,7 +64,7 @@ public class DeliveryReportController extends BladeController {
 		String goodsName = null;
 		R<GoodsDescVO> goods = goodsDescClient.selectGoodsMessage(reportVO.getGoodsId());
 		if (goods.isSuccess() && goods.getData() != null){
-			goodsName = goods.getData().getCode();
+			goodsName = goods.getData().getCname();
 		}
 
 		int year = reportVO.getYear();

+ 301 - 373
blade-service/blade-project/src/main/java/org/springblade/project/controller/ProjectController.java

@@ -3,19 +3,16 @@ package org.springblade.project.controller;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.obs.services.internal.security.EcsSecurityUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.AllArgsConstructor;
 import org.apache.commons.lang.StringUtils;
 import org.springblade.client.entity.CorpsDesc;
 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;
 import org.springblade.core.tool.utils.CollectionUtil;
 import org.springblade.project.entity.ServiceProject;
-
 import org.springblade.project.entity.ServiceProjectFiles;
 import org.springblade.project.entity.ServiceProjectItem;
 import org.springblade.project.service.ServiceProjectFilesService;
@@ -26,17 +23,13 @@ import org.springblade.system.entity.Dept;
 import org.springblade.system.entity.Tenant;
 import org.springblade.system.feign.ISysClient;
 import org.springblade.system.feign.ITenantClient;
-import org.springblade.system.user.entity.User;
 import org.springblade.system.user.feign.IUserClient;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 import springfox.documentation.annotations.ApiIgnore;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 
-import javax.management.relation.RoleResult;
 import java.math.BigDecimal;
-import java.security.Security;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -52,11 +45,11 @@ public class ProjectController {
 	private ServiceProjectItemService serviceProjectItemService;
 	@Autowired
 	private ServiceProjectFilesService serviceProjectFilesService;
-    @Autowired
+	@Autowired
 	private IUserClient userClient;
 	@Autowired
 	private ITenantClient iTenantClient;
-    @Autowired
+	@Autowired
 	private ICorpsDescClient corpsDescClient;//获取客户信息
 	@Autowired
 	private ISysClient iSysClient;//部门
@@ -75,38 +68,33 @@ public class ProjectController {
 							@RequestParam(name = "createStartDate", required = false) String createStartDate,
 							@RequestParam(name = "createEndDate", required = false) String createEndDate,
 							@RequestParam(name = "flag", required = true) int flag
-	)
-	{
+	) {
 		LambdaQueryWrapper<ServiceProject> serviceProjectLambdaQueryWrapper = new LambdaQueryWrapper<>();
 		//只显示未结算的
-		if(flag==2)
-		{
-			LambdaQueryWrapper<ServiceProjectItem> lambdaQueryWrapper=new LambdaQueryWrapper<>();
+		if (flag == 2) {
+			LambdaQueryWrapper<ServiceProjectItem> lambdaQueryWrapper = new LambdaQueryWrapper<>();
 			lambdaQueryWrapper
-				.eq(ServiceProjectItem::getStatus,0)
-				.eq(ServiceProjectItem::getIsDeleted,0);
+				.eq(ServiceProjectItem::getStatus, 0)
+				.eq(ServiceProjectItem::getIsDeleted, 0);
 			List<ServiceProjectItem> list = serviceProjectItemService.list(lambdaQueryWrapper);
 			//如果等于空,直接返回
-			if(CollectionUtils.isEmpty(list))
-			{
-			return R.data(null);
+			if (CollectionUtils.isEmpty(list)) {
+				return R.data(null);
 			}
 			//不为空
-			else
-			{
+			else {
 				List<Long> ids = list.stream().map(ServiceProjectItem::getPId).collect(Collectors.toList());
-				serviceProjectLambdaQueryWrapper.in(ServiceProject::getId,ids);
+				serviceProjectLambdaQueryWrapper.in(ServiceProject::getId, ids);
 			}
 
 		}
 
 		List<Long> corpIdList = Collections.emptyList();
-		if (StringUtils.isNotBlank(corpName))
-		{
+		if (StringUtils.isNotBlank(corpName)) {
 			corpIdList = corpsDescClient.listCorpIdByName(corpName);
 		}
 
-		serviceProjectLambdaQueryWrapper.between(StringUtils.isNotBlank(createStartDate)&&StringUtils.isNotBlank(createEndDate),ServiceProject::getCreateTime,createStartDate,createEndDate)
+		serviceProjectLambdaQueryWrapper.between(StringUtils.isNotBlank(createStartDate) && StringUtils.isNotBlank(createEndDate), ServiceProject::getCreateTime, createStartDate, createEndDate)
 			.eq(ServiceProject::getTenantId, AuthUtil.getTenantId())
 			.like(StringUtils.isNotBlank(dutyName), ServiceProject::getDutyName, dutyName)
 			.like(StringUtils.isNotBlank(remark), ServiceProject::getRemark, remark)
@@ -123,29 +111,25 @@ public class ProjectController {
 		List<ServiceProject> records = iPage.getRecords();
 
 		//客户名称
-		records.forEach(e->{
+		records.forEach(e -> {
 			R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(e.getCorpId());
-			if(corpMessage.isSuccess()&&corpMessage.getData()!=null)
-			{
+			if (corpMessage.isSuccess() && corpMessage.getData() != null) {
 				e.setCorpNames(corpMessage.getData().getCname());
 			}
 
 		});
 
 
-
 		//检查是否可以删除主表,没有子表信息 或者 子表status全部为0 就可以删除
-		if(flag==0)
-		{
-			records.forEach(k->{
-				LambdaQueryWrapper<ServiceProjectItem> lambdaQueryWrapper=new LambdaQueryWrapper<>();
+		if (flag == 0) {
+			records.forEach(k -> {
+				LambdaQueryWrapper<ServiceProjectItem> lambdaQueryWrapper = new LambdaQueryWrapper<>();
 				lambdaQueryWrapper
-					.eq(ServiceProjectItem::getIsDeleted,0)
-					.eq(ServiceProjectItem::getPId,k.getId())
-				    .gt(ServiceProjectItem::getStatus,0);
+					.eq(ServiceProjectItem::getIsDeleted, 0)
+					.eq(ServiceProjectItem::getPId, k.getId())
+					.gt(ServiceProjectItem::getStatus, 0);
 				List<ServiceProjectItem> projectItemList = serviceProjectItemService.list(lambdaQueryWrapper);
-				if(!CollectionUtils.isEmpty(projectItemList))
-				{
+				if (!CollectionUtils.isEmpty(projectItemList)) {
 					k.setAllowDelete(false);
 					k.setAccountName(projectItemList.get(0).getAccountName());
 					k.setPayTime(projectItemList.get(0).getPayTime());
@@ -155,25 +139,26 @@ public class ProjectController {
 
 		}
 		//flag=1为
-		if(flag==1)
-		{
-			records.forEach(e->{
-				LambdaQueryWrapper<ServiceProjectItem> lambdaQueryWrapper=new LambdaQueryWrapper<>();
+		if (flag == 1 || flag == 3) {
+			records.forEach(e -> {
+				LambdaQueryWrapper<ServiceProjectItem> lambdaQueryWrapper = new LambdaQueryWrapper<>();
 				lambdaQueryWrapper
-					.ge(ServiceProjectItem::getStatus,2)
-					.eq(ServiceProjectItem::getIsDeleted,0)
-					.eq(ServiceProjectItem::getPId,e.getId());
+					.ge(ServiceProjectItem::getStatus, 2)
+					.eq(ServiceProjectItem::getIsDeleted, 0)
+					.eq(ServiceProjectItem::getPId, e.getId());
 				List<ServiceProjectItem> itemList = serviceProjectItemService.list(lambdaQueryWrapper);
 				e.setItemList(itemList);
-				if(!CollectionUtils.isEmpty(itemList))
-				{
+				if (!CollectionUtils.isEmpty(itemList)) {
 					e.setAccountName(itemList.get(0).getAccountName());
 					e.setPayTime(itemList.get(0).getPayTime());
 				}
 
 			});
-			List<ServiceProject> collect = records.stream().filter(e -> !CollectionUtils.isEmpty(e.getItemList())).collect(Collectors.toList());
-			iPage.setRecords(collect);
+
+			if (flag == 1) {
+				List<ServiceProject> collect = records.stream().filter(e -> !CollectionUtils.isEmpty(e.getItemList())).collect(Collectors.toList());
+				iPage.setRecords(collect);
+			}
 		}
 
 		return R.data(iPage);
@@ -181,16 +166,14 @@ public class ProjectController {
 	}
 
 	@PutMapping("modify")
-	public R edit(@RequestBody ServiceProject serviceProject)
-	{
+	public R edit(@RequestBody ServiceProject serviceProject) {
 		serviceProjectService.modify(serviceProject);
 		return R.data(serviceProject.getId());
 	}
 
 	@DeleteMapping("delete")
-	public R delete (@RequestParam(name = "id", required = true) Long id)
-	{
-		ServiceProject serviceProject=new ServiceProject();
+	public R delete(@RequestParam(name = "id", required = true) Long id) {
+		ServiceProject serviceProject = new ServiceProject();
 		serviceProject.setId(id);
 		serviceProject.setIsDeleted(1);
 		serviceProjectService.updateById(serviceProject);
@@ -198,8 +181,7 @@ public class ProjectController {
 	}
 
 	@GetMapping("/countByDate")
-	public R countByDate(@RequestParam(name = "type") Integer type)
-	{
+	public R countByDate(@RequestParam(name = "type") Integer type) {
 		String beginTime;
 		String endTime;
 
@@ -219,7 +201,7 @@ public class ProjectController {
 
 		QueryWrapper<ServiceProjectItem> amountQueryWrapper = new QueryWrapper<>();
 		amountQueryWrapper.select("ifnull(sum(service_charge), 0) as income", "ifnull(sum(amount), 0) as amount")
-			.between("create_time", beginTime, endTime);
+			.between("pay_time", beginTime, endTime);
 		Map<String, Object> amountMap = serviceProjectItemService.getMap(amountQueryWrapper);
 
 		LambdaQueryWrapper<ServiceProjectItem> countLambdaQueryWrapper = new LambdaQueryWrapper<>();
@@ -242,27 +224,25 @@ public class ProjectController {
 
 	@GetMapping("findById")
 	public R<?> findById(@RequestParam(name = "id", required = true) Long id,
-						 @RequestParam(name = "itemStatus", required = true) String itemStatus)
-	{
+						 @RequestParam(name = "itemStatus", required = true) String itemStatus) {
 		ServiceProject serviceProject = serviceProjectService.getById(id);
-		List<String> status=Arrays.asList(itemStatus.split(","));
-		LambdaQueryWrapper<ServiceProjectItem> itemServiceLambdaQueryWrapper=new LambdaQueryWrapper<>();
-		itemServiceLambdaQueryWrapper.in(ServiceProjectItem::getStatus,status).eq(ServiceProjectItem::getPId,id).eq(ServiceProjectItem::getIsDeleted,0);
+		List<String> status = Arrays.asList(itemStatus.split(","));
+		LambdaQueryWrapper<ServiceProjectItem> itemServiceLambdaQueryWrapper = new LambdaQueryWrapper<>();
+		itemServiceLambdaQueryWrapper.in(ServiceProjectItem::getStatus, status).eq(ServiceProjectItem::getPId, id).eq(ServiceProjectItem::getIsDeleted, 0);
 		List<ServiceProjectItem> serviceProjectItems = serviceProjectItemService.list(itemServiceLambdaQueryWrapper);
-		if (serviceProject.getCorpId() != null){
-			R<List<Map<String,Object>>> corpMessage = corpsDescClient.getCorpsMessage(serviceProject.getCorpId().toString());
-			if (corpMessage.isSuccess() && corpMessage.getData() != null){
+		if (serviceProject.getCorpId() != null) {
+			R<List<Map<String, Object>>> corpMessage = corpsDescClient.getCorpsMessage(serviceProject.getCorpId().toString());
+			if (corpMessage.isSuccess() && corpMessage.getData() != null) {
 				serviceProject.setCorpName(corpMessage.getData());
 			}
 		}
-		LambdaQueryWrapper<ServiceProjectFiles> filesLambdaQueryWrapper=new LambdaQueryWrapper<>();
-		filesLambdaQueryWrapper.eq(ServiceProjectFiles::getPId,id).eq(ServiceProjectFiles::getIsDeleted,0);
+		LambdaQueryWrapper<ServiceProjectFiles> filesLambdaQueryWrapper = new LambdaQueryWrapper<>();
+		filesLambdaQueryWrapper.eq(ServiceProjectFiles::getPId, id).eq(ServiceProjectFiles::getIsDeleted, 0);
 		List<ServiceProjectFiles> filesList = serviceProjectFilesService.list(filesLambdaQueryWrapper);
 
-		if(!CollectionUtils.isEmpty(serviceProjectItems))
-		{
-			String[] str = new String[]{"录入","已请核","审核中","审核通过","正在结算","结算完成","","追加","退费"};
-			serviceProjectItems.forEach(e->{
+		if (!CollectionUtils.isEmpty(serviceProjectItems)) {
+			String[] str = new String[]{"录入", "已请核", "审核中", "审核通过", "正在结算", "结算完成", "", "追加", "退费"};
+			serviceProjectItems.forEach(e -> {
 
 				e.setStrStatus(str[e.getStatus()]);
 			/*	R<User> r = userClient.userInfoById(e.getUserid());
@@ -273,8 +253,7 @@ public class ProjectController {
 			});
 			serviceProject.setItemList(serviceProjectItems);
 		}
-		if(!CollectionUtils.isEmpty(filesList))
-		{
+		if (!CollectionUtils.isEmpty(filesList)) {
 			serviceProject.setFilesList(filesList);
 		}
 
@@ -283,77 +262,69 @@ public class ProjectController {
 
 	@PostMapping("updateItemStatus")
 	public R check(@RequestParam(name = "id", required = true) Long itemId
-		          ,@RequestParam(name = "status", required = true) int status
-		          ,@RequestParam(name = "accountName", required = false) String accountName
-		          ,@RequestParam(name = "accountBank", required = false) String accountBank
-		          ,@RequestParam(name = "payTime", required = false) Date payTime
-		          ,@RequestParam(name = "accountNo", required = false) String accountNo
-	               )
-	{
-		    serviceProjectService.updateItemStatus(itemId,status,accountName,accountBank, accountNo,payTime);
-			return R.success("操作完成");
+		, @RequestParam(name = "status", required = true) int status
+		, @RequestParam(name = "accountName", required = false) String accountName
+		, @RequestParam(name = "accountBank", required = false) String accountBank
+		, @RequestParam(name = "payTime", required = false) Date payTime
+		, @RequestParam(name = "accountNo", required = false) String accountNo
+	) {
+		serviceProjectService.updateItemStatus(itemId, status, accountName, accountBank, accountNo, payTime);
+		return R.success("操作完成");
 	}
 
 	@GetMapping("item/list")
-    public R<?> itemList( @RequestParam(name = "current", defaultValue = "1") Integer current,
-						  @RequestParam(name = "size", defaultValue = "10") Integer size,
-						  @RequestParam(name = "pname",  required = false) String pName,
-						  @RequestParam(name = "beginTime",  required = false) String beginTime,
-
-						  @RequestParam(name = "cornId",  required = false) Long cornId,
-						  @RequestParam(name = "corpName",  required = false) String corpName,
-						  @RequestParam(name = "deptName",  required = false) String deptName,
-
-
-						  @RequestParam(name = "actualDate",  required = false) String actualDate,
-						  @RequestParam(name = "userName",  required = false) String userName,
-						  @RequestParam(name = "deptid",  required = false) Long deptid,
-						  @RequestParam(name = "status",  required = true) String status,
-						  @RequestParam(name = "payStartTime",  required = false) String payStartTime,
-						  @RequestParam(name = "payEndTime",  required = false) String payEndTime,
-						  @RequestParam(name = "createStartTime",  required = false) String createStartTime,
-						  @RequestParam(name = "createEndTime",  required = false) String createEndTime,
-						  @RequestParam(name = "beginStartTime",  required = false) String beginStartTime,
-						  @RequestParam(name = "beginEndTime",  required = false) String beginEndTime,
-						  @RequestParam(name = "projectType",  required = false) Integer projectType
-						 )
-	{
-		List<String> listStatus=Arrays.asList(status.split(","));
-
-		LambdaQueryWrapper<ServiceProjectItem> itemLambdaQueryWrapper=new LambdaQueryWrapper<>();
+	public R<?> itemList(@RequestParam(name = "current", defaultValue = "1") Integer current,
+						 @RequestParam(name = "size", defaultValue = "10") Integer size,
+						 @RequestParam(name = "pname", required = false) String pName,
+						 @RequestParam(name = "beginTime", required = false) String beginTime,
+
+						 @RequestParam(name = "cornId", required = false) Long cornId,
+						 @RequestParam(name = "corpName", required = false) String corpName,
+						 @RequestParam(name = "deptName", required = false) String deptName,
+
+
+						 @RequestParam(name = "actualDate", required = false) String actualDate,
+						 @RequestParam(name = "userName", required = false) String userName,
+						 @RequestParam(name = "deptid", required = false) Long deptid,
+						 @RequestParam(name = "status", required = true) String status,
+						 @RequestParam(name = "payStartTime", required = false) String payStartTime,
+						 @RequestParam(name = "payEndTime", required = false) String payEndTime,
+						 @RequestParam(name = "createStartTime", required = false) String createStartTime,
+						 @RequestParam(name = "createEndTime", required = false) String createEndTime,
+						 @RequestParam(name = "beginStartTime", required = false) String beginStartTime,
+						 @RequestParam(name = "beginEndTime", required = false) String beginEndTime,
+						 @RequestParam(name = "projectType", required = false) Integer projectType
+	) {
+		List<String> listStatus = Arrays.asList(status.split(","));
+
+		LambdaQueryWrapper<ServiceProjectItem> itemLambdaQueryWrapper = new LambdaQueryWrapper<>();
 		itemLambdaQueryWrapper
-			.eq(projectType!=null,ServiceProjectItem::getProjectType,projectType)
-			.eq(StringUtils.isNotBlank(userName),ServiceProjectItem::getUserName,userName)
-			.eq(ServiceProjectItem::getTenantId,AuthUtil.getTenantId())
-			.between(StringUtils.isNotBlank(beginStartTime)&&StringUtils.isNotBlank(beginEndTime),ServiceProjectItem::getBeginTime,beginStartTime,beginEndTime)
-			.between(StringUtils.isNotBlank(createStartTime)&&StringUtils.isNotBlank(createEndTime),ServiceProjectItem::getCreateTime,createStartTime,createEndTime)
-			.between(StringUtils.isNotBlank(payStartTime)&&StringUtils.isNotBlank(payEndTime),ServiceProjectItem::getPayTime,payStartTime,payEndTime)
-			.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+"'");
-
-		LambdaQueryWrapper<ServiceProject> lambdaQueryWrapper=new LambdaQueryWrapper<>();
+			.eq(projectType != null, ServiceProjectItem::getProjectType, projectType)
+			.eq(StringUtils.isNotBlank(userName), ServiceProjectItem::getUserName, userName)
+			.eq(ServiceProjectItem::getTenantId, AuthUtil.getTenantId())
+			.between(StringUtils.isNotBlank(beginStartTime) && StringUtils.isNotBlank(beginEndTime), ServiceProjectItem::getBeginTime, beginStartTime, beginEndTime)
+			.between(StringUtils.isNotBlank(createStartTime) && StringUtils.isNotBlank(createEndTime), ServiceProjectItem::getCreateTime, createStartTime, createEndTime)
+			.between(StringUtils.isNotBlank(payStartTime) && StringUtils.isNotBlank(payEndTime), ServiceProjectItem::getPayTime, payStartTime, payEndTime)
+			.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 + "'");
+
+		LambdaQueryWrapper<ServiceProject> lambdaQueryWrapper = new LambdaQueryWrapper<>();
 		//客户名称
-		if(cornId!=null)
-		{
-			lambdaQueryWrapper.eq(ServiceProject::getCorpId,cornId);
+		if (cornId != null) {
+			lambdaQueryWrapper.eq(ServiceProject::getCorpId, cornId);
 			List<ServiceProject> list = serviceProjectService.list(lambdaQueryWrapper);
 		}
-		if(StringUtils.isNotBlank(corpName))
-		{
+		if (StringUtils.isNotBlank(corpName)) {
 			List<Long> corpIdList = corpsDescClient.listCorpIdByName(corpName);
 			lambdaQueryWrapper.in(CollectionUtil.isNotEmpty(corpIdList), ServiceProject::getCorpId, corpIdList);
 
 		}
-		if(cornId!=null || StringUtils.isNotBlank(corpName))
-		{
+		if (cornId != null || StringUtils.isNotBlank(corpName)) {
 			List<ServiceProject> list = serviceProjectService.list(lambdaQueryWrapper);
-			if(!CollectionUtils.isEmpty(list))
-			{
-				itemLambdaQueryWrapper.in(ServiceProjectItem::getPId,list.stream().map(ServiceProject::getId).collect(Collectors.toList()));
-			}
-			else
-			{
+			if (!CollectionUtils.isEmpty(list)) {
+				itemLambdaQueryWrapper.in(ServiceProjectItem::getPId, list.stream().map(ServiceProject::getId).collect(Collectors.toList()));
+			} else {
 				return R.data(Collections.EMPTY_LIST);
 			}
 		}
@@ -369,28 +340,25 @@ public class ProjectController {
 		return R.data(Collections.EMPTY_LIST);
 		}*/
 		itemLambdaQueryWrapper.orderByDesc(ServiceProjectItem::getUpdateTime)
-			.eq(deptid!=null,ServiceProjectItem::getDeptid,deptid)
+			.eq(deptid != null, ServiceProjectItem::getDeptid, deptid)
 			/* .eq(ServiceProjectItem::getIsDeleted,0) */
-			.in(ServiceProjectItem::getStatus,listStatus);
-		Page<ServiceProjectItem> page=new Page<>(current,size);
+			.in(ServiceProjectItem::getStatus, listStatus);
+		Page<ServiceProjectItem> page = new Page<>(current, size);
 		IPage<ServiceProjectItem> iPage = serviceProjectItemService.page(page, itemLambdaQueryWrapper);
-		if(!CollectionUtils.isEmpty(iPage.getRecords()))
-		{
-		  	String[] str = new String[]{"录入","已请核","审核中","审核通过","正在结算","结算完成","","追加","退费"};
-		  	iPage.getRecords().forEach(e->{
+		if (!CollectionUtils.isEmpty(iPage.getRecords())) {
+			String[] str = new String[]{"录入", "已请核", "审核中", "审核通过", "正在结算", "结算完成", "", "追加", "退费"};
+			iPage.getRecords().forEach(e -> {
 				e.setStrStatus(str[e.getStatus()]);
 				Long corpId = serviceProjectService.getOne(new LambdaQueryWrapper<ServiceProject>()
-				  .eq(ServiceProject::getId,e.getPId())).getCorpId();
+					.eq(ServiceProject::getId, e.getPId())).getCorpId();
 				e.setCornId(corpId);
 				R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(corpId);
-				if(corpMessage.isSuccess()&&corpMessage.getData()!=null)
-				{
+				if (corpMessage.isSuccess() && corpMessage.getData() != null) {
 					e.setCornName(corpMessage.getData().getCname());
 				}
 				//任务部门
 				R<Dept> dept = iSysClient.getDept(e.getDeptid());
-				if(dept.isSuccess()&&dept.getData()!=null)
-				{
+				if (dept.isSuccess() && dept.getData() != null) {
 					e.setDeptName(dept.getData().getDeptName());
 				}
 				//承做人
@@ -402,162 +370,147 @@ public class ProjectController {
 				}*/
 				//毛收入
 				e.setGrossIncome((e.getServiceCharge().add(e.getMatMoney())).subtract(e.getCostReturn()));
-		  	});
+			});
 
 		}
 		return R.data(iPage);
 	}
 
-    @GetMapping("getSysNo")
-	public R getSysNo()
-	{
-       return serviceProjectService.getSysNo();
+	@GetMapping("getSysNo")
+	public R getSysNo() {
+		return serviceProjectService.getSysNo();
 	}
 
 	@GetMapping("getPidByItemId")
-	public R getPidByItemId( @RequestParam(name = "itemId",  required = true) Long itemId)
-	{
+	public R getPidByItemId(@RequestParam(name = "itemId", required = true) Long itemId) {
 		ServiceProjectItem projectItem = serviceProjectItemService.getById(itemId);
 		return R.data(projectItem.getPId());
 	}
 
 	/**
 	 * 2.0新逻辑-主营项目主表清核-必须所有子表明细结算之后才可以清核
- 	 */
+	 */
 	@PostMapping("/masterCheck")
-    public R masterCheck(@RequestParam(name = "id",  required = true) Long id,
-						 @RequestParam(name = "url",  required = false) String url,
-						 @RequestParam(name = "pageStatus",  required = false) String pageStatus,
-						 @RequestParam(name = "pageLabel",  required = false) String pageLabel)
-	{
-		serviceProjectService.masterCheck(id,url,pageStatus,pageLabel);
+	public R masterCheck(@RequestParam(name = "id", required = true) Long id,
+						 @RequestParam(name = "url", required = false) String url,
+						 @RequestParam(name = "pageStatus", required = false) String pageStatus,
+						 @RequestParam(name = "pageLabel", required = false) String pageLabel) {
+		serviceProjectService.masterCheck(id, url, pageStatus, pageLabel);
 		return R.success("操作成功");
 	}
 
 	/**
 	 * 2.0新逻辑-微服务对外feign调用接口-主营项目审批通过
-	 * */
+	 */
 	@PostMapping("/projectPassCheck")
-	public R projectPassCheck(@RequestParam(name = "id",  required = true) Long id)
-	{
+	public R projectPassCheck(@RequestParam(name = "id", required = true) Long id) {
 		serviceProjectService.projectPassCheck(id);
 		return R.success("操作成功");
 	}
 
 	/**
 	 * 2.0新逻辑-微服务对外feign调用接口-主营项目审批驳回
-	 * */
+	 */
 	@PostMapping("/projectPassCancel")
-	public R projectPassCancel(@RequestParam(name = "id",  required = true) Long id)
-	{
+	public R projectPassCancel(@RequestParam(name = "id", required = true) Long id) {
 		serviceProjectService.projectPassCancel(id);
 		return R.success("操作成功");
 	}
 
 	/**
 	 * 2.0新逻辑 主营项目明细结算和取消结算功能
-	 * */
+	 */
 	@PostMapping("/settleAccounts")
-	public R settleAccounts(@RequestParam(name = "id",  required = true) Long id,
+	public R settleAccounts(@RequestParam(name = "id", required = true) Long id,
 							@RequestParam(name = "status", required = true) int status
-							,@RequestParam(name = "accountName", required = false) String accountName
-							,@RequestParam(name = "accountBank", required = false) String accountBank
-							,@RequestParam(name = "payTime", required = false) Date payTime
-							,@RequestParam(name = "accountNo", required = false) String accountNo)
-	{
-		serviceProjectService.settleAccounts(id,status,accountName,accountBank,payTime,accountNo);
+		, @RequestParam(name = "accountName", required = false) String accountName
+		, @RequestParam(name = "accountBank", required = false) String accountBank
+		, @RequestParam(name = "payTime", required = false) Date payTime
+		, @RequestParam(name = "accountNo", required = false) String accountNo) {
+		serviceProjectService.settleAccounts(id, status, accountName, accountBank, payTime, accountNo);
 		return R.success("操作成功");
 	}
 
 	/**
 	 * 2.0-统计列表
-	 * */
+	 */
 	@GetMapping("/statisticalAnalysis")
 	public R statisticalAnalysis(@RequestParam(name = "userName", required = false) String userName,
-								 @RequestParam(name = "projectType", required = false)String projectType,
-								 @RequestParam(name = "deptid", required = false)String deptid,
-								 @RequestParam(name = "pname", required = false)String pname,
-								 @RequestParam(name = "status", required = false)String status,
-								 @RequestParam(name = "cornId", required = false)String cornId,
+								 @RequestParam(name = "projectType", required = false) String projectType,
+								 @RequestParam(name = "deptid", required = false) String deptid,
+								 @RequestParam(name = "pname", required = false) String pname,
+								 @RequestParam(name = "status", required = false) String status,
+								 @RequestParam(name = "cornId", required = false) String cornId,
 								 @RequestParam(name = "payStartTime", required = false) String payStartTime,
-								 @RequestParam(name = "payEndTime", required = false)String payEndTime)
-	{
-		List<ServiceProjectItem> serviceProjectItems = serviceProjectItemService.statisticalAnalysis(AuthUtil.getTenantId(),userName,projectType,deptid,pname,status,cornId,payStartTime,payEndTime);
+								 @RequestParam(name = "payEndTime", required = false) String payEndTime) {
+		List<ServiceProjectItem> serviceProjectItems = serviceProjectItemService.statisticalAnalysis(AuthUtil.getTenantId(), userName, projectType, deptid, pname, status, cornId, payStartTime, payEndTime);
 		return R.data(serviceProjectItems);
 	}
 
 
 	/**
-	 *
 	 * 2.0-业绩分析 -导出
-	 * */
+	 */
 	@GetMapping("/import-out-performanceAnalysis")
 	public R<?> importOutPerformanceAnalysis(
-		@RequestParam(name = "flag",  required = true) int flag
-		,@RequestParam(name = "year",  defaultValue = "2021") Long year
-		,@RequestParam(name = "corpNames", required = false) Long corpNames
-		,@RequestParam(name = "userName",  required = false) String userName)
-	{
+		@RequestParam(name = "flag", required = true) int flag
+		, @RequestParam(name = "year", defaultValue = "2021") Long year
+		, @RequestParam(name = "corpNames", required = false) Long corpNames
+		, @RequestParam(name = "userName", required = false) String userName) {
 		//按承做人统计多少个客户
-		if(flag==1)
-		{
+		if (flag == 1) {
 
-			LambdaQueryWrapper<ServiceProjectItem> itemLambdaQueryWrapper=new LambdaQueryWrapper<>();
-			itemLambdaQueryWrapper.apply(" year(pay_time) = '"+year+"'");
-			itemLambdaQueryWrapper.eq(ServiceProjectItem::getTenantId,AuthUtil.getTenantId());
-			itemLambdaQueryWrapper.eq(ServiceProjectItem::getIsDeleted,0);
-			itemLambdaQueryWrapper.eq(StringUtils.isNotBlank(userName),ServiceProjectItem::getUserName,userName);
+			LambdaQueryWrapper<ServiceProjectItem> itemLambdaQueryWrapper = new LambdaQueryWrapper<>();
+			itemLambdaQueryWrapper.apply(" year(pay_time) = '" + year + "'");
+			itemLambdaQueryWrapper.eq(ServiceProjectItem::getTenantId, AuthUtil.getTenantId());
+			itemLambdaQueryWrapper.eq(ServiceProjectItem::getIsDeleted, 0);
+			itemLambdaQueryWrapper.eq(StringUtils.isNotBlank(userName), ServiceProjectItem::getUserName, userName);
 			itemLambdaQueryWrapper.groupBy(ServiceProjectItem::getUserName);
 			//分组不同的承做人
 			List<ServiceProjectItem> itemList = serviceProjectItemService.list(itemLambdaQueryWrapper);
-			if(CollectionUtils.isEmpty(itemList))
-			{
+			if (CollectionUtils.isEmpty(itemList)) {
 				return R.data(Collections.EMPTY_LIST);
 			}
 			Long finalYear = year;
-			itemList.forEach(e->{
+			itemList.forEach(e -> {
 				//统计此制单人多少个客户
-				LambdaQueryWrapper<ServiceProjectItem> count=new LambdaQueryWrapper<>();
-				count.apply(" year(pay_time) = '"+year+"'")
-					.eq(ServiceProjectItem::getUserName,e.getUserName())
-					.eq(ServiceProjectItem::getTenantId,AuthUtil.getTenantId())
-					.eq(ServiceProjectItem::getIsDeleted,0);
+				LambdaQueryWrapper<ServiceProjectItem> count = new LambdaQueryWrapper<>();
+				count.apply(" year(pay_time) = '" + year + "'")
+					.eq(ServiceProjectItem::getUserName, e.getUserName())
+					.eq(ServiceProjectItem::getTenantId, AuthUtil.getTenantId())
+					.eq(ServiceProjectItem::getIsDeleted, 0);
 				List<ServiceProjectItem> list = serviceProjectItemService.list(count);
 				List<Long> pids = list.stream().map(ServiceProjectItem::getPId).collect(Collectors.toList());
-				if(!CollectionUtils.isEmpty(pids))
-				{
+				if (!CollectionUtils.isEmpty(pids)) {
 					//从主表获取客户并且分组
-					LambdaQueryWrapper<ServiceProject> countCorps=new LambdaQueryWrapper<>();
+					LambdaQueryWrapper<ServiceProject> countCorps = new LambdaQueryWrapper<>();
 					countCorps
-						.in(ServiceProject::getId,pids)
-						.eq(ServiceProject::getIsDeleted,0)
-						.eq(ServiceProject::getTenantId,AuthUtil.getTenantId());
+						.in(ServiceProject::getId, pids)
+						.eq(ServiceProject::getIsDeleted, 0)
+						.eq(ServiceProject::getTenantId, AuthUtil.getTenantId());
 					List<ServiceProject> corpsProjects = serviceProjectService.list(countCorps);
 					e.setCountCorp(corpsProjects.stream().map(ServiceProject::getCorpId).distinct().collect(Collectors.toList()).size());
-				}
-				else
-				{
+				} else {
 					e.setCountCorp(0);
 				}
 
 
-
 				//计算服务费
 				ServiceProject serviceProject = this.calculateServiceCharge(e.getUserName(), null, 1, finalYear);
-				e.setJan(serviceProject==null?BigDecimal.ZERO:serviceProject.getJan());//1
-				e.setFeb(serviceProject==null?BigDecimal.ZERO:serviceProject.getFeb());//2
-				e.setMar(serviceProject==null?BigDecimal.ZERO:serviceProject.getMar());//3
-				e.setApr(serviceProject==null?BigDecimal.ZERO:serviceProject.getApr());//4
-				e.setMay(serviceProject==null?BigDecimal.ZERO:serviceProject.getMay());//5
-				e.setJune(serviceProject==null?BigDecimal.ZERO:serviceProject.getJune());//6
-				e.setJuly(serviceProject==null?BigDecimal.ZERO:serviceProject.getJuly());//7
-				e.setAug(serviceProject==null?BigDecimal.ZERO:serviceProject.getAug());//8
-				e.setSept(serviceProject==null?BigDecimal.ZERO:serviceProject.getSept());//9
-				e.setOct(serviceProject==null?BigDecimal.ZERO:serviceProject.getOct());//10
-				e.setNov(serviceProject==null?BigDecimal.ZERO:serviceProject.getNov());//11
-				e.setDece(serviceProject==null?BigDecimal.ZERO:serviceProject.getDece());//12
+				e.setJan(serviceProject == null ? BigDecimal.ZERO : serviceProject.getJan());//1
+				e.setFeb(serviceProject == null ? BigDecimal.ZERO : serviceProject.getFeb());//2
+				e.setMar(serviceProject == null ? BigDecimal.ZERO : serviceProject.getMar());//3
+				e.setApr(serviceProject == null ? BigDecimal.ZERO : serviceProject.getApr());//4
+				e.setMay(serviceProject == null ? BigDecimal.ZERO : serviceProject.getMay());//5
+				e.setJune(serviceProject == null ? BigDecimal.ZERO : serviceProject.getJune());//6
+				e.setJuly(serviceProject == null ? BigDecimal.ZERO : serviceProject.getJuly());//7
+				e.setAug(serviceProject == null ? BigDecimal.ZERO : serviceProject.getAug());//8
+				e.setSept(serviceProject == null ? BigDecimal.ZERO : serviceProject.getSept());//9
+				e.setOct(serviceProject == null ? BigDecimal.ZERO : serviceProject.getOct());//10
+				e.setNov(serviceProject == null ? BigDecimal.ZERO : serviceProject.getNov());//11
+				e.setDece(serviceProject == null ? BigDecimal.ZERO : serviceProject.getDece());//12
 				e.setTotal
-					(    e.getJan()
+					(e.getJan()
 						.add(e.getFeb())
 						.add(e.getMar())
 						.add(e.getApr())
@@ -572,29 +525,26 @@ public class ProjectController {
 					);
 			});
 			return R.data(itemList);
-		}
-		else if(flag==2)
-		{
+		} else if (flag == 2) {
 			List<ServiceProject> serviceProjectList = serviceProjectService.statisticalAnalysisOutData(AuthUtil.getTenantId(), year, null);
-			if(!CollectionUtils.isEmpty(serviceProjectList))
-			{
-				serviceProjectList.forEach(e->{
+			if (!CollectionUtils.isEmpty(serviceProjectList)) {
+				serviceProjectList.forEach(e -> {
 					//统计服务费
-					ServiceProject serviceProject = calculateServiceCharge(null,e.getCorpId(), 2, year);
-					e.setJan(serviceProject==null?BigDecimal.ZERO:serviceProject.getJan());//1
-					e.setFeb(serviceProject==null?BigDecimal.ZERO:serviceProject.getFeb());//2
-					e.setMar(serviceProject==null?BigDecimal.ZERO:serviceProject.getMar());//3
-					e.setApr(serviceProject==null?BigDecimal.ZERO:serviceProject.getApr());//4
-					e.setMay(serviceProject==null?BigDecimal.ZERO:serviceProject.getMay());//5
-					e.setJune(serviceProject==null?BigDecimal.ZERO:serviceProject.getJune());//6
-					e.setJuly(serviceProject==null?BigDecimal.ZERO:serviceProject.getJuly());//7
-					e.setAug(serviceProject==null?BigDecimal.ZERO:serviceProject.getAug());//8
-					e.setSept(serviceProject==null?BigDecimal.ZERO:serviceProject.getSept());//9
-					e.setOct(serviceProject==null?BigDecimal.ZERO:serviceProject.getOct());//10
-					e.setNov(serviceProject==null?BigDecimal.ZERO:serviceProject.getNov());//11
-					e.setDece(serviceProject==null?BigDecimal.ZERO:serviceProject.getDece());//12
+					ServiceProject serviceProject = calculateServiceCharge(null, e.getCorpId(), 2, year);
+					e.setJan(serviceProject == null ? BigDecimal.ZERO : serviceProject.getJan());//1
+					e.setFeb(serviceProject == null ? BigDecimal.ZERO : serviceProject.getFeb());//2
+					e.setMar(serviceProject == null ? BigDecimal.ZERO : serviceProject.getMar());//3
+					e.setApr(serviceProject == null ? BigDecimal.ZERO : serviceProject.getApr());//4
+					e.setMay(serviceProject == null ? BigDecimal.ZERO : serviceProject.getMay());//5
+					e.setJune(serviceProject == null ? BigDecimal.ZERO : serviceProject.getJune());//6
+					e.setJuly(serviceProject == null ? BigDecimal.ZERO : serviceProject.getJuly());//7
+					e.setAug(serviceProject == null ? BigDecimal.ZERO : serviceProject.getAug());//8
+					e.setSept(serviceProject == null ? BigDecimal.ZERO : serviceProject.getSept());//9
+					e.setOct(serviceProject == null ? BigDecimal.ZERO : serviceProject.getOct());//10
+					e.setNov(serviceProject == null ? BigDecimal.ZERO : serviceProject.getNov());//11
+					e.setDece(serviceProject == null ? BigDecimal.ZERO : serviceProject.getDece());//12
 					e.setTotal
-						(    e.getJan()
+						(e.getJan()
 							.add(e.getFeb())
 							.add(e.getMar())
 							.add(e.getApr())
@@ -704,168 +654,152 @@ public class ProjectController {
 
 
 	/**
-	 *
 	 * 2.0-业绩分析
-	 * */
+	 */
 	@GetMapping("/performanceAnalysis")
-	public R<?> performanceAnalysis(@RequestParam(name = "flag",  required = true) int flag,@RequestParam(name = "year",  defaultValue = "2021") Long year,
-								 @RequestParam(name = "current", defaultValue = "1") Integer current
-		                        ,@RequestParam(name = "size", defaultValue = "10") Integer size
-		                        ,@RequestParam(name = "corpNames", required = false) Long corpNames
-	                            ,@RequestParam(name = "userName",  required = false) String userName)
-	{
+	public R<?> performanceAnalysis(@RequestParam(name = "flag", required = true) int flag, @RequestParam(name = "year", defaultValue = "2021") Long year,
+									@RequestParam(name = "current", defaultValue = "1") Integer current
+		, @RequestParam(name = "size", defaultValue = "10") Integer size
+		, @RequestParam(name = "corpNames", required = false) Long corpNames
+		, @RequestParam(name = "userName", required = false) String userName) {
 
 		//按承做人统计多少个客户
-		if(flag==1)
-		{
-			Page<ServiceProjectItem> page=new Page<>(current,size);
-			LambdaQueryWrapper<ServiceProjectItem> itemLambdaQueryWrapper=new LambdaQueryWrapper<>();
-			itemLambdaQueryWrapper.apply(" year(pay_time) = '"+year+"'");
-			itemLambdaQueryWrapper.eq(ServiceProjectItem::getTenantId,AuthUtil.getTenantId());
-			itemLambdaQueryWrapper.eq(ServiceProjectItem::getIsDeleted,0);
-			itemLambdaQueryWrapper.eq(StringUtils.isNotBlank(userName),ServiceProjectItem::getUserName,userName);
+		if (flag == 1) {
+			Page<ServiceProjectItem> page = new Page<>(current, size);
+			LambdaQueryWrapper<ServiceProjectItem> itemLambdaQueryWrapper = new LambdaQueryWrapper<>();
+			itemLambdaQueryWrapper.apply(" year(pay_time) = '" + year + "'");
+			itemLambdaQueryWrapper.eq(ServiceProjectItem::getTenantId, AuthUtil.getTenantId());
+			itemLambdaQueryWrapper.eq(ServiceProjectItem::getIsDeleted, 0);
+			itemLambdaQueryWrapper.eq(StringUtils.isNotBlank(userName), ServiceProjectItem::getUserName, userName);
 			itemLambdaQueryWrapper.groupBy(ServiceProjectItem::getUserName);
 			//分组不同的承做人
-			IPage<ServiceProjectItem>  ipage= serviceProjectItemService.page(page,itemLambdaQueryWrapper);
-			if(CollectionUtils.isEmpty(ipage.getRecords()))
-			{
-               return R.data(Collections.EMPTY_LIST);
+			IPage<ServiceProjectItem> ipage = serviceProjectItemService.page(page, itemLambdaQueryWrapper);
+			if (CollectionUtils.isEmpty(ipage.getRecords())) {
+				return R.data(Collections.EMPTY_LIST);
 			}
 			Long finalYear = year;
-			ipage.getRecords().forEach(e->{
+			ipage.getRecords().forEach(e -> {
 				//统计此制单人多少个客户
-				LambdaQueryWrapper<ServiceProjectItem> count=new LambdaQueryWrapper<>();
-				count.apply(" year(pay_time) = '"+year+"'")
-					.eq(ServiceProjectItem::getUserName,e.getUserName())
-					.eq(ServiceProjectItem::getTenantId,AuthUtil.getTenantId())
-					.eq(ServiceProjectItem::getIsDeleted,0);
+				LambdaQueryWrapper<ServiceProjectItem> count = new LambdaQueryWrapper<>();
+				count.apply(" year(pay_time) = '" + year + "'")
+					.eq(ServiceProjectItem::getUserName, e.getUserName())
+					.eq(ServiceProjectItem::getTenantId, AuthUtil.getTenantId())
+					.eq(ServiceProjectItem::getIsDeleted, 0);
 				List<ServiceProjectItem> list = serviceProjectItemService.list(count);
 				List<Long> pids = list.stream().map(ServiceProjectItem::getPId).collect(Collectors.toList());
-				if(!CollectionUtils.isEmpty(pids))
-				{
+				if (!CollectionUtils.isEmpty(pids)) {
 					//从主表获取客户并且分组
-					LambdaQueryWrapper<ServiceProject> countCorps=new LambdaQueryWrapper<>();
+					LambdaQueryWrapper<ServiceProject> countCorps = new LambdaQueryWrapper<>();
 					countCorps
-						.in(ServiceProject::getId,pids)
-						.eq(ServiceProject::getIsDeleted,0)
-						.eq(ServiceProject::getTenantId,AuthUtil.getTenantId());
+						.in(ServiceProject::getId, pids)
+						.eq(ServiceProject::getIsDeleted, 0)
+						.eq(ServiceProject::getTenantId, AuthUtil.getTenantId());
 					List<ServiceProject> corpsProjects = serviceProjectService.list(countCorps);
 					e.setCountCorp(corpsProjects.stream().map(ServiceProject::getCorpId).distinct().collect(Collectors.toList()).size());
-				}
-				else
-				{
+				} else {
 					e.setCountCorp(0);
 				}
 
 
-
-                //计算服务费
+				//计算服务费
 				ServiceProject serviceProject = calculateServiceCharge(e.getUserName(), null, 1, finalYear);
-				e.setJan(serviceProject==null?BigDecimal.ZERO:serviceProject.getJan());//1
-				e.setFeb(serviceProject==null?BigDecimal.ZERO:serviceProject.getFeb());//2
-				e.setMar(serviceProject==null?BigDecimal.ZERO:serviceProject.getMar());//3
-				e.setApr(serviceProject==null?BigDecimal.ZERO:serviceProject.getApr());//4
-				e.setMay(serviceProject==null?BigDecimal.ZERO:serviceProject.getMay());//5
-				e.setJune(serviceProject==null?BigDecimal.ZERO:serviceProject.getJune());//6
-				e.setJuly(serviceProject==null?BigDecimal.ZERO:serviceProject.getJuly());//7
-				e.setAug(serviceProject==null?BigDecimal.ZERO:serviceProject.getAug());//8
-				e.setSept(serviceProject==null?BigDecimal.ZERO:serviceProject.getSept());//9
-				e.setOct(serviceProject==null?BigDecimal.ZERO:serviceProject.getOct());//10
-				e.setNov(serviceProject==null?BigDecimal.ZERO:serviceProject.getNov());//11
-				e.setDece(serviceProject==null?BigDecimal.ZERO:serviceProject.getDece());//12
+				e.setJan(serviceProject == null ? BigDecimal.ZERO : serviceProject.getJan());//1
+				e.setFeb(serviceProject == null ? BigDecimal.ZERO : serviceProject.getFeb());//2
+				e.setMar(serviceProject == null ? BigDecimal.ZERO : serviceProject.getMar());//3
+				e.setApr(serviceProject == null ? BigDecimal.ZERO : serviceProject.getApr());//4
+				e.setMay(serviceProject == null ? BigDecimal.ZERO : serviceProject.getMay());//5
+				e.setJune(serviceProject == null ? BigDecimal.ZERO : serviceProject.getJune());//6
+				e.setJuly(serviceProject == null ? BigDecimal.ZERO : serviceProject.getJuly());//7
+				e.setAug(serviceProject == null ? BigDecimal.ZERO : serviceProject.getAug());//8
+				e.setSept(serviceProject == null ? BigDecimal.ZERO : serviceProject.getSept());//9
+				e.setOct(serviceProject == null ? BigDecimal.ZERO : serviceProject.getOct());//10
+				e.setNov(serviceProject == null ? BigDecimal.ZERO : serviceProject.getNov());//11
+				e.setDece(serviceProject == null ? BigDecimal.ZERO : serviceProject.getDece());//12
 				e.setTotal
-					(    e.getJan()
-					.add(e.getFeb())
-					.add(e.getMar())
-					.add(e.getApr())
-					.add(e.getMay())
-					.add(e.getJune())
-					.add(e.getJuly())
-					.add(e.getAug())
-					.add(e.getSept())
-					.add(e.getOct())
-					.add(e.getNov())
-					.add(e.getDece())
-				);
+					(e.getJan()
+						.add(e.getFeb())
+						.add(e.getMar())
+						.add(e.getApr())
+						.add(e.getMay())
+						.add(e.getJune())
+						.add(e.getJuly())
+						.add(e.getAug())
+						.add(e.getSept())
+						.add(e.getOct())
+						.add(e.getNov())
+						.add(e.getDece())
+					);
 			});
-           return R.data(ipage);
-		}
-		else if(flag==2)
-		{
+			return R.data(ipage);
+		} else if (flag == 2) {
 			//获取结算时间为指定年的数据
-			LambdaQueryWrapper<ServiceProjectItem> itemLambdaQueryWrapper=new LambdaQueryWrapper<>();
-			itemLambdaQueryWrapper.apply(" year(pay_time) = '"+year+"'");
-			itemLambdaQueryWrapper.eq(ServiceProjectItem::getTenantId,AuthUtil.getTenantId());
-			itemLambdaQueryWrapper.eq(ServiceProjectItem::getIsDeleted,0);
+			LambdaQueryWrapper<ServiceProjectItem> itemLambdaQueryWrapper = new LambdaQueryWrapper<>();
+			itemLambdaQueryWrapper.apply(" year(pay_time) = '" + year + "'");
+			itemLambdaQueryWrapper.eq(ServiceProjectItem::getTenantId, AuthUtil.getTenantId());
+			itemLambdaQueryWrapper.eq(ServiceProjectItem::getIsDeleted, 0);
 			List<Long> pids = serviceProjectItemService.list(itemLambdaQueryWrapper).stream().map(ServiceProjectItem::getPId).collect(Collectors.toList());
-			if(CollectionUtils.isEmpty(pids))
-			{
+			if (CollectionUtils.isEmpty(pids)) {
 				return R.data(null);
 			}
 
-            //通过上述数据,查询相关客户数据
-			Page<ServiceProject> page=new Page<>(current,size);
-			LambdaQueryWrapper<ServiceProject> countCorps=new LambdaQueryWrapper<>();
+			//通过上述数据,查询相关客户数据
+			Page<ServiceProject> page = new Page<>(current, size);
+			LambdaQueryWrapper<ServiceProject> countCorps = new LambdaQueryWrapper<>();
 			countCorps
-				.eq(corpNames!=null,ServiceProject::getCorpId,corpNames)
+				.eq(corpNames != null, ServiceProject::getCorpId, corpNames)
 				.isNotNull(ServiceProject::getCorpId)
-				.in(ServiceProject::getId,pids)
-				.eq(ServiceProject::getIsDeleted,0)
+				.in(ServiceProject::getId, pids)
+				.eq(ServiceProject::getIsDeleted, 0)
 				.groupBy(ServiceProject::getCorpId)
-				.eq(ServiceProject::getTenantId,AuthUtil.getTenantId());
+				.eq(ServiceProject::getTenantId, AuthUtil.getTenantId());
 			IPage<ServiceProject> iPage = serviceProjectService.page(page, countCorps);
 
 			Long finalYear = year;
 			//开始封装数据
-			iPage.getRecords().forEach(e->{
+			iPage.getRecords().forEach(e -> {
 				//客户名称
-				if(e.getCorpId()!=null)
-				{
+				if (e.getCorpId() != null) {
 					R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(e.getCorpId());
-					if(corpMessage.isSuccess()&&corpMessage.getData()!=null)
-					{
+					if (corpMessage.isSuccess() && corpMessage.getData() != null) {
 						e.setCorpNames(corpMessage.getData().getCname());
 					}
 				}
 				//统计此客户多少个承做人
-				LambdaQueryWrapper<ServiceProject> count=new LambdaQueryWrapper<>();
-				count.eq(ServiceProject::getTenantId,AuthUtil.getTenantId());
-				count.eq(ServiceProject::getIsDeleted,0);
-				count.eq(ServiceProject::getCorpId,e.getCorpId());
+				LambdaQueryWrapper<ServiceProject> count = new LambdaQueryWrapper<>();
+				count.eq(ServiceProject::getTenantId, AuthUtil.getTenantId());
+				count.eq(ServiceProject::getIsDeleted, 0);
+				count.eq(ServiceProject::getCorpId, e.getCorpId());
 				List<Long> pid = serviceProjectService.list(count).stream().map(ServiceProject::getId).collect(Collectors.toList());
 
-				if(!CollectionUtils.isEmpty(pid))
-				{
-					LambdaQueryWrapper<ServiceProjectItem> countItem=new LambdaQueryWrapper<>();
-					countItem.in(ServiceProjectItem::getPId,pid);
-					countItem.eq(ServiceProjectItem::getIsDeleted,0);
-					countItem.eq(ServiceProjectItem::getTenantId,AuthUtil.getTenantId());
+				if (!CollectionUtils.isEmpty(pid)) {
+					LambdaQueryWrapper<ServiceProjectItem> countItem = new LambdaQueryWrapper<>();
+					countItem.in(ServiceProjectItem::getPId, pid);
+					countItem.eq(ServiceProjectItem::getIsDeleted, 0);
+					countItem.eq(ServiceProjectItem::getTenantId, AuthUtil.getTenantId());
 					List<ServiceProjectItem> list = serviceProjectItemService.list(countItem);
 					e.setCountUserName(list.stream().map(ServiceProjectItem::getUserName).distinct().collect(Collectors.toList()).size());
-				}
-				else
-				{
+				} else {
 					e.setCountUserName(0);
 				}
 
 
 				//统计服务费
-				ServiceProject serviceProject = calculateServiceCharge(null,e.getCorpId(), 2, finalYear);
-				e.setJan(serviceProject==null?BigDecimal.ZERO:serviceProject.getJan());//1
-				e.setFeb(serviceProject==null?BigDecimal.ZERO:serviceProject.getFeb());//2
-				e.setMar(serviceProject==null?BigDecimal.ZERO:serviceProject.getMar());//3
-				e.setApr(serviceProject==null?BigDecimal.ZERO:serviceProject.getApr());//4
-				e.setMay(serviceProject==null?BigDecimal.ZERO:serviceProject.getMay());//5
-				e.setJune(serviceProject==null?BigDecimal.ZERO:serviceProject.getJune());//6
-				e.setJuly(serviceProject==null?BigDecimal.ZERO:serviceProject.getJuly());//7
-				e.setAug(serviceProject==null?BigDecimal.ZERO:serviceProject.getAug());//8
-				e.setSept(serviceProject==null?BigDecimal.ZERO:serviceProject.getSept());//9
-				e.setOct(serviceProject==null?BigDecimal.ZERO:serviceProject.getOct());//10
-				e.setNov(serviceProject==null?BigDecimal.ZERO:serviceProject.getNov());//11
-				e.setDece(serviceProject==null?BigDecimal.ZERO:serviceProject.getDece());//12
+				ServiceProject serviceProject = calculateServiceCharge(null, e.getCorpId(), 2, finalYear);
+				e.setJan(serviceProject == null ? BigDecimal.ZERO : serviceProject.getJan());//1
+				e.setFeb(serviceProject == null ? BigDecimal.ZERO : serviceProject.getFeb());//2
+				e.setMar(serviceProject == null ? BigDecimal.ZERO : serviceProject.getMar());//3
+				e.setApr(serviceProject == null ? BigDecimal.ZERO : serviceProject.getApr());//4
+				e.setMay(serviceProject == null ? BigDecimal.ZERO : serviceProject.getMay());//5
+				e.setJune(serviceProject == null ? BigDecimal.ZERO : serviceProject.getJune());//6
+				e.setJuly(serviceProject == null ? BigDecimal.ZERO : serviceProject.getJuly());//7
+				e.setAug(serviceProject == null ? BigDecimal.ZERO : serviceProject.getAug());//8
+				e.setSept(serviceProject == null ? BigDecimal.ZERO : serviceProject.getSept());//9
+				e.setOct(serviceProject == null ? BigDecimal.ZERO : serviceProject.getOct());//10
+				e.setNov(serviceProject == null ? BigDecimal.ZERO : serviceProject.getNov());//11
+				e.setDece(serviceProject == null ? BigDecimal.ZERO : serviceProject.getDece());//12
 
 				e.setTotal
-					(    e.getJan()
+					(e.getJan()
 						.add(e.getFeb())
 						.add(e.getMar())
 						.add(e.getApr())
@@ -985,21 +919,15 @@ public class ProjectController {
 		return R.data(Collections.EMPTY_LIST);
 	}
 
-    //计算每个月的服务费
-	public ServiceProject calculateServiceCharge(String userName,Long id,int flag,Long year)
-	{
-		  if(flag==1)
-		  {
-			  return serviceProjectService.calculateServiceCharge(AuthUtil.getTenantId(), year.toString(), null, id,userName);
-		  }
-		  else if(flag==2)
-		  {
-			  return serviceProjectService.calculateServiceCharge(AuthUtil.getTenantId(),year.toString(),id,null,userName);
-		  }
-		  else
-		  {
-		  	throw new SecurityException("查询服务费失败");
-		  }
+	//计算每个月的服务费
+	public ServiceProject calculateServiceCharge(String userName, Long id, int flag, Long year) {
+		if (flag == 1) {
+			return serviceProjectService.calculateServiceCharge(AuthUtil.getTenantId(), year.toString(), null, id, userName);
+		} else if (flag == 2) {
+			return serviceProjectService.calculateServiceCharge(AuthUtil.getTenantId(), year.toString(), id, null, userName);
+		} else {
+			throw new SecurityException("查询服务费失败");
+		}
 
 	}
 

+ 6 - 6
blade-service/trade-finance/src/main/java/org/springblade/finance/controller/AccController.java

@@ -114,12 +114,12 @@ public class AccController extends BladeController {
 			.eq(acc.getCreateUser() != null, Acc::getCreateUser, acc.getCreateUser())
 			.eq(acc.getSrcParentId() != null, Acc::getSrcParentId, acc.getSrcParentId())
 			.eq(StringUtils.isNotBlank(acc.getDc()), Acc::getDc, acc.getDc())
-			.gt(acc.getCheckStatus() == 1, Acc::getCheckAmount, 0)
-			.eq(acc.getCheckStatus() == 2, Acc::getCheckAmount, 0)
-			.gt(acc.getSettlementStatus() == 1, Acc::getSettlementAmount, 0)
-			.eq(acc.getSettlementStatus() == 2, Acc::getSettlementAmount, 0)
-			.gt(acc.getInvoiceStatus() == 1, Acc::getInvoiceAmount, 0)
-			.eq(acc.getInvoiceStatus() == 2, Acc::getInvoiceAmount, 0)
+			.gt(acc.getCheckStatus() != null && acc.getCheckStatus() == 1, Acc::getCheckAmount, 0)
+			.eq(acc.getCheckStatus() != null && acc.getCheckStatus() == 2, Acc::getCheckAmount, 0)
+			.gt(acc.getCheckStatus() != null && acc.getCheckStatus() == 1, Acc::getSettlementAmount, 0)
+			.eq(acc.getCheckStatus() != null && acc.getCheckStatus() == 2, Acc::getSettlementAmount, 0)
+			.gt(acc.getCheckStatus() != null && acc.getCheckStatus() == 1, Acc::getInvoiceAmount, 0)
+			.eq(acc.getCheckStatus() != null && acc.getCheckStatus() == 2, Acc::getInvoiceAmount, 0)
 			.orderByDesc(Acc::getCreateTime);
 		IPage<Acc> pages = accService.page(Condition.getPage(query), accLambdaQueryWrapper);
 		pages.getRecords().forEach(e -> {