diff --git a/src/main/java/com/emr/controller/FontController.java b/src/main/java/com/emr/controller/FontController.java index be3732a7..1170293c 100644 --- a/src/main/java/com/emr/controller/FontController.java +++ b/src/main/java/com/emr/controller/FontController.java @@ -429,67 +429,69 @@ public class FontController { @RequestMapping(value = "sendMessageWith") public void sendMessageWith(HttpServletRequest request, String title, String content,String typeFlag) { try { - Power_User user = (Power_User) request.getSession().getAttribute("CURRENT_USER"); - String deptId = user.getRemark(); - OverdueRemindVO overdueRemindVO= new OverdueRemindVO(); - DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); - String date2="2021-01-01"; - Date date1=null; - try { - date1=format.parse(date2); - } catch (ParseException e) { - e.printStackTrace(); - } - overdueRemindVO.setDate1(date1); - //查询主治医生id - String s = user.getUserName(); - Integer userId = user.getUserId(); - overdueRemindVO.setDoctorInCharge(s); - //判断这个医生今天是否已读超期消息提醒 - int i = overdueRemindService.selectOverdueStatcByDoctorId(overdueRemindVO); - if (i ==0) { - //查询该主治医生有多少超期的病案未归档 - if (deptId.equals("病案室")){ - StringBuffer sb = new StringBuffer(); - String deptId1 = user.getDeptIdQuality(); - String deptIdQuality = deptId1.replaceAll("\\b", "'"); - List overdueRemindVOS = overdueRemindService.selectoverdueNumAndQualityControl(deptIdQuality); - for (int b=0;overdueRemindVOS.size()>b;b++){ - String overdueNum = overdueRemindVOS.get(b).getOverdueNum(); - String name = overdueRemindVOS.get(b).getName(); - sb.append(name+"有:"+overdueNum+"份,"); + Power_User user = (Power_User) request.getSession().getAttribute("CURRENT_USER"); + if(null != user) { + String deptId = user.getRemark(); + OverdueRemindVO overdueRemindVO = new OverdueRemindVO(); + DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); + String date2 = "2021-01-01"; + Date date1 = null; + try { + date1 = format.parse(date2); + } catch (ParseException e) { + e.printStackTrace(); } - String string = sb.toString(); - if (!string.equals("")){ - content = "尊敬的质控老师!您质控的科室'" + string + "'应归档的病案未归档"; - }else { - content = "尊敬的质控老师!您质控的科室'" + "没有" + "'应归档的病案未归档"; + overdueRemindVO.setDate1(date1); + //查询主治医生id + String s = user.getUserName(); + Integer userId = user.getUserId(); + overdueRemindVO.setDoctorInCharge(s); + //判断这个医生今天是否已读超期消息提醒 + int i = overdueRemindService.selectOverdueStatcByDoctorId(overdueRemindVO); + if (i == 0) { + //查询该主治医生有多少超期的病案未归档 + if (deptId.equals("病案室")) { + StringBuffer sb = new StringBuffer(); + String deptId1 = user.getDeptIdQuality(); + String deptIdQuality = deptId1.replaceAll("\\b", "'"); + List overdueRemindVOS = overdueRemindService.selectoverdueNumAndQualityControl(deptIdQuality); + for (int b = 0; overdueRemindVOS.size() > b; b++) { + String overdueNum = overdueRemindVOS.get(b).getOverdueNum(); + String name = overdueRemindVOS.get(b).getName(); + sb.append(name + "有:" + overdueNum + "份,"); + } + String string = sb.toString(); + if (!string.equals("")) { + content = "尊敬的质控老师!您质控的科室'" + string + "'应归档的病案未归档"; + } else { + content = "尊敬的质控老师!您质控的科室'" + "没有" + "'应归档的病案未归档"; + } + Map map = new HashMap<>(); + map.put("title", "未归档的病案通知"); + map.put("content", content); + map.put("sysFlag", "emr_medical_record"); + map.put("userId", userId + ""); + map.put("typeFlag", typeFlag); + HttpClientUtils.doGet(POWER_URLHEAD + "/font/sendMessage", map); + //保存到提醒日志 + overdueRemindVO.setDOCTOR_IN_CHARGE(s); + overdueRemindService.insertRemind(overdueRemindVO); + } else { + String overdueNum = overdueRemindService.selectoverdueNumAndDoctorId(overdueRemindVO); + content = "尊敬的医生!您有'" + overdueNum + "'条超期的病案未归档"; + Map map = new HashMap<>(); + map.put("title", "超期的病案通知"); + map.put("content", content); + map.put("sysFlag", "emr_medical_record"); + map.put("userId", userId + ""); + map.put("typeFlag", typeFlag); + HttpClientUtils.doGet(POWER_URLHEAD + "/font/sendMessage", map); + //保存到提醒日志 + overdueRemindVO.setDOCTOR_IN_CHARGE(s); + overdueRemindService.insertRemind(overdueRemindVO); + } } - Map map = new HashMap<>(); - map.put("title", "未归档的病案通知"); - map.put("content", content); - map.put("sysFlag", "emr_medical_record"); - map.put("userId", userId + ""); - map.put("typeFlag", typeFlag); - HttpClientUtils.doGet(POWER_URLHEAD + "/font/sendMessage", map); - //保存到提醒日志 - overdueRemindVO.setDOCTOR_IN_CHARGE(s); - overdueRemindService.insertRemind(overdueRemindVO); - }else { - String overdueNum = overdueRemindService.selectoverdueNumAndDoctorId(overdueRemindVO); - content = "尊敬的医生!您有'" + overdueNum + "'条超期的病案未归档"; - Map map = new HashMap<>(); - map.put("title", "超期的病案通知"); - map.put("content", content); - map.put("sysFlag", "emr_medical_record"); - map.put("userId", userId + ""); - map.put("typeFlag", typeFlag); - HttpClientUtils.doGet(POWER_URLHEAD + "/font/sendMessage", map); - //保存到提醒日志 - overdueRemindVO.setDOCTOR_IN_CHARGE(s); - overdueRemindService.insertRemind(overdueRemindVO); } - } } catch (Exception e) { e.printStackTrace(); } diff --git a/src/main/java/com/emr/dao/Archive_Detail_ca_reqParamMapper.java b/src/main/java/com/emr/dao/Archive_Detail_ca_reqParamMapper.java new file mode 100644 index 00000000..e96183d8 --- /dev/null +++ b/src/main/java/com/emr/dao/Archive_Detail_ca_reqParamMapper.java @@ -0,0 +1,7 @@ +package com.emr.dao; + +import com.emr.entity.Archive_Detail_ca_reqParam; + +public interface Archive_Detail_ca_reqParamMapper { + Archive_Detail_ca_reqParam selectAll(); +} diff --git a/src/main/java/com/emr/entity/Archive_Detail_ca_reqParam.java b/src/main/java/com/emr/entity/Archive_Detail_ca_reqParam.java new file mode 100644 index 00000000..c749bfeb --- /dev/null +++ b/src/main/java/com/emr/entity/Archive_Detail_ca_reqParam.java @@ -0,0 +1,16 @@ +package com.emr.entity; + +import lombok.Data; + +/** + * @author 曾文和 + * @description: XXX类 + * @createTime 2023/9/15 16:08 + */ +@Data +public class Archive_Detail_ca_reqParam { + private Integer signLeft; + private Integer signTop; + private Integer signRight; + private Integer signBottom; +} diff --git a/src/main/java/com/emr/service/ipml/CaSignServiceImpl.java b/src/main/java/com/emr/service/ipml/CaSignServiceImpl.java index 7b4fecfc..7ef2d757 100644 --- a/src/main/java/com/emr/service/ipml/CaSignServiceImpl.java +++ b/src/main/java/com/emr/service/ipml/CaSignServiceImpl.java @@ -5,17 +5,20 @@ import cn.org.bjca.seal.esspdf.client.message.ChannelMessage; import cn.org.bjca.seal.esspdf.client.message.RectangleBean; import cn.org.bjca.seal.esspdf.client.tools.AnySignClientTool; import cn.org.bjca.seal.esspdf.client.utils.ClientUtil; +import com.emr.dao.Archive_Detail_ca_reqParamMapper; import com.emr.dto.Archive_DetailPdfPathDto; import com.emr.entity.Archive_Detail_caSign; +import com.emr.entity.Archive_Detail_ca_reqParam; import com.emr.service.Archive_DetailService; +import com.lowagie.text.Rectangle; import com.lowagie.text.pdf.PdfReader; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; -import org.springframework.util.StringUtils; import javax.annotation.Resource; import java.io.*; @@ -40,14 +43,6 @@ public class CaSignServiceImpl { private int caServerPort; @Value("${signNo}") private String signNo; - @Value("${signLeft}") - private String signLeft; - @Value("${signTop}") - private String signTop; - @Value("${signRight}") - private String signRight; - @Value("${signBottom}") - private String signBottom; @Value("${isCaOpen}") private int isCaOpen; @Value("${caCopyPath}") @@ -56,6 +51,8 @@ public class CaSignServiceImpl { private Archive_DetailService archiveDetailService; @Resource private Archive_Detai_CaSignServiceImpl archiveDetaiCaSignService; + @Resource + private Archive_Detail_ca_reqParamMapper archiveDetailCaReqParamMapper; /** * @Description: caSignByMasterId方法是根据masterId查询所有文件进行ca签章 * @param: [masterId] @@ -72,6 +69,8 @@ public class CaSignServiceImpl { try { List pdfPathList = archiveDetailService.getPdfPathByMasterId(masterId); if (!CollectionUtils.isEmpty(pdfPathList)) { + //查询签章位置比例 + Archive_Detail_ca_reqParam caReqParam = archiveDetailCaReqParamMapper.selectAll(); //定义此次需要签章的文件id集合 List idList = new ArrayList<>(); SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd"); @@ -86,7 +85,7 @@ public class CaSignServiceImpl { //备份源文件 caCopyFile(pdfPath, todayDate, masterId); //进行签章 - boolean isSign = caSign(pdfPath); + boolean isSign = caSign(pdfPath,caReqParam); if (isSign) { idList.add(dto.getId()); } @@ -159,7 +158,8 @@ public class CaSignServiceImpl { * @author 曾文和 * @createTime 2023/7/25 10:30 */ - private boolean caSign(String fileSrc) throws Exception { + private boolean caSign(String fileSrc,Archive_Detail_ca_reqParam caReqParam) throws Exception { + System.out.println("fileSrc:"+fileSrc); //定义是否成功 boolean flag = false; PdfReader pdfReader = null; @@ -169,38 +169,51 @@ public class CaSignServiceImpl { e.printStackTrace(); } if (pdfReader != null) { - anySignClientTool = new AnySignClientTool(caServerIp, caServerPort); - File file = new File(fileSrc); - byte[] pdfBty = ClientUtil.readFileToByteArray(file); - //pdf验章 - ChannelMessage messageExist = anySignClientTool.pdfVerify(pdfBty); - if(!StringUtils.isEmpty(messageExist.getStatusInfo()) && "pdf文档未签章".equals(messageExist.getStatusInfo())) { - RectangleBean bean = new RectangleBean(); - bean.setLeft(Float.valueOf(signLeft)); - bean.setTop(Float.valueOf(signTop)); - bean.setRight(Float.valueOf(signRight)); - bean.setBottom(Float.valueOf(signBottom)); - int numberOfPages = pdfReader.getNumberOfPages(); - for (int i = 0; i < numberOfPages; i++) { - if (i != 0) { - pdfBty = ClientUtil.readFileToByteArray(file); - } - bean.setPageNo(i + 1); - ChannelMessage message = null; - message = anySignClientTool.pdfSignByParam(pdfBty, signNo, bean); - if ("200".equals(message.getStatusCode())) {//成功 - ClientUtil.writeByteArrayToFile(new File(fileSrc), message.getBody()); - } else { - String statusCode = message.getStatusCode(); - String statusInfo = message.getStatusInfo(); - System.out.println("statusCode=" + statusCode + ";statusInfo=" + statusInfo); + try { + anySignClientTool = new AnySignClientTool(caServerIp, caServerPort); + File file = new File(fileSrc); + byte[] pdfBty = ClientUtil.readFileToByteArray(file); + //pdf验章 + ChannelMessage messageExist = anySignClientTool.pdfVerify(pdfBty); + if(!StringUtils.isEmpty(messageExist.getStatusInfo()) && "pdf文档未签章".equals(messageExist.getStatusInfo())) { + RectangleBean bean = new RectangleBean(); + int numberOfPages = pdfReader.getNumberOfPages(); + for (int i = 0; i < numberOfPages; i++) { + if (i != 0) { + pdfBty = ClientUtil.readFileToByteArray(file); + } + bean.setPageNo(i + 1); + ChannelMessage message = null; + //获取pdf的高宽 + Rectangle pageSize = pdfReader.getPageSizeWithRotation(i+1); + // 获取页面的宽度和高度 + float width = pageSize.getWidth(); + float height = pageSize.getHeight(); + System.out.println("pdf尺寸:width:"+width+",height:"+height); + bean.setLeft(Float.valueOf(width - caReqParam.getSignLeft())); + bean.setTop(Float.valueOf(caReqParam.getSignTop())); + bean.setRight(Float.valueOf(width)); + bean.setBottom(Float.valueOf(caReqParam.getSignBottom())); + System.out.println("左:"+bean.getLeft()+",上:"+bean.getTop()+",右:"+bean.getRight()+",下:"+bean.getBottom()); + message = anySignClientTool.pdfSignByParam(pdfBty, signNo, bean); + if ("200".equals(message.getStatusCode())) {//成功 + ClientUtil.writeByteArrayToFile(new File(fileSrc), message.getBody()); + System.out.println("签章成功"); + } else { + String statusCode = message.getStatusCode(); + String statusInfo = message.getStatusInfo(); + log.error("statusCode=" + statusCode + ";statusInfo=" + statusInfo); + } } } + flag = true; + }catch (Exception e){ + e.printStackTrace(); } - flag = true; } else { log.error("进行签章pdf:"+fileSrc+"不存在或损坏"); } + System.out.println("完成"); return flag; } } diff --git a/src/main/resources/config/applicationContext.xml b/src/main/resources/config/applicationContext.xml index bb4d6ece..ad8f6714 100644 --- a/src/main/resources/config/applicationContext.xml +++ b/src/main/resources/config/applicationContext.xml @@ -46,7 +46,7 @@ - + diff --git a/src/main/resources/config/caSign.properties b/src/main/resources/config/caSign.properties index 80e683e4..b7e2c1cc 100644 --- a/src/main/resources/config/caSign.properties +++ b/src/main/resources/config/caSign.properties @@ -1,27 +1,19 @@ #\u662F\u5426\u5F00\u542F\u63A5\u53E3 1:\u5F00\u542F\uFF1B0:\u5173\u95ED -isCaOpen=1 +isCaOpen=0 #ca\u63A5\u53E3ip -#caServerIp=10.6.0.88 -##ca\u63A5\u53E3\u7AEF\u53E3 -#caServerPort=8002 -#\u7B7E\u7AE0\u7F16\u53F7 -#signNo=3012E4D7D234DC58 +caServerIp=10.6.0.88 +#ca\u63A5\u53E3\u7AEF\u53E3 +caServerPort=8002 +\u7B7E\u7AE0\u7F16\u53F7 +signNo=3012E4D7D234DC58 #\u7B7E\u7AE0\u7BA1\u7406\u540E\u53F0\u8D26\u53F7\uFF1Aoperator \u5BC6\u7801\uFF1A111111 #\u5916\u7F51\u6D4B\u8BD5 #ca\u63A5\u53E3ip -caServerIp=223.70.139.221 -#ca\u63A5\u53E3\u7AEF\u53E3 -caServerPort=18002 -##\u7B7E\u7AE0\u7F16\u53F7 -signNo=59BC18FE5DEB0F15 -#\u7B7E\u7AE0\u4F4D\u7F6E\u5DE6\u504F -signLeft=100 -#\u7B7E\u7AE0\u4F4D\u7F6E\u4E0A\u504F -signTop=750 -#\u7B7E\u7AE0\u4F4D\u7F6E\u53F3\u504F -signRight=150 -#\u7B7E\u7AE0\u4F4D\u7F6E\u4E0B\u504F -signBottom=200 +#caServerIp=223.70.139.221 +##ca\u63A5\u53E3\u7AEF\u53E3 +#caServerPort=18002 +###\u7B7E\u7AE0\u7F16\u53F7 +#signNo=59BC18FE5DEB0F15 #\u5907\u4EFD\u539F\u6587\u4EF6\u8DEF\u5F84 diff --git a/src/main/resources/mapper/Archive_Detail_caSignMapper.xml b/src/main/resources/mapper/Archive_Detail_caSignMapper.xml index 0b541955..77dee51d 100644 --- a/src/main/resources/mapper/Archive_Detail_caSignMapper.xml +++ b/src/main/resources/mapper/Archive_Detail_caSignMapper.xml @@ -4,8 +4,8 @@ insert into Archive_Detail_caSign(archive_detail_id,master_id,sign_time) values - - #{item.archiveDetailId},#{item.masterId},#{item.signTime} + + (#{item.archiveDetailId},#{item.masterId},#{item.signTime}) diff --git a/src/main/resources/mapper/Archive_Detail_ca_reqParamMapper.xml b/src/main/resources/mapper/Archive_Detail_ca_reqParamMapper.xml new file mode 100644 index 00000000..a913df7d --- /dev/null +++ b/src/main/resources/mapper/Archive_Detail_ca_reqParamMapper.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file