Explorar o código

2024年9月12日17:17:29

纪新园 hai 1 ano
pai
achega
9a8cd47f77
Modificáronse 15 ficheiros con 439 adicións e 158 borrados
  1. 5 0
      blade-service-api/blade-client-api/src/main/java/org/springblade/client/entity/CorpsDesc.java
  2. 57 56
      blade-service/blade-client/src/main/java/org/springblade/client/corps/controller/CorpsDescController.java
  3. 52 3
      blade-service/blade-client/src/main/java/org/springblade/client/corps/excel/CorpDWTExcel.java
  4. 2 2
      blade-service/blade-client/src/main/java/org/springblade/client/corps/excel/CorpsImport.java
  5. 6 0
      blade-service/blade-client/src/main/java/org/springblade/client/corps/mapper/CorpsDescMapper.xml
  6. 1 1
      blade-service/blade-client/src/main/java/org/springblade/client/corps/service/ICorpsDescService.java
  7. 57 50
      blade-service/blade-client/src/main/java/org/springblade/client/corps/service/impl/CorpsDescServiceImpl.java
  8. 27 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/controller/FeeCenterController.java
  9. 4 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/service/IFeeCenterService.java
  10. 72 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/service/impl/FeeCenterServiceImpl.java
  11. 46 12
      blade-service/blade-los/src/main/java/org/springblade/los/trade/service/impl/AgentServiceImpl.java
  12. 46 1
      blade-service/blade-mocha-item/src/main/java/org/springblade/mocha/controller/PriceBankController.java
  13. 6 0
      blade-service/blade-mocha-item/src/main/java/org/springblade/mocha/excel/PriceBankExcel.java
  14. 32 21
      blade-service/blade-mocha-item/src/main/java/org/springblade/mocha/service/impl/PriceBankServiceImpl.java
  15. 26 12
      blade-service/blade-weChat/src/main/java/org/springblade/weChat/QRCode/WechatQRCodeController.java

+ 5 - 0
blade-service-api/blade-client-api/src/main/java/org/springblade/client/entity/CorpsDesc.java

@@ -509,5 +509,10 @@ public class CorpsDesc implements Serializable {
 	 */
 	@ApiModelProperty("会员余额")
 	private BigDecimal balanceAmount;
+	/**
+	 * 国家
+	 */
+	@ApiModelProperty("国家")
+	private String country;
 
 }

+ 57 - 56
blade-service/blade-client/src/main/java/org/springblade/client/corps/controller/CorpsDescController.java

