ioioio 3 سال پیش
والد
کامیت
c13819196a

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

@@ -180,5 +180,7 @@ public class OrderFees implements Serializable {
 
 	private BigDecimal refundSettlmentAmount;
 
+	private int isCheck;
+
 
 }

+ 2 - 0
blade-service-api/trade-purchase-api/src/main/java/com/trade/purchase/order/entity/OrderFees.java

@@ -163,5 +163,7 @@ public class OrderFees extends OrderBase {
 
 	@ApiModelProperty(value = "1.应收 2.应付")
 	private int feesType;
+	@ApiModelProperty(value = "0 未审核 1已审核")
+	private int isCheck;
 
 }

+ 2 - 0
blade-service-api/trade-purchase-api/src/main/java/com/trade/purchase/order/entity/OrderItems.java

@@ -126,6 +126,8 @@ public class OrderItems extends OrderBase {
 	 */
 	@ApiModelProperty(value = "来源订单号(采购订单号)")
 	private String srcOrderNo;
+
+	private String remarks;
 	/**
 	 * 来源id
 	 */

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

@@ -220,6 +220,7 @@ public class AuditProecessController extends BladeController {
 	@ApiOperationSupport(order = 2)
 	@ApiOperation(value = "批量审批", notes = "传入auditProecessDTOList")
 	public R batchOperation(@ApiParam(value = "主键集合", required = true) @RequestParam String ids,
+							@ApiParam(value = "审批意见", required = true) @RequestParam String auditMsg,
 							@ApiParam(value = "操作状态", required = true) @RequestParam Integer operate)
 	{
               LambdaQueryWrapper<AuditProecess> auditProecessLambdaQueryWrapper=new LambdaQueryWrapper<>();
@@ -229,7 +230,7 @@ public class AuditProecessController extends BladeController {
 		      {
 		      	throw new SecurityException("未查询相关数据,禁止操作");
 			  }
-		      auditProecessService.batchOperation(proecessList,operate);
+		      auditProecessService.batchOperation(proecessList,operate,auditMsg);
 		      return R.success("操作成功");
 	}
 

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

@@ -45,7 +45,7 @@ public interface IAuditProecessService extends IService<AuditProecess> {
 
 	void operationFinanceProcess(AuditProecess auditProecess);
 
-	void batchOperation(List<AuditProecess> processLis,Integer operate);
+	void batchOperation(List<AuditProecess> processLis,Integer operate,String auditMsg);
 
 	void cancelCheck(Long srcBillId);
 

+ 2 - 1
blade-service/blade-check/src/main/java/org/springblade/check/service/impl/AuditProecessServiceImpl.java

@@ -298,10 +298,11 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, A
 	@Override
 	@Transactional
 	@GlobalTransactional
-	public void batchOperation(List<AuditProecess> processLis, Integer operate)
+	public void batchOperation(List<AuditProecess> processLis, Integer operate,String auditMsg)
 	{
 		processLis.forEach(e->{
 			e.setOperate(operate);
+			e.setAuditMsg(auditMsg);
 			this.operationFinanceProcess(e);
 		});
 	}

+ 5 - 0
blade-service/trade-finance/pom.xml

@@ -95,6 +95,11 @@
             <version>2.8.2.RELEASE</version>
             <scope>compile</scope>
         </dependency>
+        <dependency>
+            <groupId>com.github.kevinsawicki</groupId>
+            <artifactId>http-request</artifactId>
+            <version>5.6</version>
+        </dependency>
     </dependencies>
 
 

+ 4 - 3
blade-service/trade-finance/src/main/java/org/springblade/finance/controller/SettlementController.java

@@ -28,6 +28,7 @@ import org.springblade.finance.entity.Settlement;
 import org.springblade.finance.service.IAccService;
 import org.springblade.finance.service.IItemsService;
 import org.springblade.finance.service.ISettlementService;
+import org.springblade.finance.tool.JdyTool;
 import org.springblade.finance.vo.SettlementVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -84,7 +85,8 @@ public class SettlementController extends BladeController {
 	@GetMapping("/detail")
 	@ApiOperationSupport(order = 1)
 	@ApiOperation(value = "详情", notes = "传入settlement")
-	public R<Settlement> detail(Settlement settlement) {
+	public R<Settlement> detail(Settlement settlement) throws Exception {
+	/*	JdyTool.test();*/
 		Settlement detail = settlementService.getOne(Condition.getQueryWrapper(settlement));
 		LambdaQueryWrapper<Items> itemsLambdaQueryWrapper=new LambdaQueryWrapper<>();
 		itemsLambdaQueryWrapper.eq(Items::getPid,detail.getId());
@@ -269,8 +271,7 @@ public class SettlementController extends BladeController {
 	@PostMapping("/check")
 	@ApiOperationSupport(order = 8)
 	@ApiOperation(value = "付款申请-清核", notes = "传入付款申请对象")
-	public R check (@RequestBody Settlement settlement)
-	{
+	public R check (@RequestBody Settlement settlement) throws Exception {
 		settlementService.check(settlement);
 		R<Settlement> detail = this.detail(settlement);
 		if(detail.getData()!=null)

+ 30 - 2
blade-service/trade-finance/src/main/java/org/springblade/finance/service/impl/SettlementServiceImpl.java

@@ -327,6 +327,8 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 
 
 			}
+			//原业务表,计算应收未收款,应收未收款 = 销售金额 - 本次溢付款 - 已收款
+			client.setBalanceAmount((client.getOrderAmount().subtract(client.getSettlmentAmount())).subtract(client.getCaseOverPayment()));
 			orderDescClient.updateOrder(client);
 		}
 		//修改费用明细
@@ -460,7 +462,7 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 						(settlementDTO.getBillType().equals("收费")&&items.getItemType().equals("采购"))
 				)
 				{
-					//账单明细减少
+					//账单明细增加
 					acc.setSettlementAmount(acc.getSettlementAmount()!=null?acc.getSettlementAmount().add(items.getThisAmount()):new BigDecimal("0").add(items.getThisAmount()));
 					//原业务退费增加
 					client.setRefundForeignSettlmentAmount(client.getRefundForeignSettlmentAmount()!=null?client.getRefundForeignSettlmentAmount().add(items.getThisAmount()):new BigDecimal("0").add(items.getThisAmount()));
@@ -469,7 +471,8 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 			}
 			//明细账单操作
 			accMapper.updateById(acc);
-			//原业务表
+			//原业务表,计算应收未收款,应收未收款 = 销售金额 - 本次溢付款 - 已收款
+			client.setBalanceAmount((client.getOrderAmount().subtract(client.getSettlmentAmount())).subtract(client.getCaseOverPayment()));
 			orderDescClient.updateOrder(client);
 
 		}
@@ -540,6 +543,18 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 		   baseMapper.insert(settlement);
 
 		   itemsList.forEach(e->{
+		   	   //修改原费用明细状态
+		   	   if(e.getSrcType()==2)
+		   	   {
+		   	   	   OrderFees orderFees=new OrderFees();
+		   	   	   orderFees.setId(e.getSrcFeesId());
+				   orderFees.setIsCheck(1);
+				   R submit = orderFeesClient.submit(orderFees);
+				   if(!submit.isSuccess())
+				   {
+				   	throw new SecurityException("财务-修改原单据的费用明细错误");
+				   }
+			   }
 		   	   e.setId(null);
 		   	   e.setPid(settlement.getId());
 			   e.setCreateTime(new Date());
@@ -640,6 +655,17 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 	public void paymentApply(List<Items> itemsList, String billType)
 	{
 		itemsList.forEach(e->{
+			if(e.getSrcType()==2)
+			{
+				OrderFees orderFees=new OrderFees();
+				orderFees.setId(e.getSrcFeesId());
+				orderFees.setIsCheck(1);
+				R submit = orderFeesClient.submit(orderFees);
+				if(!submit.isSuccess())
+				{
+					throw new SecurityException("财务-修改原单据的费用明细错误");
+				}
+			}
 			Acc acc=new Acc();
 			BeanUtils.copyProperties(e,acc);
 			acc.setId(null);
@@ -651,6 +677,7 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 			acc.setCreateTime(new Date());
 			acc.setTradeType(e.getTradeType());
 			acc.setStatus(0);
+			acc.setRemarks(e.getRemarks());
 			acc.setCostType(e.getCostType());
 			acc.setCreateUser(AuthUtil.getUserId());
 			accMapper.insert(acc);
@@ -766,6 +793,7 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 				acc.setBillType(settlement.getBillType());
 				acc.setCreateTime(new Date());
 				acc.setStatus(0);
+				acc.setRemarks(e.getRemarks());
 				acc.setItemType(e.getItemType());
 				acc.setCreateUser(AuthUtil.getUserId());
 				acc.setCostType(e.getCostType());

+ 112 - 9
blade-service/trade-finance/src/main/java/org/springblade/finance/tool/JdyTool.java

@@ -1,15 +1,20 @@
 package org.springblade.finance.tool;
 
+import com.alibaba.fastjson.JSONObject;
 import com.aliyun.tea.TeaConverter;
 import com.aliyun.tea.TeaPair;
-import com.jdy.v7sdk.business.models.MaterialListRequest;
 import com.jdy.v7sdk.models.AccountGroupRequest;
+import com.github.kevinsawicki.http.HttpRequest;
+import lombok.Data;
+import org.apache.poi.ss.formula.functions.T;
 import org.springblade.finance.TokenRequestQuery;
 
+import java.util.List;
+
 public class JdyTool
 {
 
-	public void test() throws Exception {
+	public static void test() throws Exception {
 		com.jdy.v7sdk.auth auth = new com.jdy.v7sdk.auth();
 		//登录参数
 		TokenRequestQuery tokenRequestQuery = TokenRequestQuery.build(TeaConverter.buildMap(
@@ -26,21 +31,119 @@ public class JdyTool
 		java.util.Map<String, Object> accountService = com.aliyun.teautil.Common.assertAsMap(accountGroups.get(0));
 		java.util.List<Object> groups = com.aliyun.teautil.Common.assertAsArray(accountService.get("accountGroups"));
 		java.util.Map<String, String> group = com.aliyun.teautil.Common.stringifyMapValue(com.aliyun.teautil.Common.assertAsMap(groups.get(1)));
-		String accountId = group.get("accountId");
-		String groupName = group.get("groupName");
+
+		/**
+		 *  2022-1-5 已咨询官方人员, 目前是1.0演示版,1.0中财务没有凭证相关,2.0版本含有,目前代码还在完善,稍后还在更新
+		 *  因为2.0 还没发布, 所以上面获取账套信息用官方java-SDK完成, 下面获取凭证无法通过sdk,改用api方式
+		 * */
+		//用官方测试账号 测试数据, 账套名称: 金蝶开发者测试账套
+		String accountId = "1584244570835057173";//group.get("accountId");
+		String groupName = "ns-v7g6";//group.get("groupName");
 		String accessToken = accessTokenObject.accessToken;
-		com.jdy.v7sdk.kernel kernel = new com.jdy.v7sdk.kernel(accessToken, accountId, groupName);
 
-		com.jdy.v7sdk.business.basedata bd = new com.jdy.v7sdk.business.basedata(kernel);
-		com.jdy.v7sdk.business.fi fd=new com.jdy.v7sdk.business.fi(kernel);
-		com.jdy.v7sdk.business.scm sc=new com.jdy.v7sdk.business.scm(kernel);
+        //金蝶云-星辰 官网API地址: https://open.jdy.com/#/files/api/detail?index=2&categrayId=1f51c576013945e2af68ef15d4245a48&id=525e704824d24b178ab466530456c037
+		String url="http://api.kingdee.com/jdy/gl/voucher_list?access_token="+accessToken;
+        //用官方测试账号, 请求业务列表接口 试试
+		String s = testGetVoucherList(url, accountId, groupName);
+		//用官方测试账号, 请求业务列表保存接口 试试
+		String s1 = testSaveVoucher(url, accountId, groupName);
+
 
+	/*	com.jdy.v7sdk.kernel kernel = new com.jdy.v7sdk.kernel(accessToken, accountId, groupName);
 		//获取商品列表示例
+		com.jdy.v7sdk.business.basedata bd = new com.jdy.v7sdk.business.basedata(kernel);
+
+		com.jdy.v7sdk.business.fi fi=new com.jdy.v7sdk.business.fi(kernel);
+        //获取财务-凭证列表
+
+
 		MaterialListRequest materialListRequest = MaterialListRequest.build(TeaConverter.buildMap(
 		));
 		java.util.Map<String, ?> response = bd.getMaterialList(materialListRequest);
 
-		System.out.println("请求商品列表成功 response = " + response);
+		System.out.println("请求商品列表成功 response = " + response);*/
+
+
+	}
+
+    //测试-调用金蝶云官方测试数据的凭证列表
+    public static String testGetVoucherList (String url,String accountId,String groupName)
+	{
+		HttpRequest httpRequest = new HttpRequest(url,"POST");
+		httpRequest.header("accountId",accountId);
+		httpRequest.header("groupName",groupName);
+		httpRequest.header("Content-Type","application/json");
+		JSONObject data = new JSONObject();
+		data.put("page",1);
+		data.put("pagesize",50);
+		JSONObject map = new JSONObject();
+		map.put("requestData",data);
+		httpRequest.send(map.toJSONString());
+		System.out.println("请求body===="+httpRequest.body().toString());
+		JSONObject result = JSONObject.parseObject(httpRequest.body());
+		return result.toJSONString();
+	}
+
+	//测试-调用金蝶云官方账号的保存
+	public static String testSaveVoucher (String url,String accountId,String groupName)
+	{
+		HttpRequest httpRequest = new HttpRequest(url,"POST");
+		httpRequest.header("accountId",accountId);
+		httpRequest.header("groupName",groupName);
+		httpRequest.header("Content-Type","application/json");
+		JSONObject data = new JSONObject();
+		data.put("page",1);
+		data.put("pagesize",50);
+		JSONObject map = new JSONObject();
+		map.put("requestData",data);
+		httpRequest.send(map.toJSONString());
+		System.out.println("请求body===="+httpRequest.body().toString());
+		JSONObject result = JSONObject.parseObject(httpRequest.body());
+		return result.toJSONString();
+	}
+
+	//凭证列表对象
+	@Data
+	public class items
+	{
+	  //凭证日期 YYYY-MM-DD形式
+      private  String date;
+      //分录列表
+      private List<entries> entries;
+	}
+
+	//分录列表
+	@Data
+	public class entries
+	{
+	  //借贷方向 (1:借 ,-1:贷)
+      private String dc;
+      //摘要: 类似于备注
+      private String explanation;
+      //借方金额(本位币)
+      private String debitamount;
+      //贷方金额(本位币)
+      private String creditamount;
+      //科目id(必填)
+	  private String account_id;
+      //科目编码
+	  private String account_number;
+      //辅助核算列表
+	  private List<assist> assist;
+	}
+
+	@Data
+	private class assist
+	{
+      private  String type;
+
+      private  String bd_auxinfo_type_id;
+
+      private  String  id;
+
+
+
+
 	}
 
 }