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 |  189 ++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 177 insertions(+), 12 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 8b4e1b6..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
@@ -103,6 +103,12 @@
 	@Value("${dept.smj}")
 	private String smj;
 
+	@Value("${dept.smjsc}")
+	private String smjsc;
+
+	@Value("${dept.smjzt}")
+	private String smjzt;
+
 	@Value("${dept.sgb}")
 	private String sgb;
 
@@ -163,7 +169,8 @@
 			return R.failed("鏍囩殑鐗╀笉鑳戒负绌�");
 		}
 
-		if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",smj)){
+		if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",smj)||StrUtil.equals(SecurityUtils.getUser().getCompId()+"",smjsc)||
+				StrUtil.equals(SecurityUtils.getUser().getCompId()+"",smjzt)){
 			contract.setContractNo(generateSMJContractNo());
 		}
 		if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",sgb)){
@@ -286,7 +293,8 @@
 		contract.setPaidAmount(new BigDecimal("0"));
 		contract.setBillingAmout(new BigDecimal("0"));
 		contract.setNickName(SecurityUtils.getUser().getNickname());
-		if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",smj)){
+		if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",smj)||StrUtil.equals(SecurityUtils.getUser().getCompId()+"",smjsc)||
+				StrUtil.equals(SecurityUtils.getUser().getCompId()+"",smjzt)){
 			contract.setContractNo(generateSMJContractNo());
 		}
 		if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",sgb)){
@@ -417,12 +425,22 @@
 		if (CollUtil.isNotEmpty(slipList)){
 			detailVo.setPaymentSlip(slipList);
 		}
+		BusinessCustomer customer = businessCustomerMapper.selectById(contract.getPartyAId());
+		if (ObjUtil.isNotNull(customer)){
+			detailVo.setInvoiceType(customer.getInvoiceType());
+		}
 		return detailVo;
 	}
 
 	@Override
 	public R startApproval(Long id) {
 		Contract contract = baseMapper.selectById(id);
+
+		//绠�鏄撳悎鍚屾棤娉曠户缁悗缁搷浣�
+		if (StrUtil.equals(contract.getContractCategory(), "simple")){
+			return R.failed("璇疯ˉ鍏呮爣鐨勭墿鍜屾敹娆鹃樁娈靛悗鍐嶈繘琛屾搷浣滐紒");
+		}
+
 		//鍚姩娴佺▼
 		ProcessInstanceParamDto dto = new ProcessInstanceParamDto();
 		Map<String, Object> map = BeanUtil.beanToMap(contract);
@@ -441,6 +459,7 @@
 		Contract contract = baseMapper.selectById(id);
 		contract.setContractStatus(2);
 		baseMapper.updateById(contract);
+
 
 		List<ContractSubjectMatter> subjectMatterList = contractSubjectMatterMapper.selectList(Wrappers.<ContractSubjectMatter>lambdaQuery()
 				.eq(ContractSubjectMatter::getContractId,id));
@@ -705,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)){
@@ -968,7 +1030,8 @@
 		newContract.setErpPushFlag("0");
 		newContract.setContractStatus(0);
 		newContract.setBillingAmout(new BigDecimal("0"));
-		if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",smj)){
+		if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",smj)||StrUtil.equals(SecurityUtils.getUser().getCompId()+"",smjsc)||
+				StrUtil.equals(SecurityUtils.getUser().getCompId()+"",smjzt)){
 			newContract.setContractNo(generateSMJContractNo());
 		}
 		if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",sgb)){
@@ -1172,6 +1235,8 @@
 				}
 				contractExecDate.setGenFlag("1");
 				contractExecDateMapper.updateById(contractExecDate);
+				contract.setBillingStatus("2");
+				baseMapper.updateById(contract);
 			});
 		}
 		return R.ok();
@@ -2216,4 +2281,104 @@
 			e.printStackTrace();
 		}
 	}
+
+	@Override
+	public R addSimple(ContractAddDTO addDTO) {
+		Contract contract = BeanUtil.copyProperties(addDTO, Contract.class);
+		contract.setPartyBId(SecurityUtils.getUser().getCompId());
+		contract.setPartyB(SecurityUtils.getUser().getCompName());
+		if (StrUtil.isEmpty(addDTO.getPartyA())){
+			BusinessCustomer bc = businessCustomerMapper.selectById(addDTO.getPartyAId());
+			if (ObjUtil.isNotNull(bc)){
+				contract.setPartyA(bc.getCompanyName());
+			}
+		}
+
+		contract.setPaidAmount(new BigDecimal("0"));
+		contract.setBillingStatus("1");
+		contract.setBillingAmout(new BigDecimal("0"));
+		contract.setErpPushFlag("0");
+		contract.setNickName(SecurityUtils.getUser().getNickname());
+
+		if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",smj)||StrUtil.equals(SecurityUtils.getUser().getCompId()+"",smjsc)||
+				StrUtil.equals(SecurityUtils.getUser().getCompId()+"",smjzt)){
+			contract.setContractNo(generateSMJContractNo());
+		}
+		if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",sgb)){
+			contract.setContractNo(generateGYBContractNo());
+		}
+		if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",ymj)){
+			contract.setContractNo(generateYMJContractNo());
+		}
+		if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",tfgs)){
+			contract.setContractNo(generateTFContractNo());
+		}
+		if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",jxc)){
+			contract.setContractNo(generateJXCContractNo());
+		}
+		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