|
@@ -6,14 +6,22 @@ import com.ruixuan.common.constant.HttpStatus;
|
|
|
import com.ruixuan.common.core.page.TableDataInfo;
|
|
|
import com.ruixuan.common.utils.Check;
|
|
|
import com.ruixuan.common.utils.DateUtils;
|
|
|
+import com.ruixuan.data.utils.ExportExcelUtils;
|
|
|
import com.ruixuan.isc.service.IKwaiXiaoDianReportService;
|
|
|
import com.ruixuan.isc.service.IKwaixiaodianItemGetService;
|
|
|
import com.ruixuan.system.service.ISysRoleService;
|
|
|
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.web.bind.annotation.GetMapping;
|
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
|
+import java.io.IOException;
|
|
|
+import java.io.OutputStream;
|
|
|
+import java.io.UnsupportedEncodingException;
|
|
|
+import java.text.ParseException;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Collections;
|
|
@@ -52,7 +60,7 @@ public class KwaiXiaoDianReportController {
|
|
|
if (!Check.isNull(companyId)) {
|
|
|
requestMap.put("companyId", companyId);
|
|
|
}
|
|
|
- } else if ("industry_admin".equals(roleId)) { // 供应链管理员查看所属公司
|
|
|
+ } else if ("industry_admin".equals(roleId) || "industry_purchase_manager".equals(roleId)) { // 供应链管理员查看所属公司
|
|
|
companyId = kwaixiaodianItemGetService.getCompanyId(userId);
|
|
|
if (Check.isNull(companyId)) {
|
|
|
throw new Exception("此用户未查询到归属公司");
|
|
@@ -73,7 +81,7 @@ public class KwaiXiaoDianReportController {
|
|
|
}
|
|
|
List<Long> itemIds = kwaixiaodianItemGetService.getItemIdsByUserIds(userIds);
|
|
|
requestMap.put("itemIds", itemIds);
|
|
|
- } else if ("industry_courtship_manager".equals(roleId) || "industry_purchase_manager".equals(roleId)) { // 招商、采购经理角色查看部门下所有成员数据
|
|
|
+ } else if ("industry_courtship_manager".equals(roleId) ) { // 招商、采购经理角色查看部门下所有成员数据
|
|
|
List<Long> courtshipPurchaseIds = kwaixiaodianItemGetService.getUserIds(userId);
|
|
|
if (Check.isNull(courtshipPurchaseIds)) {
|
|
|
throw new Exception("此用户未查询到部门成员信息");
|
|
@@ -738,4 +746,411 @@ public class KwaiXiaoDianReportController {
|
|
|
}
|
|
|
return rspData;
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ @GetMapping("/getSaleReport")
|
|
|
+ public TableDataInfo getSaleReport(String startDate, String endDate, Long userId, Long companyId, Integer pageNum, Integer pageSize) {
|
|
|
+ TableDataInfo rspData = new TableDataInfo();
|
|
|
+ try {
|
|
|
+ if (Check.isNull(userId)) {
|
|
|
+ throw new Exception("请传入用户ID");
|
|
|
+ }
|
|
|
+ Map<String, Object> requestMap = new HashMap<>();
|
|
|
+ String roleId = sysRoleService.getRoleBYUserId(userId);
|
|
|
+ if ("admin".equals(roleId)) { // 管理员查看所有
|
|
|
+ if (!Check.isNull(companyId)) {
|
|
|
+ requestMap.put("companyId", companyId);
|
|
|
+ }
|
|
|
+ } else if ("industry_admin".equals(roleId) || "industry_sale_manager".equals(roleId) || "industry_purchase_manager".equals(roleId)) { // 供应链管理员查看所属公司
|
|
|
+ companyId = kwaixiaodianItemGetService.getCompanyId(userId);
|
|
|
+ if (Check.isNull(companyId)) {
|
|
|
+ throw new Exception("此用户未查询到归属公司");
|
|
|
+ }
|
|
|
+ requestMap.put("companyId", companyId);
|
|
|
+ } else if ("industry_sale".equals(roleId) || "industry_purchase".equals(roleId)) {
|
|
|
+ requestMap.put("userId", userId);
|
|
|
+ }
|
|
|
+
|
|
|
+ Long start = DateUtils.strDateToInt(startDate);
|
|
|
+ Long end = DateUtils.strDateToInt(endDate);
|
|
|
+ requestMap.put("start", start);
|
|
|
+ requestMap.put("end", end);
|
|
|
+
|
|
|
+ startPage(pageNum, pageSize);
|
|
|
+ List<JSONObject> list = kwaiXiaoDianReportService.getSaleReport(requestMap);
|
|
|
+ rspData.setCode(HttpStatus.SUCCESS);
|
|
|
+ rspData.setMsg("查询成功");
|
|
|
+ rspData.setRows(list);
|
|
|
+ rspData.setTotal(new PageInfo(list).getTotal());
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ rspData.setCode(HttpStatus.ERROR);
|
|
|
+ rspData.setMsg(e.getMessage());
|
|
|
+ }
|
|
|
+ return rspData;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @GetMapping("/exportSaleReport")
|
|
|
+ public void exportSaleReport(HttpServletRequest request, HttpServletResponse response, Long companyId, Long userId, String startDate, String endDate, String shopId, Long itemId, String itemTitle, Integer itemType) throws IOException, ParseException {
|
|
|
+
|
|
|
+ if (Check.isNull(userId)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (Check.isNull(startDate)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (Check.isNull(endDate)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ Map<String, Object> requestMap = new HashMap<>();
|
|
|
+ String roleId = sysRoleService.getRoleBYUserId(userId);
|
|
|
+ if ("admin".equals(roleId)) { // 管理员查看所有
|
|
|
+ if (!Check.isNull(companyId)) {
|
|
|
+ requestMap.put("companyId", companyId);
|
|
|
+ }
|
|
|
+ } else if ("industry_admin".equals(roleId) || "industry_sale_manager".equals(roleId) || "industry_purchase_manager".equals(roleId)) { // 供应链管理员查看所属公司
|
|
|
+ companyId = kwaixiaodianItemGetService.getCompanyId(userId);
|
|
|
+ if (Check.isNull(companyId)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ requestMap.put("companyId", companyId);
|
|
|
+
|
|
|
+ } else if ("industry_sale".equals(roleId) || "industry_purchase".equals(roleId)) {
|
|
|
+ requestMap.put("userId", userId);
|
|
|
+ }
|
|
|
+
|
|
|
+ Long start = DateUtils.strDateToInt(startDate);
|
|
|
+ Long end = DateUtils.strDateToInt(endDate);
|
|
|
+ requestMap.put("start", start);
|
|
|
+ requestMap.put("end", end);
|
|
|
+ List<JSONObject> list = kwaiXiaoDianReportService.getSaleReport(requestMap);
|
|
|
+ List<List<Object>> exportList = new ArrayList<>();
|
|
|
+ if (!Check.isNull(list)) {
|
|
|
+ for (int i = 0; i < list.size(); i++) {
|
|
|
+ JSONObject data = list.get(i);
|
|
|
+ List<Object> export = new ArrayList();
|
|
|
+ export.add(data.getString("userId"));
|
|
|
+ export.add(data.getString("userName"));
|
|
|
+ export.add(data.getString("itemCount"));
|
|
|
+ export.add(data.getString("orderNum"));
|
|
|
+ export.add(data.getString("totalFee"));
|
|
|
+ export.add(data.getString("costPrice"));
|
|
|
+
|
|
|
+ exportList.add(export);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ String[] headers = {"销售ID", "销售", "商品数", "订单数", "收入", "成本"};
|
|
|
+ OutputStream os = response.getOutputStream();
|
|
|
+ ExportExcelUtils eeu = new ExportExcelUtils();
|
|
|
+ XSSFWorkbook workbook = new XSSFWorkbook();
|
|
|
+ eeu.exportExcel(workbook, 0, "销售管理", headers, exportList);
|
|
|
+ this.setResponseHeader(response, "销售管理.xls");
|
|
|
+ try {
|
|
|
+ workbook.write(os);
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ os.flush();
|
|
|
+ os.close();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @GetMapping("/getSaleDetail")
|
|
|
+ public TableDataInfo getSaleDetail(String startDate, String endDate, Long userId, Integer pageNum, Integer pageSize) {
|
|
|
+ TableDataInfo rspData = new TableDataInfo();
|
|
|
+ try {
|
|
|
+ if (Check.isNull(userId)) {
|
|
|
+ throw new Exception("请传入用户ID");
|
|
|
+ }
|
|
|
+ Map<String, Object> requestMap = new HashMap<>();
|
|
|
+ requestMap.put("userId", userId);
|
|
|
+
|
|
|
+ Long start = DateUtils.strDateToInt(startDate);
|
|
|
+ Long end = DateUtils.strDateToInt(endDate);
|
|
|
+ requestMap.put("start", start);
|
|
|
+ requestMap.put("end", end);
|
|
|
+
|
|
|
+
|
|
|
+ startPage(pageNum, pageSize);
|
|
|
+ List<JSONObject> list = kwaiXiaoDianReportService.getSaleDetail(requestMap);
|
|
|
+ rspData.setCode(HttpStatus.SUCCESS);
|
|
|
+ rspData.setMsg("查询成功");
|
|
|
+ rspData.setRows(list);
|
|
|
+ rspData.setTotal(new PageInfo(list).getTotal());
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ rspData.setCode(HttpStatus.ERROR);
|
|
|
+ rspData.setMsg(e.getMessage());
|
|
|
+ }
|
|
|
+ return rspData;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @GetMapping("/exportSaleDetail")
|
|
|
+ public void exportSaleDetail(HttpServletRequest request, HttpServletResponse response, Long userId, String startDate, String endDate) throws IOException, ParseException {
|
|
|
+
|
|
|
+ if (Check.isNull(userId)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (Check.isNull(startDate)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (Check.isNull(endDate)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ Map<String, Object> requestMap = new HashMap<>();
|
|
|
+ requestMap.put("userId", userId);
|
|
|
+
|
|
|
+ Long start = DateUtils.strDateToInt(startDate);
|
|
|
+ Long end = DateUtils.strDateToInt(endDate);
|
|
|
+ requestMap.put("start", start);
|
|
|
+ requestMap.put("end", end);
|
|
|
+
|
|
|
+
|
|
|
+ List<JSONObject> list = kwaiXiaoDianReportService.getSaleDetail(requestMap);
|
|
|
+
|
|
|
+ List<List<Object>> exportList = new ArrayList<>();
|
|
|
+ if (!Check.isNull(list)) {
|
|
|
+ for (int i = 0; i < list.size(); i++) {
|
|
|
+ JSONObject data = list.get(i);
|
|
|
+ List<Object> export = new ArrayList();
|
|
|
+
|
|
|
+ export.add(data.getString("itemId"));
|
|
|
+ export.add(data.getString("itemTitle"));
|
|
|
+ export.add(data.getString("userId"));
|
|
|
+ export.add(data.getString("userName"));
|
|
|
+ export.add(data.getString("orderNum"));
|
|
|
+ export.add(data.getString("totalFee"));
|
|
|
+ export.add(data.getString("costPrice"));
|
|
|
+ exportList.add(export);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ String[] headers = {"商品ID", "商品名称", "销售ID", "销售", "订单数", "收入", "成本"};
|
|
|
+ OutputStream os = response.getOutputStream();
|
|
|
+ ExportExcelUtils eeu = new ExportExcelUtils();
|
|
|
+ XSSFWorkbook workbook = new XSSFWorkbook();
|
|
|
+ eeu.exportExcel(workbook, 0, "销售详情", headers, exportList);
|
|
|
+ this.setResponseHeader(response, "销售详情.xls");
|
|
|
+ try {
|
|
|
+ workbook.write(os);
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ os.flush();
|
|
|
+ os.close();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @GetMapping("/getPurchaserReport")
|
|
|
+ public TableDataInfo getPurchaserReport(String startDate, String endDate, Long userId, Long companyId, Integer pageNum, Integer pageSize) {
|
|
|
+ TableDataInfo rspData = new TableDataInfo();
|
|
|
+ try {
|
|
|
+ if (Check.isNull(userId)) {
|
|
|
+ throw new Exception("请传入用户ID");
|
|
|
+ }
|
|
|
+ Map<String, Object> requestMap = new HashMap<>();
|
|
|
+ String roleId = sysRoleService.getRoleBYUserId(userId);
|
|
|
+ if ("admin".equals(roleId)) { // 管理员查看所有
|
|
|
+ if (!Check.isNull(companyId)) {
|
|
|
+ requestMap.put("companyId", companyId);
|
|
|
+ }
|
|
|
+ } else if ("industry_admin".equals(roleId) || "industry_sale_manager".equals(roleId) || "industry_purchase_manager".equals(roleId)) { // 供应链管理员查看所属公司
|
|
|
+ companyId = kwaixiaodianItemGetService.getCompanyId(userId);
|
|
|
+ if (Check.isNull(companyId)) {
|
|
|
+ throw new Exception("请传入公司ID");
|
|
|
+ }
|
|
|
+ requestMap.put("companyId", companyId);
|
|
|
+
|
|
|
+ } else if ("industry_sale".equals(roleId) || "industry_purchase".equals(roleId)) {
|
|
|
+ requestMap.put("userId", userId);
|
|
|
+ }
|
|
|
+
|
|
|
+ Long start = DateUtils.strDateToInt(startDate);
|
|
|
+ Long end = DateUtils.strDateToInt(endDate);
|
|
|
+ requestMap.put("start", start);
|
|
|
+ requestMap.put("end", end);
|
|
|
+
|
|
|
+ startPage(pageNum, pageSize);
|
|
|
+ List<JSONObject> list = kwaiXiaoDianReportService.getPurchaserReport(requestMap);
|
|
|
+ rspData.setCode(HttpStatus.SUCCESS);
|
|
|
+ rspData.setMsg("查询成功");
|
|
|
+ rspData.setRows(list);
|
|
|
+ rspData.setTotal(new PageInfo(list).getTotal());
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ rspData.setCode(HttpStatus.ERROR);
|
|
|
+ rspData.setMsg(e.getMessage());
|
|
|
+ }
|
|
|
+ return rspData;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @GetMapping("/exportPurchaserReport")
|
|
|
+ public void exportPurchaserReport(HttpServletRequest request, HttpServletResponse response, Long companyId, Long userId, String startDate, String endDate, String shopId, Long itemId, String itemTitle, Integer itemType) throws IOException, ParseException {
|
|
|
+
|
|
|
+ if (Check.isNull(userId)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (Check.isNull(startDate)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (Check.isNull(endDate)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ Map<String, Object> requestMap = new HashMap<>();
|
|
|
+ String roleId = sysRoleService.getRoleBYUserId(userId);
|
|
|
+ if ("admin".equals(roleId)) { // 管理员查看所有
|
|
|
+ if (!Check.isNull(companyId)) {
|
|
|
+ requestMap.put("companyId", companyId);
|
|
|
+ }
|
|
|
+ } else if ("industry_admin".equals(roleId)) { // 供应链管理员查看所属公司
|
|
|
+ companyId = kwaixiaodianItemGetService.getCompanyId(userId);
|
|
|
+ if (Check.isNull(companyId)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ requestMap.put("companyId", companyId);
|
|
|
+ }
|
|
|
+
|
|
|
+ Long start = DateUtils.strDateToInt(startDate);
|
|
|
+ Long end = DateUtils.strDateToInt(endDate);
|
|
|
+ requestMap.put("start", start);
|
|
|
+ requestMap.put("end", end);
|
|
|
+
|
|
|
+
|
|
|
+ List<JSONObject> list = kwaiXiaoDianReportService.getPurchaserReport(requestMap);
|
|
|
+ List<List<Object>> exportList = new ArrayList<>();
|
|
|
+ if (!Check.isNull(list)) {
|
|
|
+ for (int i = 0; i < list.size(); i++) {
|
|
|
+ JSONObject data = list.get(i);
|
|
|
+ List<Object> export = new ArrayList();
|
|
|
+ export.add(data.getString("userId"));
|
|
|
+ export.add(data.getString("userName"));
|
|
|
+ export.add(data.getString("orderNum"));
|
|
|
+ export.add(data.getString("totalFee"));
|
|
|
+ export.add(data.getString("costPrice"));
|
|
|
+ export.add(data.getString("purchaseCost"));
|
|
|
+
|
|
|
+ exportList.add(export);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ String[] headers = {"采购ID", "采购", "订单数", "收入", "成本", "采购金额"};
|
|
|
+ OutputStream os = response.getOutputStream();
|
|
|
+ ExportExcelUtils eeu = new ExportExcelUtils();
|
|
|
+ XSSFWorkbook workbook = new XSSFWorkbook();
|
|
|
+ eeu.exportExcel(workbook, 0, "采购管理", headers, exportList);
|
|
|
+ this.setResponseHeader(response, "采购管理.xls");
|
|
|
+ try {
|
|
|
+ workbook.write(os);
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ os.flush();
|
|
|
+ os.close();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @GetMapping("/getPurchaseDetail")
|
|
|
+ public TableDataInfo getPurchaseDetail(String startDate, String endDate, Long userId, Integer pageNum, Integer pageSize) {
|
|
|
+ TableDataInfo rspData = new TableDataInfo();
|
|
|
+ try {
|
|
|
+ if (Check.isNull(userId)) {
|
|
|
+ throw new Exception("请传入用户ID");
|
|
|
+ }
|
|
|
+ Map<String, Object> requestMap = new HashMap<>();
|
|
|
+ requestMap.put("userId", userId);
|
|
|
+
|
|
|
+ Long start = DateUtils.strDateToInt(startDate);
|
|
|
+ Long end = DateUtils.strDateToInt(endDate);
|
|
|
+ requestMap.put("start", start);
|
|
|
+ requestMap.put("end", end);
|
|
|
+
|
|
|
+
|
|
|
+ startPage(pageNum, pageSize);
|
|
|
+ List<JSONObject> list = kwaiXiaoDianReportService.getPurchaseDetail(requestMap);
|
|
|
+ rspData.setCode(HttpStatus.SUCCESS);
|
|
|
+ rspData.setMsg("查询成功");
|
|
|
+ rspData.setRows(list);
|
|
|
+ rspData.setTotal(new PageInfo(list).getTotal());
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ rspData.setCode(HttpStatus.ERROR);
|
|
|
+ rspData.setMsg(e.getMessage());
|
|
|
+ }
|
|
|
+ return rspData;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @GetMapping("/exportPurchaseDetail")
|
|
|
+ public void exportPurchaseDetail(HttpServletRequest request, HttpServletResponse response, Long userId, String startDate, String endDate) throws IOException, ParseException {
|
|
|
+
|
|
|
+ if (Check.isNull(userId)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (Check.isNull(startDate)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (Check.isNull(endDate)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ Map<String, Object> requestMap = new HashMap<>();
|
|
|
+ requestMap.put("userId", userId);
|
|
|
+
|
|
|
+ Long start = DateUtils.strDateToInt(startDate);
|
|
|
+ Long end = DateUtils.strDateToInt(endDate);
|
|
|
+ requestMap.put("start", start);
|
|
|
+ requestMap.put("end", end);
|
|
|
+
|
|
|
+
|
|
|
+ List<JSONObject> list = kwaiXiaoDianReportService.getPurchaseDetail(requestMap);
|
|
|
+
|
|
|
+ List<List<Object>> exportList = new ArrayList<>();
|
|
|
+ if (!Check.isNull(list)) {
|
|
|
+ for (int i = 0; i < list.size(); i++) {
|
|
|
+ JSONObject data = list.get(i);
|
|
|
+ List<Object> export = new ArrayList();
|
|
|
+ export.add(data.getString("itemId"));
|
|
|
+ export.add(data.getString("itemTitle"));
|
|
|
+ export.add(data.getString("userId"));
|
|
|
+ export.add(data.getString("userName"));
|
|
|
+ export.add(data.getString("orderNum"));
|
|
|
+ export.add(data.getString("totalFee"));
|
|
|
+ export.add(data.getString("costPrice"));
|
|
|
+ exportList.add(export);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ String[] headers = {"商品ID", "商品名称", "销售ID", "销售", "订单数", "收入", "成本"};
|
|
|
+ OutputStream os = response.getOutputStream();
|
|
|
+ ExportExcelUtils eeu = new ExportExcelUtils();
|
|
|
+ XSSFWorkbook workbook = new XSSFWorkbook();
|
|
|
+ eeu.exportExcel(workbook, 0, "采购详情", headers, exportList);
|
|
|
+ this.setResponseHeader(response, "采购详情.xls");
|
|
|
+ try {
|
|
|
+ workbook.write(os);
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ os.flush();
|
|
|
+ os.close();
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setResponseHeader(HttpServletResponse response, String fileName) {
|
|
|
+ try {
|
|
|
+ try {
|
|
|
+ fileName = new String(fileName.getBytes(), "ISO8859-1");
|
|
|
+ } catch (UnsupportedEncodingException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ response.setContentType("application/octet-stream;charset=ISO8859-1");
|
|
|
+ response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
|
|
|
+ response.addHeader("Pargam", "no-cache");
|
|
|
+ response.addHeader("Cache-Control", "no-cache");
|
|
|
+ } catch (Exception ex) {
|
|
|
+ ex.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|