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