From 9c49ede494a10d7e7a322eb2e793afa412ea07e1 Mon Sep 17 00:00:00 2001
From: shiyunteng <shiyunteng@example.com>
Date: 星期一, 24 八月 2026 09:35:40 +0800
Subject: [PATCH] feat:科室新增开票类型  水电房租标的物问题  机动车开票选项

---
 platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractServiceImpl.java |  129 ++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 120 insertions(+), 9 deletions(-)

diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractServiceImpl.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractServiceImpl.java
index 4245c12..2f5997a 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractServiceImpl.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractServiceImpl.java
@@ -425,6 +425,10 @@
 		if (CollUtil.isNotEmpty(slipList)){
 			detailVo.setPaymentSlip(slipList);
 		}
+		BusinessCustomer customer = businessCustomerMapper.selectById(contract.getPartyAId());
+		if (ObjUtil.isNotNull(customer)){
+			detailVo.setInvoiceType(customer.getInvoiceType());
+		}
 		return detailVo;
 	}
 
@@ -720,15 +724,58 @@
 					}
 
 				}
-				if (StrUtil.equals(contract.getPartyBId()+"",smj)&&StrUtil.isNotEmpty(smjErp)){
-					log.info("鐭崇叅鏈哄悎鍚屾帹閫乪rp鍏ュ弬锛歿}",request.toJSONString());
-					String result = HttpUtil.post(smjErp,request.toJSONString());
-					log.info("鐭崇叅鏈哄悎鍚屾帹閫乪rp鍥炲弬锛歿}",result);
-					//淇濆瓨璇锋眰璁板綍
-					saveErpRequestRecord("smj",request.toJSONString(),result);
-					//鏇存柊鍚堝悓erp鎺ㄩ�佹爣璇�
-					contract.setErpPushFlag("1");
-					baseMapper.updateById(contract);
+				if ((StrUtil.equals(contract.getPartyBId()+"",smj)||StrUtil.equals(contract.getPartyBId()+"",smjsc)||
+						StrUtil.equals(contract.getPartyBId()+"",smjzt))&&StrUtil.isNotEmpty(smjErp)){
+					request.put("customerCode",customer.getErpCompanyCode());
+					request.put("currencyId","RMB");
+					request.put("signDate",DateUtil.format(contract.getSignDate(),DatePattern.NORM_DATETIME_PATTERN));
+					request.put("dateDeliver",DateUtil.format(contract.getExpirationDate(),DatePattern.NORM_DATETIME_PATTERN));
+					request.put("moneySum",contract.getAmount());
+					request.put("signManner","闈㈢");
+					request.put("salesman","");
+					if (ArrayUtil.isNotEmpty(subjectMatterList)){
+						JSONArray subjectMatter = new JSONArray();
+						subjectMatterList.stream().forEach(contractSubjectMatter -> {
+							JSONObject subjectMatterItem = new JSONObject();
+							subjectMatterItem.put("itemNo",contractSubjectMatter.getMaterialCode());
+							subjectMatterItem.put("salePrice",contractSubjectMatter.getUnitPrice());
+							subjectMatterItem.put("qtyRequired",contractSubjectMatter.getQuantity());
+							subjectMatterItem.put("money",contractSubjectMatter.getQuantity().multiply(contractSubjectMatter.getUnitPrice()));
+							Product product = productMapper.selectOne(Wrappers.<Product>lambdaQuery().eq(Product::getCompId,contract.getCompId())
+									.eq(Product::getErpCode,contractSubjectMatter.getMaterialCode()));
+							if (ObjUtil.isNotNull(product)){
+								subjectMatterItem.put("taxRate",new BigDecimal(product.getTaxRate()).divide(new BigDecimal("100")));
+							}
+							subjectMatterItem.put("dateDeliver",ObjUtil.isNotNull(contractSubjectMatter.getPlannedDeliveryDate())?
+									DateUtil.format(contractSubjectMatter.getPlannedDeliveryDate(),DatePattern.NORM_DATETIME_PATTERN):
+									DateUtil.format(contract.getExpirationDate(),DatePattern.NORM_DATETIME_PATTERN));
+							subjectMatter.add(subjectMatterItem);
+						});
+						request.put("details",subjectMatter);
+					}
+
+					JSONObject loginJson = new JSONObject();
+					loginJson.put("username","admin");
+					loginJson.put("password","Zimafold@2026");
+					log.info("鐭崇叅鏈哄悎鍚屾帹閫佽幏鍙杢oken鍏ュ弬锛歿}",loginJson.toJSONString());
+					String loginResp = HttpUtil.post(smjErp+"/api/account/v1/login",loginJson.toJSONString());
+					log.info("鐭崇叅鏈哄悎鍚屾帹閫佽幏鍙杢oken鍥炲弬锛歿}",loginResp);
+					JSONObject respJson = JSONObject.parseObject(loginResp);
+					if (respJson.getInteger("code")==0){
+						JSONObject dataJson = JSONObject.parseObject(respJson.getString("data"));
+						log.info("鐭崇叅鏈哄悎鍚屾帹閫乪rp鍏ュ弬锛歿}",request.toJSONString());
+						HttpResponse response = HttpRequest.post(smjErp+"/api/contract/v1/createWithDetails")
+								.header("token", dataJson.getString("token"))       // 娣诲姞璁よ瘉澶�
+								.header("Content-Type", "application/json")         // 璁剧疆鍐呭绫诲瀷
+								.body(request.toJSONString())                        // 璁剧疆璇锋眰浣�
+								.execute();                                         // 鎵ц璇锋眰.post(ymjErp,request.toJSONString());
+						log.info("鐭崇叅鏈哄悎鍚屾帹閫乪rp鍥炲弬锛歿}",response.body());
+						//淇濆瓨璇锋眰璁板綍
+						saveErpRequestRecord("smj",request.toJSONString(),response.body());
+						//鏇存柊鍚堝悓erp鎺ㄩ�佹爣璇�
+						contract.setErpPushFlag("1");
+						baseMapper.updateById(contract);
+					}
 				}
 
 				if (StrUtil.equals(contract.getPartyBId()+"",jxc)&&StrUtil.isNotEmpty(jxcErp)){
@@ -1188,6 +1235,8 @@
 				}
 				contractExecDate.setGenFlag("1");
 				contractExecDateMapper.updateById(contractExecDate);
+				contract.setBillingStatus("2");
+				baseMapper.updateById(contract);
 			});
 		}
 		return R.ok();
