zhaowenxuan
2024-05-24 4b3bc0db42b5f57b2422247ec73eb96d4f1ba7c4
批量签到调用pdf生成
4个文件已修改
150 ■■■■■ 已修改文件
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjOrderController.java 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-hosp/src/main/java/com/ltkj/hosp/mapper/TjOrderMapper.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-hosp/src/main/java/com/ltkj/hosp/service/ITjOrderService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-hosp/src/main/java/com/ltkj/hosp/service/impl/TjOrderServiceImpl.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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() {
                        public AjaxResult call() throws Exception {
                            return getAjaxResult(aLong, sysUser, daoDto.getTjCategory());
                        }
                    });
                            try {
                                getAjaxResult(aLong, sysUser, daoDto.getTjCategory());
                                threadPool.shutdown();
                            } catch (IOException e) {
                        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("操作成功");
    }
@@ -1270,7 +1333,9 @@
        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();
@@ -1340,7 +1405,7 @@
            tjCustomer.setCardId("0");
            tjCustomerService.updateById(tjCustomer);
            return AjaxResult.success(tjNumber);
                return AjaxResult.success().put("tjNumber",tjNumber);
        }
      }
        return AjaxResult.error();
@@ -2307,5 +2372,34 @@
        return AjaxResult.error("请选择要撤销的人员!");
    }
//    @PostMapping("makeTjPDF1")
//    @ApiOperation(value = "根据体检号生成PDF")
//    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();
//    }
}
ltkj-hosp/src/main/java/com/ltkj/hosp/mapper/TjOrderMapper.java
@@ -206,4 +206,25 @@
    @Select("SELECT a.order_id FROM tj_order_detail a WHERE a.order_id=#{orderId} AND !ISNULL(a.flowing_water_id) GROUP BY a.order_id ")
    String  isPayByTjNum(String orderId);
    /**
     * 查询导检单详情
     * @param tjNumber 体检单号
     * @return
     */
    @Select("SELECT  @num :=  @num + 1 AS xh, d.dept_name ksmc, d.official_web ksdz, e.tjxm FROM sys_dept d JOIN ( select aa.ksmc,GROUP_CONCAT( DISTINCT aa.pro_name ORDER BY aa.pro_name DESC SEPARATOR ';' ) tjxm  from ( SELECT (case when f.ksmc in ('临检室','化验室','','') or c.pro_name like '%测定%' then '检验科'      when c.pro_name like '%心电图%' then '心电图室'  when f.ksmc='x光室' or c.pro_name like '%X线摄影%'  then '放射科'  when c.pro_name like '%色觉%' then '眼科' \t\t\t\twhen c.pro_name like '%超%' or c.pro_name like '%多普勒%' then 'B超室'  when (replace(f.ksmc,' ','')='' or f.ksmc is null) and c.dept_id<>'100' then  d.dept_name when c.pro_name like '%CT%' then 'CT室'  else '体检中心' end ) ksmc, c.pro_name FROM tj_order a JOIN tj_order_detail b ON b.order_id = a.order_id JOIN tj_project c ON c.pro_id = b.pro_id  left join his_mxfyxm e on e.mxfyxmbm=c.his_xmbm left join ltkj_his_dept f on f.ksbm = CONCAT('00',(case when e.hsks is null then '' else e.hsks end)) join sys_dept d on d.dept_id=c.dept_id WHERE a.tj_number =  #{tjNumber} ) aa  GROUP BY ksmc ) e ON e.ksmc = d.dept_name , (SELECT @num := 0) a WHERE d.parent_id = '100' ORDER BY xh")
    List<Map<String ,String >> selectDjdInfo(@Param("tjNumber")String tjNumber);
    /**
     * 查询导检单用户信息
     * @param tjNumber
     * @return
     */
    @Select("select c.tj_number tjh,a.cus_name tjname, b.dict_label sex,a.create_time tjsj,ifnull(d.cn_name,'') dwmc,a.cus_phone lxdh\n" +
            "from tj_order c \n" +
            " join tj_customer a on  a.cus_id= c.user_id \n" +
            " join (select dict_value,dict_label from  sys_dict_data where dict_type='sys_user_sex') b on b.dict_value = a.cus_sex\n" +
            " left join dict_comp d on d.drug_manufacturer_id = c.firm_id\n" +
            "where c.tj_number=#{tjNumber}")
    Map<String ,Object > selectDjdUserInfo(@Param("tjNumber")String tjNumber);
}
ltkj-hosp/src/main/java/com/ltkj/hosp/service/ITjOrderService.java
@@ -8,6 +8,7 @@
import com.ltkj.hosp.domain.TjCustomer;
import com.ltkj.hosp.domain.TjOrder;
import com.ltkj.hosp.vodomain.LineChartsVo;
import org.apache.ibatis.annotations.Param;
/**
 * 体检记录Service接口
@@ -133,4 +134,8 @@
    List<String> selectTjOrderByCardId1();
    String  isPayByTjNum(String orderId);
    List<Map<String ,String >> selectDjdInfo(String tjNumber);
    Map<String ,Object > selectDjdUserInfo(String tjNumber);
}
ltkj-hosp/src/main/java/com/ltkj/hosp/service/impl/TjOrderServiceImpl.java
@@ -273,4 +273,14 @@
    public String isPayByTjNum(String orderId) {
        return tjOrderMapper.isPayByTjNum(orderId);
    }
    @Override
    public List<Map<String, String>> selectDjdInfo(String tjNumber) {
        return tjOrderMapper.selectDjdInfo(tjNumber);
    }
    @Override
    public Map<String, Object> selectDjdUserInfo(String tjNumber) {
        return tjOrderMapper.selectDjdUserInfo(tjNumber);
    }
}