Browse Source

2024年9月9日17:28:09

纪新园 1 year ago
parent
commit
5add322d3f

+ 6 - 0
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/check/entity/PjAuditProecess.java

@@ -297,5 +297,11 @@ public class PjAuditProecess implements Serializable {
 	@ApiModelProperty(value = "所属公司名称")
 	private String salesCompanyName;
 
+	/**
+	 * 可用金额
+	 */
+	@TableField(exist = false)
+	private BigDecimal availableAmount;
+
 
 }

+ 35 - 9
blade-service/blade-client/src/main/java/org/springblade/client/goods/controller/GoodsDescController.java

@@ -28,14 +28,16 @@ import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import lombok.AllArgsConstructor;
 import org.apache.commons.lang3.StringUtils;
-import org.springblade.client.corps.excel.CorpsImportExcel;
 import org.springblade.client.corps.excel.GoodsImportExcel;
 import org.springblade.client.corps.service.ICorpsAttnService;
 import org.springblade.client.corps.service.ICorpsDescService;
 import org.springblade.client.entity.*;
 import org.springblade.client.feign.IRedisClient;
 import org.springblade.client.goods.enums.GoodsTypeEnum;
-import org.springblade.client.goods.excel.*;
+import org.springblade.client.goods.excel.GoodsExcels;
+import org.springblade.client.goods.excel.GoodsInfoExcel;
+import org.springblade.client.goods.excel.GoodsOutDWTExcel;
+import org.springblade.client.goods.excel.GoodsOutExcel;
 import org.springblade.client.goods.mapper.GoodsFilesMapper;
 import org.springblade.client.goods.service.*;
 import org.springblade.client.vo.GoodsDescVO;
@@ -671,6 +673,7 @@ public class GoodsDescController extends BladeController {
 		List<GoodsExcels> list = new ArrayList<>();
 		ExcelUtil.export(response, "导入商品模板-商品信息", "导入商品模板", list, GoodsExcels.class);
 	}
+
 	/**
 	 * 导入商品-贸易
 	 */
@@ -685,6 +688,7 @@ public class GoodsDescController extends BladeController {
 		}
 		return goodsDescService.importGoodsNew(excelList, false);
 	}
+
 	/**
 	 * 导出数据-贸易
 	 */
@@ -711,13 +715,34 @@ public class GoodsDescController extends BladeController {
 		}
 		List<GoodsDesc> list = goodsDescService.list(goodsDescLambdaQueryWrapper);
 
-		List<GoodesExportExcel> exportList = list.stream().map(data -> {
-			GoodesExportExcel gee = new GoodesExportExcel();
-			BeanUtils.copyProperties(data, gee);
-			return gee;
-		}).collect(Collectors.toList());
-
-		ExcelUtil.export(response, "导出数据-产品信息", "导出数据表", exportList, GoodesExportExcel.class);
+		List<GoodsExcels> exportList = new ArrayList<>();
+		if (CollectionUtils.isNotEmpty(list)) {
+			List<GoodsType> types = new ArrayList<>();
+			StringBuilder typeId = new StringBuilder();
+			for (GoodsDesc e : list) {
+				typeId.append(e.getGoodsTypeId()).append(",");
+			}
+			if (typeId.length() > 0) {
+				String ids = typeId.substring(0, typeId.length() - 1);
+				List<String> arr = Arrays.asList(ids.split(","));
+				LambdaQueryWrapper<GoodsType> goodsTypeLambdaQueryWrapper = new LambdaQueryWrapper<>();
+				goodsTypeLambdaQueryWrapper.in(GoodsType::getId, arr);
+				types = goodsDescType.list(goodsTypeLambdaQueryWrapper);
+			}
+			List<GoodsType> finalTypes = types;
+			list.forEach(e -> {
+				GoodsExcels goodsExcels = new GoodsExcels();
+				List<GoodsType> typeList = finalTypes.stream().filter(i -> e.getGoodsTypeId().contains(i.getId() + "")).collect(Collectors.toList());
+				if (CollectionUtils.isNotEmpty(typeList)) {
+					String typeStr = typeList.stream().map(GoodsType::getCname).collect(Collectors.joining(","));
+					goodsExcels.setType(typeStr);
+				}
+				BeanUtil.copyProperties(e, goodsExcels);
+				goodsExcels.setGoodsIds(e.getId() + "");
+				exportList.add(goodsExcels);
+			});
+		}
+		ExcelUtil.export(response, "导出数据-产品信息", "导出数据表", exportList, GoodsExcels.class);
 	}
 
 	/**
@@ -730,6 +755,7 @@ public class GoodsDescController extends BladeController {
 		List<GoodsInfoExcel> list = new ArrayList<>();
 		ExcelUtil.export(response, "导入模板-产品信息", "导入模板", list, GoodsInfoExcel.class);
 	}
+
 	/**
 	 * 导入产品信息-轮胎
 	 */

+ 10 - 5
blade-service/blade-client/src/main/java/org/springblade/client/goods/excel/GoodsExcels.java

