1. 根據 客戶的需求,要從oa系統發起建單操作,那麼先就要從客戶系統的oa系統頁面,發起一個獲取我們系統token的接口,然後oa那邊再將token放到請求頭裏,把json報文放在body體裏,我們指定一個接口接收。完整代碼如下:
package com.hand.hcf.app.expense.oareport.web;
import com.hand.hcf.app.expense.client.extraApi.CompanyLevelInterface;
import com.hand.hcf.app.expense.oareport.client.OrganizationForOAFeignClient;
import com.hand.hcf.app.expense.oareport.domain.ExpenseReportOaLog;
import com.hand.hcf.app.expense.oareport.domain.OaFormRespMessage;
import com.hand.hcf.app.expense.oareport.dto.*;
import com.hand.hcf.app.expense.oareport.service.*;
import com.hand.hcf.app.expense.report.domain.ExpenseReportHeader;
import com.hand.hcf.app.expense.oareport.service.ExpenseOAReportLineImportService;
import io.swagger.annotations.*;
import net.sf.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.time.ZonedDateTime;
/**
* @apiDefine ExpenseReport oa報賬單
*/
@Api(tags = "OA報賬單")
@RestController
@RequestMapping("/api/expense/oareport")
public class ExpenseOAReportController {
@Autowired
ExpenseOAReportHeaderService expenseOAReportHeaderService;
@Autowired
OrganizationForOAFeignClient organizationForOAFeignClient;
@Autowired
ExpenseOAReportLineImportService expenseOAReportLineImportService;
@Autowired
ExpenseReportOaLogService expenseReportOaLogService;
@PostMapping("/save")
@ApiOperation(value = "OA表單數據", notes = "OA表單數據 ")
public ResponseEntity<OaFormRespMessage> saveExpenseOAReport(@ApiParam(value = "OA表單數據") @RequestBody @Valid ExpenseOAReportHeaderDTO dto,@RequestHeader("Authorization") String token){
ExpenseReportOaLog expenseReportOaLog = new ExpenseReportOaLog();
//插入日誌表
JSONObject send_json = JSONObject.fromObject(dto);
expenseReportOaLog.setCreatedDate(ZonedDateTime.now());
OaFormRespMessage oaFormRespMessage = expenseOAReportHeaderService.saveOAExpenseReport(dto,token);
JSONObject return_json = JSONObject.fromObject(oaFormRespMessage);
expenseReportOaLog.setTaskId(dto.getTaskId());
if (send_json.toString().length()>4000){
expenseReportOaLog.setSendMsg(send_json.toString().substring(0,4000));
}else{
expenseReportOaLog.setSendMsg(send_json.toString());
}
expenseReportOaLog.setReturnMsg(return_json.toString());
expenseReportOaLog.setLastUpdatedDate(ZonedDateTime.now());
expenseReportOaLogService.insertOrUpdate(expenseReportOaLog);
return ResponseEntity.ok(oaFormRespMessage);
}
@PostMapping("/next/save")
@ApiOperation(value = "OA表單下一步", notes = "根據OA傳過來的數據自動生成報銷單")
public ResponseEntity<ExpenseReportHeader> saveExpenseReportInfo(@ApiParam(value = "報賬單頭") @RequestBody @Valid ExpenseReportHeader expenseReportHeader,
@ApiParam(value = "OA報賬頭id") @RequestParam Long headerId){
return ResponseEntity.ok(expenseOAReportHeaderService.saveExpenseOAReportInfo(expenseReportHeader,headerId));
}
@PostMapping("/get/oatoken")
@ApiOperation(value = "OA獲取token", notes = "OA獲取token")
public String getOaToken(@ApiParam(value = "員工工號") @RequestParam String employeeCode, @ApiParam(value = "賬套id") @RequestParam Long setOfBooksId){
return expenseOAReportHeaderService.getOaToken(employeeCode,setOfBooksId);
}
}