From 4b3bc0db42b5f57b2422247ec73eb96d4f1ba7c4 Mon Sep 17 00:00:00 2001 From: zhaowenxuan <chacca165@163.com> Date: 星期五, 24 五月 2024 18:13:46 +0800 Subject: [PATCH] 批量签到调用pdf生成 --- ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjOrderController.java | 300 +++++++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 197 insertions(+), 103 deletions(-) diff --git a/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjOrderController.java b/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjOrderController.java index 5a6dff8..d24c32c 100644 --- a/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjOrderController.java +++ b/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjOrderController.java @@ -4,11 +4,12 @@ import java.math.BigDecimal; import java.math.RoundingMode; import java.text.SimpleDateFormat; +import java.time.LocalDateTime; import java.time.OffsetTime; +import java.time.format.DateTimeFormatter; import java.util.*; import java.util.List; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; +import java.util.concurrent.*; import java.util.stream.Collectors; import java.util.stream.Stream; import javax.annotation.Resource; @@ -25,10 +26,13 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.fasterxml.jackson.databind.BeanProperty; +import com.itextpdf.text.Document; +import com.itextpdf.text.DocumentException; import com.ltkj.common.core.domain.entity.SysDept; import com.ltkj.common.core.domain.entity.SysUser; import com.ltkj.common.core.redis.RedisCache; import com.ltkj.common.enums.DataSourceType; +import com.ltkj.common.utils.PDFDocumentUtil; import com.ltkj.common.utils.SecurityUtils; import com.ltkj.framework.config.MatchUtils; import com.ltkj.framework.config.UserHoder; @@ -1015,9 +1019,10 @@ @PostMapping("/addPlOrderAndDetail") @ApiOperation(value = "浣撴鎵归噺绛惧埌鐧昏鎺ュ彛") @Transactional //(鍒囨崲鏁版嵁搴撳嚭閿欙紝鎵�浠ユ敞閲�) - public AjaxResult addPlOrderAndDetail(@RequestBody QianDaoDto daoDto) { + public AjaxResult addPlOrderAndDetail(@RequestBody QianDaoDto daoDto,HttpServletResponse response) { SysUser sysUser = UserHoder.getLoginUser().getUser(); List<String> cusIds = daoDto.getCusIds(); + ArrayList<String> tjNumbers = new ArrayList<>(); if (null != cusIds && cusIds.size() > 0) { ExecutorService threadPools = Executors.newFixedThreadPool(cusIds.size()); for (String cusId : cusIds) { @@ -1034,19 +1039,77 @@ if (list.size() > 0) { ExecutorService threadPool = Executors.newFixedThreadPool(list.size()); for (Long aLong : list) { - threadPool.execute(new Runnable() { +// threadPool.execute(new Runnable() { +// @Override +// public void run() { +// try { +// AjaxResult result = getAjaxResult(aLong, sysUser, daoDto.getTjCategory()); +// threadPool.shutdown(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// }); + Future<AjaxResult> future = threadPool.submit(new Callable<AjaxResult>() { @Override - public void run() { - try { - getAjaxResult(aLong, sysUser, daoDto.getTjCategory()); - threadPool.shutdown(); - } catch (IOException e) { - e.printStackTrace(); - } + public AjaxResult call() throws Exception { + return getAjaxResult(aLong, sysUser, daoDto.getTjCategory()); } }); + try { + AjaxResult result = future.get(); + String tjNumber = result.get("tjNumber").toString(); + tjNumbers.add(tjNumber); + } catch (InterruptedException | ExecutionException e) { + e.printStackTrace(); + } + } + threadPool.shutdown(); + } + } + System.out.println("tjNumbers = " + tjNumbers); + // TODO 鍥犱负鏈変綋妫�鍙蜂細鏌ュ嚭绌烘暟鎹� 鍏堜娇鐢ㄦ鏁版嵁 + tjNumbers = new ArrayList<>(); + tjNumbers.add("02095240229171627"); + tjNumbers.add("02095240229173104"); + tjNumbers.add("10001240524172002"); + tjNumbers.add("10001240304124410"); + tjNumbers.add("00325240304160123"); + tjNumbers.add("02095240304162044"); + tjNumbers.add("02095240304162152"); + tjNumbers.add("10001240304163505"); + Map<String, Object> map = null; + try { + map = PDFDocumentUtil.getDocument(); + Document document = (Document) map.get("document"); + for (int i = 0; i < tjNumbers.size(); i++) { + try { + List<Map<String, String>> djdInfos = tjOrderService.selectDjdInfo(tjNumbers.get(i)); + Map<String, Object> userInfo = tjOrderService.selectDjdUserInfo(tjNumbers.get(i)); + System.out.println(userInfo); + LocalDateTime tjsj = (LocalDateTime) userInfo.get("tjsj"); + DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"); + PDFDocumentUtil.makeUserInfoTable(document, (String) userInfo.get("tjname"), (String) userInfo.get("sex") + , (String) userInfo.get("tjh"), (String) userInfo.get("lxdh"), (String) userInfo.get("tjname"), dateFormat.format(tjsj)); + PDFDocumentUtil.makeTjInfo(document, djdInfos); + // 澶氭潯鍒欐崲椤� + if (i + 1 < tjNumbers.size()) { + document.newPage(); + } + } catch (DocumentException | IOException e) { + e.printStackTrace(); } } + document.close(); + // TODO 淇敼杩斿洖鏂囦欢base64 + ByteArrayOutputStream outputStream = (ByteArrayOutputStream) map.get("stream"); + // 璁剧疆HTTP鍝嶅簲澶� + response.setContentType("application/pdf"); + response.setHeader("Content-Disposition", "inline; filename=\"downloaded.pdf\""); + response.getOutputStream().write(outputStream.toByteArray()); + response.getOutputStream().flush(); + } catch (IOException | DocumentException e) { + e.printStackTrace(); } return AjaxResult.success("鎿嶄綔鎴愬姛"); } @@ -1241,108 +1304,110 @@ tjReservation.setIsExpire(1); tjReservationService.updateById(tjReservation); - //鐢熸垚浣撴鍙� - String tjNumber = (sysUser.getUserName() + new SimpleDateFormat("yyMMddHHmmss").format(new Date())); + //鐢熸垚浣撴鍙� + String tjNumber = (sysUser.getUserName() + new SimpleDateFormat("yyMMddHHmmss").format(new Date())); - tjNumber = tjNumber.replaceAll(".{4}$", userId.toString().substring(userId.toString().length() - 4)); + tjNumber = tjNumber.replaceAll(".{4}$", userId.toString().substring(userId.toString().length() - 4)); - tjOrder.setTjNumber(tjNumber); - if (null != tjOrder.getPhoto()) { - File file = new File(tjOrder.getPhoto()); - if (file.isFile()) { - FileInputStream fileInputStream = new FileInputStream(file); - byte[] bytes = new byte[fileInputStream.available()]; - fileInputStream.read(bytes); // 璇诲彇鍒� byte 閲岄潰 - fileInputStream.close(); - // 寰楀埌鏂囦欢 涔嬪悗杞垚beye 鐒跺悗浣跨敤base64杞爜 - String encode = Base64.encode(bytes); - tjOrder.setPhoto(encode); - } - } - if (tjOrder.getFirmId() == null) { - tjOrder.setFirmId("0"); - } - if (null == tjOrder.getPacId() && null != transitionService.getTbTransitionPacIdByCusIdAndPac(String.valueOf(tjOrder.getUserId()))) { - tjOrder.setPacId(transitionService.getTbTransitionPacIdByCusIdAndPac(String.valueOf(tjOrder.getUserId()))); - } - //鍒ゆ柇灏忕▼搴忎笂棰勭害鏄惁浠橀挶 - if (null != mallOrder) tjOrder.setMallOrderId(String.valueOf(mallOrder.getId())); - tjOrder.setStatus(TjConstants.TJ_BEGIN); - tjOrder.setCardId(tjCustomer.getCardId()); - tjOrder.setTjType("1"); - if (tjOrderService.save(tjOrder)) { - //淇濆瓨鏀惰揣鍦板潃 - if ("2".equals(tjOrder.getGetType())) { - final TjReportGetAddress address = tjOrder.getAddAddress(); - if (address != null) { - address.setTjNumber(tjNumber); - tjReportGetAddressService.save(address); + tjOrder.setTjNumber(tjNumber); + if (null != tjOrder.getPhoto()) { + File file = new File(tjOrder.getPhoto()); + if (file.isFile()) { + FileInputStream fileInputStream = new FileInputStream(file); + byte[] bytes = new byte[fileInputStream.available()]; + fileInputStream.read(bytes); // 璇诲彇鍒� byte 閲岄潰 + fileInputStream.close(); + // 寰楀埌鏂囦欢 涔嬪悗杞垚beye 鐒跺悗浣跨敤base64杞爜 + String encode = Base64.encode(bytes); + tjOrder.setPhoto(encode); } } - Long cusNumber = tjCustomer.getCusNumber(); - cusNumber += 1; - tjCustomer.setCusNumber(cusNumber); -// BigDecimal discount = BigDecimal.valueOf(Double.parseDouble(tjOrder.getTjFlowingWater().getDiscount())).divide(BigDecimal.valueOf(10)); - TjFlowingWater tjFlowingWater = new TjFlowingWater(); - tjFlowingWater.setPayStasus(0L); - if ("1".equals(tjOrder.getTjType())) { - if (tjReservation.getPayType() == 1) { - tjFlowingWater.setPayStasus(3L); - } + if (tjOrder.getFirmId() == null) { + tjOrder.setFirmId("0"); } - - //璋冪敤SQL server鎷垮彇鏀惰垂鎯呭喌 - //鏍规嵁閰嶇疆璋冨彇瀛樺偍杩囩▼ 灏嗕复鏃惰〃鏁版嵁瀛樺叆棰勭害琛�2023.12.12 - String getInfoFromSqlData = configService.selectConfigByKey("getInfoFromSqlData"); - String isPay = configService.selectConfigByKey("isPay"); - if ("Y".equals(getInfoFromSqlData)) { - LtkjMiddleHead middleHead = headService.getMiddleHeadByPartId(tjCustomer.getCardId()); - if (null != middleHead) { - tjFlowingWater.setPayStasus(1L); - } + if (null == tjOrder.getPacId() && null != transitionService.getTbTransitionPacIdByCusIdAndPac(String.valueOf(tjOrder.getUserId()))) { + tjOrder.setPacId(transitionService.getTbTransitionPacIdByCusIdAndPac(String.valueOf(tjOrder.getUserId()))); } - tjFlowingWater.setOrderId(tjOrder.getOrderId()); - Date date1 = new Date(System.currentTimeMillis()); - String s1 = sysUser.getUserName() + new SimpleDateFormat("yyMMddHHmmssSSS").format(date1); - tjFlowingWater.setWaterId(PinyinUtil.getFirstLetter(tjCustomer.getCusName(), "").toUpperCase() + s1); + //鍒ゆ柇灏忕▼搴忎笂棰勭害鏄惁浠橀挶 + if (null != mallOrder) tjOrder.setMallOrderId(String.valueOf(mallOrder.getId())); + tjOrder.setStatus(TjConstants.TJ_BEGIN); + tjOrder.setCardId(tjCustomer.getCardId()); + tjOrder.setTjType("1"); - if (isPay.equals("true")) { - if (null != mallOrder) { - if (mallOrder.getOrderStatus().equals(201L)) { - tjFlowingWater.setCopeWith(mallOrder.getActualPrice()); - tjFlowingWater.setPaidIn(mallOrder.getActualPrice()); - tjFlowingWater.setDiscount(String.valueOf(1)); - tjFlowingWater.setPayStasus(1L); - tjFlowingWater.setPayType(3L); - MallCheckLog checkLog = new MallCheckLog(); - checkLog.setCheckBy(sysUser.getNickName()); - checkLog.setUserId(mallOrder.getUserId()); - checkLog.setConsignee(mallOrder.getConsignee()); - checkLog.setIdCard(mallOrder.getIdCard()); - checkLog.setOrderId(String.valueOf(mallOrder.getId())); - checkLog.setOrderSn(mallOrder.getOrderSn()); - checkLog.setCheckTime(new Date()); - checkLog.setShipSn("HX" + s1); - mallCheckLogService.save(checkLog); - mallOrder.setOrderStatus(301L); - mallOrderService.updateById(mallOrder); + if (tjOrderService.save(tjOrder)) { + + //淇濆瓨鏀惰揣鍦板潃 + if ("2".equals(tjOrder.getGetType())) { + final TjReportGetAddress address = tjOrder.getAddAddress(); + if (address != null) { + address.setTjNumber(tjNumber); + tjReportGetAddressService.save(address); } } + Long cusNumber = tjCustomer.getCusNumber(); + cusNumber += 1; + tjCustomer.setCusNumber(cusNumber); +// BigDecimal discount = BigDecimal.valueOf(Double.parseDouble(tjOrder.getTjFlowingWater().getDiscount())).divide(BigDecimal.valueOf(10)); + TjFlowingWater tjFlowingWater = new TjFlowingWater(); + tjFlowingWater.setPayStasus(0L); + if ("1".equals(tjOrder.getTjType())) { + if (tjReservation.getPayType() == 1) { + tjFlowingWater.setPayStasus(3L); + } + } + + //璋冪敤SQL server鎷垮彇鏀惰垂鎯呭喌 + //鏍规嵁閰嶇疆璋冨彇瀛樺偍杩囩▼ 灏嗕复鏃惰〃鏁版嵁瀛樺叆棰勭害琛�2023.12.12 + String getInfoFromSqlData = configService.selectConfigByKey("getInfoFromSqlData"); + String isPay = configService.selectConfigByKey("isPay"); + if ("Y".equals(getInfoFromSqlData)) { + LtkjMiddleHead middleHead = headService.getMiddleHeadByPartId(tjCustomer.getCardId()); + if (null != middleHead) { + tjFlowingWater.setPayStasus(1L); + } + } + tjFlowingWater.setOrderId(tjOrder.getOrderId()); + Date date1 = new Date(System.currentTimeMillis()); + String s1 = sysUser.getUserName() + new SimpleDateFormat("yyMMddHHmmssSSS").format(date1); + tjFlowingWater.setWaterId(PinyinUtil.getFirstLetter(tjCustomer.getCusName(), "").toUpperCase() + s1); + + if (isPay.equals("true")) { + if (null != mallOrder) { + if (mallOrder.getOrderStatus().equals(201L)) { + tjFlowingWater.setCopeWith(mallOrder.getActualPrice()); + tjFlowingWater.setPaidIn(mallOrder.getActualPrice()); + tjFlowingWater.setDiscount(String.valueOf(1)); + tjFlowingWater.setPayStasus(1L); + tjFlowingWater.setPayType(3L); + MallCheckLog checkLog = new MallCheckLog(); + checkLog.setCheckBy(sysUser.getNickName()); + checkLog.setUserId(mallOrder.getUserId()); + checkLog.setConsignee(mallOrder.getConsignee()); + checkLog.setIdCard(mallOrder.getIdCard()); + checkLog.setOrderId(String.valueOf(mallOrder.getId())); + checkLog.setOrderSn(mallOrder.getOrderSn()); + checkLog.setCheckTime(new Date()); + checkLog.setShipSn("HX" + s1); + mallCheckLogService.save(checkLog); + mallOrder.setOrderStatus(301L); + mallOrderService.updateById(mallOrder); + } + } + } + if (tjFlowingWaterService.save(tjFlowingWater)) { + tjOrder.setTjSerialNumber(String.valueOf(tjFlowingWater.getTjSerialNumber())); + tjOrderService.updateById(tjOrder); + + + } + asyncService.ttextracted(tjOrder, tjCustomer, sysUser, tjReservation, tjFlowingWater); + + + tjCustomer.setCardId("0"); + tjCustomerService.updateById(tjCustomer); + return AjaxResult.success().put("tjNumber",tjNumber); } - if (tjFlowingWaterService.save(tjFlowingWater)) { - tjOrder.setTjSerialNumber(String.valueOf(tjFlowingWater.getTjSerialNumber())); - tjOrderService.updateById(tjOrder); - - - } - asyncService.ttextracted(tjOrder, tjCustomer, sysUser, tjReservation, tjFlowingWater); - - - tjCustomer.setCardId("0"); - tjCustomerService.updateById(tjCustomer); - return AjaxResult.success(tjNumber); } - } return AjaxResult.error(); } @@ -2296,7 +2361,7 @@ } for (String id : reservationIds) { TjReservation reservation = tjReservationService.getById(id); - if(null !=reservation){ + if (null != reservation) { reservation.setIsExpire(2); tjReservationService.updateById(reservation); } @@ -2307,5 +2372,34 @@ return AjaxResult.error("璇烽�夋嫨瑕佹挙閿�鐨勪汉鍛�!"); } +// @PostMapping("makeTjPDF1") +// @ApiOperation(value = "鏍规嵁浣撴鍙风敓鎴怭DF") +// public AjaxResult makeTjPDF(@RequestBody List<String> tjNumbers, HttpServletResponse response) { +// System.out.println("tjNumbers = " + tjNumbers); +// Map<String, Object> map = null; +// try { +// map = PDFDocumentUtil.getDocument(); +// Document document = (Document) map.get("document"); +// for (int i = 0; i < tjNumbers.size(); i++) { +// try { +// List<Map<String, String>> djdInfos = tjOrderService.selectDjdInfo(tjNumbers.get(i)); +// Map<String, Object> userInfo = tjOrderService.selectDjdUserInfo(tjNumbers.get(i)); +// PDFDocumentUtil.makeUserInfoTable(document, userInfo.get("tjname"), userInfo.get("sex"), userInfo.get("tjh"), userInfo.get("lxdh"), userInfo.get("tjname"), userInfo.get("tjsj")); +// PDFDocumentUtil.makeTjInfo(document, djdInfos); +// // 澶氭潯鍒欐崲椤� +// if (i + 1 < tjNumbers.size()) { +// document.newPage(); +// } +// } catch (DocumentException | IOException e) { +// e.printStackTrace(); +// } +// } +// document.close(); +// } catch (IOException | DocumentException e) { +// e.printStackTrace(); +// } +// return AjaxResult.success(); +// } + } -- Gitblit v1.8.0