@@ -27,6 +27,14 @@ public class GoodsExcels implements Serializable {
 	//英文名称
 	@ExcelProperty("英文名称(必填)")
 	private String ename;
+	@ExcelProperty("供应商")
+	private String corpName;
+	@ExcelProperty("分管员")
+	private String supervisorUserNameGroup;
+	@ExcelProperty("计价单位")
+	private String unit;
+	@ExcelProperty("包装单位")
+	private String packgeunit;
 	//海关中文
 	@ExcelProperty("海关中文")
 	private String customName;
@@ -51,17 +59,14 @@ public class GoodsExcels implements Serializable {
 	//单价
 	@ExcelProperty("单价")
 	private BigDecimal price;
-	/**
-	 * 供应商名称
-	 */
-	@ExcelProperty("供应商名称")
-	private String corpName;
 	//中文描述
 	@ExcelProperty("中文描述")
 	private String nameDescription;
 	//英文描述
 	@ExcelProperty("英文描述")
 	private String cnameDescription;
+	@ExcelProperty("商品唯一ID(*勿动*)")
+	private String goodsIds;
 
 
 

+ 236 - 163
blade-service/blade-client/src/main/java/org/springblade/client/goods/service/impl/GoodsDescServiceImpl.java

@@ -29,7 +29,6 @@ import org.springblade.client.corps.excel.GoodsImportExcel;
 import org.springblade.client.corps.mapper.CorpsDescMapper;
 import org.springblade.client.dto.GoodsDescDto;
 import org.springblade.client.entity.*;
-import org.springblade.client.feign.ICorpsDescClient;
 import org.springblade.client.goods.excel.GoodsExcel;
 import org.springblade.client.goods.excel.GoodsExcels;
 import org.springblade.client.goods.excel.GoodsInfoExcel;
@@ -83,7 +82,6 @@ public class GoodsDescServiceImpl extends ServiceImpl<GoodsDescMapper, GoodsDesc
 	private final GoodsFilesMapper goodsFilesMapper;
 	private final GoodsSpecificationMapper goodsSpecificationMapper;
 	private final CorpsDescMapper corpsDescMapper;
-	private final ICorpsDescClient corpsDescClient;
 	private final IBrandClient brandClient;
 	private final IUserClient userClient;
 
@@ -392,84 +390,99 @@ public class GoodsDescServiceImpl extends ServiceImpl<GoodsDescMapper, GoodsDesc
 	}
 
 	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public R importGoods(List<GoodsExcel> data, Boolean isCovered) {
 
 		if (org.springframework.util.CollectionUtils.isEmpty(data)) {
 			throw new SecurityException("导入数据不能为空");
 		}
 
+		String type = data.stream().map(GoodsExcel::getType).distinct().collect(Collectors.joining(","));
+		List<GoodsType> goodsTypeList = goodsTypeMapper.selectList(new LambdaQueryWrapper<GoodsType>()
+			.eq(GoodsType::getTenantId, AuthUtil.getTenantId())
+			.eq(GoodsType::getIsDeleted, 0)
+			.apply("find_in_set(cname,'" + type + "')"));
+		if (goodsTypeList.isEmpty()) {
+			throw new RuntimeException("未查到分类信息");
+		}
 		for (int i = 0; i < data.size(); i++) {
 			GoodsExcel goodsExcel = data.get(i);
-			String type = goodsExcel.getType();
-			GoodsType goodsType = goodsTypeMapper.selectGoodsTypeCname(type, AuthUtil.getTenantId(), null);
-			if (goodsType == null) {
+			List<GoodsType> goodsTypes = goodsTypeList.stream().filter(e -> goodsExcel.getType().contains(e.getCname())).collect(Collectors.toList());
+			if (goodsTypes.isEmpty()) {
 				throw new SecurityException("第" + (i + 1) + "行未添加分类或者分类不存在");
 			}
 		}
-
+		List<CorpsDesc> corpsDescList = corpsDescMapper.selectList(new LambdaQueryWrapper<CorpsDesc>()
+			.eq(CorpsDesc::getTenantId, AuthUtil.getTenantId())
+			.eq(CorpsDesc::getIsDeleted, 0)
+			.eq(CorpsDesc::getCorpType, "GYS"));
 		data.forEach(e -> {
-			String type = e.getType();
-			GoodsType goodsType = goodsTypeMapper.selectGoodsTypeCname(type, AuthUtil.getTenantId(), null);
-			if (goodsType != null) {
-				GoodsDesc goodsDesc = new GoodsDesc();
-				goodsDesc.setCode(e.getCode());
-				goodsDesc.setCname(e.getCname());
-				goodsDesc.setCnameInt(e.getCnameInt());
-				if (StringUtil.isBlank(goodsDesc.getCnameInt())) {
-					goodsDesc.setCnameInt(getCnameInt(goodsDesc.getCname()));
-				}
-				goodsDesc.setBrandItem(e.getBrandItem());
-				goodsDesc.setBrand(e.getBrand());
-				goodsDesc.setTypeno(e.getTypeNo());
-				goodsDesc.setSpecsOne(e.getSpecsOne());
-				goodsDesc.setLevel(e.getLevel());
-				goodsDesc.setLevelOne(e.getLevelOne());
-				goodsDesc.setMasterUnit(e.getMasterUnit());
-				goodsDesc.setSlaveUnit(e.getSlaveUnit());
-				goodsDesc.setSwapRate(e.getSwapRate());
-				goodsDesc.setTinyNumber(e.getTinyNumber());
-				goodsDesc.setTax(e.getTax());
-				goodsDesc.setPrice(e.getPrice());
-				goodsDesc.setEffectiveDay(e.getEffectiveDay());
-				goodsDesc.setPlaceProduction(e.getPlaceProduction());
-				goodsDesc.setCompany(e.getCompany());
-				goodsDesc.setRemarks(e.getRemarks());
-				goodsDesc.setType(0L);
-				goodsDesc.setGoodsTypeId(String.valueOf(goodsType.getId()));
-				// 获取供应商
-				/*CorpsDesc corpsDesc = new CorpsDesc();
-				corpsDesc.setCname(e.getCorpName());
-				corpsDesc.setCorpType("GYS");*/
-				CorpsDesc corpByName = corpsDescClient.getCorpsDesc(e.getCorpName(), "GYS");
-				if (corpByName != null) {
-					goodsDesc.setCorpId(corpByName.getId());
-					goodsDesc.setCorpName(corpByName.getCname());
-				}
-				// 如果名称相等 就认为重复
-				LambdaQueryWrapper<GoodsDesc> queryWrapper = new LambdaQueryWrapper<>();
-				queryWrapper.eq(GoodsDesc::getTenantId, AuthUtil.getTenantId());
-				queryWrapper.eq(GoodsDesc::getCname, goodsDesc.getCname());
-				queryWrapper.eq(GoodsDesc::getIsDeleted, 0);
-				GoodsDesc one = goodsDescMapper.selectOne(queryWrapper);
-				if (one == null) {
-					goodsDesc.setCreateTime(new Date());
-					goodsDesc.setCreateUser(AuthUtil.getUserId());
-					goodsDesc.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
-					goodsDescMapper.insert(goodsDesc);
-
+			List<GoodsType> goodsTypes = goodsTypeList.stream().filter(i -> e.getType().contains(i.getCname())).collect(Collectors.toList());
+			GoodsDesc goodsDesc = new GoodsDesc();
+			goodsDesc.setCode(e.getCode());
+			goodsDesc.setCname(e.getCname());
+			goodsDesc.setCnameInt(e.getCnameInt());
+			if (StringUtil.isBlank(goodsDesc.getCnameInt())) {
+				goodsDesc.setCnameInt(getCnameInt(goodsDesc.getCname()));
+			}
+			goodsDesc.setBrandItem(e.getBrandItem());
+			goodsDesc.setBrand(e.getBrand());
+			goodsDesc.setTypeno(e.getTypeNo());
+			goodsDesc.setSpecsOne(e.getSpecsOne());
+			goodsDesc.setLevel(e.getLevel());
+			goodsDesc.setLevelOne(e.getLevelOne());
+			goodsDesc.setMasterUnit(e.getMasterUnit());
+			goodsDesc.setSlaveUnit(e.getSlaveUnit());
+			goodsDesc.setSwapRate(e.getSwapRate());
+			goodsDesc.setTinyNumber(e.getTinyNumber());
+			goodsDesc.setTax(e.getTax());
+			goodsDesc.setPrice(e.getPrice());
+			goodsDesc.setEffectiveDay(e.getEffectiveDay());
+			goodsDesc.setPlaceProduction(e.getPlaceProduction());
+			goodsDesc.setCompany(e.getCompany());
+			goodsDesc.setRemarks(e.getRemarks());
+			goodsDesc.setType(0L);
+			StringBuilder typeIds = new StringBuilder();
+			List<Long> typeIdList = goodsTypes.stream().map(GoodsType::getId).distinct().collect(Collectors.toList());
+			for (Long id : typeIdList) {
+				typeIds.append(id).append(",");
+			}
+			if (ObjectUtils.isNotNull(typeIds.toString())) {
+				typeIds = new StringBuilder(typeIds.substring(0, typeIds.length() - 1));
+			}
+			goodsDesc.setGoodsTypeId(typeIds.toString());
+			// 获取供应商
+			CorpsDesc corpByName = corpsDescList.stream().filter(i -> i.getCname().equals(e.getCorpName())).findFirst().orElse(null);
+			if (corpByName != null) {
+				goodsDesc.setCorpId(corpByName.getId());
+				goodsDesc.setCorpName(corpByName.getCname());
+			}
+			// 如果名称相等 就认为重复
+			LambdaQueryWrapper<GoodsDesc> queryWrapper = new LambdaQueryWrapper<>();
+			queryWrapper.eq(GoodsDesc::getTenantId, AuthUtil.getTenantId());
+			queryWrapper.eq(GoodsDesc::getCname, goodsDesc.getCname());
+			queryWrapper.eq(GoodsDesc::getIsDeleted, 0);
+			GoodsDesc one = goodsDescMapper.selectOne(queryWrapper);
+			if (one == null) {
+				goodsDesc.setCreateTime(new Date());
+				goodsDesc.setCreateUser(AuthUtil.getUserId());
+				goodsDesc.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
+				goodsDescMapper.insert(goodsDesc);
+
+				for (GoodsType item : goodsTypes) {
 					GoodsTypeDesc goodsTypeDes = new GoodsTypeDesc();
 					goodsTypeDes.setGoodsId(goodsDesc.getId());
-					goodsTypeDes.setGoodsTypeId(goodsType.getId());
+					goodsTypeDes.setGoodsTypeId(item.getId());
 					goodsTypeDes.setCreateTime(new Date());
 					goodsTypeDes.setCreateUser(AuthUtil.getUserId());
 					goodsTypeDes.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
 					goodsTypeDescMapper.insert(goodsTypeDes);
-				} else {
-					goodsDesc.setId(one.getId());
-					goodsDesc.setUpdateTime(new Date());
-					goodsDesc.setUpdateUser(AuthUtil.getUserId());
-					goodsDescMapper.updateById(goodsDesc);
 				}
+			} else {
+				goodsDesc.setId(one.getId());
+				goodsDesc.setUpdateTime(new Date());
+				goodsDesc.setUpdateUser(AuthUtil.getUserId());
+				goodsDescMapper.updateById(goodsDesc);
 			}
 		});
 		return R.success("ok");
@@ -484,48 +497,89 @@ public class GoodsDescServiceImpl extends ServiceImpl<GoodsDescMapper, GoodsDesc
 	 * @return
 	 */
 	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public R importGoodsNew(List<GoodsExcels> data, Boolean isCovered) {
 		if (org.springframework.util.CollectionUtils.isEmpty(data)) {
 			throw new SecurityException("导入数据不能为空");
 		}
-
+		String type = data.stream().map(GoodsExcels::getType).distinct().collect(Collectors.joining(","));
+		List<GoodsType> goodsTypeList = goodsTypeMapper.selectList(new LambdaQueryWrapper<GoodsType>()
+			.eq(GoodsType::getTenantId, AuthUtil.getTenantId())
+			.eq(GoodsType::getIsDeleted, 0)
+			.apply("find_in_set(cname,'" + type + "')"));
+		if (goodsTypeList.isEmpty()) {
+			throw new RuntimeException("未查到分类信息");
+		}
 		for (int i = 0; i < data.size(); i++) {
 			GoodsExcels goodsExcel = data.get(i);
-			String type = goodsExcel.getType();
-			GoodsType goodsType = goodsTypeMapper.selectGoodsTypeCname(type, AuthUtil.getTenantId(), null);
-			if (goodsType == null) {
+			List<GoodsType> goodsTypes = goodsTypeList.stream().filter(e -> goodsExcel.getType().contains(e.getCname())).collect(Collectors.toList());
+			if (goodsTypes.isEmpty()) {
 				throw new SecurityException("第" + (i + 1) + "行未添加分类或者分类不存在");
 			}
 		}
-
-		data.forEach(e -> {
-			String type = e.getType();
-			GoodsType goodsType = goodsTypeMapper.selectGoodsTypeCname(type, AuthUtil.getTenantId(), null);
-			if (goodsType != null) {
-				GoodsDesc goodsDesc = new GoodsDesc();
-				goodsDesc.setCode(e.getCode());
-				goodsDesc.setCname(e.getCname());
-				goodsDesc.setEname(e.getEname());
-				goodsDesc.setTypeno(e.getTypeno());
-				goodsDesc.setEtypeno(e.getEtypeno());
-				goodsDesc.setCustomName(e.getCustomName());
-				goodsDesc.setCustomEname(e.getCustomEname());
-				goodsDesc.setCustomCode(e.getCustomCode());
-				goodsDesc.setCustomRate(e.getCustomRate());
-				goodsDesc.setNameDescription(e.getNameDescription());
-				goodsDesc.setCnameDescription(e.getCnameDescription());
-				if (StringUtil.isBlank(goodsDesc.getCnameInt())) {
-					goodsDesc.setCnameInt(getCnameInt(goodsDesc.getCname()));
+		String adminProfilesName = data.stream().map(GoodsExcels::getSupervisorUserNameGroup).distinct().collect(Collectors.joining(","));
+		String userIds = userClient.selectUserByNames(adminProfilesName);
+		List<User> userList = new ArrayList<>();
+		if (ObjectUtils.isNotNull(userIds)) {
+			userList = userClient.selectUserList(userIds);
+		}
+		List<CorpsDesc> corpsDescList = corpsDescMapper.selectList(new LambdaQueryWrapper<CorpsDesc>()
+			.eq(CorpsDesc::getTenantId, AuthUtil.getTenantId())
+			.eq(CorpsDesc::getIsDeleted, 0)
+			.eq(CorpsDesc::getCorpType, "GYS"));
+		for (GoodsExcels e : data) {
+			List<GoodsType> goodsTypes = goodsTypeList.stream().filter(i -> e.getType().contains(i.getCname())).collect(Collectors.toList());
+			GoodsDesc goodsDesc = new GoodsDesc();
+			goodsDesc.setCode(e.getCode());
+			goodsDesc.setCname(e.getCname());
+			goodsDesc.setEname(e.getEname());
+			goodsDesc.setTypeno(e.getTypeno());
+			goodsDesc.setEtypeno(e.getEtypeno());
+			goodsDesc.setCustomName(e.getCustomName());
+			goodsDesc.setCustomEname(e.getCustomEname());
+			goodsDesc.setCustomCode(e.getCustomCode());
+			goodsDesc.setCustomRate(e.getCustomRate());
+			goodsDesc.setNameDescription(e.getNameDescription());
+			goodsDesc.setCnameDescription(e.getCnameDescription());
+			if (StringUtil.isBlank(goodsDesc.getCnameInt())) {
+				goodsDesc.setCnameInt(getCnameInt(goodsDesc.getCname()));
+			}
+			goodsDesc.setPrice(e.getPrice());
+			goodsDesc.setType(0L);
+			StringBuilder typeIds = new StringBuilder();
+			List<Long> typeIdList = goodsTypes.stream().map(GoodsType::getId).distinct().collect(Collectors.toList());
+			for (Long id : typeIdList) {
+				typeIds.append(id).append(",");
+			}
+			if (ObjectUtils.isNotNull(typeIds.toString())) {
+				typeIds = new StringBuilder(typeIds.substring(0, typeIds.length() - 1));
+			}
+			goodsDesc.setGoodsTypeId(typeIds.toString());
+			// 获取供应商
+			CorpsDesc corpByName = corpsDescList.stream().filter(i -> i.getCname().equals(e.getCorpName())).findFirst().orElse(null);
+			if (corpByName != null) {
+				goodsDesc.setCorpId(corpByName.getId());
+				goodsDesc.setCorpName(corpByName.getCname());
+			}
+			if (!userList.isEmpty() && ObjectUtils.isNotNull(e.getSupervisorUserNameGroup())) {
+				goodsDesc.setSupervisorUserNameGroup(userList.stream().map(User::getRealName)
+					.filter(realName -> e.getSupervisorUserNameGroup().contains(realName)).collect(Collectors.joining(",")));
+				List<Long> ids = userList.stream().filter(realName -> e.getSupervisorUserNameGroup().contains(realName.getRealName()))
+					.map(User::getId).distinct().collect(Collectors.toList());
+				StringBuilder supervisorUserIdGroup = new StringBuilder();
+				for (Long i : ids) {
+					supervisorUserIdGroup.append(i).append(",");
 				}
-				goodsDesc.setPrice(e.getPrice());
-				goodsDesc.setType(0L);
-				goodsDesc.setGoodsTypeId(String.valueOf(goodsType.getId()));
-				// 获取供应商
-				CorpsDesc corpByName = corpsDescClient.getCorpsDesc(e.getCorpName(), "GYS");
-				if (corpByName != null) {
-					goodsDesc.setCorpId(corpByName.getId());
-					goodsDesc.setCorpName(corpByName.getCname());
+				if (ObjectUtils.isNotNull(supervisorUserIdGroup.toString())) {
+					goodsDesc.setSupervisorUserIdGroup(supervisorUserIdGroup.substring(0, supervisorUserIdGroup.length() - 1));
 				}
+			}
+			if (ObjectUtils.isNotNull(e.getGoodsIds())) {
+				goodsDesc.setId(Long.parseLong(e.getGoodsIds()));
+				goodsDesc.setUpdateTime(new Date());
+				goodsDesc.setUpdateUser(AuthUtil.getUserId());
+				goodsDescMapper.updateById(goodsDesc);
+			} else {
 				// 如果名称相等 就认为重复
 				LambdaQueryWrapper<GoodsDesc> queryWrapper = new LambdaQueryWrapper<>();
 				queryWrapper.eq(GoodsDesc::getTenantId, AuthUtil.getTenantId());
@@ -537,14 +591,15 @@ public class GoodsDescServiceImpl extends ServiceImpl<GoodsDescMapper, GoodsDesc
 					goodsDesc.setCreateUser(AuthUtil.getUserId());
 					goodsDesc.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
 					goodsDescMapper.insert(goodsDesc);
-
-					GoodsTypeDesc goodsTypeDes = new GoodsTypeDesc();
-					goodsTypeDes.setGoodsId(goodsDesc.getId());
-					goodsTypeDes.setGoodsTypeId(goodsType.getId());
-					goodsTypeDes.setCreateTime(new Date());
-					goodsTypeDes.setCreateUser(AuthUtil.getUserId());
-					goodsTypeDes.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
-					goodsTypeDescMapper.insert(goodsTypeDes);
+					for (GoodsType item : goodsTypes) {
+						GoodsTypeDesc goodsTypeDes = new GoodsTypeDesc();
+						goodsTypeDes.setGoodsId(goodsDesc.getId());
+						goodsTypeDes.setGoodsTypeId(item.getId());
+						goodsTypeDes.setCreateTime(new Date());
+						goodsTypeDes.setCreateUser(AuthUtil.getUserId());
+						goodsTypeDes.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
+						goodsTypeDescMapper.insert(goodsTypeDes);
+					}
 				} else {
 					goodsDesc.setId(one.getId());
 					goodsDesc.setUpdateTime(new Date());
@@ -552,93 +607,111 @@ public class GoodsDescServiceImpl extends ServiceImpl<GoodsDescMapper, GoodsDesc
 					goodsDescMapper.updateById(goodsDesc);
 				}
 			}
-		});
+		}
 		return R.success("ok");
 	}
 
 	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public R importGoodsInfo(List<GoodsInfoExcel> data, Boolean isCovered) {
 		if (org.springframework.util.CollectionUtils.isEmpty(data)) {
 			throw new SecurityException("导入数据不能为空");
 		}
 
+		String type = data.stream().map(GoodsInfoExcel::getType).distinct().collect(Collectors.joining(","));
+		List<GoodsType> goodsTypeList = goodsTypeMapper.selectList(new LambdaQueryWrapper<GoodsType>()
+			.eq(GoodsType::getTenantId, AuthUtil.getTenantId())
+			.eq(GoodsType::getIsDeleted, 0)
+			.apply("find_in_set(cname,'" + type + "')"));
+		if (goodsTypeList.isEmpty()) {
+			throw new RuntimeException("未查到分类信息");
+		}
 		for (int i = 0; i < data.size(); i++) {
 			GoodsInfoExcel goodsExcel = data.get(i);
-			String type = goodsExcel.getType();
-			GoodsType goodsType = goodsTypeMapper.selectGoodsTypeCname(type, AuthUtil.getTenantId(), null);
-			if (goodsType == null) {
+			List<GoodsType> goodsTypes = goodsTypeList.stream().filter(e -> goodsExcel.getType().contains(e.getCname())).collect(Collectors.toList());
+			if (goodsTypes.isEmpty()) {
 				throw new SecurityException("第" + (i + 1) + "行未添加分类或者分类不存在");
 			}
 		}
-
+		List<CorpsDesc> corpsDescList = corpsDescMapper.selectList(new LambdaQueryWrapper<CorpsDesc>()
+			.eq(CorpsDesc::getTenantId, AuthUtil.getTenantId())
+			.eq(CorpsDesc::getIsDeleted, 0)
+			.eq(CorpsDesc::getCorpType, "GYS"));
 		data.forEach(e -> {
-			String type = e.getType();
-			GoodsType goodsType = goodsTypeMapper.selectGoodsTypeCname(type, AuthUtil.getTenantId(), null);
-			if (goodsType != null) {
-				GoodsDesc goodsDesc = new GoodsDesc();
-				BeanUtils.copyProperties(e, goodsDesc);
+			List<GoodsType> goodsTypes = goodsTypeList.stream().filter(i -> e.getType().contains(i.getCname())).collect(Collectors.toList());
+			GoodsDesc goodsDesc = new GoodsDesc();
+			BeanUtils.copyProperties(e, goodsDesc);
 
-				if (StringUtil.isBlank(goodsDesc.getCnameInt())) {
-					goodsDesc.setCnameInt(getCnameInt(goodsDesc.getCname()));
-				}
+			if (StringUtil.isBlank(goodsDesc.getCnameInt())) {
+				goodsDesc.setCnameInt(getCnameInt(goodsDesc.getCname()));
+			}
 
-				R<CorpsDesc> corpByName = corpsDescClient.getCorpByName(e.getCorpName(), AuthUtil.getTenantId());
-				if (corpByName.isSuccess() && corpByName.getData() != null) {
-					goodsDesc.setCorpName(e.getCorpName());
-					goodsDesc.setCorpId(corpByName.getData().getId());
+			CorpsDesc corpByName = corpsDescList.stream().filter(i -> i.getCname().equals(e.getCorpName())).findFirst().orElse(null);
+			if (corpByName != null) {
+				goodsDesc.setCorpName(corpByName.getCname());
+				goodsDesc.setCorpId(corpByName.getId());
+			} else {
+				throw new SecurityException("请输入正确的供应商");
+			}
+			if (StringUtil.isNotBlank(e.getArtsVisionName())) {
+				CorpsDesc company = corpsDescMapper.selectOne(new LambdaQueryWrapper<CorpsDesc>()
+					.eq(CorpsDesc::getCname, e.getArtsVisionName())
+					.like(CorpsDesc::getCorpType, "GS")
+					.eq(CorpsDesc::getTenantId, AuthUtil.getTenantId())
+					.eq(CorpsDesc::getIsDeleted, 0)
+				);
+				if (ObjectUtil.isNotEmpty(company)) {
+					goodsDesc.setArtsVision(String.valueOf(company.getId()));
 				} else {
-					throw new SecurityException("请输入正确的供应商");
+					throw new SecurityException("请输入正确的所属公司");
 				}
-				if (StringUtil.isNotBlank(e.getArtsVisionName())) {
-					CorpsDesc company = corpsDescMapper.selectOne(new LambdaQueryWrapper<CorpsDesc>()
-						.eq(CorpsDesc::getCname, e.getArtsVisionName())
-						.like(CorpsDesc::getCorpType, "GS")
-						.eq(CorpsDesc::getTenantId, AuthUtil.getTenantId())
-						.eq(CorpsDesc::getIsDeleted, 0)
-					);
-					if (ObjectUtil.isNotEmpty(company)) {
-						goodsDesc.setArtsVision(String.valueOf(company.getId()));
-					} else {
-						throw new SecurityException("请输入正确的所属公司");
-					}
-				}
-
-				// 获取供应商
-				goodsDesc.setTypeno(e.getTypeNo());
-				goodsDesc.setCntrVolumn(e.getCntrVolumn());
-				goodsDesc.setCartonWeight(e.getCartonWeight());
-				goodsDesc.setUnit(e.getUnit());
-				goodsDesc.setSize(e.getSize());
-				goodsDesc.setType(0L);
-				goodsDesc.setGoodsTypeId(String.valueOf(goodsType.getId()));
-				// 如果名称相等 就认为重复
-				LambdaQueryWrapper<GoodsDesc> queryWrapper = new LambdaQueryWrapper<>();
-				queryWrapper.eq(GoodsDesc::getTenantId, AuthUtil.getTenantId());
-				queryWrapper.eq(GoodsDesc::getCode, goodsDesc.getCode());
-				queryWrapper.eq(GoodsDesc::getIsDeleted, 0);
-				GoodsDesc one = goodsDescMapper.selectOne(queryWrapper);
-
-				if (one == null) {
-					goodsDesc.setIntegralMultiples(new BigDecimal(StringUtils.isBlank(e.getIntegralMultiples()) ? "0" : e.getIntegralMultiples()));
-					goodsDesc.setCreateTime(new Date());
-					goodsDesc.setCreateUser(AuthUtil.getUserId());
-					goodsDesc.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
-					goodsDescMapper.insert(goodsDesc);
+			}
 
+			// 获取供应商
+			goodsDesc.setTypeno(e.getTypeNo());
+			goodsDesc.setCntrVolumn(e.getCntrVolumn());
+			goodsDesc.setCartonWeight(e.getCartonWeight());
+			goodsDesc.setUnit(e.getUnit());
+			goodsDesc.setSize(e.getSize());
+			goodsDesc.setType(0L);
+			StringBuilder typeIds = new StringBuilder();
+			List<Long> typeIdList = goodsTypes.stream().map(GoodsType::getId).distinct().collect(Collectors.toList());
+			for (Long id : typeIdList) {
+				typeIds.append(id).append(",");
+			}
+			if (ObjectUtils.isNotNull(typeIds.toString())) {
+				typeIds = new StringBuilder(typeIds.substring(0, typeIds.length() - 1));
+			}
+			goodsDesc.setGoodsTypeId(typeIds.toString());
+			// 如果名称相等 就认为重复
+			LambdaQueryWrapper<GoodsDesc> queryWrapper = new LambdaQueryWrapper<>();
+			queryWrapper.eq(GoodsDesc::getTenantId, AuthUtil.getTenantId());
+			queryWrapper.eq(GoodsDesc::getCode, goodsDesc.getCode());
+			queryWrapper.eq(GoodsDesc::getIsDeleted, 0);
+			GoodsDesc one = goodsDescMapper.selectOne(queryWrapper);
+
+			if (one == null) {
+				goodsDesc.setIntegralMultiples(new BigDecimal(StringUtils.isBlank(e.getIntegralMultiples()) ? "0" : e.getIntegralMultiples()));
+				goodsDesc.setCreateTime(new Date());
+				goodsDesc.setCreateUser(AuthUtil.getUserId());
+				goodsDesc.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
+				goodsDescMapper.insert(goodsDesc);
+
+				for (GoodsType item : goodsTypes) {
 					GoodsTypeDesc goodsTypeDes = new GoodsTypeDesc();
 					goodsTypeDes.setGoodsId(goodsDesc.getId());
-					goodsTypeDes.setGoodsTypeId(goodsType.getId());
+					goodsTypeDes.setGoodsTypeId(item.getId());
 					goodsTypeDes.setCreateTime(new Date());
 					goodsTypeDes.setCreateUser(AuthUtil.getUserId());
 					goodsTypeDes.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
 					goodsTypeDescMapper.insert(goodsTypeDes);
-				} else {
-					goodsDesc.setIntegralMultiples(new BigDecimal(StringUtils.isBlank(e.getIntegralMultiples()) ? "0" : e.getIntegralMultiples()));
-					goodsDesc.setId(one.getId());
-					goodsDesc.setUpdateTime(new Date());
-					goodsDesc.setUpdateUser(AuthUtil.getUserId());
-					goodsDescMapper.updateById(goodsDesc);
 				}
+			} else {
+				goodsDesc.setIntegralMultiples(new BigDecimal(StringUtils.isBlank(e.getIntegralMultiples()) ? "0" : e.getIntegralMultiples()));
+				goodsDesc.setId(one.getId());
+				goodsDesc.setUpdateTime(new Date());
+				goodsDesc.setUpdateUser(AuthUtil.getUserId());
+				goodsDescMapper.updateById(goodsDesc);
 			}
 		});
 		return R.success("ok");
@@ -696,7 +769,6 @@ public class GoodsDescServiceImpl extends ServiceImpl<GoodsDescMapper, GoodsDesc
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
 	public void modifyParts(GoodsDescDto goodsDescDto) {
 		LambdaQueryWrapper<GoodsDesc> lambdaQueryWrapper = new LambdaQueryWrapper<>();
 		lambdaQueryWrapper.eq(GoodsDesc::getType, 0);
@@ -783,6 +855,7 @@ public class GoodsDescServiceImpl extends ServiceImpl<GoodsDescMapper, GoodsDesc
 	}
 
 	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public R importDescPartsInfo(List<GoodsInfoPartsExcel> excelList, boolean b) {
 		if (ObjectUtils.isNull(excelList)) {
 			throw new SecurityException("导入数据不能为空");
@@ -900,13 +973,13 @@ public class GoodsDescServiceImpl extends ServiceImpl<GoodsDescMapper, GoodsDesc
 	}
 
 	@Override
-	@Transactional
+	@Transactional(rollbackFor = Exception.class)
 	public R importCorp(List<GoodsImportExcel> excelList) {
 		List<GoodsDesc> goodsDescList = new ArrayList<>();
 		String adminProfilesName = excelList.stream().map(GoodsImportExcel::getSupervisorUserNameGroup).distinct().collect(Collectors.joining(","));
 		String userIds = userClient.selectUserByNames(adminProfilesName);
 		List<User> userList = new ArrayList<>();
-		if (ObjectUtils.isNotNull(userIds)){
+		if (ObjectUtils.isNotNull(userIds)) {
 			userList = userClient.selectUserList(userIds);
 		}
 		for (GoodsImportExcel item : excelList) {

+ 39 - 26
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/BillsServiceImpl.java

@@ -151,7 +151,6 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
 	public R submit(Bills billss) throws Exception {
 		Object object = StringTools.handle(billss, "Bills");
 		Bills bills = JSONObject.parseObject(JSONObject.toJSONString(object), Bills.class);
@@ -159,9 +158,9 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 		String deptName = "";
 		String branchId = deptUtils.getDeptPid() + "";
 		//获取部门ids对应中文名
-		if (ObjectUtils.isNotNull(deptUtils.getDeptPid() + "")) {
+		if (ObjectUtils.isNotNull(branchId)) {
 			deptId = deptUtils.getDeptPid() + "";
-			R<List<String>> res = sysClient.getDeptNames(deptUtils.getDeptPid() + "");
+			R<List<String>> res = sysClient.getDeptNames(branchId);
 			if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
 				deptName = String.join(",", res.getData());
 			}
@@ -171,7 +170,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 		}
 		List<Bills> count = baseMapper.selectList(new LambdaQueryWrapper<Bills>()
 			.select(Bills::getId)
-			.eq(Bills::getCreateDept, deptUtils.getDeptPid() + "")
+			.eq(Bills::getCreateDept, branchId)
 			.eq(Bills::getTenantId, AuthUtil.getTenantId())
 			.eq(Bills::getIsDeleted, 0)
 			.eq(Bills::getMblno, bills.getMblno())
@@ -229,11 +228,12 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 			bills.setCreateUser(AuthUtil.getUserId());
 			bills.setCreateUserName(AuthUtil.getUserName());
 			bills.setTenantId(AuthUtil.getTenantId());
-			if (ObjectUtils.isNotNull(deptUtils.getDeptPid() + "")) {
+			if (ObjectUtils.isNotNull(branchId)) {
 				bills.setBranchId(branchId);
 				bills.setCreateDept(deptId);
 				bills.setCreateDeptName(deptName);
 			}
+			this.save(bills);
 		} else {
 			List<Long> ids = count.stream().map(Bills::getId).distinct().collect(Collectors.toList());
 			if (!"MH".equals(bills.getBillType())) {
@@ -272,7 +272,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 							, Bills::getFinalDestinationNamePrint, Bills::getCyId, Bills::getCyCode, Bills::getCyCnName, Bills::getCyEnName, Bills::getCyAddress
 							, Bills::getCyTel, Bills::getCyRemarks, Bills::getCyTrailerTime, Bills::getCyReturnTime, Bills::getCarrierId, Bills::getCarrierCnName
 							, Bills::getCarrierEnName, Bills::getCarrierArgreementNo, Bills::getBookingDate)
-						.eq(Bills::getCreateDept, deptUtils.getDeptPid() + "")
+						.eq(Bills::getCreateDept, branchId)
 						.eq(Bills::getTenantId, AuthUtil.getTenantId())
 						.eq(Bills::getIsDeleted, 0)
 						.eq(Bills::getMblno, bills.getMblno()));
@@ -399,9 +399,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 				}
 			}
 		}
-
-
-		if (ObjectUtils.isEmpty(bills.getId())) {
+		/*if (ObjectUtils.isEmpty(bills.getId())) {
 			LocalDateTime now = LocalDateTime.now();
 			DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
 			String formatted = now.format(formatter);
@@ -410,10 +408,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 			LocalDateTime now2 = LocalDateTime.now();
 			String formatted2 = now2.format(formatter);
 			System.out.println("止1 " + formatted2);
-		}
-
-
-		/**-------------箱型箱量计算---------*/
+		}*/
 		Integer V20 = 0;
 		Integer V40 = 0;
 		Integer V40HC = 0;
@@ -461,8 +456,6 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 		bills.setQuantityV48(V48);
 		bills.setQuantityOther(other);
 		bills.setTeu(teu.intValue());
-		/**-------------箱型箱量计算---------*/
-		/**-------------费用计算---------*/
 		BigDecimal amountDr = new BigDecimal("0.00");
 		BigDecimal amountCr = new BigDecimal("0.00");
 		BigDecimal amountProfit = new BigDecimal("0.00");
@@ -472,6 +465,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 		BigDecimal amountDrLoc = new BigDecimal("0.00");
 		BigDecimal amountCrLoc = new BigDecimal("0.00");
 		BigDecimal amountProfitLoc = new BigDecimal("0.00");
+		List<FeeCenter> feeCenterListAll = new ArrayList<>();
 		//应付
 		int statusC = 0;
 		if (ObjectUtils.isNotNull(bills.getFeeCenterListC())) {
@@ -521,8 +515,9 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 					BigDecimal usd = bCurrencyService.converter(item.getCurCode(), item.getAmount(), item.getDc(), "1");
 					amountCrUsd = amountCrUsd.add(usd);
 				}
+				feeCenterListAll.add(item);
 			}
-			feeCenterService.submitList(bills.getFeeCenterListC());
+//			feeCenterService.submitList(bills.getFeeCenterListC());
 		}
 		//应收
 		int statusD = 0;
@@ -573,8 +568,12 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 					BigDecimal usd = bCurrencyService.converter(item.getCurCode(), item.getAmount(), item.getDc(), "1");
 					amountDrUsd = amountDrUsd.add(usd);
 				}
+				feeCenterListAll.add(item);
 			}
-			feeCenterService.submitList(bills.getFeeCenterListD());
+//			feeCenterService.submitList(bills.getFeeCenterListD());
+		}
+		if (!feeCenterListAll.isEmpty()) {
+			feeCenterService.submitList(feeCenterListAll);
 		}
 		if (0 == statusD && 0 == statusC) {
 			bills.setAccountStatus(0);
@@ -585,7 +584,6 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 		} else if (1 == statusD && 1 == statusC) {
 			bills.setAccountStatus(3);
 		}
-
 		BigDecimal quantity = bills.getQuantity();
 		BigDecimal grossWeight = bills.getGrossWeight();
 		BigDecimal measurement = bills.getMeasurement();
@@ -757,18 +755,33 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 			.eq(Containers::getIsDeleted, 0)
 			.eq(Containers::getTenantId, AuthUtil.getTenantId())
 			.eq(Containers::getPid, detail.getId()));
-		for (Containers item : containersList) {
-			item.setContainersBillsList(containersBillsService.list(new LambdaQueryWrapper<ContainersBills>()
+		List<ContainersBills> containersBillsList = new ArrayList<>();
+		List<ContainersCommodity> containersCommodityList = new ArrayList<>();
+		if (!containersList.isEmpty()) {
+			List<Long> idList = containersList.stream().map(Containers::getId).collect(Collectors.toList());
+			containersBillsList = containersBillsService.list(new LambdaQueryWrapper<ContainersBills>()
 				.eq(ContainersBills::getIsDeleted, 0)
 				.eq(ContainersBills::getTenantId, AuthUtil.getTenantId())
-				.eq(ContainersBills::getPid, item.getId()))
-			);
-			item.setContainersCommodityList(containersCommodityService.list(new LambdaQueryWrapper<ContainersCommodity>()
+				.in(ContainersBills::getPid, idList));
+			containersCommodityList = containersCommodityService.list(new LambdaQueryWrapper<ContainersCommodity>()
 				.eq(ContainersCommodity::getIsDeleted, 0)
 				.eq(ContainersCommodity::getTenantId, AuthUtil.getTenantId())
-				.eq(ContainersCommodity::getPid, item.getId())
-				.eq(ContainersCommodity::getPpId, detail.getId()))
-			);
+				.in(ContainersCommodity::getPid, idList)
+				.eq(ContainersCommodity::getPpId, detail.getId()));
+		}
+		for (Containers item : containersList) {
+			if (!containersBillsList.isEmpty()) {
+				List<ContainersBills> containersBills = containersBillsList.stream().filter(e -> e.getPid().equals(item.getId())).collect(Collectors.toList());
+				item.setContainersBillsList(containersBills.isEmpty() ? new ArrayList<>() : containersBills);
+			} else {
+				item.setContainersBillsList(new ArrayList<>());
+			}
+			if (!containersCommodityList.isEmpty()) {
+				List<ContainersCommodity> containersCommodities = containersCommodityList.stream().filter(e -> e.getPid().equals(item.getId())).collect(Collectors.toList());
+				item.setContainersCommodityList(containersCommodities.isEmpty() ? new ArrayList<>() : containersCommodities);
+			} else {
+				item.setContainersCommodityList(new ArrayList<>());
+			}
 		}
 		detail.setContainersList(containersList);
 		List<WaitingBox> waitingBoxList = new ArrayList<>();

+ 26 - 20
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/PreContainersServiceImpl.java

@@ -267,7 +267,7 @@ public class PreContainersServiceImpl extends ServiceImpl<PreContainersMapper, P
 		//获取部门ids对应中文名
 		if (ObjectUtils.isNotNull(deptUtils.getDeptPid() + "")) {
 			deptId = deptUtils.getDeptPid() + "";
-			R<List<String>> res = sysClient.getDeptNames(deptUtils.getDeptPid() + "");
+			R<List<String>> res = sysClient.getDeptNames(branchId);
 			if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
 				deptName = String.join(",", res.getData());
 			}
@@ -302,12 +302,25 @@ public class PreContainersServiceImpl extends ServiceImpl<PreContainersMapper, P
 			billsMapper.updateById(bills);
 		}
 		List<Containers> containersList = new ArrayList<>();
+		if (preContainersList.isEmpty()) {
+			return R.data(containersList);
+		}
+		List<Long> idsList = preContainersList.stream().map(PreContainers::getId).distinct().collect(Collectors.toList());
+		List<Containers> removeContainersList = containersService.list(new LambdaQueryWrapper<Containers>()
+			.eq(Containers::getTenantId, AuthUtil.getTenantId())
+			.eq(Containers::getIsDeleted, 0)
+			.in(Containers::getPid, idsList));
+		String cntrTypeCode = preContainersList.stream().map(PreContainers::getCntrTypeCode).distinct().collect(Collectors.joining(","));
+		List<BCntrTypes> bCntrTypesList = bCntrTypesService.list(new LambdaQueryWrapper<BCntrTypes>()
+			.apply("find_in_set(cn_name,'" + cntrTypeCode + "')")
+			.eq(BCntrTypes::getStatus, 0)
+		);
 		for (PreContainers preContainers : preContainersList) {
 			if (preContainers.getId() == null) {
 				preContainers.setCreateTime(new Date());
 				preContainers.setCreateUser(AuthUtil.getUserId());
 				preContainers.setCreateUserName(AuthUtil.getUserName());
-				if (ObjectUtils.isNotNull(deptUtils.getDeptPid() + "")) {
+				if (ObjectUtils.isNotNull(branchId)) {
 					preContainers.setBranchId(branchId);
 					preContainers.setCreateDept(deptId);
 					preContainers.setCreateDeptName(deptName);
@@ -318,27 +331,20 @@ public class PreContainersServiceImpl extends ServiceImpl<PreContainersMapper, P
 				preContainers.setUpdateUserName(AuthUtil.getUserName());
 			}
 			this.saveOrUpdate(preContainers);
-
-			List<Containers> removeContainersList = containersService.list(new LambdaQueryWrapper<Containers>()
-				.eq(Containers::getTenantId, AuthUtil.getTenantId())
-				.eq(Containers::getIsDeleted, 0)
-				.eq(Containers::getPid, preContainers.getPid()));
 			containersService.removeByPid(preContainers.getPid(), preContainers.getCntrTypeCode());
-			if (!removeContainersList.isEmpty()) {
-				List<Long> ids = removeContainersList.stream().map(Containers::getId).collect(Collectors.toList());
+			List<Long> ids = removeContainersList.stream().filter(e -> e.getPid().equals(preContainers.getId()))
+				.map(Containers::getId).collect(Collectors.toList());
+			if (!ids.isEmpty()) {
 				containersBillsService.removeByPid(ids);
 			}
-			BCntrTypes bCntrTypes = bCntrTypesService.getOne(new LambdaQueryWrapper<BCntrTypes>()
-				.eq(BCntrTypes::getCnName, preContainers.getCntrTypeCode())
-				.eq(BCntrTypes::getStatus, 0)
-			);
 			String ediCode = "";
-			if (bCntrTypes != null && bills != null) {
-				ediCode = RegularUtils.getEdiCode(bills.getCyCode(), bCntrTypes.getExtendedData());
+			if (!bCntrTypesList.isEmpty()){
+				BCntrTypes bCntrTypes = bCntrTypesList.stream().filter(e-> e.getCnName().equals(preContainers.getCntrTypeCode()))
+					.findFirst().orElse(null);
+				if (bCntrTypes != null && bills != null) {
+					ediCode = RegularUtils.getEdiCode(bills.getCyCode(), bCntrTypes.getExtendedData());
+				}
 			}
-			/*if (ObjectUtils.isNull(ediCode)) {
-				throw new RuntimeException("请先配置场站对应箱型代码");
-			}*/
 			//生成海运进出口配箱-箱号装箱
 			for (int i = 0; i < preContainers.getQuantity(); i++) {
 				Containers containers = new Containers();
@@ -462,8 +468,8 @@ public class PreContainersServiceImpl extends ServiceImpl<PreContainersMapper, P
 			} else {
 				throw new RuntimeException("未找到派车信息");
 			}
-		}else{
-			if (1==preContainers.getWhetherWarehousing()){
+		} else {
+			if (1 == preContainers.getWhetherWarehousing()) {
 				DispatchVehicles dispatchVehicles = dispatchVehiclesService.getOne(new LambdaQueryWrapper<DispatchVehicles>()
 					.eq(DispatchVehicles::getBoxItemsId, preContainers.getId())
 					.eq(DispatchVehicles::getPid, preContainers.getPid()));

+ 20 - 18
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/check/controller/AuditProecessController.java

@@ -36,13 +36,14 @@ import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.ObjectUtil;
 import org.springblade.finance.feign.IFinanceClient;
-import org.springblade.finance.vojo.Settlement;
 import org.springblade.salesPart.check.dto.PjAuditProecessDTO;
 import org.springblade.salesPart.check.entity.PjAuditProecess;
 import org.springblade.salesPart.check.service.IAuditProecessService;
 import org.springblade.salesPart.check.vo.PjAuditOrderVO;
 import org.springblade.salesPart.entity.PjCorpsDesc;
 import org.springblade.salesPart.feign.IPJCorpClient;
+import org.springblade.salesPart.funding.entity.PjpfFunding;
+import org.springblade.salesPart.funding.service.IPjpfFundingService;
 import org.springblade.system.user.entity.User;
 import org.springblade.system.user.feign.IUserClient;
 import org.springframework.web.bind.annotation.*;
@@ -74,6 +75,8 @@ public class AuditProecessController extends BladeController {
 
 	private final IUserClient userClient;
 
+	private final IPjpfFundingService pjpfFundingService;
+
 	/**
 	 * 分页 审批流记录
 	 */
@@ -96,32 +99,31 @@ public class AuditProecessController extends BladeController {
 			lambdaQueryWrapper.gt(PjAuditProecess::getBillTime, auditProecess.getBillTimeList().get(0));
 			lambdaQueryWrapper.lt(PjAuditProecess::getBillTime, auditProecess.getBillTimeList().get(1));
 		}
-		lambdaQueryWrapper.gt(ObjectUtils.isNotNull(auditProecess.getBillTimeStart()),PjAuditProecess::getBillTime, auditProecess.getBillTimeStart());
-		lambdaQueryWrapper.lt(ObjectUtils.isNotNull(auditProecess.getBillTimeEnd()),PjAuditProecess::getBillTime, auditProecess.getBillTimeEnd());
+		lambdaQueryWrapper.gt(ObjectUtils.isNotNull(auditProecess.getBillTimeStart()), PjAuditProecess::getBillTime, auditProecess.getBillTimeStart());
+		lambdaQueryWrapper.lt(ObjectUtils.isNotNull(auditProecess.getBillTimeEnd()), PjAuditProecess::getBillTime, auditProecess.getBillTimeEnd());
 		lambdaQueryWrapper.ne(StringUtils.isBlank(auditProecess.getAuditStatus()), PjAuditProecess::getAuditStatus, "N");
 		lambdaQueryWrapper.eq(PjAuditProecess::getSalesCompanyId, AuthUtil.getDeptId());//公司
 		IPage pages = auditProecessService.page(Condition.getPage(query), lambdaQueryWrapper);
 		List<PjAuditProecess> auditProecessList = pages.getRecords();
+		PjpfFunding pjpfFunding = pjpfFundingService.getOne(new LambdaQueryWrapper<PjpfFunding>()
+			.eq(PjpfFunding::getTenantId, AuthUtil.getTenantId())
+			.eq(PjpfFunding::getIsDeleted, 0));
+
 		if (CollectionUtils.isNotEmpty(auditProecessList)) {
 			List<PjAuditOrderVO> auditOrderVOS = new ArrayList<>();
 			auditProecessList.forEach(e -> {
 				PjAuditOrderVO auditOrderVO = new PjAuditOrderVO();
 				BeanUtil.copyProperties(e, auditOrderVO);
-				if ("PJTK".equals(e.getCheckType()) || "PJCG".equals(e.getCheckType()) || "PJCGTK".equals(e.getCheckType())) {
-					if (ObjectUtils.isNotNull(e.getCorpId())) {
-						PjCorpsDesc corpsDesc = ipjCorpClient.getByCorp(e.getCorpId());
-						if (ObjectUtils.isNotNull(corpsDesc)) {
-							auditOrderVO.setCorpsName(corpsDesc.getCname());
-						}
+				if (ObjectUtils.isNotNull(e.getCorpId())) {
+					PjCorpsDesc corpsDesc = ipjCorpClient.getByCorp(e.getCorpId());
+					if (ObjectUtils.isNotNull(corpsDesc)) {
+						auditOrderVO.setCorpsName(corpsDesc.getCname());
 					}
 				}
-				//财务明细表相关数据
-				if (e.getSrcBillId() != null) {
-					R<Settlement> detail = financeClient.getById(e.getSrcBillId());
-					if (detail.isSuccess() && ObjectUtil.isNotEmpty(detail.getData())) {
-						BigDecimal amount = detail.getData().getAmount();
-						auditOrderVO.setAmount(amount);
-					}
+				if (pjpfFunding != null) {
+					auditOrderVO.setAvailableAmount(pjpfFunding.getAvailableAmount());
+				} else {
+					auditOrderVO.setAvailableAmount(new BigDecimal("0.00"));
 				}
 				if (ObjectUtil.isNotEmpty(e.getSendUserId())) {
 					R<User> user = userClient.userInfoById(e.getSendUserId());
@@ -224,11 +226,11 @@ public class AuditProecessController extends BladeController {
 			throw new SecurityException("审核失败,未填写审批类型");
 		}
 		if ("PJTK".equals(proecess.getCheckType()) || "PJCG".equals(proecess.getCheckType())
-			|| "PJCGTK".equals(proecess.getCheckType())|| "RZCG".equals(proecess.getCheckType())) {
+			|| "PJCGTK".equals(proecess.getCheckType()) || "RZCG".equals(proecess.getCheckType())) {
 			auditProecessService.pjOrderCheck(auditProecess);
 		} else if ("CKRW".equals(proecess.getCheckType())) {
 			auditProecessService.pjOrderCheckCKRW(auditProecess);
-		}else {
+		} else {
 			throw new RuntimeException("数据错误,请联系管理员");
 		}
 		return R.data(auditProecess);

+ 1 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/mapper/OrderMapper.xml

@@ -729,6 +729,7 @@
     <select id="columnarRz" resultType="java.util.Map">
         SELECT
         IF(sum(po.goods_total_ship_num),sum(po.goods_total_ship_num),0.00) AS goodsTotalNum,
+        IF(sum(po.primary_funding_amount),sum(po.primary_funding_amount),0.00) AS primaryFundingAmount,
         IF(sum(po.goods_total_ship_amount),sum(po.goods_total_ship_amount),0.00) AS totalMoney
         FROM
         pjpf_order po

+ 5 - 1
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/impl/OrderServiceImpl.java

@@ -3055,7 +3055,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 					BigDecimal amount = itemsList.stream().filter(e -> ObjectUtils.isNotNull(financingBrand) && financingBrand.contains(e.getBrandName()))
 						.map(PjOrderItems::getCostprie).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
 					if (pjpfFunding.getAvailableAmount().compareTo(amount) < 0) {
-						throw new RuntimeException("剩余可用资金:" + pjpfFunding.getAvailableAmount() + "小于本次出库金额:" + amount + ",生成任务失败");
+						throw new RuntimeException("可用资金:" + pjpfFunding.getAvailableAmount() + ";   出库资金:" + amount + ";    请充值后,在生成任务");
 					}
 				}
 				return R.data("该订单明细商品存在融资货物,是否提交出库任务审批?");
@@ -3391,6 +3391,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		Map<String, List<BigDecimal>> map = new HashMap<>(16);
 		List<BigDecimal> number = new ArrayList<>();
 		List<BigDecimal> amount = new ArrayList<>();
+		List<BigDecimal> primaryFundingAmount = new ArrayList<>();
 		// 获取当前年份
 		int year = LocalDate.now().getYear();
 		if (ObjectUtils.isNotNull(order)) {
@@ -3412,14 +3413,17 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 			if (ObjectUtils.isNotNull(sum)) {
 				number.add(sum.get("goodsTotalNum"));
 				amount.add(sum.get("totalMoney"));
+				primaryFundingAmount.add(sum.get("primaryFundingAmount"));
 			} else {
 				number.add(new BigDecimal("0.00"));
 				amount.add(new BigDecimal("0.00"));
+				primaryFundingAmount.add(new BigDecimal("0.00"));
 			}
 
 		}
 		map.put("number", number);
 		map.put("amount", amount);
+		map.put("primaryFundingAmount", primaryFundingAmount);
 		return map;
 	}
 

+ 4 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/statistics/service/impl/StatisticsServiceImpl.java

@@ -1250,12 +1250,16 @@ public class StatisticsServiceImpl implements IStatisticsService {
 			map.put("sumAmount", orderService.list(new LambdaQueryWrapper<PjOrder>().eq(PjOrder::getTenantId, AuthUtil.getTenantId())
 					.eq(PjOrder::getIsDeleted, 0).eq(PjOrder::getBsType, "RZCG").eq(PjOrder::getWhetherRedeem, 0))
 				.stream().map(PjOrder::getGoodsTotalShipAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
+			map.put("primaryFundingAmount", orderService.list(new LambdaQueryWrapper<PjOrder>().eq(PjOrder::getTenantId, AuthUtil.getTenantId())
+					.eq(PjOrder::getIsDeleted, 0).eq(PjOrder::getBsType, "RZCG").eq(PjOrder::getWhetherRedeem, 0))
+				.stream().map(PjOrder::getPrimaryFundingAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
 		} else {
 			map.put("corpName", "");
 			map.put("surplusFundingAmount", "0.00");
 			map.put("bondAmount", "0.00");
 			map.put("availableAmount", "0.00");
 			map.put("sumAmount", "0.00");
+			map.put("primaryFundingAmount", "0.00");
 		}
 		return R.data(map);
 	}

+ 27 - 5
blade-service/blade-user/src/main/java/org/springblade/system/user/controller/UserController.java

@@ -33,22 +33,21 @@ import org.springblade.core.excel.util.ExcelUtil;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.secure.BladeUser;
-import org.springblade.core.secure.annotation.PreAuth;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tenant.annotation.NonDS;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.constant.BladeConstant;
-import org.springblade.core.tool.constant.RoleConstant;
 import org.springblade.core.tool.utils.*;
 import org.springblade.system.cache.SysCache;
+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.service.IUserService;
 import org.springblade.system.user.entity.User;
 import org.springblade.system.user.excel.UserExcel;
 import org.springblade.system.user.excel.UserImporter;
 import org.springblade.system.user.feign.IUserSearchClient;
+import org.springblade.system.user.service.IUserService;
 import org.springblade.system.user.vo.UserVO;
 import org.springblade.system.user.wrapper.UserWrapper;
 import org.springframework.web.bind.annotation.*;
@@ -151,10 +150,14 @@ public class UserController {
 
 		List<UserVO> userList = UserWrapper.build().listVO(userService.list(lambdaQueryWrapper));
 		if (StringUtil.isNotBlank(userVO.getSource())) {
+			String deptIds = userList.stream().map(UserVO::getDeptId).distinct().collect(Collectors.joining(","));
+			R<List<Dept>> deptNameR = sysClient.selectByDeptIds(deptIds);
 			userList.forEach(user -> {
-				R<List<String>> deptNameR = sysClient.getDeptNames(user.getDeptId());
 				if (deptNameR.isSuccess()) {
-					user.setDeptName(String.join(",", deptNameR.getData()));
+					List<Dept> deptList = deptNameR.getData().stream().filter(e -> user.getDeptId().contains(e.getId() + "")).collect(Collectors.toList());
+					if (!deptList.isEmpty()) {
+						user.setDeptName(deptList.stream().map(Dept::getDeptName).collect(Collectors.joining(",")));
+					}
 				}
 			});
 		}
@@ -528,4 +531,23 @@ public class UserController {
 		return userSearchClient.listByRole(SysCache.getRoleIds(AuthUtil.getTenantId(), roles));
 	}
 
+
+	@GetMapping("/userListAll")
+	public R userListAll(UserVO userVO) {
+		LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.like(StringUtils.isNotBlank(userVO.getRealName()), User::getRealName, userVO.getRealName())
+			.like(ObjectUtil.isNotEmpty(userVO.getDeptPid()), User::getDeptPid, userVO.getDeptPid())
+			.eq(User::getTenantId, AuthUtil.getTenantId())
+			.eq(User::getIsDeleted, 0);
+		if (StringUtil.isNotBlank(userVO.getRoleAlias())) {
+			R<Long> roleR = sysClient.getRoleByAlias(userVO.getRoleAlias());
+			if (!roleR.isSuccess()) {
+				return R.data(new ArrayList<>());
+			}
+			lambdaQueryWrapper.like(User::getRoleId, roleR.getData());
+		}
+		List<User> userList = userService.list(lambdaQueryWrapper);
+		return R.data(userList);
+	}
+
 }