认领处理单-ESB接口开发-父子页面传参
This commit is contained in:
parent
38448475e7
commit
c96f8ebe30
|
|
@ -0,0 +1,137 @@
|
|||
package shjh.jhzj7.fi.fi.plugin.form;
|
||||
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.entity.datamodel.IDataModel;
|
||||
import kd.bos.form.CloseCallBack;
|
||||
import kd.bos.form.FormShowParameter;
|
||||
import kd.bos.form.ShowType;
|
||||
import kd.bos.form.control.Toolbar;
|
||||
import kd.bos.form.control.events.ItemClickEvent;
|
||||
import kd.bos.form.events.ClosedCallBackEvent;
|
||||
import kd.bos.form.plugin.AbstractFormPlugin;
|
||||
import kd.bos.logging.Log;
|
||||
import kd.bos.logging.LogFactory;
|
||||
import kd.sdk.plugin.Plugin;
|
||||
import shjh.jhzj7.fi.fi.plugin.form.info.ClaimFieldsInfo;
|
||||
|
||||
import java.util.EventObject;
|
||||
import java.util.HashMap;
|
||||
|
||||
/**
|
||||
* 动态表单插件-【认领处理单】
|
||||
*
|
||||
* @author LiGuiQiang
|
||||
*/
|
||||
public class ClaimBillButtonAssPlugin extends AbstractFormPlugin implements Plugin {
|
||||
|
||||
private final static Log logger = LogFactory.getLog(ClaimBillButtonAssPlugin.class);
|
||||
private static final String FEE_CONTROL = "shjh_fkbill";
|
||||
private static final String KEY_PAYMENT = "assPayment";
|
||||
private static final String KEY_LOAN = "assLoan";
|
||||
|
||||
@Override
|
||||
public void registerListener(EventObject e) {
|
||||
super.registerListener(e);
|
||||
Toolbar toolbar = getControl("tbmain");
|
||||
toolbar.addItemClickListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void itemClick(ItemClickEvent evt) {
|
||||
try {
|
||||
if (evt.getItemKey().equals(ClaimFieldsInfo.ASS_PAYMENT)) {
|
||||
FormShowParameter showParameter = createFormParameter("paymentApi");
|
||||
this.getView().showForm(showParameter);
|
||||
} else if (evt.getItemKey().equals(ClaimFieldsInfo.ASS_LOAN)) {
|
||||
FormShowParameter showParameter = createFormParameter("loanApi");
|
||||
this.getView().showForm(showParameter);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
logger.error("认领处理单异常:"+e.getMessage(),e);
|
||||
}
|
||||
}
|
||||
|
||||
private FormShowParameter createFormParameter(String apiKey) {
|
||||
HashMap<String, Object> map = new HashMap<>(2);
|
||||
map.put("Apikey",apiKey);
|
||||
map.put("billNumber",this.getModel().getValue("claimno"));
|
||||
FormShowParameter showParameter = new FormShowParameter();
|
||||
showParameter.setFormId(FEE_CONTROL);
|
||||
showParameter.getOpenStyle().setShowType(ShowType.Modal);
|
||||
showParameter.setCustomParams(map);
|
||||
showParameter.setCloseCallBack(new CloseCallBack(this, "paymentApi".equals(apiKey) ? KEY_PAYMENT : KEY_LOAN));
|
||||
return showParameter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void closedCallBack(ClosedCallBackEvent e) {
|
||||
super.closedCallBack(e);
|
||||
try {
|
||||
String callBackId = e.getActionId();
|
||||
if (KEY_PAYMENT.equals(callBackId)) {
|
||||
handleReturnData(e, ClaimFieldsInfo.PREPAYMENT_NUMBER, "paymentApi");
|
||||
} else if (KEY_LOAN.equals(callBackId)) {
|
||||
handleReturnData(e, ClaimFieldsInfo.LOAN_NUMBER, "loanApi");
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
logger.error("认领处理单回调子页面参数异常:"+ex.getMessage(),ex);
|
||||
}
|
||||
}
|
||||
|
||||
private void handleReturnData(ClosedCallBackEvent e, String uniqueField, String apiKey) {
|
||||
DynamicObjectCollection returnData = (DynamicObjectCollection) e.getReturnData();
|
||||
if (null != returnData && returnData.size() > 0) {
|
||||
DynamicObjectCollection entry = this.getModel().getEntryEntity(ClaimFieldsInfo.ENTRY);
|
||||
if (null != entry) {
|
||||
for (int i = 0; i < returnData.size(); i++) {
|
||||
String uniqueValue = returnData.get(i).getString(uniqueField);
|
||||
boolean exists = false;
|
||||
for (int j = 0; j < entry.size(); j++) {
|
||||
String entryUniqueValue = entry.get(j).getString(uniqueField);
|
||||
if (uniqueValue.equals(entryUniqueValue)) {
|
||||
exists = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// 如果已存在,则跳过该条数据
|
||||
if (exists) {
|
||||
continue;
|
||||
}
|
||||
|
||||
int rows = returnData.size() - entry.size();
|
||||
if (rows > 0) {
|
||||
IDataModel model = this.getModel();
|
||||
model.batchCreateNewEntryRow(ClaimFieldsInfo.ENTRY, rows);
|
||||
}
|
||||
|
||||
// 根据apiKey判断需要填充的字段
|
||||
if ("paymentApi".equals(apiKey)) {
|
||||
setPaymentValues(returnData, i);
|
||||
} else if ("loanApi".equals(apiKey)) {
|
||||
setLoanValues(returnData, i);
|
||||
}
|
||||
|
||||
this.getView().updateView(ClaimFieldsInfo.ENTRY);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void setPaymentValues(DynamicObjectCollection returnData, int i) {
|
||||
this.getModel().setValue(ClaimFieldsInfo.PREPAYMENT_NUMBER, returnData.get(i).getString(ClaimFieldsInfo.PREPAYMENT_NUMBER), i);
|
||||
this.getModel().setValue(ClaimFieldsInfo.BILL_SUBJECT, returnData.get(i).getString(ClaimFieldsInfo.BILL_SUBJECT), i);
|
||||
this.getModel().setValue(ClaimFieldsInfo.PREPAYMENT_DATE, returnData.get(i).getDate(ClaimFieldsInfo.PREPAYMENT_DATE), i);
|
||||
this.getModel().setValue(ClaimFieldsInfo.PAYMENT_AMOUNT, returnData.get(i).getBigDecimal(ClaimFieldsInfo.PAYMENT_AMOUNT), i);
|
||||
this.getModel().setValue(ClaimFieldsInfo.DOCUMENT_AMOUNT, returnData.get(i).getBigDecimal(ClaimFieldsInfo.DOCUMENT_AMOUNT), i);
|
||||
}
|
||||
|
||||
private void setLoanValues(DynamicObjectCollection returnData, int i) {
|
||||
this.getModel().setValue(ClaimFieldsInfo.LOAN_NUMBER, returnData.get(i).getString(ClaimFieldsInfo.LOAN_NUMBER), i);
|
||||
this.getModel().setValue(ClaimFieldsInfo.LOAN_AMOUNT, returnData.get(i).getBigDecimal(ClaimFieldsInfo.LOAN_AMOUNT), i);
|
||||
this.getModel().setValue(ClaimFieldsInfo.LOAN_BALANCE, returnData.get(i).getBigDecimal(ClaimFieldsInfo.LOAN_BALANCE), i);
|
||||
this.getModel().setValue(ClaimFieldsInfo.VERIFICATION_NUMBER, returnData.get(i).getString(ClaimFieldsInfo.VERIFICATION_NUMBER), i);
|
||||
this.getModel().setValue(ClaimFieldsInfo.FISCAL_YEAR, returnData.get(i).getString(ClaimFieldsInfo.FISCAL_YEAR), i);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,11 +1,14 @@
|
|||
package shjh.jhzj7.fi.fi.plugin.form;
|
||||
|
||||
import kd.bos.context.RequestContext;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.dataentity.utils.StringUtils;
|
||||
import kd.bos.entity.datamodel.events.PropertyChangedArgs;
|
||||
import kd.bos.form.field.ComboEdit;
|
||||
import kd.bos.form.plugin.AbstractFormPlugin;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
import kd.bos.servicehelper.user.UserServiceHelper;
|
||||
import kd.sdk.plugin.Plugin;
|
||||
import shjh.jhzj7.fi.fi.plugin.form.info.ClaimFieldsInfo;
|
||||
|
||||
|
|
@ -27,7 +30,10 @@ public class ClaimBillFormPlugin extends AbstractFormPlugin implements Plugin {
|
|||
this.getView().setVisible(false,ClaimFieldsInfo.REPAYMENT_METHOD);
|
||||
this.getView().setVisible(false,ClaimFieldsInfo.CUSTOMER_SPLIT);
|
||||
this.getView().setVisible(false,ClaimFieldsInfo.ENTRY_CUSTOMER);
|
||||
this.getView().setVisible(false,ClaimFieldsInfo.ASS_PAYMENT);
|
||||
this.getView().setVisible(false,ClaimFieldsInfo.ASS_LOAN);
|
||||
hideEntryFields();
|
||||
initShowFields();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -43,22 +49,40 @@ public class ClaimBillFormPlugin extends AbstractFormPlugin implements Plugin {
|
|||
}
|
||||
}
|
||||
|
||||
private void initShowFields(){
|
||||
DynamicObject receivingType = (DynamicObject) this.getModel().getValue(ClaimFieldsInfo.RECEIVING_TYPE);
|
||||
if (null!=receivingType){
|
||||
String number = receivingType.getString("number");
|
||||
if (null!=number){
|
||||
showFieldsByType(number);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void handleReceivingTypeChange() {
|
||||
DynamicObject receivingType = (DynamicObject) this.getModel().getValue(ClaimFieldsInfo.RECEIVING_TYPE);
|
||||
if (null!=receivingType){
|
||||
String number = receivingType.getString("number");
|
||||
if (null!=number){
|
||||
clearFields();
|
||||
showFieldsByType(number);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void showFieldsByType(String number){
|
||||
switch (number) {
|
||||
case "100":
|
||||
showTopFieldsBySale();
|
||||
break;
|
||||
case "103":
|
||||
showPaymentButton();
|
||||
showCostCenter();
|
||||
showRefundMethods();
|
||||
showEntryFieldsByRefund();
|
||||
break;
|
||||
case "109":
|
||||
showLoanButton();
|
||||
showCostCenter();
|
||||
showRepaymentMethod();
|
||||
showEntryFieldsByEmployee();
|
||||
|
|
@ -67,9 +91,6 @@ public class ClaimBillFormPlugin extends AbstractFormPlugin implements Plugin {
|
|||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void handleRefundMethodsChange() {
|
||||
String value = (String) this.getModel().getValue(ClaimFieldsInfo.REFUND_METHODS);
|
||||
|
|
@ -98,9 +119,20 @@ public class ClaimBillFormPlugin extends AbstractFormPlugin implements Plugin {
|
|||
this.getView().setVisible(true, ClaimFieldsInfo.CUSTOMER_SPLIT);
|
||||
}
|
||||
|
||||
private void showPaymentButton(){ this.getView().setVisible(true,ClaimFieldsInfo.ASS_PAYMENT);}
|
||||
|
||||
private void showLoanButton(){ this.getView().setVisible(true,ClaimFieldsInfo.ASS_LOAN);}
|
||||
|
||||
private void showCostCenter() {
|
||||
this.getView().setVisible(true, ClaimFieldsInfo.COST_CENTER);
|
||||
long currentUserId = UserServiceHelper.getCurrentUserId();
|
||||
DynamicObject user = BusinessDataServiceHelper.loadSingle(currentUserId, "bos_user");
|
||||
if (null!=user){
|
||||
DynamicObject userCostCenter = user.getDynamicObject(ClaimFieldsInfo.USER_COST_CENTER);
|
||||
if (null!=userCostCenter){
|
||||
this.getModel().setValue(ClaimFieldsInfo.COST_CENTER,userCostCenter);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void showRefundMethods() {
|
||||
|
|
@ -147,6 +179,8 @@ public class ClaimBillFormPlugin extends AbstractFormPlugin implements Plugin {
|
|||
this.getView().setVisible(false, ClaimFieldsInfo.REPAYMENT_METHOD);
|
||||
this.getModel().setValue(ClaimFieldsInfo.CUSTOMER_SPLIT, null);
|
||||
this.getView().setVisible(false, ClaimFieldsInfo.CUSTOMER_SPLIT);
|
||||
this.getView().setVisible(false,ClaimFieldsInfo.ASS_PAYMENT);
|
||||
this.getView().setVisible(false,ClaimFieldsInfo.ASS_LOAN);
|
||||
DynamicObjectCollection entry = this.getModel().getEntryEntity(ClaimFieldsInfo.ENTRY);
|
||||
if (null!=entry){
|
||||
hideEntryFields();
|
||||
|
|
|
|||
|
|
@ -0,0 +1,413 @@
|
|||
package shjh.jhzj7.fi.fi.plugin.form;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.dataentity.utils.StringUtils;
|
||||
import kd.bos.form.FormShowParameter;
|
||||
import kd.bos.form.ShowType;
|
||||
import kd.bos.form.control.Button;
|
||||
import kd.bos.form.control.Control;
|
||||
import kd.bos.form.control.EntryGrid;
|
||||
import kd.bos.form.control.Toolbar;
|
||||
import kd.bos.form.control.events.ItemClickEvent;
|
||||
import kd.bos.form.events.AfterDoOperationEventArgs;
|
||||
import kd.bos.form.events.BeforeClosedEvent;
|
||||
import kd.bos.form.operate.FormOperate;
|
||||
import kd.bos.form.plugin.AbstractFormPlugin;
|
||||
import kd.bos.logging.Log;
|
||||
import kd.bos.logging.LogFactory;
|
||||
import kd.bos.servicehelper.user.UserServiceHelper;
|
||||
import kd.sdk.plugin.Plugin;
|
||||
import shjh.jhzj7.fi.fi.plugin.form.info.ClaimFieldsInfo;
|
||||
import shjh.jhzj7.fi.fi.utils.ApiUtils;
|
||||
import shjh.jhzj7.fi.fi.utils.EsbUtils;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* 动态表单插件-【收款处理单关联表单】
|
||||
*
|
||||
* @author LiGuiQiang
|
||||
*/
|
||||
public class FeeControlApiPlugin extends AbstractFormPlugin implements Plugin {
|
||||
private final static Log logger = LogFactory.getLog(FeeControlApiPlugin.class);
|
||||
private static final DynamicObjectCollection PARAM_LIST = new DynamicObjectCollection();
|
||||
private static final String QUERY_BUTTON_KEY="shjh_btnquery";
|
||||
private static final String SELECTED_BUTTON_KEY="shjh_btnok";
|
||||
private static final String ENTRY_KEY = "shjh_entryentity";
|
||||
private static final String PAYMENT_API="paymentApi";
|
||||
private static final String LOAN_API="loanApi";
|
||||
|
||||
@Override
|
||||
public void registerListener(EventObject e) {
|
||||
super.registerListener(e);
|
||||
Button queryButton = this.getView().getControl(QUERY_BUTTON_KEY);
|
||||
Button selectedButton = this.getView().getControl(SELECTED_BUTTON_KEY);
|
||||
queryButton.addClickListener(this);
|
||||
selectedButton.addClickListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterBindData(EventObject e) {
|
||||
super.afterBindData(e);
|
||||
FormShowParameter showParameter = this.getView().getFormShowParameter();
|
||||
String apiKey = showParameter.getCustomParam("Apikey");
|
||||
if (LOAN_API.equals(apiKey)){
|
||||
this.getView().setVisible(false,"shjh_supplier");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void click(EventObject evt) {
|
||||
try {
|
||||
// 校验和获取过滤条件
|
||||
DynamicObject org = (DynamicObject) this.getModel().getValue("shjh_orgfield");
|
||||
if (org == null) {
|
||||
this.getView().showMessage("请选择公司!");
|
||||
return;
|
||||
}
|
||||
|
||||
Date startDate = (Date) this.getModel().getValue("shjh_startdate");
|
||||
if (startDate == null) {
|
||||
this.getView().showMessage("请选择开始日期!");
|
||||
return;
|
||||
}
|
||||
|
||||
Date endDate = (Date) this.getModel().getValue("shjh_enddate");
|
||||
if (endDate == null) {
|
||||
this.getView().showMessage("请选择结束日期!");
|
||||
return;
|
||||
}
|
||||
|
||||
String companyCode = org.getString("number");
|
||||
|
||||
Control source = (Control) evt.getSource();
|
||||
String key = source.getKey();
|
||||
|
||||
// 点击查询按钮
|
||||
if (StringUtils.equals(QUERY_BUTTON_KEY, key)) {
|
||||
handleQueryButtonClick(companyCode, startDate, endDate);
|
||||
}
|
||||
// 点击选择按钮
|
||||
else if (StringUtils.equals(SELECTED_BUTTON_KEY, key)) {
|
||||
handleSelectedButton();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
logger.error("Error in click method: " + e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
|
||||
private void handleQueryButtonClick(String companyCode, Date startDate, Date endDate) {
|
||||
try {
|
||||
FormShowParameter showParameter = this.getView().getFormShowParameter();
|
||||
String apiKey = showParameter.getCustomParam("Apikey");
|
||||
String billNumber = showParameter.getCustomParam("billNumber");
|
||||
|
||||
if (StringUtils.equals(PAYMENT_API, apiKey)) {
|
||||
handlePaymentApi(companyCode, startDate, endDate, billNumber);
|
||||
} else if (StringUtils.equals(LOAN_API, apiKey)) {
|
||||
handleLoanApi(companyCode, startDate, endDate, billNumber);
|
||||
}
|
||||
|
||||
this.getView().updateView(ENTRY_KEY);
|
||||
|
||||
} catch (Exception e) {
|
||||
logger.error("Error in handleQueryButtonClick: " + e.getMessage(), e);
|
||||
this.getView().showMessage("查询操作失败,请稍后再试!");
|
||||
}
|
||||
}
|
||||
|
||||
private void handlePaymentApi(String companyCode, Date startDate, Date endDate, String billNumber) {
|
||||
try {
|
||||
DynamicObject supplier = (DynamicObject) this.getModel().getValue("shjh_supplier");
|
||||
if (supplier == null) {
|
||||
this.getView().showMessage("请选择供应商!");
|
||||
return;
|
||||
}
|
||||
String supplierCode = supplier.getString("number");
|
||||
|
||||
HashMap<String, String> head = ApiUtils.buildHead();
|
||||
HashMap<String, Object> body = ApiUtils.buildBody(companyCode, this.getUserCode(), startDate.toString(), endDate.toString());
|
||||
HashMap<String, Object> data = (HashMap<String, Object>) body.get("data");
|
||||
|
||||
// 添加额外的参数
|
||||
data.put("SupplierCode", supplierCode);
|
||||
data.put("IsWriteOffDetail", true);
|
||||
|
||||
//String response = ApiUtils.sendPost(head, body, "预付款清单接口地址", billNumber, "预付款清单接口", "Query");
|
||||
//handlePaymentApiResponse(response);
|
||||
handlePaymentApiResponse();
|
||||
} catch (Exception e) {
|
||||
logger.error("Error in handlePaymentApi: " + e.getMessage(), e);
|
||||
this.getView().showMessage("处理预付款清单接口时发生错误!");
|
||||
}
|
||||
}
|
||||
|
||||
private void handleLoanApi(String companyCode, Date startDate, Date endDate, String billNumber) {
|
||||
try {
|
||||
HashMap<String, String> head = ApiUtils.buildHead();
|
||||
HashMap<String, Object> body = ApiUtils.buildBody(companyCode, this.getUserCode(), startDate.toString(), endDate.toString());
|
||||
//String response = ApiUtils.sendPost(head, body, "借款单清单接口地址", billNumber, "借款单清单接口", "Query");
|
||||
//handleLoanApiResponse(response);
|
||||
handleLoanApiResponse();
|
||||
} catch (Exception e) {
|
||||
logger.error("Error in handleLoanApi: " + e.getMessage(), e);
|
||||
this.getView().showMessage("处理借款单清单接口时发生错误!");
|
||||
}
|
||||
}
|
||||
|
||||
private void handlePaymentApiResponse() {
|
||||
try {
|
||||
hideLoanFields();
|
||||
//获取测试数据
|
||||
String response = getPaymentApiResponse();
|
||||
JSONObject root = JSONObject.parseObject(response);
|
||||
JSONObject data = root.getJSONObject("data");
|
||||
JSONArray rows = data.getJSONArray("rows");
|
||||
DynamicObjectCollection entry = this.getModel().getEntryEntity(ENTRY_KEY);
|
||||
entry.clear();
|
||||
for (int i = 0; i < rows.size(); i++) {
|
||||
JSONObject top = (JSONObject) rows.get(i);
|
||||
JSONArray loanDetailInfo = top.getJSONArray("LoanDetailInfo");
|
||||
JSONObject detail = (JSONObject) loanDetailInfo.get(0);
|
||||
entry.addNew();
|
||||
setPaymentApiValues(top, detail, i);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
logger.error("预付单数据解析异常: " + e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
|
||||
private String getPaymentApiResponse() {
|
||||
return "{\n" +
|
||||
" \"rootContextID\": \"8as6dfasd6f98as7d6f9a98sd76f\",\n" +
|
||||
" \"code\": \"0\",\n" +
|
||||
" \"msg\": \"成功\",\n" +
|
||||
" \"data\": {\n" +
|
||||
" \"total\": 2,\n" +
|
||||
" \"rows\": [\n" +
|
||||
" {\n" +
|
||||
" \"ID\": \"fc7443ac-9f85-4d17-a7ee-5620330f28a6\",\n" +
|
||||
" \"RequestCode\": \"YFK2025010900001\",\n" +
|
||||
" \"RequestAmt\": 111,\n" +
|
||||
" \"RequestDate\": \"2025-01-09 11:29:22\",\n" +
|
||||
" \"GLDate\": \"2025-01-14 00:00:00\",\n" +
|
||||
" \"RequestUserName\": \"余超\",\n" +
|
||||
" \"AvailableAmt\": 111,\n" +
|
||||
" \"SupplierId\": 89948,\n" +
|
||||
" \"SupplierId_Name\": \"品销宝\",\n" +
|
||||
" \"CompanyCode\": \"C021\",\n" +
|
||||
" \"CompanyName\": \"上海家化电子商务有限公司\",\n" +
|
||||
" \"RequestRemark\": \"测试\",\n" +
|
||||
" \"LoanDetailInfo\": [\n" +
|
||||
" {\n" +
|
||||
" \"BillHeaderID\": \"fc7443ac-9f85-4d17-a7ee-5620330f28a6\",\n" +
|
||||
" \"PoOrderNo\": null,\n" +
|
||||
" \"PoOrderColNo\": null,\n" +
|
||||
" \"DetailID\": \"d7bc66bf-11e7-4ef5-9d98-80881c1caff7\",\n" +
|
||||
" \"ApplyAmt\": 111,\n" +
|
||||
" \"ThisAmt\": null,\n" +
|
||||
" \"AvailableAmt\": 111,\n" +
|
||||
" \"RequestCode\": \"YFK2025010900001\",\n" +
|
||||
" \"RequestName\": \"2025-01-09对公预付款单\",\n" +
|
||||
" \"RequestAmt\": 111,\n" +
|
||||
" \"InitialAmount\": 111,\n" +
|
||||
" \"Remark\": \"测试\",\n" +
|
||||
" \"CreatedDate\": \"2025-01-09 11:29:11\",\n" +
|
||||
" \"ExpenseItemName\": \"会务费\",\n" +
|
||||
" \"CurrencyId\": 10510,\n" +
|
||||
" \"BillAvailableAmt\": 111\n" +
|
||||
" }\n" +
|
||||
" ]\n" +
|
||||
" },\n" +
|
||||
" {\n" +
|
||||
" \"ID\": \"fc7443ac-9f65-4d17-a7ee-5620330f28a6\",\n" +
|
||||
" \"RequestCode\": \"YFK2025010900002\",\n" +
|
||||
" \"RequestAmt\": 100,\n" +
|
||||
" \"RequestDate\": \"2025-02-18 11:29:22\",\n" +
|
||||
" \"GLDate\": \"2025-01-14 00:00:00\",\n" +
|
||||
" \"RequestUserName\": \"余超\",\n" +
|
||||
" \"AvailableAmt\": 100,\n" +
|
||||
" \"SupplierId\": 89949,\n" +
|
||||
" \"SupplierId_Name\": \"雀氏\",\n" +
|
||||
" \"CompanyCode\": \"C021\",\n" +
|
||||
" \"CompanyName\": \"上海家化电子商务有限公司\",\n" +
|
||||
" \"RequestRemark\": \"测试\",\n" +
|
||||
" \"LoanDetailInfo\": [\n" +
|
||||
" {\n" +
|
||||
" \"BillHeaderID\": \"fc7443ac-9f65-4d17-a7ee-5620330f28a6\",\n" +
|
||||
" \"PoOrderNo\": null,\n" +
|
||||
" \"PoOrderColNo\": null,\n" +
|
||||
" \"DetailID\": \"d7bc66bf-11e7-4ef5-9d98-80881c1caff3\",\n" +
|
||||
" \"ApplyAmt\": 100,\n" +
|
||||
" \"ThisAmt\": null,\n" +
|
||||
" \"AvailableAmt\": 100,\n" +
|
||||
" \"RequestCode\": \"YFK2025010900002\",\n" +
|
||||
" \"RequestName\": \"2025-02-18对公预付款单\",\n" +
|
||||
" \"RequestAmt\": 100,\n" +
|
||||
" \"InitialAmount\": 100,\n" +
|
||||
" \"Remark\": \"测试\",\n" +
|
||||
" \"CreatedDate\": \"2025-02-18 11:29:11\",\n" +
|
||||
" \"ExpenseItemName\": \"会务费\",\n" +
|
||||
" \"CurrencyId\": 10511,\n" +
|
||||
" \"BillAvailableAmt\": 100\n" +
|
||||
" }\n" +
|
||||
" ]\n" +
|
||||
" }\n" +
|
||||
" ]\n" +
|
||||
" }\n" +
|
||||
"}\n";
|
||||
}
|
||||
|
||||
private void setPaymentApiValues(JSONObject top, JSONObject detail, int i) {
|
||||
try {
|
||||
this.getModel().setValue("shjh_billno", top.getString("CompanyCode"), i);
|
||||
this.getModel().setValue("shjh_prepaymentnum", top.getString("RequestCode"), i);
|
||||
this.getModel().setValue("shjh_billsubject", detail.getString("RequestName"), i);
|
||||
this.getModel().setValue("shjh_prepaymentdate", detail.getDate("CreatedDate"), i);
|
||||
this.getModel().setValue("shjh_paymentamount", top.getBigDecimal("RequestAmt"), i);
|
||||
this.getModel().setValue("shjh_documentamount", top.getBigDecimal("AvailableAmt"), i);
|
||||
this.getModel().setValue("shjh_fiscalyear", top.getString("GLDate").substring(0, 4), i);
|
||||
} catch (Exception e) {
|
||||
logger.error("预付单赋值异常: " + e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
|
||||
private void handleLoanApiResponse() {
|
||||
try {
|
||||
hidePaymentFields();
|
||||
String response = getLoanApiResponse();
|
||||
JSONObject root = JSONObject.parseObject(response);
|
||||
JSONObject data = root.getJSONObject("data");
|
||||
JSONArray rows = data.getJSONArray("rows");
|
||||
DynamicObjectCollection entry = this.getModel().getEntryEntity(ENTRY_KEY);
|
||||
entry.clear();
|
||||
for (int i = 0; i < rows.size(); i++) {
|
||||
JSONObject top = (JSONObject) rows.get(i);
|
||||
entry.addNew();
|
||||
setLoanApiValues(top, i);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
logger.error("借款单数据解析异常: " + e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
|
||||
private String getLoanApiResponse() {
|
||||
|
||||
return "{\n" +
|
||||
" \"rootContextID\": \"8as6dfasd6f98as7d6f9a98sd76f\",\n" +
|
||||
" \"code\": \"0\",\n" +
|
||||
" \"msg\": \"成功\",\n" +
|
||||
" \"data\": {\n" +
|
||||
" \"total\": 1,\n" +
|
||||
" \"rows\": [\n" +
|
||||
" {\n" +
|
||||
" \"ID\": \"a50547a4-d661-486b-a5c0-adecdbe958b9\",\n" +
|
||||
" \"RequestCode\": \"JKY2025011400001\",\n" +
|
||||
" \"RequestName\": \"财务及分销系统余超2025-01-14员工借款单员工借款员工借款\",\n" +
|
||||
" \"RequestAmt\": 111,\n" +
|
||||
" \"RequestDate\": \"2025-01-14 14:57:13\",\n" +
|
||||
" \"GLDate\": \"2025-01-14 00:00:00\",\n" +
|
||||
" \"RequestUserName\": \"余超\",\n" +
|
||||
" \"AvailableAmt\": 111,\n" +
|
||||
" \"CurrencyName\": \"人民币\",\n" +
|
||||
" \"StrColumn6\": \"6217001180014130648\",\n" +
|
||||
" \"StrColumn7\": \"建设银行\",\n" +
|
||||
" \"CompanyCode\": \"C001\",\n" +
|
||||
" \"CompanyName\": \"上海家化联合股份有限公司\",\n" +
|
||||
" \"RequestRemark\": \"上传\",\n" +
|
||||
" \"StrColumn20\": \"1600000001\",\n" +
|
||||
" \"LoanDetailInfo\": null\n" +
|
||||
" }\n" +
|
||||
" ]\n" +
|
||||
" }\n" +
|
||||
"}\n";
|
||||
}
|
||||
|
||||
private void setLoanApiValues(JSONObject top, int i) {
|
||||
try {
|
||||
this.getModel().setValue("shjh_billno", top.getString("CompanyCode"), i);
|
||||
this.getModel().setValue("shjh_loannum", top.getString("RequestCode"), i);
|
||||
this.getModel().setValue("shjh_loanamount", top.getBigDecimal("RequestAmt"), i);
|
||||
this.getModel().setValue("shjh_loanbalance", top.getBigDecimal("AvailableAmt"), i);
|
||||
this.getModel().setValue("shjh_verificationnum", top.getString("StrColumn20"), i);
|
||||
this.getModel().setValue("shjh_fiscalyear", top.getString("GLDate").substring(0, 4), i);
|
||||
} catch (Exception e) {
|
||||
logger.error("借款单赋值异常: " + e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
|
||||
private void hidePaymentFields(){
|
||||
this.getView().setVisible(false,"shjh_prepaymentnum");
|
||||
this.getView().setVisible(false,"shjh_purchasenum");
|
||||
this.getView().setVisible(false,"shjh_purchaselinenum");
|
||||
this.getView().setVisible(false,"shjh_billsubject");
|
||||
this.getView().setVisible(false,"shjh_prepaymentdate");
|
||||
this.getView().setVisible(false,"shjh_paymentamount");
|
||||
this.getView().setVisible(false,"shjh_documentamount");
|
||||
}
|
||||
|
||||
private void hideLoanFields(){
|
||||
this.getView().setVisible(false,"shjh_billno");
|
||||
this.getView().setVisible(false,"shjh_loannum");
|
||||
this.getView().setVisible(false,"shjh_loanamount");
|
||||
this.getView().setVisible(false,"shjh_loanbalance");
|
||||
}
|
||||
private void handleSelectedButton() {
|
||||
try {
|
||||
PARAM_LIST.clear();
|
||||
EntryGrid entryGrid = this.getControl(ENTRY_KEY);
|
||||
int[] selectRows = entryGrid.getSelectRows();
|
||||
DynamicObjectCollection entity = this.getModel().getEntryEntity(ENTRY_KEY);
|
||||
if (selectRows != null && selectRows.length > 0) {
|
||||
for (int selectRow : selectRows) {
|
||||
DynamicObject dynamicObject = entity.get(selectRow);
|
||||
PARAM_LIST.add(dynamicObject);
|
||||
}
|
||||
this.getView().close();
|
||||
} else {
|
||||
this.getView().showMessage("请选中一条数据!");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
logger.error("传递参数异常: " + e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void beforeClosed (BeforeClosedEvent e){
|
||||
super.beforeClosed(e);
|
||||
this.getView().returnDataToParent(PARAM_LIST);
|
||||
}
|
||||
|
||||
public String getUserCode() {
|
||||
String number = null;
|
||||
try {
|
||||
Long userId = UserServiceHelper.getCurrentUserId();
|
||||
ArrayList<Long> list = new ArrayList<>();
|
||||
list.add(userId);
|
||||
|
||||
// 获取用户信息
|
||||
List<Map<String, Object>> userMaps = UserServiceHelper.get(list);
|
||||
if (userMaps != null && !userMaps.isEmpty()) {
|
||||
// 取第一个用户的number,假设每个用户只有一个number
|
||||
Map<String, Object> userMap = userMaps.get(0);
|
||||
number = (String) userMap.get("number");
|
||||
}
|
||||
|
||||
// 如果number为空,则抛出异常
|
||||
if (number == null || number.isEmpty()) {
|
||||
throw new IllegalArgumentException("User number is null or empty");
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
// 捕获异常并记录日志
|
||||
logger.error("Error occurred while getting user code: ", e);
|
||||
// 根据需求,可以选择重新抛出异常或者返回默认值
|
||||
throw new RuntimeException("Failed to get user code", e);
|
||||
}
|
||||
|
||||
return number;
|
||||
}
|
||||
}
|
||||
|
|
@ -65,4 +65,10 @@ public class ClaimFieldsInfo {
|
|||
* Entry:应收金额
|
||||
*/
|
||||
public static final String RECEIVABLE_AMOUNT = "e_receivableamt";
|
||||
|
||||
public static final String ASS_PAYMENT = "shjh_asspayment";
|
||||
|
||||
public static final String ASS_LOAN= "shjh_assloan";
|
||||
|
||||
public static final String USER_COST_CENTER= "shjh_fycc";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,92 @@
|
|||
package shjh.jhzj7.fi.fi.utils;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import kd.bos.logging.Log;
|
||||
import kd.bos.logging.LogFactory;
|
||||
import org.apache.http.HttpResponse;
|
||||
import org.apache.http.client.methods.HttpPost;
|
||||
import org.apache.http.entity.StringEntity;
|
||||
import org.apache.http.impl.client.CloseableHttpClient;
|
||||
import org.apache.http.impl.client.HttpClients;
|
||||
import org.apache.http.util.EntityUtils;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author LiGuiQiang
|
||||
*/
|
||||
public class ApiUtils {
|
||||
|
||||
static Log log = LogFactory.getLog(ApiUtils.class);
|
||||
|
||||
public static HashMap<String,String> buildHead(){
|
||||
HashMap<String,String> header = new HashMap<>(5);
|
||||
header.put("Content-Type","application/json;charset=UTF-8");
|
||||
header.put("x-Gateway-APIKey","207b5296-9866-4b4b-8146-1fea58b3c8c9");
|
||||
header.put("interfaceID","FMGetJahYFKList");
|
||||
header.put("receiverID","FeiKong");
|
||||
return header;
|
||||
}
|
||||
|
||||
public static HashMap<String,Object> buildBody(String companyCode,String userCode,String queryBeginDate,String queryEndDate){
|
||||
// 生成唯一事务ID
|
||||
String rootContextId = UUID.randomUUID().toString();
|
||||
// 获取当前请求时间,格式为 yyyy-MM-dd HH:mm:ss.SSS
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
|
||||
String requestTime = sdf.format(new Date());
|
||||
HashMap<String,Object> body = new HashMap<>(5);
|
||||
body.put("rootContextID",rootContextId);
|
||||
body.put("requestTime",requestTime);
|
||||
HashMap<String,Object> data = new HashMap<>(10);
|
||||
data.put("UserCode",userCode);
|
||||
data.put("QueryBeginDate",queryBeginDate);
|
||||
data.put("QueryEndDate",queryEndDate);
|
||||
data.put("page","1");
|
||||
data.put("rows","10");
|
||||
data.put("CompanyCode",companyCode);
|
||||
body.put("data",data);
|
||||
return body;
|
||||
}
|
||||
|
||||
/**
|
||||
* 调接口
|
||||
* @param header
|
||||
* @param body
|
||||
* @param url
|
||||
* @return
|
||||
* @throws IOException
|
||||
*/
|
||||
public static String sendPost(HashMap header, HashMap body, String url ,String billNumber,String api,String processName) throws IOException {
|
||||
String responseData = "";
|
||||
// 准备要发送的 JSON 数据
|
||||
// 使用 FastJSON 将 Map 转换为 JSON 字符串
|
||||
String jsonString = JSON.toJSONString(body);
|
||||
CloseableHttpClient httpClient = HttpClients.createDefault();
|
||||
// 创建 HttpPost 请求
|
||||
HttpPost httpPost = new HttpPost(url);
|
||||
// 设置请求头
|
||||
for (Object o : header.keySet()) {
|
||||
httpPost.setHeader((String) o, (String) header.get(o));
|
||||
}
|
||||
// 设置请求体
|
||||
StringEntity jsonEntity = new StringEntity(jsonString,"UTF-8");
|
||||
httpPost.setEntity(jsonEntity);
|
||||
// 发送请求并获取响应
|
||||
HttpResponse response = httpClient.execute(httpPost);
|
||||
// 检查响应状态
|
||||
if (response.getStatusLine().getStatusCode() == 200) {
|
||||
// 获取响应数据
|
||||
responseData = EntityUtils.toString(response.getEntity());
|
||||
log.info("SendPost,Response: " + responseData);
|
||||
EsbUtils.saveLog(billNumber,api,httpPost.toString(),response.toString(),true,processName);
|
||||
} else {
|
||||
log.info("SendPost,Error: " + response.getStatusLine().getStatusCode());
|
||||
EsbUtils.saveLog(billNumber,api,httpPost.toString(),response.toString(),false,processName);
|
||||
}
|
||||
return responseData;
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue