Browse Source

2023年3月8日17:50:46

纪新园 2 years ago
parent
commit
79de04f505
16 changed files with 792 additions and 1351 deletions
  1. 15 16
      blade-auth/src/main/java/org/springblade/auth/service/BladeUserDetailsServiceImpl.java
  2. 7 0
      blade-service-api/blade-client-api/src/main/java/org/springblade/client/dto/CorpsDescDto.java
  3. 12 0
      blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/entity/Order.java
  4. 5 2
      blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/service/impl/TransferServiceImpl.java
  5. 25 4
      blade-service/blade-client/src/main/java/org/springblade/client/corps/controller/CorpsDescPartsController.java
  6. 4 0
      blade-service/blade-client/src/main/java/org/springblade/client/corps/service/ICorpsDescService.java
  7. 1 2
      blade-service/blade-client/src/main/java/org/springblade/client/corps/service/impl/CorpsAttnServiceImpl.java
  8. 128 11
      blade-service/blade-client/src/main/java/org/springblade/client/corps/service/impl/CorpsDescServiceImpl.java
  9. 1 0
      blade-service/blade-client/src/main/java/org/springblade/client/goods/controller/GoodsDescController.java
  10. 19 0
      blade-service/blade-client/src/main/java/org/springblade/client/serial/service/impl/SerialServiceImpl.java
  11. 88 2
      blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/controller/TongLianPaymentController.java
  12. 1 1
      blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/service/impl/PaymentServiceImpl.java
  13. 17 9
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/feign/OrderDescClient.java
  14. 1 1
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/IOrderService.java
  15. 442 1286
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderServiceImpl.java
  16. 26 17
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/wing/accessories/WebpageController.java

+ 15 - 16
blade-auth/src/main/java/org/springblade/auth/service/BladeUserDetailsServiceImpl.java

@@ -16,7 +16,6 @@
  */
 package org.springblade.auth.service;
 
-import com.alibaba.nacos.shaded.com.google.protobuf.ServiceException;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import lombok.AllArgsConstructor;
 import lombok.SneakyThrows;
@@ -25,7 +24,6 @@ import org.springblade.auth.constant.AuthConstant;
 import org.springblade.auth.utils.TokenUtil;
 import org.springblade.common.cache.CacheNames;
 import org.springblade.core.redis.cache.BladeRedis;
-import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.*;
 import org.springblade.system.entity.Tenant;
@@ -92,30 +90,31 @@ public class BladeUserDetailsServiceImpl implements UserDetailsService {
 				}
 				user = userClient.loginByAccount(null, username, "4", tenant.getData().getTenantId());
 				if (ObjectUtils.isNull(user)) {
-					throw new UsernameNotFoundException(TokenUtil.USER_NOT_FOUND);
-				}else{
+//					throw new UsernameNotFoundException(TokenUtil.USER_NOT_FOUND);
 					//用户不存在,注册用户
 					User saveUser = new User();
 					saveUser.setOpenId(openId);
 					saveUser.setUnionId(unionId);
-					user.setTenantId(tenant.getData().getTenantId());
-					user.setUserType(1);
-					user.setAccount(username);
-					user.setName(username);
-					user.setRealName(username);
-					user.setUserType(4);
-					user.setPhone(username);
+					saveUser.setTenantId(tenant.getData().getTenantId());
+					saveUser.setUserType(1);
+					saveUser.setAccount(username);
+					saveUser.setName(username);
+					saveUser.setRealName(username);
+					saveUser.setUserType(4);
+					saveUser.setPhone(username);
 					//获取注册用户类型
-					R<String> r = sysClient.getRoleIds(AuthUtil.getTenantId(), "客户");
+					R<String> r = sysClient.getRoleIds(tenant.getData().getTenantId(), "客户");
 					if (r.isSuccess() && ObjectUtils.isNotNull(r.getData())) {
-						user.setRoleId(r.getData());
+						saveUser.setRoleId(r.getData());
 					}
-					user.setPassword("123456");
-					R<Boolean> result = userClient.saveUser(user);
+					saveUser.setPassword("123456");
+					R<Boolean> result = userClient.saveUser(saveUser);
 					if (!result.isSuccess()) {
-						throw new ServiceException(result.getMsg());
+						throw new UsernameNotFoundException(result.getMsg());
 					}
+					user = saveUser;
 				}
