浏览代码

2022年9月14日17:56:02

纪新园 3 年之前
父节点
当前提交
dd6f331a6d
共有 13 个文件被更改,包括 571 次插入24 次删除
  1. 20 0
      blade-service-api/trade-purchase-api/src/main/java/com/trade/purchase/financing/entity/Financing.java
  2. 32 0
      blade-service-api/trade-purchase-api/src/main/java/com/trade/purchase/order/feign/IFinancingClient.java
  3. 2 0
      blade-service/blade-check/src/main/java/org/springblade/check/controller/AuditProecessController.java
  4. 6 0
      blade-service/blade-check/src/main/java/org/springblade/check/service/IAuditProecessService.java
  5. 154 0
      blade-service/blade-check/src/main/java/org/springblade/check/service/impl/AuditProecessServiceImpl.java
  6. 39 0
      blade-service/trade-purchase/src/main/java/com/trade/purchase/feign/FinancingClient.java
  7. 168 12
      blade-service/trade-purchase/src/main/java/com/trade/purchase/financing/controller/FinancingController.java
  8. 15 0
      blade-service/trade-purchase/src/main/java/com/trade/purchase/financing/mapper/FinancingMapper.java
  9. 16 0
      blade-service/trade-purchase/src/main/java/com/trade/purchase/financing/mapper/FinancingMapper.xml
  10. 17 0
      blade-service/trade-purchase/src/main/java/com/trade/purchase/financing/service/IFinancingService.java
  11. 21 0
      blade-service/trade-purchase/src/main/java/com/trade/purchase/financing/service/impl/FinancingServiceImpl.java
  12. 34 2
      blade-service/trade-purchase/src/main/java/com/trade/purchase/order/controller/WoodHarvestingCloudController.java
  13. 47 10
      blade-service/trade-purchase/src/main/java/com/trade/purchase/order/service/impl/OrderServiceImpl.java

+ 20 - 0
blade-service-api/trade-purchase-api/src/main/java/com/trade/purchase/financing/entity/Financing.java

@@ -20,9 +20,11 @@ import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
@@ -68,6 +70,8 @@ public class Financing implements Serializable {
 	 * 融资日期
 	 */
 	@ApiModelProperty(value = "融资日期")
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+	@DateTimeFormat(pattern = "yyyy-MM-dd")
 	private Date financingDate;
 	/**
 	 * 融资金额
@@ -93,6 +97,8 @@ public class Financing implements Serializable {
 	 * 创建时间
 	 */
 	@ApiModelProperty(value = "创建时间")
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
 	private Date createTime;
 	/**
 	 * 修改人
@@ -103,6 +109,8 @@ public class Financing implements Serializable {
 	 * 修改时间
 	 */
 	@ApiModelProperty(value = "修改时间")
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
 	private Date updateTime;
 	/**
 	 * 状态(0 正常 1审批提交 2.审批中 3审批通过)
@@ -171,5 +179,17 @@ public class Financing implements Serializable {
 	@TableField(exist = false)
 	private BigDecimal balanceAmount;
 
+	/**
+	 * 年
+	 */
+	@TableField(exist = false)
+	private String year;
+
+	/**
+	 * 月
+	 */
+	@TableField(exist = false)
+	private String month;
+
 
 }

+ 32 - 0
blade-service-api/trade-purchase-api/src/main/java/com/trade/purchase/order/feign/IFinancingClient.java

@@ -0,0 +1,32 @@
+package com.trade.purchase.order.feign;
+
+import com.trade.purchase.order.entity.Order;
+import org.springblade.core.tool.api.R;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+/**
+ * @author caifc
+ * @date 2021-10-21 22:28
+ */
+@FeignClient(
+	value = "trade-purchase"
+)
+public interface IFinancingClient {
+	String API_PREFIX = "/client";
+	String PASS_CHECK=API_PREFIX+"/FinancingPassCheck";
+	String PASS_CANCEL=API_PREFIX+"/FinancingPassCancel";
+	String UNDER_REVIEW=API_PREFIX+"/FinancingUnderReview";
+
+	@PostMapping(PASS_CHECK)
+	R passCheck(@RequestParam("id") Long id);
+
+	@PostMapping(PASS_CANCEL)
+	R passCancel(@RequestParam("id") Long id);
+
+	@PostMapping(UNDER_REVIEW)
+	R underReview(@RequestParam("id") Long id);
+
+}

+ 2 - 0
blade-service/blade-check/src/main/java/org/springblade/check/controller/AuditProecessController.java