@@ -150,7 +150,7 @@ public class CorpsDescController extends BladeController {
 				if (item.getBelongtocompany() != null) {
 					if (ObjectUtil.isNotEmpty(corpsDescList)) {
 						CorpsDesc corpsDesc1 = corpsDescList.stream().filter(e -> e.getId().toString().equals(item.getBelongtocompany())).findFirst().orElse(null);
-						if (corpsDesc1 !=null){
+						if (corpsDesc1 != null) {
 							item.setBelongCompany(corpsDesc1.getCname());
 						}
 					}
@@ -177,7 +177,7 @@ public class CorpsDescController extends BladeController {
 	}
 
 	/**
-	 * 客户详情导出
+	 * 客户详情导出 (福达)
 	 */
 	@GetMapping("/export")
 	@ApiOperationSupport(order = 2)
@@ -218,46 +218,72 @@ public class CorpsDescController extends BladeController {
 			}
 		}
 		List<CorpsDesc> corpsDescList = corpsDescService.selectByCorpIds(belongtocompany);
-
+		List<CorpDWTExcel> corpDWTExcelList = new ArrayList<>();
 		if (CollectionUtils.isNotEmpty(list)) {
-			list.forEach(item -> {
+			String adminProfiles = list.stream().map(CorpsDescVO::getAdminProfiles).filter(Objects::nonNull)
+				.distinct().collect(Collectors.joining(","));
+			List<User> updateUserList = userClient.selectUserIds(adminProfiles);
+			List<Long> corpIdList = list.stream().map(CorpsDescVO::getId).filter(Objects::nonNull)
+				.distinct().collect(Collectors.toList());
+			List<Long> typeIdList = corpsTypeDescService.list(new LambdaQueryWrapper<CorpsTypeDesc>()
+					.in(CorpsTypeDesc::getCorpId, corpIdList))
+				.stream().map(CorpsTypeDesc::getCorpTypeId).collect(Collectors.toList());
+			List<CorpsType> corpsTypeList = corpsTypeService.list(new LambdaQueryWrapper<CorpsType>()
+				.in(CorpsType::getId, typeIdList)
+				.eq(CorpsType::getIsDeleted, 0));
+			List<CorpsAddr> corpsAddrList = corpsAddrService.list(new QueryWrapper<CorpsAddr>()
+				.in("pid", corpIdList).eq("is_deleted", 0));
+			for (CorpsDescVO item : list) {
+				CorpDWTExcel corpDWTExcel = new CorpDWTExcel();
+				BeanUtil.copyProperties(item, corpDWTExcel);
 				if (StringUtils.isNotBlank(item.getAdminProfiles())) {
-					List<User> updateUserList = userClient.selectUserIds(item.getAdminProfiles());
-					StringBuffer stringBuffer = new StringBuffer();
-					if (CollectionUtils.isNotEmpty(updateUserList)) {
-						updateUserList.forEach(items -> {
-							if (items != null) {
-								stringBuffer.append(items.getName()).append(",");
-							}
-						});
-					}
-					item.setAdminProfilesName(stringBuffer.toString());
+					corpDWTExcel.setAdminProfilesName(updateUserList.stream().filter(e -> item.getAdminProfiles().contains(e.getId() + ""))
+						.map(User::getName).collect(Collectors.joining(",")));
 				}
 				if (item.getBelongtocompany() != null) {
 					if (ObjectUtil.isNotEmpty(corpsDescList)) {
-						item.setBelongCompany(corpsDescList.stream().filter(e -> e.getId().toString().equals(item.getBelongtocompany())).findFirst().get().getCname());
+						corpsDescList.stream().filter(e -> e.getId().toString().equals(item.getBelongtocompany()))
+							.findFirst().ifPresent(corpsDesc1 -> corpDWTExcel.setCompanyName(corpsDesc1.getCname()));
 					}
 				}
-
-				List<Long> typeIdList = corpsTypeDescService.list(new LambdaQueryWrapper<CorpsTypeDesc>().eq(CorpsTypeDesc::getCorpId, item.getId()))
-					.stream().map(CorpsTypeDesc::getCorpTypeId).collect(Collectors.toList());
-
-				if (CollectionUtil.isNotEmpty(typeIdList)) {
-					String typeName = corpsTypeService.list(new LambdaQueryWrapper<CorpsType>()
-						.in(CorpsType::getId, typeIdList)
-						.eq(CorpsType::getCorpType, item.getCorpType())
-						.eq(CorpsType::getIsDeleted, 0)
-					).stream().map(CorpsType::getCname).collect(Collectors.joining(","));
-					item.setCorpsTypeName(typeName);
+				if (ObjectUtils.isNotNull(item.getCorpType())) {
+					corpDWTExcel.setCorpsTypeName(corpsTypeList.stream().filter(e -> e.getCorpType().equals(item.getCorpType()))
+						.map(CorpsType::getCname).collect(Collectors.joining(",")));
 				}
-				//获取客户地址
-				List<CorpsAddr> corpsAddrList = corpsAddrService.list(new QueryWrapper<CorpsAddr>().eq("pid", item.getId()).eq("is_deleted", 0));
 				if (corpsAddrList != null && !corpsAddrList.isEmpty()) {
-					item.setAddr(corpsAddrList.stream().map(CorpsAddr::getAddr).collect(Collectors.joining("-")));
+					corpDWTExcel.setAddr(corpsAddrList.stream().filter(e -> e.getPid().equals(item.getId()))
+						.map(CorpsAddr::getAddr).collect(Collectors.joining("-")));
 				}
-			});
+				corpDWTExcel.setCorpId(item.getId() + "");
+				corpDWTExcelList.add(corpDWTExcel);
+			}
 		}
-		ExcelUtil.export(response, "客户资料", "客户资料", BeanUtil.copy(list, CorpDWTExcel.class), CorpDWTExcel.class);
+		ExcelUtil.export(response, "客户资料", "客户资料", corpDWTExcelList, CorpDWTExcel.class);
+	}
+
+	/**
+	 * 导入模板-客户资料
+	 */
+	@GetMapping("/export-template")
+	@ApiOperationSupport(order = 9)
+	@ApiOperation(value = "导入模板-客户资料")
+	public void exportPrice(HttpServletResponse response) {
+		List<CorpDWTExcel> list = new ArrayList<>();
+		ExcelUtil.export(response, "导入模板-客户资料", "客户资料数据", list, CorpDWTExcel.class);
+	}
+
+	/**
+	 * 导入用户
+	 */
+	@PostMapping("/import-desc")
+	@ApiOperationSupport(order = 12)
+	@ApiOperation(value = "导入客户资料", notes = "传入excel")
+	public R importUser(@RequestParam("file") MultipartFile file, @RequestParam("corpType") String corpType) {
+		List<CorpDWTExcel> excelList = ExcelUtil.read(file, CorpDWTExcel.class);
+		if (CollectionUtils.isEmpty(excelList)) {
+			throw new SecurityException("数据不能为空");
+		}
+		return corpsDescService.importUser(excelList, false, corpType);
 	}
 
 	/**
@@ -413,20 +439,6 @@ public class CorpsDescController extends BladeController {
 
 
 	/**
-	 * 导入用户
-	 */
-	@PostMapping("/import-desc")
-	@ApiOperationSupport(order = 12)
-	@ApiOperation(value = "导入客户资料", notes = "传入excel")
-	public R importUser(@RequestParam("file") MultipartFile file, @RequestParam("corpType") String corpType) {
-		List<CorpsExcel> excelList = ExcelUtil.read(file, CorpsExcel.class);
-		if (CollectionUtils.isEmpty(excelList)) {
-			throw new SecurityException("数据不能为空");
-		}
-		return corpsDescService.importUser(excelList, false, corpType);
-	}
-
-	/**
 	 * 导入公司主体信息
 	 */
 	@PostMapping("/import-company-desc")
@@ -480,17 +492,6 @@ public class CorpsDescController extends BladeController {
 
 
 	/**
-	 * 导出模板
-	 */
-	@GetMapping("/export-template")
-	@ApiOperationSupport(order = 9)
-	@ApiOperation(value = "导出模板")
-	public void exportPrice(HttpServletResponse response) {
-		List<CorpsExcel> list = new ArrayList<>();
-		ExcelUtil.export(response, "导入模板", "导入数据表", list, CorpsExcel.class);
-	}
-
-	/**
 	 * 按照首字母获得客户并分组
 	 */
 	@GetMapping("/initialsAllList")

+ 52 - 3
blade-service/blade-client/src/main/java/org/springblade/client/corps/excel/CorpDWTExcel.java

@@ -15,10 +15,10 @@ import java.io.Serializable;
 public class CorpDWTExcel implements Serializable {
 	private static final long serialVersionUID = 1L;
 
-	@ExcelProperty("编号")
+	@ExcelProperty("客户编号(必填)")
 	private String code;
 
-	@ExcelProperty("名称")
+	@ExcelProperty("客户名称(必填)")
 	private String cname;
 
 	@ExcelProperty("所属公司")
@@ -27,7 +27,7 @@ public class CorpDWTExcel implements Serializable {
 	@ExcelProperty("代理品牌")
 	private String goodtypes;
 
-	@ExcelProperty("类别")
+	@ExcelProperty("客户分类(必填)")
 	private String corpsTypeName;
 
 	@ExcelProperty("分管员")
@@ -36,7 +36,56 @@ public class CorpDWTExcel implements Serializable {
 	@ExcelProperty("地址")
 	private String addr;
 
+	@ExcelProperty("国家")
+	private String country;
 
+	@ExcelProperty("英文名")
+	private String enname;
+
+	@ExcelProperty("企业类型")
+	private String companytype;
+
+	@ExcelProperty("代理区域")
+	private String belongtoarea;
+
+	@ExcelProperty("职位")
+	private String position;
+
+	@ExcelProperty("联系人")
+	private String attn;
+
+	@ExcelProperty("电话")
+	private String tel;
+
+	@ExcelProperty("收货地址")
+	private String addressList;
+
+	@ExcelProperty("账户名称")
+	private String accountName;
+
+	@ExcelProperty("开户银行")
+	private String accountBank;
+
+	@ExcelProperty("银行账号")
+	private String accountNo;
+
+	@ExcelProperty("外币账户名称")
+	private String accountNameFcy;
+
+	@ExcelProperty("外币币种")
+	private String current;
+
+	@ExcelProperty("外币开户银行")
+	private String accountBankFcy;
+
+	@ExcelProperty("外币银行账号")
+	private String accountNoFcy;
+
+	@ExcelProperty("typeId,不用填写")
+	private String typeId;
+
+	@ExcelProperty("*客户唯一ID,勿动*")
+	private String corpId;
 
 
 }

+ 2 - 2
blade-service/blade-client/src/main/java/org/springblade/client/corps/excel/CorpsImport.java

@@ -16,11 +16,11 @@ import java.util.List;
  */
 @RequiredArgsConstructor
 @AllArgsConstructor
-public class CorpsImport implements ExcelImporter<CorpsExcel> {
+public class CorpsImport implements ExcelImporter<CorpDWTExcel> {
 	private ICorpsDescService corpsDescService;//库存服务
 	private final Boolean isCovered;
 	@Override
-	public void save(List<CorpsExcel> data) {
+	public void save(List<CorpDWTExcel> data) {
 		corpsDescService.importUser(data,isCovered,null);
 	}
 }

+ 6 - 0
blade-service/blade-client/src/main/java/org/springblade/client/corps/mapper/CorpsDescMapper.xml

@@ -111,6 +111,9 @@
         <if test="CorpsDesc.attn!=null and CorpsDesc.attn != ''">
             and attn like CONCAT(CONCAT('%',  #{CorpsDesc.attn}), '%')
         </if>
+        <if test="CorpsDesc.country!=null and CorpsDesc.country != ''">
+            and country like CONCAT(CONCAT('%',  #{CorpsDesc.country}), '%')
+        </if>
         <if test="CorpsDesc.tel!=null and CorpsDesc.tel != ''">
             and tel = #{CorpsDesc.tel}
         </if>
@@ -534,6 +537,9 @@
         <if test="CorpsDesc.line!=null and CorpsDesc.line != ''">
             and line like CONCAT(CONCAT('%', #{CorpsDesc.line}), '%')
         </if>
+        <if test="CorpsDesc.country!=null and CorpsDesc.country != ''">
+            and country like CONCAT(CONCAT('%', #{CorpsDesc.country}), '%')
+        </if>
         <if test="CorpsDesc.enname!=null and CorpsDesc.enname != ''">
             and enname = #{CorpsDesc.enname}
         </if>

+ 1 - 1
blade-service/blade-client/src/main/java/org/springblade/client/corps/service/ICorpsDescService.java

@@ -104,7 +104,7 @@ public interface ICorpsDescService extends IService<CorpsDesc> {
 	 * @param
 	 * @return
 	 */
-	R importUser(List<CorpsExcel> data,Boolean isCovered,String corpType);
+	R importUser(List<CorpDWTExcel> data,Boolean isCovered,String corpType);
 
 	/**
 	 * 导入客户联系人

+ 57 - 50
blade-service/blade-client/src/main/java/org/springblade/client/corps/service/impl/CorpsDescServiceImpl.java

@@ -329,7 +329,7 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, CorpsDesc
 
 	@Override
 	@Transactional
-	public R importUser(List<CorpsExcel> data, Boolean isCovered, String corpType) {
+	public R importUser(List<CorpDWTExcel> data, Boolean isCovered, String corpType) {
 		try {
 			if (org.springframework.util.CollectionUtils.isEmpty(data)) {
 				throw new SecurityException("导入数据不能为空");
@@ -337,19 +337,11 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, CorpsDesc
 			List<Boolean> countList = new ArrayList<>();
 			String[] deptIds = SecureUtil.getDeptId().split(",");
 			data.forEach(e -> {
-				String type = e.getType();
+				String type = e.getCorpsTypeName();
 				CorpsType corpsType = corpsTypeMapper.selectCorpsTypeCname(type, AuthUtil.getTenantId());
 				if (corpsType != null) {
 					countList.add(true);
 					CorpsDesc corpsDesc = new CorpsDesc();
-					if (ObjectUtil.isNotEmpty(e.getCode())) {//判断编号是否重复
-						CorpsDesc desc = baseMapper.selectCorpsDescCode(e.getCode(), AuthUtil.getTenantId());
-						if (ObjectUtil.isNotEmpty(desc)) {
-							throw new SecurityException("客户编号" + e.getCode() + "重复");
-						} else {
-							corpsDesc.setCode(e.getCode());
-						}
-					}
 					corpsDesc.setCname(e.getCname());
 					corpsDesc.setAttn(e.getAttn());
 					corpsDesc.setAttn(e.getAttn());
@@ -378,49 +370,64 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, CorpsDesc
 					corpsDesc.setPosition(e.getPosition());
 					corpsDesc.setCorpsTypeId(String.valueOf(corpsType.getId()));
 					corpsDesc.setCorpType("KH");
-					//名称相等视为重复数据
-					LambdaQueryWrapper<CorpsDesc> queryWrapper = new LambdaQueryWrapper<>();
-					queryWrapper.eq(CorpsDesc::getCname, corpsDesc.getCname());
-					queryWrapper.like(CorpsDesc::getCorpType, "KH");
-					queryWrapper.eq(CorpsDesc::getIsDeleted, 0);
-					CorpsDesc selectOne = baseMapper.selectOne(queryWrapper);
-					if (selectOne == null) {
-						corpsDesc.setCreateTime(new Date());
-						corpsDesc.setCreateUser(AuthUtil.getUserId());
-						if (deptIds.length > 0) {
-							corpsDesc.setCreateDept(Long.valueOf(deptIds[0]));
-						}
-						baseMapper.insert(corpsDesc);
-						CorpsTypeDesc middle = new CorpsTypeDesc();
-						middle.setCorpId(corpsDesc.getId());
-						middle.setCorpTypeId(corpsType.getId());
-						middle.setCreateTime(new Date());
-						middle.setCreateUser(AuthUtil.getUserId());
-						if (deptIds.length > 0) {
-							middle.setCreateDept(Long.valueOf(deptIds[0]));
-						}
-						middleMapper.insert(middle);
-						//绑定收货地址
-						if (ObjectUtil.isNotEmpty(e.getAddressList())) {
-							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();
-									corpsAddr.setPid(corpsDesc.getId());
-									corpsAddr.setAddr(lt);
-									corpsAddr.setCreateTime(new Date());
-									corpsAddr.setCreateUser(AuthUtil.getUserId());
-									corpsAddrMapper.insert(corpsAddr);
-								});
-							}
-						}
-					} else {
-						corpsDesc.setId(selectOne.getId());
+					if (ObjectUtils.isNotNull(e.getCorpId())){
+						corpsDesc.setId(Long.parseLong(e.getCorpId()));
 						corpsDesc.setUpdateTime(new Date());
 						corpsDesc.setUpdateUser(AuthUtil.getUserId());
 						baseMapper.updateById(corpsDesc);
+					}else{
+						//名称相等视为重复数据
+						LambdaQueryWrapper<CorpsDesc> queryWrapper = new LambdaQueryWrapper<>();
+						queryWrapper.eq(CorpsDesc::getCname, corpsDesc.getCname());
+						queryWrapper.like(CorpsDesc::getCorpType, "KH");
+						queryWrapper.eq(CorpsDesc::getIsDeleted, 0);
+						CorpsDesc selectOne = baseMapper.selectOne(queryWrapper);
+						if (selectOne == null) {
+							if (ObjectUtil.isNotEmpty(e.getCode())) {//判断编号是否重复
+								CorpsDesc desc = baseMapper.selectCorpsDescCode(e.getCode(), AuthUtil.getTenantId());
+								if (ObjectUtil.isNotEmpty(desc)) {
+									throw new SecurityException("客户编号" + e.getCode() + "重复");
+								} else {
+									corpsDesc.setCode(e.getCode());
+								}
+							}
+							corpsDesc.setCreateTime(new Date());
+							corpsDesc.setCreateUser(AuthUtil.getUserId());
+							if (deptIds.length > 0) {
+								corpsDesc.setCreateDept(Long.valueOf(deptIds[0]));
+							}
+							baseMapper.insert(corpsDesc);
+							CorpsTypeDesc middle = new CorpsTypeDesc();
+							middle.setCorpId(corpsDesc.getId());
+							middle.setCorpTypeId(corpsType.getId());
+							middle.setCreateTime(new Date());
+							middle.setCreateUser(AuthUtil.getUserId());
+							if (deptIds.length > 0) {
+								middle.setCreateDept(Long.valueOf(deptIds[0]));
+							}
+							middleMapper.insert(middle);
+							//绑定收货地址
+							if (ObjectUtil.isNotEmpty(e.getAddressList())) {
+								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();
+										corpsAddr.setPid(corpsDesc.getId());
+										corpsAddr.setAddr(lt);
+										corpsAddr.setCreateTime(new Date());
+										corpsAddr.setCreateUser(AuthUtil.getUserId());
+										corpsAddrMapper.insert(corpsAddr);
+									});
+								}
+							}
+						} else {
+							corpsDesc.setId(selectOne.getId());
+							corpsDesc.setUpdateTime(new Date());
+							corpsDesc.setUpdateUser(AuthUtil.getUserId());
+							baseMapper.updateById(corpsDesc);
+						}
 					}
 				} else {
 					countList.add(false);

+ 27 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/controller/FeeCenterController.java

@@ -43,6 +43,7 @@ import javax.validation.Valid;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * 物流-费用中心-所有业务费用集中在该表中 控制器
@@ -208,6 +209,17 @@ public class FeeCenterController extends BladeController {
 		return feeCenterService.submitListTrade(feeCenter);
 	}
 
+	/**
+	 * 新增或修改 物流-费用中心-所有业务费用集中在该表中
+	 */
+	@PostMapping("/submitTradeYfk")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入feeCenter")
+	@RepeatSubmit
+	public R submitTradeYfk(@Valid @RequestBody FeeCenter feeCenter) {
+		return feeCenterService.submitTradeYfk(feeCenter);
+	}
+
 
 	/**
 	 * 删除 物流-费用中心-所有业务费用集中在该表中
@@ -251,6 +263,21 @@ public class FeeCenterController extends BladeController {
 		return R.status(feeCenterService.updateBatchById(feeCenterList));
 	}
 
+	/**
+	 * 删除 物流-费用中心-所有业务费用集中在该表中
+	 */
+	@PostMapping("/removeTradeYfk")
+	@ApiOperationSupport(order = 8)
+	@ApiOperation(value = "删除", notes = "传入ids")
+	@RepeatSubmit
+	public R removeTradeYfk(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		List<FeeCenter> feeCenterList = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
+			.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
+			.eq(FeeCenter::getIsDeleted, 0)
+			.apply("find_in_set(id,'" + ids + "')"));
+		return R.status(feeCenterService.removeTradeYfk(feeCenterList));
+	}
+
 
 	/**
 	 * 模板导入

+ 4 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/service/IFeeCenterService.java

@@ -84,4 +84,8 @@ public interface IFeeCenterService extends IService<FeeCenter> {
 	R submitListTrade(List<FeeCenter> feeCenter);
 
 	R<List<FeeCenter>> templateImportTrade(LosBFeesTemplate losBFeesTemplate);
+
+	R submitTradeYfk(FeeCenter feeCenter);
+
+	boolean removeTradeYfk(List<FeeCenter> feeCenterList);
 }

+ 72 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/service/impl/FeeCenterServiceImpl.java

@@ -42,7 +42,9 @@ import org.springblade.los.business.sea.entity.PreContainers;
 import org.springblade.los.business.sea.mapper.BillsMapper;
 import org.springblade.los.business.sea.service.IPreContainersService;
 import org.springblade.los.finance.fee.entity.FeeCenter;
+import org.springblade.los.finance.fee.entity.FinAccBills;
 import org.springblade.los.finance.fee.mapper.FeeCenterMapper;
+import org.springblade.los.finance.fee.mapper.FinAccBillsMapper;
 import org.springblade.los.finance.fee.service.IFeeCenterService;
 import org.springblade.los.finance.fee.vo.FeeCenterVO;
 import org.springblade.los.trade.entity.Agent;
@@ -88,6 +90,8 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 
 	private final AgentMapper agentMapper;
 
+	private final FinAccBillsMapper finAccBillsMapper;
+
 	@Override
 	public IPage<FeeCenterVO> selectFeeCenterPage(IPage<FeeCenterVO> page, FeeCenterVO feeCenter) {
 		return page.setRecords(baseMapper.selectFeeCenterPage(page, feeCenter));
@@ -1309,4 +1313,72 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 		}
 	}
 
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public R submitTradeYfk(FeeCenter feeCenter) {
+		String deptId = "";
+		String deptName = "";
+		String branchId = deptUtils.getDeptPid() + "";
+		//获取部门ids对应中文名
+		if (ObjectUtils.isNotNull(deptUtils.getDeptPid() + "")) {
+			deptId = AuthUtil.getDeptId();
+			R<List<String>> res = sysClient.getDeptNames(AuthUtil.getDeptId());
+			if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
+				deptName = String.join(",", res.getData());
+			}
+		}
+		if (feeCenter.getId() == null) {
+			feeCenter.setCreateTime(new Date());
+			feeCenter.setCreateUser(AuthUtil.getUserId());
+			feeCenter.setCreateUserName(AuthUtil.getUserName());
+			if (ObjectUtils.isNotNull(AuthUtil.getDeptId())) {
+				feeCenter.setCreateDept(deptId);
+				feeCenter.setBranchId(branchId);
+				feeCenter.setCreateDeptName(deptName);
+			}
+		} else {
+			feeCenter.setUpdateUser(AuthUtil.getUserId());
+			feeCenter.setUpdateTime(new Date());
+			feeCenter.setUpdateUserName(AuthUtil.getUserName());
+		}
+		feeCenter.setStlTtlAmount(ObjectUtils.isNotNull(feeCenter.getStlTtlAmount()) ? feeCenter.getStlTtlAmount() : new BigDecimal("0"));
+		feeCenter.setUnsettledAmount(feeCenter.getAmount().subtract(feeCenter.getStlTtlAmount()));
+		this.saveOrUpdate(feeCenter);
+		if (ObjectUtils.isNotNull(feeCenter.getAccBillId())) {
+			FinAccBills finAccBills = new FinAccBills();
+			finAccBills.setId(feeCenter.getAccBillId());
+			if ("D".equals(feeCenter.getDc())) {
+				if ("CNY".equals(feeCenter.getCurCode())) {
+					finAccBills.setAmountDr(feeCenter.getAmount());
+					finAccBills.setAmountDrLoc(feeCenter.getAmount());
+				} else {
+					finAccBills.setAmountDrUsd(feeCenter.getAmountLoc());
+					finAccBills.setAmountDrLoc(feeCenter.getAmount());
+				}
+			} else {
+				if ("CNY".equals(feeCenter.getCurCode())) {
+					finAccBills.setAmountCr(feeCenter.getAmount());
+					finAccBills.setAmountCrLoc(feeCenter.getAmount());
+				} else {
+					finAccBills.setAmountCrUsd(feeCenter.getAmountLoc());
+					finAccBills.setAmountCrLoc(feeCenter.getAmount());
+				}
+			}
+			finAccBillsMapper.updateById(finAccBills);
+		}
+		return R.data(feeCenter);
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public boolean removeTradeYfk(List<FeeCenter> feeCenterList) {
+		if (!feeCenterList.isEmpty()) {
+			List<Long> ids = feeCenterList.stream().map(FeeCenter::getId).distinct().collect(Collectors.toList());
+			List<Long> accIds = feeCenterList.stream().map(FeeCenter::getAccBillId).distinct().collect(Collectors.toList());
+			baseMapper.deleteBatchIds(ids);
+			finAccBillsMapper.deleteBatchIds(accIds);
+		}
+		return true;
+	}
+
 }

+ 46 - 12
blade-service/blade-los/src/main/java/org/springblade/los/trade/service/impl/AgentServiceImpl.java

@@ -1244,7 +1244,6 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
 	public Agent confirmCollectionOfPayments(Agent agent) {
 		if (agent.getId() == null) {
 			throw new RuntimeException("缺少必要参数");
@@ -1345,17 +1344,37 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 			}
 			agentItemsService.updateBatchById(agentItemsList);
 		}
-		BigDecimal advanceChargeAmount = feeCenterList.stream().filter(e -> "YFK".equals(e.getFeeCode())).map(FeeCenter::getAmountLoc)
-			.reduce(BigDecimal.ZERO, BigDecimal::add);
+		BigDecimal advanceChargeAmount = feeCenterList.stream().filter(e -> "YFK".equals(e.getFeeCode())).map(FeeCenter::getAmount)
+			.reduce(BigDecimal.ZERO, BigDecimal::add).abs();
 		if (new BigDecimal("0").compareTo(advanceChargeAmount) != 0) {
 			AdvanceCharge advanceCharge = advanceChargeService.getOne(new LambdaQueryWrapper<AdvanceCharge>()
 				.eq(AdvanceCharge::getTenantId, AuthUtil.getTenantId())
 				.eq(AdvanceCharge::getIsDeleted, 0)
-				.eq(AdvanceCharge::getCorpId, agentList.get(0).getDomesticConsigneeId()));
+				.eq(AdvanceCharge::getCorpId, agentList.get(0).getCorpId()));
 			if (advanceCharge != null) {
+				if (advanceCharge.getAdvancePaymentBalance().compareTo(advanceChargeAmount) < 0) {
+					throw new RuntimeException("当前客户" + agentList.get(0).getCorpName() + "剩余预付款:" + advanceCharge.getAdvancePaymentBalance() +
+						"小于本次使用预付款:" + advanceChargeAmount + ",确认收款失败!");
+				}
 				advanceCharge.setAdvancePaymentBalance(advanceCharge.getAdvancePaymentBalance().subtract(advanceChargeAmount));
 				advanceCharge.setOutOverpaymen(advanceCharge.getOutOverpaymen().subtract(advanceChargeAmount));
 				advanceChargeService.updateById(advanceCharge);
+				AdvanceChargeItem advanceChargeItem = new AdvanceChargeItem();
+				advanceChargeItem.setCreateUser(AuthUtil.getUserId());
+				advanceChargeItem.setCreateUserName(AuthUtil.getUserName());
+				advanceChargeItem.setCreateTime(new Date());
+				advanceChargeItem.setCreateDept(deptId);
+				advanceChargeItem.setCreateDeptName(deptName);
+				advanceChargeItem.setSrcId(agent.getId());
+				advanceChargeItem.setSrcPid(agent.getId());
+				advanceChargeItem.setOrderNo(agent.getBusinessNo());
+				advanceChargeItem.setOverpayment(advanceChargeAmount);
+				advanceChargeItem.setOverpaymentType(1);
+				advanceChargeItem.setSrcOrderNo(agent.getBusinessNo());
+				advanceChargeItem.setBillNo(agent.getBusinessNo());
+				advanceChargeItem.setIdentifier(0);
+				advanceChargeItem.setPid(advanceCharge.getId());
+				advanceChargeItemService.save(advanceChargeItem);
 			}
 		}
 		List<FinAccBills> finAccBillsList = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
@@ -1850,6 +1869,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 			advanceChargeItem.setSrcPid(agent.getId());
 			advanceChargeItem.setOrderNo(agent.getBusinessNo());
 			advanceChargeItem.setOverpayment(amountSub);
+			advanceChargeItem.setOverpaymentType(0);
 			advanceChargeItem.setSrcOrderNo(agent.getBusinessNo());
 			advanceChargeItem.setBillNo(agent.getBusinessNo());
 			advanceChargeItem.setIdentifier(0);
@@ -3892,17 +3912,31 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 			}
 			agentItemsService.updateBatchById(agentItemsList);
 		}
-		BigDecimal advanceChargeAmount = feeCenterList.stream().filter(e -> "YFK".equals(e.getFeeCode())).map(FeeCenter::getAmountLoc)
-			.reduce(BigDecimal.ZERO, BigDecimal::add);
+		BigDecimal advanceChargeAmount = feeCenterList.stream().filter(e -> "YFK".equals(e.getFeeCode())).map(FeeCenter::getAmount)
+			.reduce(BigDecimal.ZERO, BigDecimal::add).abs();
 		if (new BigDecimal("0").compareTo(advanceChargeAmount) != 0) {
 			AdvanceCharge advanceCharge = advanceChargeService.getOne(new LambdaQueryWrapper<AdvanceCharge>()
 				.eq(AdvanceCharge::getTenantId, AuthUtil.getTenantId())
 				.eq(AdvanceCharge::getIsDeleted, 0)
-				.eq(AdvanceCharge::getCorpId, agentList.get(0).getDomesticConsigneeId()));
+				.eq(AdvanceCharge::getCorpId, agentList.get(0).getCorpId()));
 			if (advanceCharge != null) {
 				advanceCharge.setAdvancePaymentBalance(advanceCharge.getAdvancePaymentBalance().add(advanceChargeAmount));
 				advanceCharge.setOutOverpaymen(advanceCharge.getOutOverpaymen().add(advanceChargeAmount));
 				advanceChargeService.updateById(advanceCharge);
+				AdvanceChargeItem advanceChargeItem = new AdvanceChargeItem();
+				advanceChargeItem.setUpdateUser(AuthUtil.getUserId());
+				advanceChargeItem.setUpdateUserName(AuthUtil.getUserName());
+				advanceChargeItem.setUpdateTime(new Date());
+				advanceChargeItem.setSrcId(agent.getId());
+				advanceChargeItem.setSrcPid(agent.getId());
+				advanceChargeItem.setOrderNo(agent.getBusinessNo());
+				advanceChargeItem.setOverpayment(advanceChargeAmount);
+				advanceChargeItem.setOverpaymentType(0);
+				advanceChargeItem.setSrcOrderNo(agent.getBusinessNo());
+				advanceChargeItem.setBillNo(agent.getBusinessNo());
+				advanceChargeItem.setIdentifier(0);
+				advanceChargeItem.setPid(advanceCharge.getId());
+				advanceChargeItemService.save(advanceChargeItem);
 			}
 		}
 		List<FeeCenter> feeCenters = new ArrayList<>();
@@ -4007,7 +4041,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 				AdvanceCharge advanceCharge = advanceChargeService.getOne(new LambdaQueryWrapper<AdvanceCharge>()
 					.eq(AdvanceCharge::getTenantId, AuthUtil.getTenantId())
 					.eq(AdvanceCharge::getIsDeleted, 0)
-					.eq(AdvanceCharge::getCorpId, agentList.get(0).getDomesticConsigneeId()));
+					.eq(AdvanceCharge::getCorpId, agentList.get(0).getCorpId()));
 				if (advanceCharge != null) {
 					advanceCharge.setAdvancePaymentBalance(advanceCharge.getAdvancePaymentBalance().subtract(amountSub));
 					advanceCharge.setInOverpayment(advanceCharge.getInOverpayment().subtract(amountSub));
@@ -4268,8 +4302,8 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 			AdvanceCharge advanceCharge = advanceChargeService.getOne(new LambdaQueryWrapper<AdvanceCharge>()
 				.eq(AdvanceCharge::getTenantId, AuthUtil.getTenantId())
 				.eq(AdvanceCharge::getIsDeleted, 0)
-				.eq(AdvanceCharge::getCorpId, detail.getDomesticConsigneeId()));
-			if (advanceCharge != null) {
+				.eq(AdvanceCharge::getCorpId, detail.getCorpId()));
+			if (advanceCharge != null && new BigDecimal("0.00").compareTo(advanceCharge.getAdvancePaymentBalance()) != 0) {
 				feeCenter.setPrice(advanceCharge.getAdvancePaymentBalance());
 				feeCenter.setAmount(advanceCharge.getAdvancePaymentBalance());
 				return feeCenter;
@@ -4402,8 +4436,8 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 			AdvanceCharge advanceCharge = advanceChargeService.getOne(new LambdaQueryWrapper<AdvanceCharge>()
 				.eq(AdvanceCharge::getTenantId, AuthUtil.getTenantId())
 				.eq(AdvanceCharge::getIsDeleted, 0)
-				.eq(AdvanceCharge::getCorpId, detail.getDomesticConsigneeId()));
-			if (advanceCharge != null) {
+				.eq(AdvanceCharge::getCorpId, detail.getCorpId()));
+			if (advanceCharge != null && new BigDecimal("0.00").compareTo(advanceCharge.getAdvancePaymentBalance()) != 0) {
 				feeCenter.setPrice(advanceCharge.getAdvancePaymentBalance());
 				feeCenter.setAmount(advanceCharge.getAdvancePaymentBalance());
 				return feeCenter;

+ 46 - 1
blade-service/blade-mocha-item/src/main/java/org/springblade/mocha/controller/PriceBankController.java

@@ -53,7 +53,6 @@ import org.springframework.web.multipart.MultipartFile;
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -379,6 +378,52 @@ public class PriceBankController extends BladeController {
 	}
 
 	/**
+	 * 导出数据
+	 */
+	@GetMapping("/export")
+	@ApiOperationSupport(order = 9)
+	@ApiOperation(value = "导出数据")
+	public void export(HttpServletResponse response, PriceBankVO priceBank) {
+		LambdaQueryWrapper<PriceBank> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(PriceBank::getIsDeleted, 0);
+		lambdaQueryWrapper.eq(PriceBank::getStatus, 0);
+		lambdaQueryWrapper.eq(PriceBank::getTenantId, SecureUtil.getTenantId());
+		lambdaQueryWrapper.eq(PriceBank::getTradeType, "CK");
+		lambdaQueryWrapper.like(Func.isNotEmpty(priceBank.getCname()), PriceBank::getCname, priceBank.getCname());
+		lambdaQueryWrapper.like(Func.isNotEmpty(priceBank.getCode()), PriceBank::getCode, priceBank.getCode());
+		lambdaQueryWrapper.eq(Func.isNotEmpty(priceBank.getCorpId()), PriceBank::getCorpId, priceBank.getCorpId());
+		lambdaQueryWrapper.like(Func.isNotEmpty(priceBank.getSpecs()), PriceBank::getSpecs, priceBank.getSpecs());
+		lambdaQueryWrapper.like(Func.isNotEmpty(priceBank.getEname()), PriceBank::getEname, priceBank.getEname());
+		lambdaQueryWrapper.ge(Func.isNotEmpty(priceBank.getStatusTime()), PriceBank::getEndTime, priceBank.getStatusTime());
+		lambdaQueryWrapper.eq(Func.isNotEmpty(priceBank.getBillType()), PriceBank::getBillType, priceBank.getBillType());
+		lambdaQueryWrapper.ge(Func.isNotEmpty(priceBank.getDateValidityStart()), PriceBank::getEndTime, priceBank.getDateValidityStart());
+		lambdaQueryWrapper.le(Func.isNotEmpty(priceBank.getDateValidityEnd()), PriceBank::getEndTime, priceBank.getDateValidityEnd());
+		lambdaQueryWrapper.orderByDesc(PriceBank::getId);
+		List<PriceBank> pages = priceBankService.list(lambdaQueryWrapper);
+		List<PriceBankExcel> list = new ArrayList<>();
+		if (CollectionUtils.isNotEmpty(pages)) {
+			for (PriceBank item : pages) {
+				PriceBankExcel priceBankExcel = new PriceBankExcel();
+				R<GoodsDescVO> goodsDesc = goodsDescClient.selectGoodsMessage(item.getItemId());
+				if (goodsDesc != null && goodsDesc.getData() != null) {
+					item.setCnameDescription(goodsDesc.getData().getCnameDescription());
+				}
+				if (item.getCorpId() != null) {
+					R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(item.getCorpId());
+					if (corpMessage.isSuccess() && corpMessage.getData() != null) {
+						item.setCorpCode(corpMessage.getData().getCode());
+					}
+
+				}
+				BeanUtil.copyProperties(item, priceBankExcel);
+				priceBankExcel.setPriceBankId(item.getId() + "");
+				list.add(priceBankExcel);
+			}
+		}
+		ExcelUtil.export(response, "价格库", "价格管理数据表", list, PriceBankExcel.class);
+	}
+
+	/**
 	 * 导出模板
 	 */
 	@GetMapping("/exportPrice")

+ 6 - 0
blade-service/blade-mocha-item/src/main/java/org/springblade/mocha/excel/PriceBankExcel.java

@@ -92,4 +92,10 @@ public class PriceBankExcel  implements Serializable {
 	 */
 	@ExcelProperty(value = "录入人")
 	private String createUserName;
+
+	/**
+	 * 产品价格唯一ID
+	 */
+	@ExcelProperty(value = "*产品价格唯一ID,勿动*")
+	private String priceBankId;
 }

+ 32 - 21
blade-service/blade-mocha-item/src/main/java/org/springblade/mocha/service/impl/PriceBankServiceImpl.java

@@ -147,9 +147,6 @@ public class PriceBankServiceImpl extends ServiceImpl<PriceBankMapper, PriceBank
 			//采购报价=单价 / (1+税率/100) *(1+FOB系数/100)
 			priceBank.setPurchaseAmount(priceBank.getPrice().divide((new BigDecimal(1).add((priceBank.getTaxRate().divide(new BigDecimal(100))))), 4).multiply(new BigDecimal(1).add((priceBank.getCoefficient().divide(new BigDecimal(100))))));
 			if (StringUtils.isNotBlank(item.getCorpName())) {
-				/*CorpsDesc corpsDesc = new CorpsDesc();
-				corpsDesc.setCname(item.getCorpName());
-				corpsDesc.setCorpType("GYS");*/
 				CorpsDesc corpByName = corpsDescClient.getCorpsDesc(item.getCorpName(), "GYS");
 				if (corpByName != null) {
 					priceBank.setCorpName(item.getCorpName());//供应商
@@ -170,29 +167,42 @@ public class PriceBankServiceImpl extends ServiceImpl<PriceBankMapper, PriceBank
 						priceBank.setCnameDescription(goodName.getCnameDescription());//英文描述
 						priceBank.setSupervisorUserIdGroup(goodName.getSupervisorUserIdGroup());//分管员id组
 						priceBank.setSupervisorUserNameGroup(goodName.getSupervisorUserNameGroup());//分管员名组
-						//查询是否存在
-						LambdaQueryWrapper<PriceBank> lambdaQueryWrapper = new LambdaQueryWrapper<>();
-						lambdaQueryWrapper.eq(PriceBank::getCorpId, priceBank.getCorpId());
-						lambdaQueryWrapper.eq(PriceBank::getItemId, priceBank.getItemId());
-						lambdaQueryWrapper.eq(PriceBank::getBillType, priceBank.getBillType());
-						lambdaQueryWrapper.eq(PriceBank::getIsDeleted, 0);
-						lambdaQueryWrapper.eq(PriceBank::getTenantId, SecureUtil.getTenantId());
-						PriceBank bank = baseMapper.selectOne(lambdaQueryWrapper);
-						if (bank == null) {
-							priceBank.setTenantId(SecureUtil.getTenantId());
-							priceBank.setCreateUser(SecureUtil.getUserId());
-							priceBank.setCreateTime(new Date());
-							baseMapper.insert(priceBank);
-						} else {
-							if (priceBank.getPriceTime().compareTo(bank.getPriceTime()) > 0) {
-								baseMapper.updatePrice(bank.getId());//更新历史价格
+						if (ObjectUtils.isNotNull(item.getPriceBankId())) {
+							PriceBank bank = baseMapper.selectById(Long.parseLong(item.getPriceBankId()));
+							if (bank != null) {
+								if (priceBank.getPriceTime().compareTo(bank.getPriceTime()) > 0) {
+									baseMapper.updatePrice(Long.parseLong(item.getPriceBankId()));//更新历史价格
+								}
 							}
-							priceBank.setId(bank.getId());
+							priceBank.setId(Long.parseLong(item.getPriceBankId()));
 							priceBank.setUpdateTime(new Date());
 							priceBank.setUpdateUser(SecureUtil.getUserId());
 							baseMapper.updateById(priceBank);
-						}
+						} else {
+							//查询是否存在
+							LambdaQueryWrapper<PriceBank> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+							lambdaQueryWrapper.eq(PriceBank::getCorpId, priceBank.getCorpId());
+							lambdaQueryWrapper.eq(PriceBank::getItemId, priceBank.getItemId());
+							lambdaQueryWrapper.eq(PriceBank::getBillType, priceBank.getBillType());
+							lambdaQueryWrapper.eq(PriceBank::getIsDeleted, 0);
+							lambdaQueryWrapper.eq(PriceBank::getTenantId, SecureUtil.getTenantId());
+							PriceBank bank = baseMapper.selectOne(lambdaQueryWrapper);
+							if (bank == null) {
+								priceBank.setTenantId(SecureUtil.getTenantId());
+								priceBank.setCreateUser(SecureUtil.getUserId());
+								priceBank.setCreateTime(new Date());
+								baseMapper.insert(priceBank);
+							} else {
+								if (priceBank.getPriceTime().compareTo(bank.getPriceTime()) > 0) {
+									baseMapper.updatePrice(bank.getId());//更新历史价格
+								}
+								priceBank.setId(bank.getId());
+								priceBank.setUpdateTime(new Date());
+								priceBank.setUpdateUser(SecureUtil.getUserId());
+								baseMapper.updateById(priceBank);
+							}
 
+						}
 					} else {
 						goodList.add(item.getCname());
 					}
@@ -220,6 +230,7 @@ public class PriceBankServiceImpl extends ServiceImpl<PriceBankMapper, PriceBank
 
 	/**
 	 * 更新产品价格商品类别
+	 *
 	 * @param ids
 	 * @return
 	 */

+ 26 - 12
blade-service/blade-weChat/src/main/java/org/springblade/weChat/QRCode/WechatQRCodeController.java

@@ -32,7 +32,6 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
-
 import java.io.*;
 import java.net.HttpURLConnection;
 import java.net.URL;
@@ -63,14 +62,11 @@ public class WechatQRCodeController extends BladeController {
 			Parameters parameters = res.getData();
 			String access_token = postToken(parameters.getSubAppid(), parameters.getAppSecret());
 			if (ObjectUtils.isNotNull(access_token)) {
-				filePath = filePath(corpName);
-				if (ObjectUtils.isNotNull(filePath)) {
-					generateQrCode(filePath, "pages/login/login", corpId, access_token);
-					PjCorpsDesc corpsDesc = new PjCorpsDesc();
-					corpsDesc.setId(Long.parseLong(corpId));
-					corpsDesc.setFilePath(filePath);
-					corpClient.updateCorps(corpsDesc);
-				}
+				filePath = generateQrCode("pages/login/login", corpId, access_token, corpName);
+				PjCorpsDesc corpsDesc = new PjCorpsDesc();
+				corpsDesc.setId(Long.parseLong(corpId));
+				corpsDesc.setFilePath(filePath);
+				corpClient.updateCorps(corpsDesc);
 			}
 		}
 		return R.data(filePath);
@@ -139,12 +135,12 @@ public class WechatQRCodeController extends BladeController {
 	/**
 	 * 生成微信小程序二维码
 	 *
-	 * @param filePath    本地生成二维码路径
 	 * @param page        当前小程序相对页面 必须是已经发布的小程序存在的页面(否则报错),例如 pages/index/index, 根路径前不要填加 /,不能携带参数(参数请放在scene字段里),如果不填写这个字段,默认跳主页面
 	 * @param scene       最大32个可见字符,只支持数字,大小写英文以及部分特殊字符:!#$&'()*+,/:;=?@-._~,其它字符请自行编码为合法字符(因不支持%,中文无法使用 urlencode 处理,请使用其他编码方式)
 	 * @param accessToken 接口调用凭证
 	 */
-	public static void generateQrCode(String filePath, String page, String scene, String accessToken) {
+	public static String generateQrCode(String page, String scene, String accessToken, String corpName) {
+		String filePath = "";
 		try {
 			//调用微信接口生成二维码
 			URL url = new URL("https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + accessToken);
@@ -173,7 +169,21 @@ public class WechatQRCodeController extends BladeController {
 
 			//开始获取数据
 			BufferedInputStream bis = new BufferedInputStream(httpURLConnection.getInputStream());
-			OutputStream os = Files.newOutputStream(new File(filePath).toPath());
+			//创建文件夹
+			File packageFile = new File("/home/minio/file/" + AuthUtil.getTenantId() + "-bladex/upload");
+			//文件夹是否创建成功
+			if (!packageFile.getParentFile().exists()) {
+				boolean a = packageFile.mkdirs();
+				if (a) {
+					System.out.println("文件夹创建成功");
+				} else {
+					System.out.println("文件夹创建失败");
+				}
+			}
+			//创建二维码图片
+			File qRCodeFile = new File(packageFile, corpName + ".jpg");
+			qRCodeFile.createNewFile();
+			OutputStream os = Files.newOutputStream(qRCodeFile.toPath());
 			int len;
 			byte[] arr = new byte[1024];
 			while ((len = bis.read(arr)) != -1) {
@@ -181,10 +191,14 @@ public class WechatQRCodeController extends BladeController {
 				os.flush();
 			}
 			os.close();
+			System.out.println("Path1:" + qRCodeFile.getPath());
+			System.out.println("AbsolutePath1:" + qRCodeFile.getAbsolutePath());
+			filePath = qRCodeFile.getAbsolutePath().replace("/home/minio", "http://121.37.83.47");
 		} catch (Exception e) {
 			e.printStackTrace();
 		}
 		System.out.println("打开地址查看生成的二维码:" + filePath);
+		return filePath;
 	}
 
 }