|  | @@ -1,15 +1,22 @@
 | 
	
		
			
				|  |  |  package thyyxxk.webserver.controller.api.medicallaboratory;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +import cn.hutool.core.util.StrUtil;
 | 
	
		
			
				|  |  | +import com.alibaba.fastjson.JSON;
 | 
	
		
			
				|  |  | +import com.alibaba.fastjson.JSONObject;
 | 
	
		
			
				|  |  |  import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  |  import org.springframework.web.bind.annotation.PostMapping;
 | 
	
		
			
				|  |  |  import org.springframework.web.bind.annotation.RequestBody;
 | 
	
		
			
				|  |  |  import org.springframework.web.bind.annotation.RequestMapping;
 | 
	
		
			
				|  |  |  import org.springframework.web.bind.annotation.RestController;
 | 
	
		
			
				|  |  |  import thyyxxk.webserver.config.auth.PassToken;
 | 
	
		
			
				|  |  | +import thyyxxk.webserver.config.exception.BizException;
 | 
	
		
			
				|  |  |  import thyyxxk.webserver.config.exception.ExceptionEnum;
 | 
	
		
			
				|  |  | +import thyyxxk.webserver.controller.api.medicallaboratory.model.Category;
 | 
	
		
			
				|  |  |  import thyyxxk.webserver.controller.api.medicallaboratory.model.State;
 | 
	
		
			
				|  |  |  import thyyxxk.webserver.dao.his.api.MedicalLaboratoryDao;
 | 
	
		
			
				|  |  |  import thyyxxk.webserver.entity.ResultVo;
 | 
	
		
			
				|  |  | +import thyyxxk.webserver.service.externalhttp.WxServer;
 | 
	
		
			
				|  |  | +import thyyxxk.webserver.utils.DateUtil;
 | 
	
		
			
				|  |  |  import thyyxxk.webserver.utils.ResultVoUtil;
 | 
	
		
			
				|  |  |  import thyyxxk.webserver.utils.StringUtil;
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -19,10 +26,12 @@ import java.util.Date;
 | 
	
		
			
				|  |  |  @RequestMapping("/medicalLaboratory")
 | 
	
		
			
				|  |  |  public class MedicalLaboratoryController {
 | 
	
		
			
				|  |  |      private final MedicalLaboratoryDao dao;
 | 
	
		
			
				|  |  | +    private final WxServer wxServer;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  | -    public MedicalLaboratoryController(MedicalLaboratoryDao dao) {
 | 
	
		
			
				|  |  | +    public MedicalLaboratoryController(MedicalLaboratoryDao dao, WxServer wxServer) {
 | 
	
		
			
				|  |  |          this.dao = dao;
 | 
	
		
			
				|  |  | +        this.wxServer = wxServer;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @PassToken
 | 
	
	
		
			
				|  | @@ -67,6 +76,7 @@ public class MedicalLaboratoryController {
 | 
	
		
			
				|  |  |              if (null == body.getPublishTime()) {
 | 
	
		
			
				|  |  |                  return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "报告状态为[发布]时,发布时间不能为空。");
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | +            pushWxMessage(body);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          MedicalLaboratoryState existOne = dao.selectById(body.getReqNo());
 | 
	
		
			
				|  |  |          if (null == existOne) {
 | 
	
	
		
			
				|  | @@ -77,4 +87,56 @@ public class MedicalLaboratoryController {
 | 
	
		
			
				|  |  |          dao.updateById(body);
 | 
	
		
			
				|  |  |          return ResultVoUtil.success(body.getReqNo());
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    private void pushWxMessage(MedicalLaboratoryState body) {
 | 
	
		
			
				|  |  | +        String xmLabel = getLabel(body.getCategory());
 | 
	
		
			
				|  |  | +        String firstData = StrUtil.format("您之前进行的{}项目已生成{}报告,详情如下:", xmLabel, xmLabel);
 | 
	
		
			
				|  |  | +        String pbtime = DateUtil.formatDate(body.getPublishTime());
 | 
	
		
			
				|  |  | +        String redirect = "https://staticweb.hnthyy.cn/wxserver/redirect/pathEntry?path=" + getPath(body);
 | 
	
		
			
				|  |  | +        String msgContent = "{\"touser\":\"\",\"data\":" +
 | 
	
		
			
				|  |  | +                "{" +
 | 
	
		
			
				|  |  | +                "\"first\":{\"color\":\"#FF0000\",\"value\":\"" + firstData + "\"}," +
 | 
	
		
			
				|  |  | +                "\"keyword1\":{\"color\":\"#173177\",\"value\":\"长沙泰和医院\"}," +
 | 
	
		
			
				|  |  | +                "\"keyword2\":{\"color\":\"#173177\",\"value\":\"" + body.getPatName() + "\"}," +
 | 
	
		
			
				|  |  | +                "\"keyword3\":{\"color\":\"#173177\",\"value\":\"" + body.getReportTitle() + "\"}," +
 | 
	
		
			
				|  |  | +                "\"keyword4\":{\"color\":\"#173177\",\"value\":\"" + pbtime + "\"}," +
 | 
	
		
			
				|  |  | +                "\"remark\":{\"color\":\"#FF0000\",\"value\":\"感谢您的使用,祝您健康!\"}," +
 | 
	
		
			
				|  |  | +                "}," +
 | 
	
		
			
				|  |  | +                "\"template_id\":\"5lfTTP5Iwx4dEwTB9ihhCDWm0PTkMDTzOUQVsyNaM50\"," +
 | 
	
		
			
				|  |  | +                "\"url\":\"" + redirect + "\"}";
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        JSONObject obj = new JSONObject();
 | 
	
		
			
				|  |  | +        obj.put("cardNo", body.getPatNo());
 | 
	
		
			
				|  |  | +        obj.put("msgContext", JSON.parseObject(msgContent));
 | 
	
		
			
				|  |  | +        wxServer.pushWxMessage(obj);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    private String getLabel(Category category) {
 | 
	
		
			
				|  |  | +        switch (category) {
 | 
	
		
			
				|  |  | +            case JY:
 | 
	
		
			
				|  |  | +                return "检验";
 | 
	
		
			
				|  |  | +            case JC:
 | 
	
		
			
				|  |  | +                return "检查";
 | 
	
		
			
				|  |  | +            case XD:
 | 
	
		
			
				|  |  | +                return "心电";
 | 
	
		
			
				|  |  | +            case BL:
 | 
	
		
			
				|  |  | +                return "病理";
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        throw new BizException("不合法的项目类型!");
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    private String getPath(MedicalLaboratoryState body) {
 | 
	
		
			
				|  |  | +        String suffix = "_" + body.getPatNo();
 | 
	
		
			
				|  |  | +        switch (body.getCategory()) {
 | 
	
		
			
				|  |  | +            case JY:
 | 
	
		
			
				|  |  | +                return "checkExamIndex" + suffix;
 | 
	
		
			
				|  |  | +            case JC:
 | 
	
		
			
				|  |  | +                return "checkTestIndex" + suffix;
 | 
	
		
			
				|  |  | +            case XD:
 | 
	
		
			
				|  |  | +                return "checkElectroIndex" + suffix;
 | 
	
		
			
				|  |  | +            case BL:
 | 
	
		
			
				|  |  | +                return "checkPathologyIndex" + suffix;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        throw new BizException("不合法的项目类型!");
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  }
 |