@@ -247,6 +247,8 @@ public class AuditProecessController extends BladeController {
 			auditProecessService.leadsCheck(auditProecess);
 		}else if ("RK".equals(proecess.getCheckType()) || "CK".equals(proecess.getCheckType()) || "PD".equals(proecess.getCheckType())) {
 			auditProecessService.cmyCheck(auditProecess);
+		}else if ("rzgl".equals(proecess.getCheckType())) {
+			auditProecessService.financingyCheck(auditProecess);
 		} else {
 			auditProecessService.commonCheck(auditProecess);
 		}

+ 6 - 0
blade-service/blade-check/src/main/java/org/springblade/check/service/IAuditProecessService.java

@@ -78,4 +78,10 @@ public interface IAuditProecessService extends IService<AuditProecess> {
 	 * @param auditProecess
 	 */
 	void cmyCheck(AuditProecess auditProecess);
+
+	/**
+	 * 采木云融资审批
+	 * @param auditProecess
+	 */
+	void financingyCheck(AuditProecess auditProecess);
 }

+ 154 - 0
blade-service/blade-check/src/main/java/org/springblade/check/service/impl/AuditProecessServiceImpl.java

@@ -28,6 +28,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
 import com.trade.purchase.extra.feign.IClaimClient;
 import com.trade.purchase.extra.feign.ILeadsClient;
 import com.trade.purchase.office.feign.IOfficeOrderClient;
+import com.trade.purchase.order.feign.IFinancingClient;
 import io.seata.spring.annotation.GlobalTransactional;
 import jodd.util.ObjectUtil;
 import lombok.AllArgsConstructor;
@@ -113,6 +114,8 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, A
 
 	private final IUserSearchClient iUserSearchClient;
 
+	private final IFinancingClient financingClient;
+
 	@Override
 	public IPage<AuditProecessVO> selectAuditProecessPage(IPage<AuditProecessVO> page, AuditProecessVO auditProecess) {
 		return page.setRecords(baseMapper.selectAuditProecessPage(page, auditProecess));
@@ -2148,6 +2151,157 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, A
 		baseMapper.updateById(auditProecess);
 	}
 