+
 			} else {
 				user = userClient.loginByAccount(username, null, "2", null);
 				if (ObjectUtils.isNull(user)) {

+ 7 - 0
blade-service-api/blade-client-api/src/main/java/org/springblade/client/dto/CorpsDescDto.java

@@ -24,6 +24,7 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import org.springblade.client.entity.CorpsAddr;
+import org.springblade.client.entity.CorpsAttn;
 import org.springblade.client.entity.CorpsFiles;
 
 import java.io.Serializable;
@@ -161,6 +162,12 @@ public class CorpsDescDto implements Serializable {
 	private List<CorpsAddr> corpsAddrList;
 
 	/**
+	 * 客户联系人
+	 */
+	@TableField(exist = false)
+	private List<CorpsAttn> corpsAttnList;
+
+	/**
 	 * 客户文件
 	 */
 	@ApiModelProperty(value = "客户文件")

+ 12 - 0
blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/entity/Order.java

@@ -1331,6 +1331,12 @@ public class Order implements Serializable {
 	@ApiModelProperty(value = "快递公司")
 	private String courierCorporation;
 
+	/**
+	 * 商品名称集合
+	 */
+	@ApiModelProperty(value = "商品名称集合")
+	private String goodsList;
+
 
 	/**
 	 * 采购状态类型
@@ -1344,6 +1350,12 @@ public class Order implements Serializable {
 	@TableField(exist = false)
 	private List<String> dateList;
 
+	/**
+	 * 来源
+	 */
+	@TableField(exist = false)
+	private String source;
+
 	public String get$buyerId() {
 		return $buyerId;
 	}

+ 5 - 2
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/service/impl/TransferServiceImpl.java

@@ -290,7 +290,7 @@ public class TransferServiceImpl implements ITransferService {
 			tradingBoxFees.setCreateUser(AuthUtil.getUserId());
 			tradingBoxFees.setCreateTime(new Date());
 			tradingBoxFees.setTenantId(AuthUtil.getTenantId());
-			tradingBoxFees.setSubmitPay(1);
+			tradingBoxFees.setSubmitPay(0);
 			tradingBoxFeesMapper.insert(tradingBoxFees);
 			tradingBoxFeesList.add(tradingBoxFees);
 			tradingBoxItem.setAmount(tradingBoxItem.getPrice().multiply(BigDecimal.valueOf(days)));
@@ -389,11 +389,14 @@ public class TransferServiceImpl implements ITransferService {
 			tradingBoxFeesLambdaQueryWrapper.eq(TradingBoxFees::getIsDeleted, 0);
 			tradingBoxFeesLambdaQueryWrapper.eq(TradingBoxFees::getPid, tradingBox.getId());
 			tradingBoxFeesLambdaQueryWrapper.eq(TradingBoxFees::getTenantId, AuthUtil.getTenantId());
-			tradingBoxFeesLambdaQueryWrapper.eq(TradingBoxFees::getSubmitPay, 1);
+//			tradingBoxFeesLambdaQueryWrapper.eq(TradingBoxFees::getSubmitPay, 0);
 			tradingBoxFeesLambdaQueryWrapper.eq(TradingBoxFees::getCode, tradingBoxItem.getCode());
 			tradingBoxFeesLambdaQueryWrapper.orderByDesc(TradingBoxFees::getCreateTime);
 			List<TradingBoxFees> tradingBoxFeesList = tradingBoxFeesMapper.selectList(tradingBoxFeesLambdaQueryWrapper);
 			if (tradingBoxFeesList.size() > 0) {
+				if (1 == tradingBoxFeesList.get(0).getSubmitPay()){
+					throw new SecurityException("订单已生成账单,不允许撤销");
+				}
 				tradingBoxFeesMapper.deleteById(tradingBoxFeesList.get(0).getId());
 				//获取账单信息
 				Acc acc = new Acc();

+ 25 - 4
blade-service/blade-client/src/main/java/org/springblade/client/corps/controller/CorpsDescPartsController.java

@@ -32,11 +32,9 @@ import org.springblade.purchase.sales.entity.Order;
 import org.springblade.purchase.sales.feign.IOrderDescClient;
 import org.springblade.system.user.entity.User;
 import org.springblade.system.user.feign.IUserClient;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
+import javax.validation.Valid;
 import java.math.BigDecimal;
 import java.math.MathContext;
 import java.util.*;
@@ -330,4 +328,27 @@ public class CorpsDescPartsController extends BladeController {
 		return R.data(pages);
 	}
 
+	/**
+	 * 新增或修改 客户详情
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入corpsDesc")
+	public R submit(@Valid @RequestBody CorpsDesc corpsDesc) {
+		if (StringUtils.isBlank(corpsDesc.getTenantId())) {
+			corpsDesc.setTenantId(SecureUtil.getTenantId());
+		}
+		return corpsDescService.saveCorpsDesc(corpsDesc);
+	}
+
+	/**
+	 * 新增或修改 客户详情
+	 */
+	@GetMapping("/details")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入corpsDesc")
+	public R details() {
+		return corpsDescService.getDetails();
+	}
+
 }

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

@@ -213,4 +213,8 @@ public interface ICorpsDescService extends IService<CorpsDesc> {
 	 * @return
 	 */
 	List<CorpsDesc> getCodeCorp(String code);
+
+	R saveCorpsDesc(CorpsDesc corpsDesc);
+
+	R getDetails();
 }

+ 1 - 2
blade-service/blade-client/src/main/java/org/springblade/client/corps/service/impl/CorpsAttnServiceImpl.java

@@ -67,11 +67,10 @@ public class CorpsAttnServiceImpl extends ServiceImpl<CorpsAttnMapper, CorpsAttn
 
 		User user = new User();
 		user.setTenantId(AuthUtil.getTenantId());
-		user.setUserType(1);
 		user.setAccount(attn.getTel());
 		user.setName(attn.getCname());
 		user.setRealName(attn.getCname());
-		user.setUserType(1);
+		user.setUserType(4);
 		user.setPhone(attn.getTel());
 		user.setRoleId(corpsAttn.getRoleId());
 		user.setDeptId(corpsAttn.getDeptId());

+ 128 - 11
blade-service/blade-client/src/main/java/org/springblade/client/corps/service/impl/CorpsDescServiceImpl.java

@@ -155,7 +155,7 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, CorpsDesc
 			TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
 			return saveOrUpdateAttn;
 		}
-		if ("1".equals(corpsDesc.getBillType())){
+		if ("1".equals(corpsDesc.getBillType())) {
 			User user = new User();
 			user.setTenantId(AuthUtil.getTenantId());
 			user.setUserType(1);
@@ -172,21 +172,21 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, CorpsDesc
 			user.setPostId(AuthUtil.getPostId());
 
 			LambdaQueryWrapper<CorpsAttn> lambdaQueryWrapper = new LambdaQueryWrapper<>();
-			lambdaQueryWrapper.eq(CorpsAttn::getTenantId,AuthUtil.getTenantId())
-				.eq(CorpsAttn::getIsDeleted,0)
-				.eq(CorpsAttn::getTel,corpsDesc.getTel())
-				.eq(CorpsAttn::getPid,corpsDesc.getId());
+			lambdaQueryWrapper.eq(CorpsAttn::getTenantId, AuthUtil.getTenantId())
+				.eq(CorpsAttn::getIsDeleted, 0)
+				.eq(CorpsAttn::getTel, corpsDesc.getTel())
+				.eq(CorpsAttn::getPid, corpsDesc.getId());
 			CorpsAttn attn = corpsAttnService.getOne(lambdaQueryWrapper);
-			if (ObjectUtils.isNotNull(attn)){
+			if (ObjectUtils.isNotNull(attn)) {
 				R<User> userR = userClient.userInfoById(attn.getUserId());
-				if (ObjectUtil.isNotEmpty(userR.getData())){
+				if (ObjectUtil.isNotEmpty(userR.getData())) {
 					user.setId(attn.getUserId());
 					R<Boolean> result = userClient.updateUser(user);
 
 					if (!result.isSuccess()) {
 						throw new ServiceException(result.getMsg());
 					}
-				}else {
+				} else {
 					user.setPassword(LandConstant.USER_PASSWORD);
 					R<Boolean> result = userClient.saveUser(user);
 					if (!result.isSuccess()) {
@@ -199,7 +199,7 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, CorpsDesc
 					attn.setUserId(userTemp.getData().getId());
 					corpsAttnService.updateById(attn);
 				}
-			}else{
+			} else {
 				user.setPassword(LandConstant.USER_PASSWORD);
 				R<Boolean> result = userClient.saveUser(user);
 				if (!result.isSuccess()) {
@@ -743,7 +743,7 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, CorpsDesc
 	/**
 	 * 根据code模糊查询客户
 	 *
-	 * @param code	编码
+	 * @param code 编码
 	 * @return
 	 */
 	@Override
@@ -756,6 +756,122 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, CorpsDesc
 	}
 
 	@Override
+	public R saveCorpsDesc(CorpsDesc corpsDesc) {
+		Long userId = SecureUtil.getUserId();
+		Date date = new Date();
+		if (null == corpsDesc.getInitials() || "" == corpsDesc.getInitials()) {//首字母为空
+			//获得名称首字母
+			String initials = getSpells(corpsDesc.getCname());
+			corpsDesc.setInitials(initials.substring(0, 1));
+		}
+		//保存客户信息
+		corpsDesc.setCode(corpsDesc.getCname());
+		corpsDesc.setCorpType("KH");
+		if (corpsDesc.getId() == null) {
+			if (StringUtils.isBlank(corpsDesc.getCname())) {
+				return R.data(200, "error", "客户名称不能为空");
+			}
+			CorpsDesc corpsDesc1 = baseMapper.selectCorpsDescCname(corpsDesc.getCname(), AuthUtil.getTenantId());
+			if (ObjectUtils.isNotNull(corpsDesc1)) {
+				if (!AuthUtil.getUserRole().equals("操作员")) {
+					corpsDesc1.setAddr(corpsDesc.getAddr());
+					corpsDesc1.setAttn(corpsDesc.getAttn());
+					corpsDesc1.setCname(corpsDesc.getCname());
+				}
+				CorpsAttn corpsAttn = corpsAttnService.getOne(new LambdaQueryWrapper<CorpsAttn>().eq(CorpsAttn::getIsDeleted, 0)
+					.eq(CorpsAttn::getTenantId, AuthUtil.getTenantId())
+					.eq(CorpsAttn::getPid, corpsDesc1.getId())
+					.eq(CorpsAttn::getTel, corpsDesc.getTel()));
+				if (ObjectUtils.isNotNull(corpsAttn)) {
+					corpsAttn.setAddr(corpsDesc.getAddr());
+					corpsAttn.setAttn(corpsDesc.getAttn());
+					corpsAttnService.updateById(corpsAttn);
+				}
+				CorpsAddr corpsAddr = corpsAddrService.getOne(new LambdaQueryWrapper<CorpsAddr>().eq(CorpsAddr::getIsDeleted, 0)
+					.eq(CorpsAddr::getTenantId, AuthUtil.getTenantId())
+					.eq(CorpsAddr::getPid, corpsDesc1.getId())
+					.eq(CorpsAddr::getTel, corpsDesc.getTel()));
+				if (ObjectUtils.isNotNull(corpsAddr)) {
+					corpsAddr.setAddr(corpsDesc.getAddr());
+					corpsAddr.setDetailedAddress(corpsDesc.getAddr());
+					corpsAddr.setAttn(corpsDesc.getAttn());
+					corpsAddrService.updateById(corpsAddr);
+				}
+			} else {
+				corpsDesc.setTenantId(SecureUtil.getTenantId());
+				corpsDesc.setCreateDept(Long.valueOf(SecureUtil.getDeptId()));
+				corpsDesc.setCreateTime(date);
+				corpsDesc.setCreateUser(userId);
+				baseMapper.insert(corpsDesc);
+				Long pId = corpsDesc.getId();
+				String tenantId = corpsDesc.getTenantId();
+				//保护客户联系人信息
+				CorpsAttn corpsAttn = new CorpsAttn();
+				User user = userClient.loginByAccount("", corpsDesc.getTel(), "4", AuthUtil.getTenantId());
+				if (ObjectUtils.isNotNull(user)) {
+					corpsAttn.setUserId(user.getId());
+				}
+				corpsAttn.setCode(corpsDesc.getCname());
+				corpsAttn.setCname(corpsDesc.getCname());
+				corpsAttn.setAttn(corpsDesc.getAttn());
+				corpsAttn.setTel(corpsDesc.getTel());
+				corpsAttn.setTenantId(AuthUtil.getTenantId());
+				corpsAttn.setPid(corpsDesc.getId());
+				corpsAttn.setCreateTime(new Date());
+				corpsAttn.setTenantId(AuthUtil.getTenantId());
+				corpsAttn.setCreateUser(AuthUtil.getUserId());
+				corpsAttnService.save(corpsAttn);
+				//保存客户地址信息
+				CorpsAddr corpsAddr = new CorpsAddr();
+				corpsAddr.setAddr(corpsDesc.getAddr());
+				corpsAddr.setDetailedAddress(corpsDesc.getAddr());
+				corpsAddr.setAttn(corpsDesc.getAttn());
+				corpsAddr.setTel(corpsDesc.getTel());
+				corpsAddr.setTenantId(AuthUtil.getTenantId());
+				corpsAddr.setPid(corpsDesc.getId());
+				corpsAddr.setCreateTime(new Date());
+				corpsAddr.setTenantId(AuthUtil.getTenantId());
+				corpsAddr.setCreateUser(AuthUtil.getUserId());
+				corpsAddrService.save(corpsAddr);
+				//保存客户与类别对应关系
+				this.saveOrUpdateTypeDesc(corpsDesc, userId, pId, date, tenantId);
+			}
+		} else {
+			corpsDesc.setTenantId(SecureUtil.getTenantId());
+			corpsDesc.setUpdateTime(date);
+			corpsDesc.setCreateDept(Long.valueOf(SecureUtil.getDeptId()));
+			corpsDesc.setUpdateUser(userId);
+			baseMapper.updateById(corpsDesc);
+		}
+
+		return R.data(corpsDesc);
+	}
+
+	@Override
+	public R getDetails() {
+		CorpsAttn corpsAttn = corpsAttnService.getOne(new LambdaQueryWrapper<CorpsAttn>().eq(CorpsAttn::getIsDeleted, 0)
+			.eq(CorpsAttn::getTenantId, AuthUtil.getTenantId())
+			.eq(CorpsAttn::getUserId, AuthUtil.getUserId()));
+		if (ObjectUtils.isNotNull(corpsAttn)) {
+			CorpsDesc corpsDesc = baseMapper.getCorpId(corpsAttn.getPid());
+			if (ObjectUtils.isNotNull(corpsDesc)) {
+				if (AuthUtil.getUserRole().equals("操作员")) {
+					corpsDesc.setAttn(corpsAttn.getAttn());
+					corpsDesc.setAddr(corpsAttn.getAddr());
+					corpsDesc.setTel(corpsAttn.getTel());
+					return R.data(corpsDesc);
+				} else {
+					return R.data(corpsDesc);
+				}
+			} else {
+				return R.data(new CorpsDesc());
+			}
+		} else {
+			return R.data(new CorpsDesc());
+		}
+	}
+
+	@Override
 	public IPage<CorpsDescDto> selectPartsCorpsDescPage(IPage<CorpsDescDto> page, CorpsDescDto corpsDescDto) {
 		//获取客户子类别
 		if (StringUtils.isNotBlank(corpsDescDto.getCorpsTypeId())) {
@@ -879,7 +995,8 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, CorpsDesc
 			corpsDescDto.setCorpsFiles(corpsFilesService.list(new QueryWrapper<CorpsFiles>().eq("pid", corpsDesc.getId()).eq("is_deleted", 0).eq("status", 0)));
 			//获取客户地址
 			corpsDescDto.setCorpsAddrList(corpsAddrService.list(new QueryWrapper<CorpsAddr>().eq("pid", corpsDesc.getId()).eq("is_deleted", 0).eq("status", 0)));
-
+			//客户联系人
+			corpsDescDto.setCorpsAttnList(corpsAttnService.list(new QueryWrapper<CorpsAttn>().eq("pid", corpsDesc.getId()).eq("is_deleted", 0).eq("status", 0)));
 			//获取客户类别
 			List<String> longs = corpsTypeDescMapper.selectTypeId(corpsDesc.getId());
 			corpsDescDto.setCorpsTypeId(String.join(",", longs));

+ 1 - 0
blade-service/blade-client/src/main/java/org/springblade/client/goods/controller/GoodsDescController.java

@@ -687,6 +687,7 @@ public class GoodsDescController extends BladeController {
 		QueryWrapper<GoodsDesc> goodsDescLambdaQueryWrapper = new QueryWrapper<>();
 		goodsDescLambdaQueryWrapper.eq("tenant_id", AuthUtil.getTenantId());
 		goodsDescLambdaQueryWrapper.eq("is_deleted", 0);
+		goodsDescLambdaQueryWrapper.eq("upper_frame", 1);
 		List<GoodsDesc> iPage = goodsDescService.list(goodsDescLambdaQueryWrapper);
 		return R.data(iPage);
 	}

+ 19 - 0
blade-service/blade-client/src/main/java/org/springblade/client/serial/service/impl/SerialServiceImpl.java

@@ -56,6 +56,8 @@ public class SerialServiceImpl extends ServiceImpl<SerialMapper, Serial> impleme
 		String yyyyMM = null;
 		if (tradeType.equals("CK")){
 			yyyyMM = DateFormatUtils.format(date, "yy");
+		}else if (tradeType.equals("YPJ")){
+			yyyyMM = DateFormatUtils.format(date, "yyyyMMdd");
 		}else {
 			yyyyMM = DateFormatUtils.format(date, "yyyyMM");
 		}
@@ -84,6 +86,23 @@ public class SerialServiceImpl extends ServiceImpl<SerialMapper, Serial> impleme
 				billNoSerial.setSerial(1);
 				baseMapper.insert(billNoSerial);
 			}
+		}else if (tradeType.equals("YPJ")){
+			yyyyMM = DateFormatUtils.format(date, "yyyyMMdd");
+			if (serial != null) {
+				serial.setSerial(serial.getSerial() + 1);
+				baseMapper.updateById(serial);
+				if (serial.getSerial() <= 9) {
+					billNo = yyyyMM + "00" + serial.getSerial();
+				} else if (serial.getSerial() <= 99) {
+					billNo = yyyyMM + "0" + serial.getSerial();
+				}else{
+					billNo = yyyyMM + "" + serial.getSerial();
+				}
+			} else {
+				billNo = yyyyMM + "001";
+				billNoSerial.setSerial(1);
+				baseMapper.insert(billNoSerial);
+			}
 		}else {
 			if (serial != null) {
 				serial.setSerial(serial.getSerial() + 1);

+ 88 - 2
blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/controller/TongLianPaymentController.java

@@ -1,5 +1,6 @@
 package org.springblade.pay.tonglianPayment.controller;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import io.swagger.annotations.Api;
@@ -14,6 +15,7 @@ import org.springblade.client.feign.IFeesDescClient;
 import org.springblade.client.feign.ISerialClient;
 import org.springblade.client.feign.ITongLianPaymentClient;
 import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.finance.dto.ApplyDTO;
@@ -30,6 +32,7 @@ import org.springblade.purchase.sales.entity.Order;
 import org.springblade.purchase.sales.entity.OrderItems;
 import org.springblade.purchase.sales.feign.IOrderDescClient;
 import org.springblade.purchase.sales.feign.IOrderItemsClient;
+import org.springblade.stock.entity.StockGoods;
 import org.springblade.stock.feign.IStockGoodsClient;
 import org.springblade.stock.vo.StockGoodsVO;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
@@ -130,10 +133,10 @@ public class TongLianPaymentController extends BladeController {
 					parameters.setAppId(AnalysisMapUtils.getString("cusid", params));
 					parameters.setCusId(AnalysisMapUtils.getString("appid", params));
 					Parameters parametersDetails = tongLianPaymentClient.getParametersDetails(parameters);
-					if (ObjectUtils.isNotNull(parametersDetails)){
+					if (ObjectUtils.isNotNull(parametersDetails)) {
 						wechatMark.setTenantId(parametersDetails.getTenantId());
 						order.setTenantId(parametersDetails.getTenantId());
-					}else{
+					} else {
 						wechatMark.setTenantId("000000");
 						order.setTenantId("000000");
 						wechatMark.setRemark("未找到租户,异常支付");
@@ -162,7 +165,90 @@ public class TongLianPaymentController extends BladeController {
 							settlement.setOverPayment(new BigDecimal("0.00"));
 							settlementList.add(settlement);
 							selectOrder.setCurrentAmount(selectOrder.getRmbAmount());
+							if ("2".equals(selectOrder.getOrderSource())) {
+								R<List<OrderItems>> res = orderItemsClient.selectList(selectOrder.getId());
+								BigDecimal costAmount = new BigDecimal("0.00");
+								BigDecimal grossProfit = new BigDecimal("0.00");
+								if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
+									for (OrderItems orderItems : order.getOrderItemsList()) {
+										if ("XS".equals(order.getBillType())) {
+											orderItems.setAmount(orderItems.getStorageInQuantity().multiply(orderItems.getPrice(), MathContext.DECIMAL32));
+										} else {
+											orderItems.setAmount(orderItems.getStorageInQuantity().multiply(orderItems.getPurchasePrice(), MathContext.DECIMAL32));
+										}
+										BigDecimal stockPrice = new BigDecimal("0.00");
+										BigDecimal surplusRouteQuantity = new BigDecimal("0.00");
+										BigDecimal balanceQuantity = new BigDecimal("0.00");
+										BigDecimal balanceAmount = new BigDecimal("0.00");
+										orderItems.setPurchaseCost(orderItems.getPurchasePrice());
+										//获取本商品库存
+										R<StockGoodsVO> r = stockGoodsClient.selectStockParts(null, orderItems.getStorageId(), orderItems.getItemId(), null, null, null, null, null, null);
+										if (r.isSuccess() && ObjectUtils.isNotNull(r.getData())) {
+											if ("XS".equals(order.getBillType())) {
+												surplusRouteQuantity = surplusRouteQuantity.add(r.getData().getSurplusRouteQuantity().subtract(orderItems.getStorageInQuantity()));
+												balanceQuantity = balanceQuantity.add(surplusRouteQuantity);
+
+
+												if (new BigDecimal("0.00").equals(r.getData().getSurplusRouteQuantity())) {
+													costAmount = costAmount.add(orderItems.getPurchasePrice().multiply(orderItems.getStorageInQuantity()));
+												} else {
+													costAmount = costAmount.add(r.getData().getStockPrice().multiply(orderItems.getStorageInQuantity()));
+												}
+												balanceAmount = balanceAmount.add(balanceQuantity.multiply(orderItems.getPurchasePrice(), MathContext.DECIMAL32));
+												stockPrice = stockPrice.add(balanceAmount.divide(balanceQuantity, MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
+
+												r.getData().setOutQuantity(r.getData().getOutQuantity().add(orderItems.getStorageInQuantity()));
+												r.getData().setOutAmount(r.getData().getOutAmount().add(costAmount));
 
+												BigDecimal grossProfits = orderItems.getPrice().subtract(orderItems.getPurchasePrice());
+												grossProfit = grossProfit.add(orderItems.getStorageInQuantity().multiply(grossProfits));
+											} else {
+												surplusRouteQuantity = surplusRouteQuantity.add(r.getData().getSurplusRouteQuantity().add(orderItems.getStorageInQuantity()));
+												balanceQuantity = balanceQuantity.add(surplusRouteQuantity);
+												balanceAmount = balanceAmount.add(balanceQuantity.multiply(orderItems.getPrice(), MathContext.DECIMAL32));
+												stockPrice = stockPrice.add(balanceAmount.divide(balanceQuantity, MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
+
+												r.getData().setInQuantity(r.getData().getInQuantity().add(orderItems.getStorageInQuantity()));
+												r.getData().setInAmount(r.getData().getInAmount().add(orderItems.getAmount()));
+
+												costAmount = costAmount.add(orderItems.getPurchasePrice().multiply(orderItems.getStorageInQuantity()));
+												grossProfit = grossProfit.add(new BigDecimal("0.00"));
+											}
+											r.getData().setSurplusRouteQuantity(surplusRouteQuantity);
+											r.getData().setBalanceQuantity(balanceQuantity);
+											r.getData().setBalanceAmount(balanceAmount);
+											r.getData().setStockPrice(stockPrice);
+											stockGoodsClient.updateStock(r.getData());
+										} else {
+											StockGoods stockGoods = new StockGoods();
+											if ("CG".equals(order.getBillType())) {
+												stockGoods.setGoodsId(orderItems.getItemId());
+												stockGoods.setStorageId(orderItems.getStorageId());
+												stockGoods.setPurchasePrice(orderItems.getPrice());
+												stockGoods.setStockPrice(orderItems.getPrice());
+												stockGoods.setBalanceQuantity(orderItems.getStorageInQuantity());
+												stockGoods.setBalanceAmount(stockGoods.getBalanceQuantity().multiply(orderItems.getPrice()));
+												stockGoods.setSurplusRouteQuantity(orderItems.getStorageInQuantity());
+												stockGoodsClient.saveStock(stockGoods);
+											} else {
+												stockGoods.setGoodsId(orderItems.getItemId());
+												stockGoods.setStorageId(orderItems.getStorageId());
+												stockGoods.setPurchasePrice(orderItems.getPrice());
+												stockGoods.setStockPrice(orderItems.getPrice());
+												stockGoods.setBalanceQuantity(new BigDecimal("0.00").subtract(orderItems.getStorageInQuantity()));
+												stockGoods.setBalanceAmount(new BigDecimal("0.00").subtract(stockGoods.getBalanceQuantity().multiply(orderItems.getPrice())));
+												stockGoods.setSurplusRouteQuantity(new BigDecimal("0.00").subtract(orderItems.getStorageInQuantity()));
+												stockGoodsClient.saveStock(stockGoods);
+											}
+										}
+									}
+									order.setCostAmount(costAmount);
+									order.setGrossProfit(grossProfit);
+								} else {
+									wechatMark.setCause(AnalysisMapUtils.getString("cusorderid", params) + "单号支付成功,库存加减失败!原因:未查到单据明细信息");
+									wechatMark.setStatus(2);
+								}
+							}
 							//账单支付处理
 							//获取所属公司中文名
 							if (selectOrder.getBelongToCorpId() != null) {

+ 1 - 1
blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/service/impl/PaymentServiceImpl.java

@@ -96,7 +96,7 @@ public class PaymentServiceImpl implements IPaymentService {
 			if (body.length() > 0) {
 				body = body.substring(0, body.length() - 1);
 			}
-			Map<String, String> map = service.pay(order.getDebitAmount().multiply(new BigDecimal(100)).intValue(),
+			Map<String, String> map = service.pay(order.getBalanceAmount().multiply(new BigDecimal(100)).intValue(),
 				order.getSysNo(),
 				parameters.getPayType(),
 				body,

+ 17 - 9
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/feign/OrderDescClient.java

@@ -227,7 +227,7 @@ public class OrderDescClient implements IOrderDescClient {
 	public R underReviewTH(Long id) {
 		Order order = new Order();
 		order.setId(id);
-		order.setStatus(7);
+		order.setStatus(10);
 		order.setUpdateUser(AuthUtil.getUserId());
 		order.setUpdateTime(new Date());
 		order.setUpdateUserName(AuthUtil.getUserName());
@@ -238,13 +238,21 @@ public class OrderDescClient implements IOrderDescClient {
 	@Override
 	@GetMapping(PASS_CANCEL_TH)
 	public R passCancelTH(Long id) {
-		Order order = new Order();
-		order.setId(id);
-		order.setStatus(8);
-		order.setUpdateUser(AuthUtil.getUserId());
-		order.setUpdateTime(new Date());
-		order.setUpdateUserName(AuthUtil.getUserName());
+
+		Order selectOrder = iOrderService.getById(id);
+		if (ObjectUtils.isNull(selectOrder)) {
+			throw new SecurityException("未查到单据信息");
+		}
+		LambdaQueryWrapper<Order> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(Order::getTenantId, AuthUtil.getTenantId()).eq(Order::getIsDeleted, 0).eq(Order::getId, selectOrder.getSrcId()).eq(Order::getSysNo, selectOrder.getSrcOrderNo());
+		Order order = iOrderService.getOne(lambdaQueryWrapper);
+		if (ObjectUtils.isNull(order)) {
+			throw new SecurityException("未查到订单信息");
+		}
+		order.setStatus(11);
 		iOrderService.updateById(order);
+		selectOrder.setStatus(11);
+		iOrderService.updateById(selectOrder);
 		return R.data("操作成功");
 	}
 
@@ -297,10 +305,10 @@ public class OrderDescClient implements IOrderDescClient {
 				throw new RuntimeException("未找到库存,操作失败!");
 			}
 		}
-		order.setStatus(5);
+		order.setStatus(7);
 		iOrderService.updateById(order);
 
-		selectOrder.setStatus(5);
+		selectOrder.setStatus(7);
 		iOrderService.updateById(selectOrder);
 
 		//获取账单信息

+ 1 - 1
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/IOrderService.java

@@ -515,7 +515,7 @@ public interface IOrderService extends IService<Order> {
 
 	R delivery(Order order);
 
-	IPage<Order> selectList(Query query, LambdaQueryWrapper<Order> lambdaQueryWrapper);
+	IPage<Order> selectList(Query query, LambdaQueryWrapper<Order> lambdaQueryWrapper,String source);
 
 	R savePlaceOrderMall(Order order);
 

File diff suppressed because it is too large
+ 442 - 1286
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderServiceImpl.java


+ 26 - 17
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/wing/accessories/WebpageController.java

@@ -21,8 +21,10 @@ import org.springblade.purchase.sales.entity.Order;
 import org.springblade.purchase.sales.service.IOrderService;
 import org.springblade.purchase.sales.vo.OrderVO;
 import org.springframework.web.bind.annotation.*;
+
 import javax.validation.Valid;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 翼车配-网页  controller
@@ -56,11 +58,21 @@ public class WebpageController {
 		lambdaQueryWrapper.like(Func.isNotEmpty(order.getOrderNo()), Order::getOrderNo, order.getOrderNo());//订单号
 		lambdaQueryWrapper.eq(Func.isNotEmpty(order.getStorageId()), Order::getStorageId, order.getStorageId());//仓库id
 		if ("线上".equals(order.getOrderSource())) {
+			if (ObjectUtils.isNotNull(order.getStatus()) && 1 == order.getStatus()) {
+				lambdaQueryWrapper.eq(Func.isNotEmpty(order.getActualPaymentStatus()), Order::getActualPaymentStatus, order.getStatus());//微信实际支付状态
+			} else if (ObjectUtils.isNotNull(order.getStatus()) && 2 == order.getStatus()) {
+				lambdaQueryWrapper.eq(Func.isNotEmpty(order.getActualPaymentStatus()), Order::getActualPaymentStatus, order.getStatus());//微信实际支付状态
+				lambdaQueryWrapper.eq(Order::getStatus, 3);//微信实际支付状态
+			} else if (ObjectUtils.isNotNull(order.getStatus()) && 13 == order.getStatus()) {
+				lambdaQueryWrapper.in(Order::getStatus, 7, 8, 9, 10, 11, 12);
+			} else {
+				lambdaQueryWrapper.eq(Func.isNotEmpty(order.getStatus()), Order::getStatus, order.getStatus());//订单状态
+			}
 			CorpsAttn corpsAttn = corpsAttnClient.getUser(AuthUtil.getUserId());
 			if (ObjectUtils.isNotNull(corpsAttn)) {
 				CorpsDesc corpsDesc = corpsDescClient.getCorpId(corpsAttn.getPid());
 				if (ObjectUtils.isNotNull(corpsDesc)) {
-					lambdaQueryWrapper.eq(Func.isNotEmpty(corpsDesc.getId()), Order::getCorpId, corpsDesc.getId());//客户id
+						lambdaQueryWrapper.eq( Order::getCorpId, corpsDesc.getId());//客户id
 				} else {
 					lambdaQueryWrapper.eq(Order::getCorpId, 0);//客户id
 				}
@@ -68,6 +80,13 @@ public class WebpageController {
 				lambdaQueryWrapper.eq(Order::getCorpId, 0);//客户id
 			}
 		} else {
+			if (ObjectUtils.isNotNull(order.getStatus()) && (1 == order.getStatus() || 2 == order.getStatus())) {
+				lambdaQueryWrapper.eq(Func.isNotEmpty(order.getActualPaymentStatus()), Order::getActualPaymentStatus, order.getStatus());//微信实际支付状态
+			} else if (ObjectUtils.isNotNull(order.getStatus()) && 13 == order.getStatus()) {
+				lambdaQueryWrapper.in(Order::getStatus, 7, 8, 9, 10, 11, 12);
+			} else {
+				lambdaQueryWrapper.eq(Func.isNotEmpty(order.getStatus()), Order::getStatus, order.getStatus());//订单状态
+			}
 			if (ObjectUtils.isNotNull(order.getCorpsName())) {
 				String corpsName = order.getCorpsName().replaceAll(" ", "");
 				List<Long> ids = corpsDescClient.listCorpIdByName(corpsName);
@@ -80,12 +99,6 @@ public class WebpageController {
 				lambdaQueryWrapper.like(Func.isNotEmpty(order.getCorpId()), Order::getCorpId, order.getCorpId());//客户id
 			}
 		}
-		lambdaQueryWrapper.eq(Func.isNotEmpty(order.getOrderSource()), Order::getOrderSource, order.getOrderSource());//订单来源
-		if (ObjectUtils.isNotNull(order.getStatus()) && (1 == order.getStatus() || 2 == order.getStatus())) {
-			lambdaQueryWrapper.eq(Func.isNotEmpty(order.getActualPaymentStatus()), Order::getActualPaymentStatus, order.getStatus());//微信实际支付状态
-		} else {
-			lambdaQueryWrapper.eq(Func.isNotEmpty(order.getStatus()), Order::getStatus, order.getStatus());//订单状态
-		}
 		lambdaQueryWrapper.eq(ObjectUtils.isNotNull(order.getSalesName()), Order::getSalesName, order.getSalesName());//业务员
 		lambdaQueryWrapper.ge(Func.isNotEmpty(order.getContractStartDate()), Order::getBusinesDate, order.getContractStartDate());//合同日期开始
 		lambdaQueryWrapper.le(Func.isNotEmpty(order.getContractEndDate()), Order::getBusinesDate, order.getContractEndDate());//合同日期结束
@@ -114,8 +127,8 @@ public class WebpageController {
 				lambdaQueryWrapper.orderByAsc(Order::getBusinesDate);
 			} else if ("5".equals(order.getTypeSort())) {
 				lambdaQueryWrapper.orderByAsc(Order::getConfirmStatus);
-			}else {
-				lambdaQueryWrapper.orderByAsc(Order::getBusinesDate);
+			} else {
+				lambdaQueryWrapper.orderByDesc(Order::getBusinesDate);
 			}
 		} else if ("1".equals(order.getSort())) {
 			if ("1".equals(order.getTypeSort())) {
@@ -128,17 +141,13 @@ public class WebpageController {
 				lambdaQueryWrapper.orderByDesc(Order::getBusinesDate);
 			} else if ("5".equals(order.getTypeSort())) {
 				lambdaQueryWrapper.orderByDesc(Order::getConfirmStatus);
-			}else {
-				lambdaQueryWrapper.orderByAsc(Order::getBusinesDate);
-			}
-		} else {
-			if ("234557".equals(AuthUtil.getTenantId())) {
-				lambdaQueryWrapper.orderByAsc(Order::getStatus);
 			} else {
-				lambdaQueryWrapper.orderByAsc(Order::getBusinesDate);
+				lambdaQueryWrapper.orderByDesc(Order::getBusinesDate);
 			}
+		} else {
+			lambdaQueryWrapper.orderByDesc(Order::getBusinesDate);
 		}
-		return R.data(orderService.selectList(query, lambdaQueryWrapper));
+		return R.data(orderService.selectList(query, lambdaQueryWrapper,order.getSource()));
 	}
 
 	/**

Some files were not shown because too many files changed in this diff