@@ -2270,4 +2319,66 @@
 		baseMapper.insert(contract);
 		return R.ok();
 	}
+
+	@Override
+	public R pushCenter(Long id) {
+		Contract contract = baseMapper.selectById(id);
+		List<ContractSubjectMatter> subjectMatterList=contractSubjectMatterMapper.selectList(Wrappers.<ContractSubjectMatter>lambdaQuery()
+				.eq(ContractSubjectMatter::getContractId,id));
+		JSONObject requestApply = new JSONObject();
+		requestApply.put("fd_selectionmethod", "鍏紑鎷涙爣");
+		requestApply.put("fd_isrelated", "鏄�");
+		requestApply.put("fd_bizId", contract.getId());
+		requestApply.put("fd_remark", contract.getRemark());
+		requestApply.put("fd_MainContent", "");
+		requestApply.put("fd_settlementType", "00");
+		requestApply.put("fd_applyType", "澶栭攢");
+		requestApply.put("fd_contractsubject ", subjectMatterList.stream().map(item -> item.getMaterialName()).collect(Collectors.joining(",")));
+		requestApply.put("fd_docNumber", contract.getContractNo());
+		requestApply.put("fd_templateId", "19e39bb6c1edadbdb162c434274a8a18");
+		requestApply.put("fd_name", contract.getContractName());
+		requestApply.put("fd_signDate", DateUtil.formatDate(contract.getSignDate()));
+		requestApply.put("fd_endDate", DateUtil.formatDate(contract.getExpirationDate()));
+		requestApply.put("fd_contractCreater", contract.getNickName());
+		requestApply.put("fd_currency", "浜烘皯甯�");
+		requestApply.put("fd_ContractAmount", contract.getAmount());
+		requestApply.put("fd_finAmount", contract.getAmount().divide(new BigDecimal("113"), 2, RoundingMode.HALF_UP)
+				.multiply(new BigDecimal("87")));
+		requestApply.put("fd_docStatus", "20");
+		requestApply.put("fd_taxRates", 13);
+		requestApply.put("fd_customerName", contract.getPartyA());
+		requestApply.put("fd_systemSource", "闈炵叅閿�鍞郴缁�");
+		requestApply.put("fd_type", "00");
+		log.info("鍚堝悓涓績鍚堝悓璧疯崏鎺ュ彛鍏ュ弬锛歿}", requestApply.toJSONString());
+		String respApply = HttpUtil.post("https://oatest.res.jzeg.cn/ekp/api/km-agreement/kmAgreementWebService/addSupplyContractApply", requestApply.toJSONString());
+		log.info("鍚堝悓涓績鍚堝悓璧疯崏鎺ュ彛鍥炲弬锛歿}", respApply);
+		JSONObject applyResp = JSONObject.parseObject(respApply);
+		if (applyResp.getString("code").equals("00")) {
+			JSONObject request = new JSONObject();
+			request.put("fd_docNumber", contract.getContractNo());
+			request.put("fd_singer", contract.getNickName());
+			request.put("fd_signTime", DateUtil.formatDate(contract.getSignDate()));
+			request.put("fd_linkPerson", "");
+			request.put("fd_linkPhone", "");
+			request.put("fd_address", contract.getSignPlace());
+			request.put("fd_receivedTime", DateUtil.format(contract.getCreateTime(), DatePattern.NORM_DATETIME_PATTERN));
+			request.put("fd_receivedNum", 1);
+			request.put("fd_effedate", DateUtil.formatDate(contract.getSignDate()));
+			request.put("fd_enddate", DateUtil.formatDate(contract.getExpirationDate()));
+			request.put("fd_reviewerNo", contract.getNickName());
+			request.put("fd_docStatus", "20");
+			request.put("fd_templateId", "19e39bb6c1edadbdb162c434274a8a18");
+			request.put("fd_attName", contract.getAttachmentName());
+			request.put("fd_attcontent", NetworkFileToBase64.convertNetworkFileToBase64("https://zbjt.res.jzeg.cn/api" + contract.getAttachmentUrl()));
+			log.info("鍚堝悓涓績鍚屾鍚堝悓鎺ュ彛鍏ュ弬锛歿}", request.toJSONString());
+			String resp = HttpUtil.post("https://oatest.res.jzeg.cn/ekp/api/km-agreement/kmAgreementWebService/addContractReview", request.toJSONString());
+			log.info("鍚堝悓涓績鍚屾鍚堝悓鎺ュ彛鍥炲弬锛歿}", resp);
+			JSONObject respJson = JSONObject.parseObject(resp);
+			if (respJson.getString("code").equals("00")) {
+				contract.setCenterPushFlag("1");
+				baseMapper.updateById(contract);
+			}
+		}
+		return R.ok();
+	}
 }

--
Gitblit v1.9.1