+	/**
+	 * 采木云融资审批
+	 * @param auditProecess
+	 */
+	@Override
+	public void financingyCheck(AuditProecess auditProecess) {
+		//查看最新操作记录,防止重复提交
+		AuditProecess proecessTemp = baseMapper.selectById(auditProecess.getId());
+		if (proecessTemp == null) {
+			throw new SecurityException("未查到此审批记录,禁止操作");
+		}
+		if ("A".equals(proecessTemp.getAuditStatus()) || "B".equals(proecessTemp.getAuditStatus())) {
+			throw new SecurityException("当前记录已经完成审批,禁止重复操作");
+		}
+
+		if (auditProecess.getAuditStatus() == null || !"S".equals(auditProecess.getAuditStatus())) {
+			throw new SecurityException("审批状态非待审,禁止操作");
+		}
+		//信息
+		Message sendMessage = new Message();
+		sendMessage.setParameter(String.valueOf(auditProecess.getBillId()));
+		sendMessage.setUserName(AuthUtil.getUserName());
+		sendMessage.setUserId(AuthUtil.getUserId());
+		sendMessage.setToUserId(auditProecess.getSendUserId());
+		sendMessage.setToUserName(auditProecess.getSendName());
+		sendMessage.setMessageType(1);
+		sendMessage.setTenantId(AuthUtil.getTenantId());
+		sendMessage.setCreateUser(AuthUtil.getUserId());
+		sendMessage.setCreateTime(new Date());
+		sendMessage.setUrl(auditProecess.getUrl());
+		sendMessage.setPageLabel(auditProecess.getPageLabel());
+		sendMessage.setPageStatus(auditProecess.getPageStatus());
+
+
+		//用户操作 1.通过  2.驳回
+		Integer operate = auditProecess.getOperate();
+		//查看当前审批是否为最后一级
+		String iffinalItem = auditProecess.getIffinalItem();
+		//审批人
+		auditProecess.setAuditUserId(String.valueOf(AuthUtil.getUserId()));
+		//审批时间
+		auditProecess.setAuditOpTime(new Date());
+		//不是最后一级
+		if ("F".equals(iffinalItem)) {
+
+			//通过
+			if (operate == 1) {
+				//如果是第一级, 则修改状态为审批中
+				if (auditProecess.getLevelId() == 1) {
+					R submit = financingClient.passCheck(auditProecess.getSrcBillId());
+					if (!submit.isSuccess()) {
+						throw new SecurityException("审批开始修改审核状态失败");
+					}
+				}
+
+				auditProecess.setAuditStatus("A");
+				//查询下一级,开启待审
+				LambdaQueryWrapper<AuditProecess> auditProecessLambdaQueryWrapper = new LambdaQueryWrapper<>();
+				auditProecessLambdaQueryWrapper
+					.eq(AuditProecess::getBatchNo, auditProecess.getBatchNo())
+					.eq(AuditProecess::getSrcBillId, auditProecess.getSrcBillId())
+					.eq(AuditProecess::getIsDelete, 0)
+					.eq(AuditProecess::getActId, auditProecess.getActId())
+					.eq(AuditProecess::getBillId, auditProecess.getBillId())
+					.eq(AuditProecess::getBillNo, auditProecess.getBillNo())
+					.eq(AuditProecess::getTenantId, AuthUtil.getTenantId())
+					.eq(AuditProecess::getLevelId, auditProecess.getLevelId() + 1);
+				Integer count = baseMapper.selectCount(auditProecessLambdaQueryWrapper);
+				if (count != null && count > 1) {
+					throw new SecurityException("审核失败,获取下一级信息失败");
+				}
+				AuditProecess proecess = baseMapper.selectOne(auditProecessLambdaQueryWrapper);
+				if (proecess == null) {
+					throw new SecurityException("审批通过=>获取下一级信息失败");
+				}
+				proecess.setAuditStatus("S");
+				baseMapper.updateById(proecess);
+				Message message = new Message();
+				message.setParameter(String.valueOf(auditProecess.getBillId()));
+				message.setUserName(AuthUtil.getUserName());
+				message.setUserId(AuthUtil.getUserId());
+				message.setMessageType(1);
+				message.setTenantId(AuthUtil.getTenantId());
+				message.setMessageBody("你有新的审批待操作,请及时处理");
+				message.setCreateUser(AuthUtil.getUserId());
+				message.setUrl("/approveData/index");
+				message.setCreateTime(new Date());
+
+				// 消息批量通知下一级
+				sendMsgToGroup(message, proecess.getAuditUserId());
+			}
+			//不通过
+			else if (operate == 2) {
+				auditProecess.setAuditStatus("B");
+				//todo 调用feign取消
+				R r = financingClient.passCancel(auditProecess.getSrcBillId());
+				if (!r.isSuccess()) {
+					throw new SecurityException("修改融资状态失败");
+				}
+
+				sendMessage.setMessageBody("您的请核未通过,驳回原因:" + auditProecess.getAuditMsg());
+				R save = messageClient.save(sendMessage);
+				if (!save.isSuccess()) {
+					throw new SecurityException("发送消息失败");
+				}
+			}
+
+		}
+		//是最后一级
+		else if ("T".equals(iffinalItem)) {
+			//通过
+			if (operate == 1) {
+				//todo 调用feign直接通过
+				auditProecess.setAuditStatus("A");
+				R r = financingClient.passCheck(auditProecess.getSrcBillId());
+				if (!r.isSuccess()) {
+					throw new SecurityException("修改融资状态失败");
+				}
+
+				sendMessage.setMessageBody("您的请核已通过,请继续操作");
+				R save = messageClient.save(sendMessage);
+				if (!save.isSuccess()) {
+					throw new SecurityException("发送消息失败");
+				}
+			}
+			//不通过
+			else if (operate == 2) {
+				//todo 调用feign取消
+				auditProecess.setAuditStatus("B");
+				R r = financingClient.passCancel(auditProecess.getSrcBillId());
+				if (!r.isSuccess()) {
+					throw new SecurityException("修改融资状态失败");
+				}
+				sendMessage.setMessageBody("您的请核未通过,驳回原因:" + auditProecess.getAuditMsg());
+				R save = messageClient.save(sendMessage);
+				if (!save.isSuccess()) {
+					throw new SecurityException("发送消息失败");
+				}
+			}
+		} else {
+			throw new SecurityException("审批异常,请联系管理员");
+		}
+
+		cleanMsg(proecessTemp.getAuditUserId(), AuthUtil.getUserId(), proecessTemp.getSrcBillId());
+
+		//保存操作记录
+		auditProecess.setAuditMsg(auditProecess.getAuditMsg());
+		auditProecess.setAuditItem(new Date());
+		baseMapper.updateById(auditProecess);
+	}
+
 	private void sendMsgToGroup(Message message, String group) {
 		List<String> userList = Arrays.asList(group.split(","));
 		userList.forEach(user -> {

+ 39 - 0
blade-service/trade-purchase/src/main/java/com/trade/purchase/feign/FinancingClient.java

@@ -0,0 +1,39 @@
+package com.trade.purchase.feign;
+
+import com.trade.purchase.extra.feign.ILeadsClient;
+import com.trade.purchase.extra.service.ILeadsService;
+import com.trade.purchase.financing.service.IFinancingService;
+import com.trade.purchase.order.feign.IFinancingClient;
+import lombok.AllArgsConstructor;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import org.springframework.web.bind.annotation.RestController;
+import springfox.documentation.annotations.ApiIgnore;
+
+@NonDS
+@ApiIgnore()
+@RestController
+@AllArgsConstructor
+public class FinancingClient implements IFinancingClient {
+
+	private final IFinancingService financingService;
+
+
+	@Override
+	public R passCheck(Long id) {
+		financingService.passCheck(id);
+		return R.success("操作成功");
+	}
+
+	@Override
+	public R passCancel(Long id) {
+		financingService.passCancel(id);
+		return R.success("操作成功");
+	}
+
+	@Override
+	public R underReview(Long id) {
+		financingService.underReview(id);
+		return R.success("操作成功");
+	}
+}

+ 168 - 12
blade-service/trade-purchase/src/main/java/com/trade/purchase/financing/controller/FinancingController.java

@@ -17,30 +17,31 @@
 package com.trade.purchase.financing.controller;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.trade.purchase.financing.entity.Financing;
+import com.trade.purchase.financing.service.IFinancingService;
+import com.trade.purchase.financing.vo.FinancingVO;
 import com.trade.purchase.order.entity.Order;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import lombok.AllArgsConstructor;
-import javax.validation.Valid;
-
 import org.springblade.client.entity.CorpsDesc;
-import org.springblade.client.entity.StorageType;
 import org.springblade.client.feign.ICorpsDescClient;
+import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
 import org.springframework.web.bind.annotation.*;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.trade.purchase.financing.entity.Financing;
-import com.trade.purchase.financing.vo.FinancingVO;
-import com.trade.purchase.financing.service.IFinancingService;
-import org.springblade.core.boot.ctrl.BladeController;
 
+import javax.validation.Valid;
+import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -80,9 +81,9 @@ public class FinancingController extends BladeController {
 		QueryWrapper<Order> queryWrapper = new QueryWrapper<>();
 		queryWrapper.eq("is_deleted", 0)
 			.eq("tenant_id", AuthUtil.getTenantId())
-			.eq("corp_id", financing.getCorpId())
-			.ge("financing_date", financing.getFinancingStartDate())
-			.le("financing_date", financing.getFinancingEndDate())
+			.eq(ObjectUtils.isNotNull(financing.getCorpId()), "corp_id", financing.getCorpId())
+			.ge(ObjectUtils.isNotNull(financing.getFinancingStartDate()), "financing_date", financing.getFinancingStartDate())
+			.le(ObjectUtils.isNotNull(financing.getFinancingEndDate()), "financing_date", financing.getFinancingEndDate())
 			.orderByDesc("create_time");
 		IPage<Financing> pages = financingService.page(Condition.getPage(query), Condition.getQueryWrapper(financing));
 		List<Financing> financingList = pages.getRecords();
@@ -203,5 +204,160 @@ public class FinancingController extends BladeController {
 		return R.success("操作成功");
 	}
 
+	/**
+	 * 融资总账
+	 */
+	@GetMapping("/financingAccountList")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入financing")
+	public R<IPage<Financing>> financingAccountList(Financing financing, Query query) {
+		QueryWrapper<Financing> queryWrapper = new QueryWrapper<>();
+		queryWrapper.eq("is_deleted", 0);
+		queryWrapper.eq("tenant_id", AuthUtil.getTenantId());
+		//判断是否选择客户
+		if (ObjectUtils.isNotNull(financing.getCorpId())) {
+			queryWrapper.eq("corp_id", financing.getCorpId());
+			queryWrapper.apply("date_format(financing_date,'%Y-%m') = date_format(" + financing.getFinancingDate() + ",'%Y-%m')");
+			//查询该客户本月数据
+			List<Financing> financingList = financingService.list(queryWrapper);
+
+			List<Financing> newFinancingList = new ArrayList<>();
+
+			//获取该客户上期结余金额
+			financing.setIsDeleted(0);
+			financing.setTenantId(AuthUtil.getTenantId());
+			BigDecimal lastIssueAmount = financingService.selectlastIssueAmount(financing);
+
+			//本期借款金额
+			BigDecimal currentIssueAmount = new BigDecimal(0);
+
+			//本期还款金额
+			BigDecimal repaymentAmount = new BigDecimal(0);
+
+			//本期结余金额
+			BigDecimal balanceAmount = new BigDecimal(0);
+
+			//便利该客户本月数据 计算借款、还款,结余金额
+			for (Financing financings : financingList) {
+				//本期还款金额
+				if (ObjectUtils.isNotNull(financings.getFinancingType()) && "1".equals(financings.getFinancingType())) {
+					repaymentAmount = repaymentAmount.add(financings.getFinancingAmount());
+				} else if (ObjectUtils.isNotNull(financings.getFinancingType()) && "2".equals(financings.getFinancingType())) {
+					//本期借款金额
+					currentIssueAmount = repaymentAmount.add(financings.getFinancingAmount());
+				}
+				//本期结余金额
+				balanceAmount = balanceAmount.add(financings.getFinancingAmount());
+
+			}
+			Financing financing1 = new Financing();
+			financing1.setCorpId(financingList.get(0).getCorpId());
+			//客户
+			if (ObjectUtils.isNotNull(financingList.get(0).getCorpId())) {
+				R<CorpsDesc> corpsDesc = corpsDescClient.getCorpMessage(financingList.get(0).getCorpId());
+				if (corpsDesc.isSuccess()) {
+					financing1.setCorpName(corpsDesc.getData().getCname());
+				}
+			}
+
+			financing1.setLastIssueAmount((ObjectUtils.isNotNull(lastIssueAmount)) ? new BigDecimal(0) : lastIssueAmount);
+			financing1.setCurrentIssueAmount(currentIssueAmount);
+			financing1.setRepaymentAmount(repaymentAmount);
+			financing1.setBalanceAmount(balanceAmount);
+			newFinancingList.add(financing1);
+
+			//返回数据
+			IPage<Financing> pages = new Page<>();
+			pages.setRecords(newFinancingList);
+			pages.setTotal(1);
+			pages.setSize(1);
+			pages.setCurrent(1);
+			pages.setPages(1);
+			return R.data(pages);
+		} else {
+			financing.setIsDeleted(0);
+			financing.setTenantId(AuthUtil.getTenantId());
+			//通过客户进行分组查询
+			List<Long> corpList = financingService.selectListCorpId(financing);
+
+			List<Financing> financingList = new ArrayList<>();
+
+			for (Long corp : corpList) {
+				Financing financings = new Financing();
+				financings.setCorpId(corp);
+				//客户
+				R<CorpsDesc> corpsDesc = corpsDescClient.getCorpMessage(corp);
+				if (corpsDesc.isSuccess()) {
+					financings.setCorpName(corpsDesc.getData().getCname());
+				}
+				queryWrapper.eq("corp_id", financings.getCorpId());
+				queryWrapper.apply("date_format(financing_date,'%Y-%m') = date_format(" + financing.getFinancingDate() + ",'%Y-%m')");
+				List<Financing> financingsList = financingService.list(queryWrapper);
+				financing.setCorpId(financings.getCorpId());
+				financing.setIsDeleted(0);
+				financing.setTenantId(AuthUtil.getTenantId());
+				BigDecimal lastIssueAmount = financingService.selectlastIssueAmount(financing);
+
+				BigDecimal currentIssueAmount = new BigDecimal(0);
+
+				BigDecimal repaymentAmount = new BigDecimal(0);
+
+				BigDecimal balanceAmount = new BigDecimal(0);
+				for (Financing financingss : financingsList) {
+					//本期还款金额
+					if (ObjectUtils.isNotNull(financingss.getFinancingType()) && "1".equals(financingss.getFinancingType())) {
+						repaymentAmount = repaymentAmount.add(financingss.getFinancingAmount());
+					} else if (ObjectUtils.isNotNull(financingss.getFinancingType()) && "2".equals(financingss.getFinancingType())) {
+						//本期借款金额
+						currentIssueAmount = repaymentAmount.add(financingss.getFinancingAmount());
+					}
+					//本期结余金额
+					balanceAmount = balanceAmount.add(financingss.getFinancingAmount());
+				}
+				financings.setLastIssueAmount((ObjectUtils.isNotNull(lastIssueAmount)) ? new BigDecimal(0) : lastIssueAmount);
+				financings.setCurrentIssueAmount(currentIssueAmount);
+				financings.setRepaymentAmount(repaymentAmount);
+				financings.setBalanceAmount(balanceAmount);
+				financingList.add(financings);
+			}
+			//返回数据
+			IPage<Financing> page = new Page<>();
+			page.setRecords(financingList);
+			/*page.setTotal(1);
+			page.setSize(1);
+			page.setCurrent(1);
+			page.setPages(1);*/
+			return R.data(page);
+		}
+	}
+
+	/**
+	 * 融资明细
+	 */
+	@GetMapping("/financingDetailsList")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入financing")
+	public R<IPage<Financing>> financingDetailsList(Financing financing, Query query) {
+		QueryWrapper<Financing> queryWrapper = new QueryWrapper<>();
+		queryWrapper.eq("is_deleted", 0);
+		queryWrapper.eq("tenant_id", AuthUtil.getTenantId());
+		queryWrapper.eq("corp_id", financing.getCorpId());
+		queryWrapper.apply("date_format(financing_date,'%Y-%m') = date_format(" + financing.getFinancingDate() + ",'%Y-%m')");
+		IPage<Financing> pages = financingService.page(Condition.getPage(query), queryWrapper);
+		List<Financing> financingList = pages.getRecords();
+		for (Financing financings : financingList) {
+			//客户
+			if (ObjectUtils.isNotNull(financings.getCorpId())) {
+				R<CorpsDesc> corpsDesc = corpsDescClient.getCorpMessage(financings.getCorpId());
+				if (corpsDesc.isSuccess()) {
+					financings.setCorpName(corpsDesc.getData().getCname());
+				}
+			}
+		}
+		return R.data(pages);
+
+
+	}
+
 
 }

+ 15 - 0
blade-service/trade-purchase/src/main/java/com/trade/purchase/financing/mapper/FinancingMapper.java

@@ -20,6 +20,8 @@ import com.trade.purchase.financing.entity.Financing;
 import com.trade.purchase.financing.vo.FinancingVO;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -39,4 +41,17 @@ public interface FinancingMapper extends BaseMapper<Financing> {
 	 */
 	List<FinancingVO> selectFinancingPage(IPage page, FinancingVO financing);
 
+	/**
+	 * 获取该客户上期结余金额
+	 * @param financing
+	 * @return
+	 */
+    BigDecimal selectlastIssueAmount(Financing financing);
+
+	/**
+	 * 通过客户进行分组查询
+	 * @param financing
+	 * @return
+	 */
+	List<Long> selectListCorpId(Financing financing);
 }

+ 16 - 0
blade-service/trade-purchase/src/main/java/com/trade/purchase/financing/mapper/FinancingMapper.xml

@@ -29,4 +29,20 @@
         select * from warehouse_financing where is_deleted = 0
     </select>
 
+    <select id="selectlastIssueAmount" resultType="java.math.BigDecimal">
+        SELECT sum(financing_amount)
+        FROM warehouse_financing
+        WHERE
+              is_deleted = 0
+          and corp_id = #{corpId}
+          and date_format(financing_date,'%Y-%m') &lt; date_format(#{financingDate},'%Y-%m')
+    </select>
+    <select id="selectListCorpId" resultType="java.lang.Long">
+        SELECT corp_id
+        FROM warehouse_financing
+        WHERE
+            is_deleted = 0 and tenant_id = #{tenantId}
+        GROUP BY corp_id
+    </select>
+
 </mapper>

+ 17 - 0
blade-service/trade-purchase/src/main/java/com/trade/purchase/financing/service/IFinancingService.java

@@ -22,6 +22,9 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springblade.core.tool.api.R;
 
+import java.math.BigDecimal;
+import java.util.List;
+
 /**
  * 融资表 服务类
  *
@@ -66,4 +69,18 @@ public interface IFinancingService extends IService<Financing> {
 	R underReview(Long id);
 
 	R passCancel(Long id);
+
+	/**
+	 * 获取该客户上期结余金额
+	 * @param financing
+	 * @return
+	 */
+    BigDecimal selectlastIssueAmount(Financing financing);
+
+	/**
+	 * 通过客户进行分组查询
+	 * @param financing
+	 * @return
+	 */
+	List<Long> selectListCorpId(Financing financing);
 }

+ 21 - 0
blade-service/trade-purchase/src/main/java/com/trade/purchase/financing/service/impl/FinancingServiceImpl.java

@@ -110,6 +110,7 @@ public class FinancingServiceImpl extends ServiceImpl<FinancingMapper, Financing
 			financing.setFinancingDate(new Date());
 			financing.setCreateTime(new Date());
 			financing.setCreateDept(AuthUtil.getDeptId());
+			financing.setSysNo(billNo.getData().toString());
 			baseMapper.insert(financing);
 		} else {
 			financing.setUpdateUser(AuthUtil.getUserId());
@@ -240,4 +241,24 @@ public class FinancingServiceImpl extends ServiceImpl<FinancingMapper, Financing
 		return R.success("操作成功");
 	}
 
+	/**
+	 * 获取该客户上期结余金额
+	 * @param financing
+	 * @return
+	 */
+	@Override
+	public BigDecimal selectlastIssueAmount(Financing financing) {
+		return baseMapper.selectlastIssueAmount(financing);
+	}
+
+	/**
+	 * 通过客户进行分组查询
+	 * @param financing
+	 * @return
+	 */
+	@Override
+	public List<Long> selectListCorpId(Financing financing) {
+		return baseMapper.selectListCorpId(financing);
+	}
+
 }

+ 34 - 2
blade-service/trade-purchase/src/main/java/com/trade/purchase/order/controller/WoodHarvestingCloudController.java

@@ -129,7 +129,7 @@ public class WoodHarvestingCloudController {
 			.eq(ObjectUtils.isNotNull(order.getPurchaserId()), "purchaser_id", order.getPurchaserId())
 			.like(ObjectUtils.isNotNull(order.getSysNo()), "sys_no", order.getSysNo())
 			.like(ObjectUtils.isNotNull(order.getBillNo()), "bill_no", order.getBillNo())
-			.eq(ObjectUtils.isNotNull(order.getVehicleShipNumber()), "vehicle_ship_number", order.getVehicleShipNumber())
+			.like(ObjectUtils.isNotNull(order.getVehicleShipNumber()), "vehicle_ship_number", order.getVehicleShipNumber())
 			.eq(ObjectUtils.isNotNull(order.getCorpId()), "corp_id", order.getCorpId())
 			.eq(ObjectUtils.isNotNull(order.getStorageId()), "storage_id", order.getStorageId())
 			.like(ObjectUtils.isNotNull(order.getOrderRemark()), "order_remark", order.getOrderRemark())
@@ -317,7 +317,7 @@ public class WoodHarvestingCloudController {
 	}
 
 	/**
-	 * 手动入出库确认
+	 * 入出库确认
 	 */
 	@GetMapping("/confirm")
 	@ApiOperationSupport(order = 8)
@@ -380,6 +380,38 @@ public class WoodHarvestingCloudController {
 	}
 
 	/**
+	 * app扫码比对
+	 */
+	@GetMapping("/appScanningCodeComparison")
+	@ApiOperationSupport(order = 8)
+	@ApiOperation(value = "手动确认比对", notes = "明细id")
+	public R appScanningCodeComparison( @RequestParam(value = "id") Long id, @RequestParam(value = "billNo") String billNo) {
+		if (ObjectUtils.isNull(id)|| ObjectUtils.isNull(billNo)) {
+			return R.fail("缺少必要参数");
+		}
+		Order order = orderService.getById(id);
+		if (ObjectUtils.isNotNull(order)){
+			QueryWrapper<OrderItems> queryWrapper = new QueryWrapper<>();
+			queryWrapper.eq("pid",id);
+			queryWrapper.eq("bill_no",billNo);
+			queryWrapper.eq("tenant_id",AuthUtil.getTenantId());
+			queryWrapper.eq("is_deleted",0);
+			OrderItems orderItems = orderItemsService.getOne(queryWrapper);
+			if (ObjectUtils.isNotNull(orderItems)){
+				orderItems.setScanningComparison("Y");
+				orderItems.setUpdateTime(new Date());
+				orderItems.setUpdateUser(AuthUtil.getUserId());
+				orderItemsService.updateById(orderItems);
+				return R.data(orderItems);
+			}else{
+				return R.fail("扫码比对失败!未在本单据中找到次码信息");
+			}
+		}else{
+			return R.fail("扫码比对失败!未找到单据信息");
+		}
+	}
+
+	/**
 	 * 库存总账
 	 */
 	@GetMapping("/generalLedgerList")

+ 47 - 10
blade-service/trade-purchase/src/main/java/com/trade/purchase/order/service/impl/OrderServiceImpl.java

@@ -1123,6 +1123,18 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		BigDecimal balanceMoney = new BigDecimal(0);
 		if (ObjectUtils.isNotNull(orderItemsList)) {
 			for (OrderItems orderItems : orderItemsList) {
+				if (OrderTypeEnum.WAREHOUSING.getType().equals(submitDto.getBillType())){
+					LambdaQueryWrapper<OrderItems> orderItemsLambdaQueryWrapper = new LambdaQueryWrapper<>();
+					orderItemsLambdaQueryWrapper
+						.eq(OrderItems::getGoodType, 0)
+						.eq(OrderItems::getBillNo, orderItems.getBillNo())
+						.eq(OrderItems::getTenantId, AuthUtil.getTenantId())
+						.eq(OrderItems::getIsDeleted, 0);
+					List<OrderItems> orderItemsBillNo = orderItemsMapper.selectList(orderItemsLambdaQueryWrapper);
+					if (ObjectUtils.isNull(orderItemsBillNo)){
+						throw new Error("捆包号:"+orderItems.getBillNo()+"不允许重复");
+					}
+				}
 				orderItems.setPid(submitDto.getId());
 				orderItems.setCreateTime(new Date());
 				orderItems.setCreateUser(AuthUtil.getUserId());
@@ -1159,25 +1171,38 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 	@Transactional
 	public R updateWarehousing(OrderSubmitDto submitDto) {
 		List<OrderItemsVO> orderItemsList = submitDto.getItemsVOList();
-		submitDto.setBillType(submitDto.getBillType());//业务类型
 		submitDto.setTradeType(OrderTypeEnum.WOOD_HARVESTING_CLOUD.getType());//类型
-		submitDto.setCreateUser(AuthUtil.getUserId());
-		submitDto.setCreateTime(new Date());
-		submitDto.setTenantId(AuthUtil.getTenantId());
-		submitDto.setBusinesDate(submitDto.getStockTime());
-		baseMapper.insert(submitDto);
 		BigDecimal balanceNumber = new BigDecimal(0);
 		BigDecimal balanceMoney = new BigDecimal(0);
 		if (ObjectUtils.isNotNull(orderItemsList)) {
 			for (OrderItems orderItems : orderItemsList) {
+				if (OrderTypeEnum.WAREHOUSING.getType().equals(submitDto.getBillType())){
+					LambdaQueryWrapper<OrderItems> orderItemsLambdaQueryWrapper = new LambdaQueryWrapper<>();
+					orderItemsLambdaQueryWrapper
+						.eq(OrderItems::getGoodType, 0)
+						.eq(OrderItems::getBillNo, orderItems.getBillNo())
+						.eq(OrderItems::getTenantId, AuthUtil.getTenantId())
+						.eq(OrderItems::getIsDeleted, 0);
+					List<OrderItems> orderItemsBillNo = orderItemsMapper.selectList(orderItemsLambdaQueryWrapper);
+					if (ObjectUtils.isNull(orderItemsBillNo)){
+						throw new Error("捆包号:"+orderItems.getBillNo()+"不允许重复");
+					}
+				}
 				orderItems.setPid(submitDto.getId());
-				orderItems.setCreateTime(new Date());
-				orderItems.setCreateUser(AuthUtil.getUserId());
-				orderItems.setCreateUserName(AuthUtil.getUserName());
 				orderItems.setTenantId(AuthUtil.getTenantId());
 				orderItems.setBalanceNumber(orderItems.getStorageAmount());//结余量
 				orderItems.setBalanceMoney(orderItems.getPurchaseQuantity());//结余金额
-				orderItemsMapper.insert(orderItems);
+				if (ObjectUtils.isNotNull(orderItems.getId())) {
+					orderItems.setUpdateTime(new Date());
+					orderItems.setUpdateUser(AuthUtil.getUserId());
+					orderItems.setUpdateUserName(AuthUtil.getUserName());
+					orderItemsMapper.updateById(orderItems);
+				} else {
+					orderItems.setCreateTime(new Date());
+					orderItems.setCreateUser(AuthUtil.getUserId());
+					orderItems.setCreateUserName(AuthUtil.getUserName());
+					orderItemsMapper.insert(orderItems);
+				}
 				orderItems.setStorageQuantity(ObjectUtils.isNull(orderItems.getStorageQuantity()) ? new BigDecimal(0) : orderItems.getStorageQuantity());
 				orderItems.setStorageAmount(ObjectUtils.isNull(orderItems.getStorageAmount()) ? new BigDecimal(0) : orderItems.getStorageAmount());
 				balanceNumber = balanceNumber.add(orderItems.getStorageInQuantity());
@@ -1234,6 +1259,18 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		BigDecimal balanceMoney = new BigDecimal(0);
 		if (ObjectUtils.isNotNull(orderItemsList)) {
 			for (OrderItems orderItems : orderItemsList) {
+				if (OrderTypeEnum.WAREHOUSING.getType().equals(submitDto.getBillType())){
+					LambdaQueryWrapper<OrderItems> orderItemsLambdaQueryWrapper = new LambdaQueryWrapper<>();
+					orderItemsLambdaQueryWrapper
+						.eq(OrderItems::getGoodType, 0)
+						.eq(OrderItems::getBillNo, orderItems.getBillNo())
+						.eq(OrderItems::getTenantId, AuthUtil.getTenantId())
+						.eq(OrderItems::getIsDeleted, 0);
+					List<OrderItems> orderItemsBillNo = orderItemsMapper.selectList(orderItemsLambdaQueryWrapper);
+					if (ObjectUtils.isNull(orderItemsBillNo)){
+						throw new Error("捆包号:"+orderItems.getBillNo()+"不允许重复");
+					}
+				}
 				orderItems.setPid(submitDto.getId());
 				orderItems.setTenantId(AuthUtil.getTenantId());
 				orderItems.setBalanceNumber(orderItems.getStorageAmount());//结余量