Explorar o código

Merge branch 'dev' of http://192.168.1.220:10080/Amoy/patient-co-management into dev

liuwenbin %!s(int64=7) %!d(string=hai) anos
pai
achega
709c9b7484
Modificáronse 100 ficheiros con 7359 adicións e 1855 borrados
  1. 118 0
      common/common-entity/src/main/java/com/yihu/wlyy/entity/charge/WlyyCharge.java
  2. 53 0
      common/common-entity/src/main/java/com/yihu/wlyy/entity/httpLog/HttpLogDetail.java
  3. 1 1
      common/common-entity/src/main/java/com/yihu/wlyy/entity/patient/SignFamily.java
  4. 154 135
      common/common-entity/src/main/java/com/yihu/wlyy/entity/patient/prenatal/PrenatalInspectorPlan.java
  5. 107 107
      common/common-entity/src/main/java/com/yihu/wlyy/entity/patient/prenatal/PrenatalInspectorPlanLibrary.java
  6. 549 442
      common/common-entity/src/main/java/com/yihu/wlyy/entity/patient/prenatal/PrenatalInspectorPreCard.java
  7. 1 1
      common/common-entity/src/main/java/com/yihu/wlyy/entity/patient/prescription/Prescription.java
  8. 2 1
      common/common-entity/src/main/java/com/yihu/wlyy/entity/patient/prescription/PrescriptionLog.java
  9. 47 0
      common/common-entity/src/main/java/com/yihu/wlyy/entity/patient/prescription/PrescriptionPay.java
  10. 159 0
      common/common-entity/src/main/java/com/yihu/wlyy/entity/zydict/ZyZoneDict.java
  11. 19 15
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/controller/PrenatalInspectorController.java
  12. 29 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/controller/PrescriptionController.java
  13. 23 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/controller/SignController.java
  14. 2 2
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/HttpLogDao.java
  15. 11 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/log/HttpLogDetailDao.java
  16. 2 2
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/ZyPushLogDao.java
  17. 11 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/log/ZyPushLogDetailDao.java
  18. 19 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/prenatal/PrenatalInspectorPreCardDao.java
  19. 3 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/prescription/PrescriptionDao.java
  20. 1 1
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/entity/HttpLog.java
  21. 52 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/entity/log/HttpLogDetail.java
  22. 2 2
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/entity/ZyPushLog.java
  23. 61 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/entity/log/ZyPushLogDetail.java
  24. 550 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/entity/prenatal/PrenatalInspectorPreCard.java
  25. 2 1
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/entity/prescription/PrescriptionLog.java
  26. 5 3
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/entity/prescription/VO/PrescriptionExpressageVO.java
  27. 64 18
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/service/LogService.java
  28. 0 8
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/service/OpenCountService.java
  29. 12 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/service/SignZYService.java
  30. 21 9
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/service/ZysoftBaseService.java
  31. 90 23
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/service/ZysoftMaternalService.java
  32. 19 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/service/ZysoftService.java
  33. 99 34
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/service/prescription/PrescriptionService.java
  34. 11 0
      patient-co-service/wlyy_sign/src/main/java/com/yihu/wlyy/sign/dao/HttpLogDetailDao.java
  35. 53 0
      patient-co-service/wlyy_sign/src/main/java/com/yihu/wlyy/sign/entity/HttpLogDetail.java
  36. 24 6
      patient-co-service/wlyy_sign/src/main/java/com/yihu/wlyy/sign/service/LogService.java
  37. 122 3
      patient-co/patient-co-doctor-assistant/src/main/java/com/yihu/wlyy/service/template/DoctorFeldsherTemplateService.java
  38. 4 0
      patient-co/patient-co-doctor-assistant/src/main/java/com/yihu/wlyy/util/RSAUtils.java
  39. 2 1
      patient-co/patient-co-doctor-assistant/src/main/java/com/yihu/wlyy/web/common/account/LoginController.java
  40. 2 2
      patient-co/patient-co-doctor-assistant/src/main/java/com/yihu/wlyy/web/doctor/account/DoctorController.java
  41. 1 1
      patient-co/patient-co-doctor-assistant/src/main/java/com/yihu/wlyy/web/doctor/template/DoctorFeldsherTemplateController.java
  42. 22 1
      patient-co/patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/etl/dataFilter/RenewSignDataFilter.java
  43. 32 0
      patient-co/patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/etl/model/RenewCacheModel.java
  44. 243 0
      patient-co/patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/etl/mycache/CachePool.java
  45. 416 83
      patient-co/patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/business/CurrentDayAllQuotaJob.java
  46. 1 1
      patient-co/patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/business/SignServerTypeJob.java
  47. 1 0
      patient-co/patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/business/WechatCountJob.java
  48. 116 0
      patient-co/patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/business/signServer/RenewSignOrgOutServerJob.java
  49. 115 0
      patient-co/patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/business/signServer/RenewSignOrgServerJob.java
  50. 115 0
      patient-co/patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/business/signServer/RenewSignServerJob.java
  51. 114 0
      patient-co/patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/business/signServer/RenewSignTeamOutServerJob.java
  52. 113 0
      patient-co/patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/business/signServer/RenewSignTeamServerJob.java
  53. 113 0
      patient-co/patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/business/signServer/RenewSignTownOutServerJob.java
  54. 113 0
      patient-co/patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/business/signServer/RenewSignTownServerJob.java
  55. 1 1
      patient-co/patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/model/job/QuartzJobLog.java
  56. 5 5
      patient-co/patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/service/JobService.java
  57. 2 1
      patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/config/SwaggerConfig.java
  58. 26 1
      patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/event/ApplicationEvent.java
  59. 55 0
      patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/job/OnePayQueryJob.java
  60. 36 30
      patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/job/PrenatalInspectorJob.java
  61. 2 2
      patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/job/PrescriptionExecuteSickSettleJob.java
  62. 57 0
      patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/job/PrescriptionPayQueryJob.java
  63. 4 4
      patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/job/SFExpressJob.java
  64. 36 0
      patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/job/SignFamilyPayResultJob.java
  65. 7 0
      patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/repository/charge/ChargeDao.java
  66. 20 20
      patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/repository/patient/PrenatalInspectorPlanDao.java
  67. 20 20
      patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/repository/patient/PrenatalInspectorPlanLibraryDao.java
  68. 17 17
      patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/repository/patient/PrenatalInspectorPreCardDao.java
  69. 1 1
      patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/repository/prescription/PrescriptionDao.java
  70. 8 0
      patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/repository/prescription/PrescriptionPayDao.java
  71. 12 0
      patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/repository/ylz/PayLogDao.java
  72. 251 0
      patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/service/app/charge/OnePayService.java
  73. 2 0
      patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/service/app/family/FamilyMemberService.java
  74. 85 240
      patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/service/app/prenatalInspector/PrenatalInspectorPreCardService.java
  75. 501 0
      patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/service/app/prescription/PatientPrescriptionPayService.java
  76. 1 0
      patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/service/app/sign/FamilyContractService.java
  77. 610 0
      patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/service/third/jw/ZyDictService.java
  78. 58 0
      patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/service/third/ylz/PayLogService.java
  79. 72 0
      patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/web/ZyDictController.java
  80. 34 0
      patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/web/quota/JobController.java
  81. 2 2
      patient-co/patient-co-wlyy-job/src/main/resources/application-prod.yml
  82. 8 2
      patient-co/patient-co-wlyy-job/src/main/resources/system.properties
  83. 1 0
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/adapter/PresModeAdapter.java
  84. 11 0
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/httplog/HttpLogDetailDao.java
  85. 27 20
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/patient/PrenatalInspectorPlanDao.java
  86. 20 20
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/patient/PrenatalInspectorPlanLibraryDao.java
  87. 17 17
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/patient/PrenatalInspectorPreCardDao.java
  88. 3 0
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/patient/SignFamilyDao.java
  89. 11 0
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/zydict/ZyZoneDictDao.java
  90. 132 13
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/account/PatientInfoService.java
  91. 2 0
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/family/FamilyMemberService.java
  92. 72 64
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/label/SignPatientLabelInfoService.java
  93. 584 233
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/prenatalInspector/PrenatalInspectorPreCardService.java
  94. 328 210
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/prescription/PatientPrescriptionPayService.java
  95. 16 2
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/prescription/PrescriptionInfoService.java
  96. 34 16
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/sign/FamilyContractService.java
  97. 1 1
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/sign/SignFamilyServiceService.java
  98. 9 10
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/sign/SignWebService.java
  99. 137 0
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/statistics/StatisticsAllService.java
  100. 0 0
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/statistics/StatisticsService.java

+ 118 - 0
common/common-entity/src/main/java/com/yihu/wlyy/entity/charge/WlyyCharge.java

@ -22,6 +22,7 @@ public class WlyyCharge extends IdEntity {
	private String patient;   //  用户
	private String openid;   //  用戶微信openid
	private String ssc;   // 医保卡号
	private String principalSsc;   // 实际签约卡号
	private String name;   //  姓名
	private String idType;   //  证件类型
	private String idNo;   //  证件号码
@ -45,6 +46,123 @@ public class WlyyCharge extends IdEntity {
	private String billNo;   //  待结算费用单据号
	private Date updateTime;//修改时间
	private String miCollectDate;//收费日期
	private String miCollectTime;//收费时间
	private String miSettleNo;//医保收费单据号 (医保签约号)
	private String miCollectStatus;//扣费状态
	private String miRegisterStatus;//登记状态
	private String cadresPay;//公务员补助
	private String miTotalFee;//本次报销总额
	private String healthCarePay;//保健基金支付
	private String heathPay;//健康账户支付
	private String accountPay;//个人账户支付
	private String selfPay;//个人现金支付
	private String civilPay;//民政补助金额
	public String getPrincipalSsc() {
		return principalSsc;
	}
	public void setPrincipalSsc(String principalSsc) {
		this.principalSsc = principalSsc;
	}
	public String getMiCollectDate() {
		return miCollectDate;
	}
	public void setMiCollectDate(String miCollectDate) {
		this.miCollectDate = miCollectDate;
	}
	public String getMiCollectTime() {
		return miCollectTime;
	}
	public void setMiCollectTime(String miCollectTime) {
		this.miCollectTime = miCollectTime;
	}
	public String getMiSettleNo() {
		return miSettleNo;
	}
	public void setMiSettleNo(String miSettleNo) {
		this.miSettleNo = miSettleNo;
	}
	public String getMiCollectStatus() {
		return miCollectStatus;
	}
	public void setMiCollectStatus(String miCollectStatus) {
		this.miCollectStatus = miCollectStatus;
	}
	public String getMiRegisterStatus() {
		return miRegisterStatus;
	}
	public void setMiRegisterStatus(String miRegisterStatus) {
		this.miRegisterStatus = miRegisterStatus;
	}
	public String getCadresPay() {
		return cadresPay;
	}
	public void setCadresPay(String cadresPay) {
		this.cadresPay = cadresPay;
	}
	public String getMiTotalFee() {
		return miTotalFee;
	}
	public void setMiTotalFee(String miTotalFee) {
		this.miTotalFee = miTotalFee;
	}
	public String getHealthCarePay() {
		return healthCarePay;
	}
	public void setHealthCarePay(String healthCarePay) {
		this.healthCarePay = healthCarePay;
	}
	public String getHeathPay() {
		return heathPay;
	}
	public void setHeathPay(String heathPay) {
		this.heathPay = heathPay;
	}
	public String getAccountPay() {
		return accountPay;
	}
	public void setAccountPay(String accountPay) {
		this.accountPay = accountPay;
	}
	public String getSelfPay() {
		return selfPay;
	}
	public void setSelfPay(String selfPay) {
		this.selfPay = selfPay;
	}
	public String getCivilPay() {
		return civilPay;
	}
	public void setCivilPay(String civilPay) {
		this.civilPay = civilPay;
	}
	public String getChargeType() {
		return chargeType;
	}

+ 53 - 0
common/common-entity/src/main/java/com/yihu/wlyy/entity/httpLog/HttpLogDetail.java

@ -0,0 +1,53 @@
package com.yihu.wlyy.entity.httpLog;
import com.yihu.wlyy.entity.IdEntity;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
/**
 * Created by yeshijie on 2017/9/26.
 */
@Entity
@Table(name = "wlyy_http_log_detail")
public class HttpLogDetail extends IdEntity {
    private Long code;//关联code和ZyPushLog表的id
    private String response;//'返回结果',
    private String error;//'报错信息',
    private Date createTime;// '创建时间',
    public Long getCode() {
        return code;
    }
    public void setCode(Long code) {
        this.code = code;
    }
    public String getResponse() {
        return response;
    }
    public void setResponse(String response) {
        this.response = response;
    }
    public String getError() {
        return error;
    }
    public void setError(String error) {
        this.error = error;
    }
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
}

+ 1 - 1
common/common-entity/src/main/java/com/yihu/wlyy/entity/patient/SignFamily.java

@ -50,7 +50,7 @@ public class SignFamily extends IdEntity {
    private String signType;//1 用户自己申请  2医生手工带签  3.医生发起邀请
    private String familyCode;//签约code
    private Double expenses;//签约费用
    private String expensesStatus;//扣费状态【0未扣费 1已扣费 2已退费】
    private String expensesStatus;//扣费状态【0未扣费 1已扣费 2已退费 3医保取消】
    private String signSource;// 签约来源【1 社区签约 2 移动签约】
    private String signDoctorCode;//簽約人code
    private String signDoctorName;//簽約人銘

+ 154 - 135
common/common-entity/src/main/java/com/yihu/wlyy/entity/patient/prenatal/PrenatalInspectorPlan.java

@ -1,135 +1,154 @@
//package com.yihu.wlyy.entity.patient.prenatal;
//
//import com.yihu.wlyy.entity.IdEntity;
//
//import javax.persistence.Entity;
//import javax.persistence.Table;
//import java.io.Serializable;
//import java.util.Date;
//
///**
// * 产检计划
// * Created by yeshijie on 2017/6/6.
// */
//@Entity
//@Table(name = "wlyy_prenatal_inspector_plan")
//public class PrenatalInspectorPlan extends IdEntity implements Serializable {
//
//    private String inspectionCode;//产检code
//    private String patient;//居民code
//    private String name;//名称
//    private Date inspectionTime;//产检时间
//    private Date inspectionStartTime;//产检开始时间(系统计算)
//    private Date inspectionEndTime;//产检结束时间(系统计算)
//    private String thisFocus;//本次重点
//    private String checkItem;//检查项目
//    private String thisNote;//本次注意
//    private String status;//产检状态(0未产检,1已产检)
//    private String inspectionPhase;//检查阶段(1社区检查,2医院检查)
//    private String signHospital;//签约医院code(已签约且社区检查阶段才有值)
//    private Date czrq;//创建日期
//
//    public String getInspectionCode() {
//        return inspectionCode;
//    }
//
//    public void setInspectionCode(String inspectionCode) {
//        this.inspectionCode = inspectionCode;
//    }
//
//    public String getPatient() {
//        return patient;
//    }
//
//    public void setPatient(String patient) {
//        this.patient = patient;
//    }
//
//    public String getName() {
//        return name;
//    }
//
//    public void setName(String name) {
//        this.name = name;
//    }
//
//    public Date getInspectionTime() {
//        return inspectionTime;
//    }
//
//    public void setInspectionTime(Date inspectionTime) {
//        this.inspectionTime = inspectionTime;
//    }
//
//    public Date getInspectionStartTime() {
//        return inspectionStartTime;
//    }
//
//    public void setInspectionStartTime(Date inspectionStartTime) {
//        this.inspectionStartTime = inspectionStartTime;
//    }
//
//    public Date getInspectionEndTime() {
//        return inspectionEndTime;
//    }
//
//    public void setInspectionEndTime(Date inspectionEndTime) {
//        this.inspectionEndTime = inspectionEndTime;
//    }
//
//    public String getThisFocus() {
//        return thisFocus;
//    }
//
//    public void setThisFocus(String thisFocus) {
//        this.thisFocus = thisFocus;
//    }
//
//    public String getCheckItem() {
//        return checkItem;
//    }
//
//    public void setCheckItem(String checkItem) {
//        this.checkItem = checkItem;
//    }
//
//    public String getThisNote() {
//        return thisNote;
//    }
//
//    public void setThisNote(String thisNote) {
//        this.thisNote = thisNote;
//    }
//
//    public String getStatus() {
//        return status;
//    }
//
//    public void setStatus(String status) {
//        this.status = status;
//    }
//
//    public String getInspectionPhase() {
//        return inspectionPhase;
//    }
//
//    public void setInspectionPhase(String inspectionPhase) {
//        this.inspectionPhase = inspectionPhase;
//    }
//
//    public String getSignHospital() {
//        return signHospital;
//    }
//
//    public void setSignHospital(String signHospital) {
//        this.signHospital = signHospital;
//    }
//
//    public Date getCzrq() {
//        return czrq;
//    }
//
//    public void setCzrq(Date czrq) {
//        this.czrq = czrq;
//    }
//}
package com.yihu.wlyy.entity.patient.prenatal;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.wlyy.entity.IdEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.io.Serializable;
import java.util.Date;
/**
 * 产检计划
 * Created by yeshijie on 2017/6/6.
 */
@Entity
@Table(name = "wlyy_prenatal_inspector_plan")
public class PrenatalInspectorPlan extends IdEntity implements Serializable {
    private String inspectionCode;//产检code,有建卡记录才有值
    private String patient;//居民code
    private String name;//名称
    private Date inspectionTime;//产检时间
    private Date inspectionStartTime;//产检开始时间(系统计算)
    private Date inspectionEndTime;//产检结束时间(系统计算)
    private String thisFocus;//本次重点
    private String checkItem;//检查项目
    private String thisNote;//本次注意
    private String status;//产检状态(0未产检,1已产检)
    private String inspectionPhase;//检查阶段(1社区检查,2医院检查)
    private String signHospital;//签约医院code(已签约且社区检查阶段才有值)
    private String del;//1: 正常 0: 删除
    private Date czrq;//创建日期
    public String getInspectionCode() {
        return inspectionCode;
    }
    public void setInspectionCode(String inspectionCode) {
        this.inspectionCode = inspectionCode;
    }
    public String getPatient() {
        return patient;
    }
    public void setPatient(String patient) {
        this.patient = patient;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    @Column(name = "inspection_time")
    public Date getInspectionTime() {
        return inspectionTime;
    }
    public void setInspectionTime(Date inspectionTime) {
        this.inspectionTime = inspectionTime;
    }
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    @Column(name = "inspection_start_time")
    public Date getInspectionStartTime() {
        return inspectionStartTime;
    }
    public void setInspectionStartTime(Date inspectionStartTime) {
        this.inspectionStartTime = inspectionStartTime;
    }
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    @Column(name = "inspection_end_time")
    public Date getInspectionEndTime() {
        return inspectionEndTime;
    }
    public void setInspectionEndTime(Date inspectionEndTime) {
        this.inspectionEndTime = inspectionEndTime;
    }
    public String getThisFocus() {
        return thisFocus;
    }
    public void setThisFocus(String thisFocus) {
        this.thisFocus = thisFocus;
    }
    public String getCheckItem() {
        return checkItem;
    }
    public void setCheckItem(String checkItem) {
        this.checkItem = checkItem;
    }
    public String getThisNote() {
        return thisNote;
    }
    public void setThisNote(String thisNote) {
        this.thisNote = thisNote;
    }
    public String getStatus() {
        return status;
    }
    public void setStatus(String status) {
        this.status = status;
    }
    public String getInspectionPhase() {
        return inspectionPhase;
    }
    public void setInspectionPhase(String inspectionPhase) {
        this.inspectionPhase = inspectionPhase;
    }
    public String getSignHospital() {
        return signHospital;
    }
    public void setSignHospital(String signHospital) {
        this.signHospital = signHospital;
    }
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    @Column(name = "czrq")
    public Date getCzrq() {
        return czrq;
    }
    public void setCzrq(Date czrq) {
        this.czrq = czrq;
    }
    public String getDel() {
        return del;
    }
    public void setDel(String del) {
        this.del = del;
    }
}

+ 107 - 107
common/common-entity/src/main/java/com/yihu/wlyy/entity/patient/prenatal/PrenatalInspectorPlanLibrary.java

@ -1,107 +1,107 @@
//package com.yihu.wlyy.entity.patient.prenatal;
//
//import com.yihu.wlyy.entity.IdEntity;
//
//import javax.persistence.Entity;
//import javax.persistence.Table;
//import java.io.Serializable;
//
///**
// * 产检计划库
// * Created by yeshijie on 2017/6/6.
// */
//@Entity
//@Table(name = "wlyy_prenatal_inspector_plan_library")
//public class PrenatalInspectorPlanLibrary extends IdEntity implements Serializable {
//
//    private String name;//名称
//    private String thisFocus;//本次重点
//    private String checkItem;//检查项目
//    private String thisNote;//本次注意
//    private String inspectionWeek;//产检孕周
//    private String inspectionTimes;//产检次数
//    private String inspectionPhase;//检查阶段
//    private Long startDay;//开始天数(距怀孕天数)
//    private Long endDay;//结束天数(距怀孕天数)
//    private String czrq;//创建日期
//
//    public String getName() {
//        return name;
//    }
//
//    public void setName(String name) {
//        this.name = name;
//    }
//
//    public String getThisFocus() {
//        return thisFocus;
//    }
//
//    public void setThisFocus(String thisFocus) {
//        this.thisFocus = thisFocus;
//    }
//
//    public String getCheckItem() {
//        return checkItem;
//    }
//
//    public void setCheckItem(String checkItem) {
//        this.checkItem = checkItem;
//    }
//
//    public String getThisNote() {
//        return thisNote;
//    }
//
//    public void setThisNote(String thisNote) {
//        this.thisNote = thisNote;
//    }
//
//    public String getInspectionWeek() {
//        return inspectionWeek;
//    }
//
//    public void setInspectionWeek(String inspectionWeek) {
//        this.inspectionWeek = inspectionWeek;
//    }
//
//    public String getInspectionTimes() {
//        return inspectionTimes;
//    }
//
//    public void setInspectionTimes(String inspectionTimes) {
//        this.inspectionTimes = inspectionTimes;
//    }
//
//    public String getInspectionPhase() {
//        return inspectionPhase;
//    }
//
//    public void setInspectionPhase(String inspectionPhase) {
//        this.inspectionPhase = inspectionPhase;
//    }
//
//    public Long getStartDay() {
//        return startDay;
//    }
//
//    public void setStartDay(Long startDay) {
//        this.startDay = startDay;
//    }
//
//    public Long getEndDay() {
//        return endDay;
//    }
//
//    public void setEndDay(Long endDay) {
//        this.endDay = endDay;
//    }
//
//    public String getCzrq() {
//        return czrq;
//    }
//
//    public void setCzrq(String czrq) {
//        this.czrq = czrq;
//    }
//}
package com.yihu.wlyy.entity.patient.prenatal;
import com.yihu.wlyy.entity.IdEntity;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.io.Serializable;
/**
 * 产检计划库
 * Created by yeshijie on 2017/6/6.
 */
@Entity
@Table(name = "wlyy_prenatal_inspector_plan_library")
public class PrenatalInspectorPlanLibrary extends IdEntity implements Serializable {
    private String name;//名称
    private String thisFocus;//本次重点
    private String checkItem;//检查项目
    private String thisNote;//本次注意
    private String inspectionWeek;//产检孕周
    private String inspectionTimes;//产检次数
    private String inspectionPhase;//检查阶段
    private Long startDay;//开始天数(距怀孕天数)
    private Long endDay;//结束天数(距怀孕天数)
    private String czrq;//创建日期
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getThisFocus() {
        return thisFocus;
    }
    public void setThisFocus(String thisFocus) {
        this.thisFocus = thisFocus;
    }
    public String getCheckItem() {
        return checkItem;
    }
    public void setCheckItem(String checkItem) {
        this.checkItem = checkItem;
    }
    public String getThisNote() {
        return thisNote;
    }
    public void setThisNote(String thisNote) {
        this.thisNote = thisNote;
    }
    public String getInspectionWeek() {
        return inspectionWeek;
    }
    public void setInspectionWeek(String inspectionWeek) {
        this.inspectionWeek = inspectionWeek;
    }
    public String getInspectionTimes() {
        return inspectionTimes;
    }
    public void setInspectionTimes(String inspectionTimes) {
        this.inspectionTimes = inspectionTimes;
    }
    public String getInspectionPhase() {
        return inspectionPhase;
    }
    public void setInspectionPhase(String inspectionPhase) {
        this.inspectionPhase = inspectionPhase;
    }
    public Long getStartDay() {
        return startDay;
    }
    public void setStartDay(Long startDay) {
        this.startDay = startDay;
    }
    public Long getEndDay() {
        return endDay;
    }
    public void setEndDay(Long endDay) {
        this.endDay = endDay;
    }
    public String getCzrq() {
        return czrq;
    }
    public void setCzrq(String czrq) {
        this.czrq = czrq;
    }
}

+ 549 - 442
common/common-entity/src/main/java/com/yihu/wlyy/entity/patient/prenatal/PrenatalInspectorPreCard.java

@ -1,442 +1,549 @@
//package com.yihu.wlyy.entity.patient.prenatal;
//
//import com.yihu.wlyy.entity.IdEntity;
//
//import javax.persistence.Entity;
//import javax.persistence.Table;
//import java.io.Serializable;
//import java.util.Date;
//
///**
// * 产检预建卡
// * Created by yeshijie on 2017/6/6.
// */
//@Entity
//@Table(name = "wlyy_prenatal_inspector_pre_card")
//public class PrenatalInspectorPreCard extends IdEntity implements Serializable{
//
//    private String code;//产检code
//    private String patient;//居民code
//    private String name;//居民姓名
//    private String ssc;//医保卡号
//    private Date birthday;//出生日期
//    private String mobile;//手机号码
//    private Date lastMenstrualDate;//末次月经时间
//    private String allergyHistory;//过敏史
//    private String maritalStatus;//婚姻情况(1未婚,2已婚,3再婚,4丧偶,5离婚,6分居)
//    private String residentialAddress;//现居住址
//    private String residentialProvince;//住址省份
//    private String residentialCity;//住址城市
//    private String residentialTown;//住址区(县)
//    private String permanentAddress;//户籍地址
//    private String permanentProvince;//户籍省份
//    private String permanentCity;//户籍城市
//    private String permanentTown;//户籍区(县)
//    private Date marryDate;//结婚日期
//    private String spouseName;//配偶姓名
//    private Date spouseBirthday;//配偶生日
//    private String spouseMobile;//配偶手机
//    private String eatFolate;//服用叶酸(1是,0否)
//    private String eatAcyeterion;//服避孕药(1是,0否)
//    private String smoke;//吸烟(1是,0否)
//    private String drink;//饮酒(1是,0否)
//    private String eatOtherDrugs;//服用其他药物
//    private String workUnit;//工作单位
//    private String height;//身高(cm)
//    private String weight;//体重(kg)
//    private Integer vaginalDeliveryTimes;//阴道分娩次数(次)
//    private Integer caesareanSectionTimes;//剖宫产次数(次)
//    private Integer menarcheAge;//初潮(岁)
//    private Integer menstrualPeriod;//经期(天)
//    private Integer menstrualCycle;//周期(天)
//    private String diseaseHistory;//疾病史
//    private String operationHistory;//手术史
//    private String otherInformation;//其他
//    private String effective;//是否有效(1有效,0无效)
//    private String status;//状态
//    private Date dueDate;//预产期
//    private String hospital;//医院
//    private String hospitalName;//医院名称
//    private String bedNo;//床位
//    private String orderBedTime;//预约床位时间
//    private String inspectionPhase;//检查阶段(1社区检查,2医院检查)
//    private String del;//是否删除(1正常,0废弃)
//    private Date czrq;//创建日期
//
//
//    public String getCode() {
//        return code;
//    }
//
//    public void setCode(String code) {
//        this.code = code;
//    }
//
//    public String getPatient() {
//        return patient;
//    }
//
//    public void setPatient(String patient) {
//        this.patient = patient;
//    }
//
//    public String getName() {
//        return name;
//    }
//
//    public void setName(String name) {
//        this.name = name;
//    }
//
//    public String getSsc() {
//        return ssc;
//    }
//
//    public void setSsc(String ssc) {
//        this.ssc = ssc;
//    }
//
//    public Date getBirthday() {
//        return birthday;
//    }
//
//    public void setBirthday(Date birthday) {
//        this.birthday = birthday;
//    }
//
//    public String getMobile() {
//        return mobile;
//    }
//
//    public void setMobile(String mobile) {
//        this.mobile = mobile;
//    }
//
//    public Date getLastMenstrualDate() {
//        return lastMenstrualDate;
//    }
//
//    public void setLastMenstrualDate(Date lastMenstrualDate) {
//        this.lastMenstrualDate = lastMenstrualDate;
//    }
//
//    public String getAllergyHistory() {
//        return allergyHistory;
//    }
//
//    public void setAllergyHistory(String allergyHistory) {
//        this.allergyHistory = allergyHistory;
//    }
//
//    public String getMaritalStatus() {
//        return maritalStatus;
//    }
//
//    public void setMaritalStatus(String maritalStatus) {
//        this.maritalStatus = maritalStatus;
//    }
//
//    public String getResidentialAddress() {
//        return residentialAddress;
//    }
//
//    public void setResidentialAddress(String residentialAddress) {
//        this.residentialAddress = residentialAddress;
//    }
//
//    public String getResidentialProvince() {
//        return residentialProvince;
//    }
//
//    public void setResidentialProvince(String residentialProvince) {
//        this.residentialProvince = residentialProvince;
//    }
//
//    public String getResidentialCity() {
//        return residentialCity;
//    }
//
//    public void setResidentialCity(String residentialCity) {
//        this.residentialCity = residentialCity;
//    }
//
//    public String getResidentialTown() {
//        return residentialTown;
//    }
//
//    public void setResidentialTown(String residentialTown) {
//        this.residentialTown = residentialTown;
//    }
//
//    public String getPermanentAddress() {
//        return permanentAddress;
//    }
//
//    public void setPermanentAddress(String permanentAddress) {
//        this.permanentAddress = permanentAddress;
//    }
//
//    public String getPermanentProvince() {
//        return permanentProvince;
//    }
//
//    public void setPermanentProvince(String permanentProvince) {
//        this.permanentProvince = permanentProvince;
//    }
//
//    public String getPermanentCity() {
//        return permanentCity;
//    }
//
//    public void setPermanentCity(String permanentCity) {
//        this.permanentCity = permanentCity;
//    }
//
//    public String getPermanentTown() {
//        return permanentTown;
//    }
//
//    public void setPermanentTown(String permanentTown) {
//        this.permanentTown = permanentTown;
//    }
//
//    public Date getMarryDate() {
//        return marryDate;
//    }
//
//    public void setMarryDate(Date marryDate) {
//        this.marryDate = marryDate;
//    }
//
//    public String getSpouseName() {
//        return spouseName;
//    }
//
//    public void setSpouseName(String spouseName) {
//        this.spouseName = spouseName;
//    }
//
//    public Date getSpouseBirthday() {
//        return spouseBirthday;
//    }
//
//    public void setSpouseBirthday(Date spouseBirthday) {
//        this.spouseBirthday = spouseBirthday;
//    }
//
//    public String getSpouseMobile() {
//        return spouseMobile;
//    }
//
//    public void setSpouseMobile(String spouseMobile) {
//        this.spouseMobile = spouseMobile;
//    }
//
//    public String getEatFolate() {
//        return eatFolate;
//    }
//
//    public void setEatFolate(String eatFolate) {
//        this.eatFolate = eatFolate;
//    }
//
//    public String getEatAcyeterion() {
//        return eatAcyeterion;
//    }
//
//    public void setEatAcyeterion(String eatAcyeterion) {
//        this.eatAcyeterion = eatAcyeterion;
//    }
//
//    public String getSmoke() {
//        return smoke;
//    }
//
//    public void setSmoke(String smoke) {
//        this.smoke = smoke;
//    }
//
//    public String getDrink() {
//        return drink;
//    }
//
//    public void setDrink(String drink) {
//        this.drink = drink;
//    }
//
//    public String getEatOtherDrugs() {
//        return eatOtherDrugs;
//    }
//
//    public void setEatOtherDrugs(String eatOtherDrugs) {
//        this.eatOtherDrugs = eatOtherDrugs;
//    }
//
//    public String getWorkUnit() {
//        return workUnit;
//    }
//
//    public void setWorkUnit(String workUnit) {
//        this.workUnit = workUnit;
//    }
//
//    public String getHeight() {
//        return height;
//    }
//
//    public void setHeight(String height) {
//        this.height = height;
//    }
//
//    public String getWeight() {
//        return weight;
//    }
//
//    public void setWeight(String weight) {
//        this.weight = weight;
//    }
//
//    public Integer getVaginalDeliveryTimes() {
//        return vaginalDeliveryTimes;
//    }
//
//    public void setVaginalDeliveryTimes(Integer vaginalDeliveryTimes) {
//        this.vaginalDeliveryTimes = vaginalDeliveryTimes;
//    }
//
//    public Integer getCaesareanSectionTimes() {
//        return caesareanSectionTimes;
//    }
//
//    public void setCaesareanSectionTimes(Integer caesareanSectionTimes) {
//        this.caesareanSectionTimes = caesareanSectionTimes;
//    }
//
//    public Integer getMenarcheAge() {
//        return menarcheAge;
//    }
//
//    public void setMenarcheAge(Integer menarcheAge) {
//        this.menarcheAge = menarcheAge;
//    }
//
//    public Integer getMenstrualPeriod() {
//        return menstrualPeriod;
//    }
//
//    public void setMenstrualPeriod(Integer menstrualPeriod) {
//        this.menstrualPeriod = menstrualPeriod;
//    }
//
//    public Integer getMenstrualCycle() {
//        return menstrualCycle;
//    }
//
//    public void setMenstrualCycle(Integer menstrualCycle) {
//        this.menstrualCycle = menstrualCycle;
//    }
//
//    public String getDiseaseHistory() {
//        return diseaseHistory;
//    }
//
//    public void setDiseaseHistory(String diseaseHistory) {
//        this.diseaseHistory = diseaseHistory;
//    }
//
//    public String getOperationHistory() {
//        return operationHistory;
//    }
//
//    public void setOperationHistory(String operationHistory) {
//        this.operationHistory = operationHistory;
//    }
//
//    public String getOtherInformation() {
//        return otherInformation;
//    }
//
//    public void setOtherInformation(String otherInformation) {
//        this.otherInformation = otherInformation;
//    }
//
//    public String getEffective() {
//        return effective;
//    }
//
//    public void setEffective(String effective) {
//        this.effective = effective;
//    }
//
//    public String getStatus() {
//        return status;
//    }
//
//    public void setStatus(String status) {
//        this.status = status;
//    }
//
//    public Date getDueDate() {
//        return dueDate;
//    }
//
//    public void setDueDate(Date dueDate) {
//        this.dueDate = dueDate;
//    }
//
//    public String getHospital() {
//        return hospital;
//    }
//
//    public void setHospital(String hospital) {
//        this.hospital = hospital;
//    }
//
//    public String getHospitalName() {
//        return hospitalName;
//    }
//
//    public void setHospitalName(String hospitalName) {
//        this.hospitalName = hospitalName;
//    }
//
//    public String getBedNo() {
//        return bedNo;
//    }
//
//    public void setBedNo(String bedNo) {
//        this.bedNo = bedNo;
//    }
//
//    public String getOrderBedTime() {
//        return orderBedTime;
//    }
//
//    public void setOrderBedTime(String orderBedTime) {
//        this.orderBedTime = orderBedTime;
//    }
//
//    public String getInspectionPhase() {
//        return inspectionPhase;
//    }
//
//    public void setInspectionPhase(String inspectionPhase) {
//        this.inspectionPhase = inspectionPhase;
//    }
//
//    public String getDel() {
//        return del;
//    }
//
//    public void setDel(String del) {
//        this.del = del;
//    }
//
//    public Date getCzrq() {
//        return czrq;
//    }
//
//    public void setCzrq(Date czrq) {
//        this.czrq = czrq;
//    }
//}
package com.yihu.wlyy.entity.patient.prenatal;
import com.yihu.wlyy.entity.IdEntity;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.io.Serializable;
import java.util.Date;
/**
 * 产检预建卡
 * Created by yeshijie on 2017/6/6.
 */
@Entity
@Table(name = "wlyy_prenatal_inspector_pre_card")
public class PrenatalInspectorPreCard extends IdEntity implements Serializable{
    private String code;//产检code
    private String patient;//居民code
    private String name;//居民姓名
    private String ssc;//医保卡号
    private String idcard;//身份证号
    private Date birthday;//出生日期
    private String mobile;//手机号码
    private String doctor;//团队长
    private String doctorName;//医生名称
    private String jwDoctor;//基位医生code
    private Date lastMenstrualDate;//末次月经时间
    private String allergyHistory;//过敏史
    private String maritalStatus;//婚姻情况(1未婚,2已婚,3再婚,4丧偶,5离婚,6分居)
    private String residentialAddress;//现居住址
    private String residentialProvince;//住址省份
    private String residentialCity;//住址城市
    private String residentialTown;//住址区(县)
    private String permanentAddress;//户籍地址
    private String permanentProvince;//户籍省份
    private String permanentCity;//户籍城市
    private String permanentTown;//户籍区(县)
    private Date marryDate;//结婚日期
    private String spouseName;//配偶姓名
    private Date spouseBirthday;//配偶生日
    private String spouseMobile;//配偶手机
    private String eatFolate;//服用叶酸(1是,0否)
    private String eatAcyeterion;//服避孕药(1是,0否)
    private String smoke;//吸烟(1是,0否)
    private String drink;//饮酒(1是,0否)
    private String eatOtherDrugs;//服用其他药物
    private String workUnit;//工作单位
    private String height;//身高(cm)
    private String weight;//体重(kg)
    private Integer vaginalDeliveryTimes;//阴道分娩次数(次)
    private Integer caesareanSectionTimes;//剖宫产次数(次)
    private Integer menarcheAge;//初潮(岁)
    private Integer menstrualPeriod;//经期(天)
    private Integer menstrualCycle;//周期(天)
    private String diseaseHistory;//疾病史
    private String operationHistory;//手术史
    private String hypertensionHistory;//'高血压',
    private String diabetesHistory;//'糖尿病',
    private String mentalDiseaseHistory;//'精神病',
    private String hyperthroidismHistory;//'甲亢',
    private String bloodDiseaseHistory;//'血液病',
    private String epilepsiaHistory;//'癫痫',
    private String otherInformation;//其他
    private String effective;//是否有效(1有效,0无效)
    private String status;//状态
    private Date dueDate;//预产期
    private String hospital;//医院
    private String hospitalName;//医院名称
    private String bedNo;//床位
    private String orderBedTime;//预约床位时间
    private String inspectionPhase;//检查阶段(1社区检查,2医院检查)
    private String del;//是否删除(1正常,0废弃)
    private Date czrq;//创建日期
    private String uploadStatus;// '上传状态(0未上传,1上传成功,2上传失败)',
    private String uploadMsg; //上传记录\'',
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
    public String getPatient() {
        return patient;
    }
    public void setPatient(String patient) {
        this.patient = patient;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSsc() {
        return ssc;
    }
    public void setSsc(String ssc) {
        this.ssc = ssc;
    }
    public Date getBirthday() {
        return birthday;
    }
    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }
    public String getMobile() {
        return mobile;
    }
    public void setMobile(String mobile) {
        this.mobile = mobile;
    }
    public Date getLastMenstrualDate() {
        return lastMenstrualDate;
    }
    public void setLastMenstrualDate(Date lastMenstrualDate) {
        this.lastMenstrualDate = lastMenstrualDate;
    }
    public String getAllergyHistory() {
        return allergyHistory;
    }
    public void setAllergyHistory(String allergyHistory) {
        this.allergyHistory = allergyHistory;
    }
    public String getMaritalStatus() {
        return maritalStatus;
    }
    public void setMaritalStatus(String maritalStatus) {
        this.maritalStatus = maritalStatus;
    }
    public String getResidentialAddress() {
        return residentialAddress;
    }
    public void setResidentialAddress(String residentialAddress) {
        this.residentialAddress = residentialAddress;
    }
    public String getResidentialProvince() {
        return residentialProvince;
    }
    public void setResidentialProvince(String residentialProvince) {
        this.residentialProvince = residentialProvince;
    }
    public String getResidentialCity() {
        return residentialCity;
    }
    public void setResidentialCity(String residentialCity) {
        this.residentialCity = residentialCity;
    }
    public String getResidentialTown() {
        return residentialTown;
    }
    public void setResidentialTown(String residentialTown) {
        this.residentialTown = residentialTown;
    }
    public String getPermanentAddress() {
        return permanentAddress;
    }
    public void setPermanentAddress(String permanentAddress) {
        this.permanentAddress = permanentAddress;
    }
    public String getPermanentProvince() {
        return permanentProvince;
    }
    public void setPermanentProvince(String permanentProvince) {
        this.permanentProvince = permanentProvince;
    }
    public String getPermanentCity() {
        return permanentCity;
    }
    public void setPermanentCity(String permanentCity) {
        this.permanentCity = permanentCity;
    }
    public String getPermanentTown() {
        return permanentTown;
    }
    public void setPermanentTown(String permanentTown) {
        this.permanentTown = permanentTown;
    }
    public Date getMarryDate() {
        return marryDate;
    }
    public void setMarryDate(Date marryDate) {
        this.marryDate = marryDate;
    }
    public String getSpouseName() {
        return spouseName;
    }
    public void setSpouseName(String spouseName) {
        this.spouseName = spouseName;
    }
    public Date getSpouseBirthday() {
        return spouseBirthday;
    }
    public void setSpouseBirthday(Date spouseBirthday) {
        this.spouseBirthday = spouseBirthday;
    }
    public String getSpouseMobile() {
        return spouseMobile;
    }
    public void setSpouseMobile(String spouseMobile) {
        this.spouseMobile = spouseMobile;
    }
    public String getEatFolate() {
        return eatFolate;
    }
    public void setEatFolate(String eatFolate) {
        this.eatFolate = eatFolate;
    }
    public String getEatAcyeterion() {
        return eatAcyeterion;
    }
    public void setEatAcyeterion(String eatAcyeterion) {
        this.eatAcyeterion = eatAcyeterion;
    }
    public String getSmoke() {
        return smoke;
    }
    public void setSmoke(String smoke) {
        this.smoke = smoke;
    }
    public String getDrink() {
        return drink;
    }
    public void setDrink(String drink) {
        this.drink = drink;
    }
    public String getEatOtherDrugs() {
        return eatOtherDrugs;
    }
    public void setEatOtherDrugs(String eatOtherDrugs) {
        this.eatOtherDrugs = eatOtherDrugs;
    }
    public String getWorkUnit() {
        return workUnit;
    }
    public void setWorkUnit(String workUnit) {
        this.workUnit = workUnit;
    }
    public String getHeight() {
        return height;
    }
    public void setHeight(String height) {
        this.height = height;
    }
    public String getWeight() {
        return weight;
    }
    public void setWeight(String weight) {
        this.weight = weight;
    }
    public Integer getVaginalDeliveryTimes() {
        return vaginalDeliveryTimes;
    }
    public void setVaginalDeliveryTimes(Integer vaginalDeliveryTimes) {
        this.vaginalDeliveryTimes = vaginalDeliveryTimes;
    }
    public Integer getCaesareanSectionTimes() {
        return caesareanSectionTimes;
    }
    public void setCaesareanSectionTimes(Integer caesareanSectionTimes) {
        this.caesareanSectionTimes = caesareanSectionTimes;
    }
    public Integer getMenarcheAge() {
        return menarcheAge;
    }
    public void setMenarcheAge(Integer menarcheAge) {
        this.menarcheAge = menarcheAge;
    }
    public Integer getMenstrualPeriod() {
        return menstrualPeriod;
    }
    public void setMenstrualPeriod(Integer menstrualPeriod) {
        this.menstrualPeriod = menstrualPeriod;
    }
    public Integer getMenstrualCycle() {
        return menstrualCycle;
    }
    public void setMenstrualCycle(Integer menstrualCycle) {
        this.menstrualCycle = menstrualCycle;
    }
    public String getDiseaseHistory() {
        return diseaseHistory;
    }
    public void setDiseaseHistory(String diseaseHistory) {
        this.diseaseHistory = diseaseHistory;
    }
    public String getOperationHistory() {
        return operationHistory;
    }
    public void setOperationHistory(String operationHistory) {
        this.operationHistory = operationHistory;
    }
    public String getOtherInformation() {
        return otherInformation;
    }
    public void setOtherInformation(String otherInformation) {
        this.otherInformation = otherInformation;
    }
    public String getEffective() {
        return effective;
    }
    public void setEffective(String effective) {
        this.effective = effective;
    }
    public String getStatus() {
        return status;
    }
    public void setStatus(String status) {
        this.status = status;
    }
    public Date getDueDate() {
        return dueDate;
    }
    public void setDueDate(Date dueDate) {
        this.dueDate = dueDate;
    }
    public String getHospital() {
        return hospital;
    }
    public void setHospital(String hospital) {
        this.hospital = hospital;
    }
    public String getHospitalName() {
        return hospitalName;
    }
    public void setHospitalName(String hospitalName) {
        this.hospitalName = hospitalName;
    }
    public String getBedNo() {
        return bedNo;
    }
    public void setBedNo(String bedNo) {
        this.bedNo = bedNo;
    }
    public String getOrderBedTime() {
        return orderBedTime;
    }
    public void setOrderBedTime(String orderBedTime) {
        this.orderBedTime = orderBedTime;
    }
    public String getInspectionPhase() {
        return inspectionPhase;
    }
    public void setInspectionPhase(String inspectionPhase) {
        this.inspectionPhase = inspectionPhase;
    }
    public String getDel() {
        return del;
    }
    public void setDel(String del) {
        this.del = del;
    }
    public Date getCzrq() {
        return czrq;
    }
    public void setCzrq(Date czrq) {
        this.czrq = czrq;
    }
    public String getIdcard() {
        return idcard;
    }
    public void setIdcard(String idcard) {
        this.idcard = idcard;
    }
    public String getUploadStatus() {
        return uploadStatus;
    }
    public void setUploadStatus(String uploadStatus) {
        this.uploadStatus = uploadStatus;
    }
    public String getUploadMsg() {
        return uploadMsg;
    }
    public void setUploadMsg(String uploadMsg) {
        this.uploadMsg = uploadMsg;
    }
    public String getHypertensionHistory() {
        return hypertensionHistory;
    }
    public void setHypertensionHistory(String hypertensionHistory) {
        this.hypertensionHistory = hypertensionHistory;
    }
    public String getDiabetesHistory() {
        return diabetesHistory;
    }
    public void setDiabetesHistory(String diabetesHistory) {
        this.diabetesHistory = diabetesHistory;
    }
    public String getMentalDiseaseHistory() {
        return mentalDiseaseHistory;
    }
    public void setMentalDiseaseHistory(String mentalDiseaseHistory) {
        this.mentalDiseaseHistory = mentalDiseaseHistory;
    }
    public String getHyperthroidismHistory() {
        return hyperthroidismHistory;
    }
    public void setHyperthroidismHistory(String hyperthroidismHistory) {
        this.hyperthroidismHistory = hyperthroidismHistory;
    }
    public String getBloodDiseaseHistory() {
        return bloodDiseaseHistory;
    }
    public void setBloodDiseaseHistory(String bloodDiseaseHistory) {
        this.bloodDiseaseHistory = bloodDiseaseHistory;
    }
    public String getEpilepsiaHistory() {
        return epilepsiaHistory;
    }
    public void setEpilepsiaHistory(String epilepsiaHistory) {
        this.epilepsiaHistory = epilepsiaHistory;
    }
    public String getDoctor() {
        return doctor;
    }
    public void setDoctor(String doctor) {
        this.doctor = doctor;
    }
    public String getDoctorName() {
        return doctorName;
    }
    public void setDoctorName(String doctorName) {
        this.doctorName = doctorName;
    }
    public String getJwDoctor() {
        return jwDoctor;
    }
    public void setJwDoctor(String jwDoctor) {
        this.jwDoctor = jwDoctor;
    }
}

+ 1 - 1
common/common-entity/src/main/java/com/yihu/wlyy/entity/patient/prescription/Prescription.java

@ -37,7 +37,7 @@ public class Prescription extends IdEntity {
    private String patientName;             //患者名称
    private String ssc;//社保卡号
    private Integer type;                    //1 处方 2 续方
    private Integer status;                  //(-3 支付过期 -2 患者自己取消 )续方取消,-1 审核不通过 ,
    private Integer status;                  //(-4线下退费 -3 支付过期 -2 患者自己取消 )续方取消,-1 审核不通过 ,
    // (0 待审核, 2调整中,3调整成功, 4调整失败 ,10 医生审核(CA)通过)审核中,
    // 20药师审核中,21.药师审核失败,30 开方中/药师审核成功,31.开方失败/预结算失败,
    // (40开方完成/待支付 ,41 支付失败 )待支付,  50 支付成功/待配药,(60配药成功/待配送)等待领药,

+ 2 - 1
common/common-entity/src/main/java/com/yihu/wlyy/entity/patient/prescription/PrescriptionLog.java

@ -55,6 +55,7 @@ public class PrescriptionLog extends IdEntity {
    //状态枚举
    public enum PrescriptionLogStatus {
        pay_refund("线下退费",-4),
        //续方取消
        pay_outtime("支付超时", -3),
        patient_canel("患者自己取消", -2),
@ -124,7 +125,7 @@ public class PrescriptionLog extends IdEntity {
    private String code;                    //业务流程
    private String prescriptionCode;      //处方code 关联表wlyy_prescription code
    private Date createTime;               //处方创建时间
    private Integer status;                 //状态 (-3 支付过期 -2 患者自己取消 )续方取消,-1 审核不通过 ,
    private Integer status;                 //状态 (-4线下退费 -3 支付过期 -2 患者自己取消 )续方取消,-1 审核不通过 ,
                                               // (0 待审核, 2调整中,3调整成功, 4调整失败 ,10 医生审核(CA)通过)审核中,
                                            // 20药师审核中,21.药师审核失败,30 开方中/药师审核成功,31.开方失败/预结算失败,
                                            // (40开方完成/待支付 ,41 支付失败 )待支付,  50 支付成功/待配药,(60配药成功/待配送)等待领药,

+ 47 - 0
common/common-entity/src/main/java/com/yihu/wlyy/entity/patient/prescription/PrescriptionPay.java

@ -58,6 +58,53 @@ public class PrescriptionPay extends IdEntity {
    private String mxlist;//处方明细
    private Date createTime;//续方确认支付时间
    private Date czrq;//续方记录最后操作时间
    //    易联众新增查询返回字段v1.3.7
    private String medOrgNo;//医疗机构编号
    private String medOrgName;//医疗机构名称
    private Date traceTime;//交易成功时间
    private String traceNo;//支付平台跟踪号
    private String principalCardNo;//实际签约卡号
    public String getPrincipalCardNo() {
        return principalCardNo;
    }
    public void setPrincipalCardNo(String principalCardNo) {
        this.principalCardNo = principalCardNo;
    }
    public Date getTraceTime() {
        return traceTime;
    }
    public void setTraceTime(Date traceTime) {
        this.traceTime = traceTime;
    }
    public String getTraceNo() {
        return traceNo;
    }
    public void setTraceNo(String traceNo) {
        this.traceNo = traceNo;
    }
    public String getMedOrgNo() {
        return medOrgNo;
    }
    public void setMedOrgNo(String medOrgNo) {
        this.medOrgNo = medOrgNo;
    }
    public String getMedOrgName() {
        return medOrgName;
    }
    public void setMedOrgName(String medOrgName) {
        this.medOrgName = medOrgName;
    }
    public Integer getAccountBalance() {
        return accountBalance;

+ 159 - 0
common/common-entity/src/main/java/com/yihu/wlyy/entity/zydict/ZyZoneDict.java

@ -0,0 +1,159 @@
package com.yihu.wlyy.entity.zydict;
import com.yihu.wlyy.entity.IdEntity;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
 * 智业地区字典
 * Created by yeshijie on 2017/10/10.
 */
@Entity
@Table(name = "zy_zone_dict")
public class ZyZoneDict extends IdEntity{
    private String orgId;//ORG_ID
    private String zoneCode;//地区编码
    private String zoneName;//名称
    private String zoneLevel;//级别
    private String validFlag;//有效标志
    private String userCode;//用户code
    private String customCode;//
    private String spellCode;//
    private String wbzxCode;//
    private String sortNo;//
    private String createTime;//
    private String createOperator;//
    private String modifyTime;//
    private String modifyOperator;//
    private String remark;//
    private String healthArchiveNo;//
    public String getOrgId() {
        return orgId;
    }
    public void setOrgId(String orgId) {
        this.orgId = orgId;
    }
    public String getZoneCode() {
        return zoneCode;
    }
    public void setZoneCode(String zoneCode) {
        this.zoneCode = zoneCode;
    }
    public String getZoneName() {
        return zoneName;
    }
    public void setZoneName(String zoneName) {
        this.zoneName = zoneName;
    }
    public String getZoneLevel() {
        return zoneLevel;
    }
    public void setZoneLevel(String zoneLevel) {
        this.zoneLevel = zoneLevel;
    }
    public String getValidFlag() {
        return validFlag;
    }
    public void setValidFlag(String validFlag) {
        this.validFlag = validFlag;
    }
    public String getUserCode() {
        return userCode;
    }
    public void setUserCode(String userCode) {
        this.userCode = userCode;
    }
    public String getCustomCode() {
        return customCode;
    }
    public void setCustomCode(String customCode) {
        this.customCode = customCode;
    }
    public String getSpellCode() {
        return spellCode;
    }
    public void setSpellCode(String spellCode) {
        this.spellCode = spellCode;
    }
    public String getWbzxCode() {
        return wbzxCode;
    }
    public void setWbzxCode(String wbzxCode) {
        this.wbzxCode = wbzxCode;
    }
    public String getSortNo() {
        return sortNo;
    }
    public void setSortNo(String sortNo) {
        this.sortNo = sortNo;
    }
    public String getCreateTime() {
        return createTime;
    }
    public void setCreateTime(String createTime) {
        this.createTime = createTime;
    }
    public String getCreateOperator() {
        return createOperator;
    }
    public void setCreateOperator(String createOperator) {
        this.createOperator = createOperator;
    }
    public String getModifyTime() {
        return modifyTime;
    }
    public void setModifyTime(String modifyTime) {
        this.modifyTime = modifyTime;
    }
    public String getModifyOperator() {
        return modifyOperator;
    }
    public void setModifyOperator(String modifyOperator) {
        this.modifyOperator = modifyOperator;
    }
    public String getRemark() {
        return remark;
    }
    public void setRemark(String remark) {
        this.remark = remark;
    }
    public String getHealthArchiveNo() {
        return healthArchiveNo;
    }
    public void setHealthArchiveNo(String healthArchiveNo) {
        this.healthArchiveNo = healthArchiveNo;
    }
}

+ 19 - 15
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/controller/PrenatalInspectorController.java

@ -15,7 +15,7 @@ import org.springframework.web.bind.annotation.RestController;
 * Created by yeshijie on 2017/9/22.
 */
@RestController
@RequestMapping(value = "/third/prescription/")
@RequestMapping(value = "/third/prenatalInspector/")
@Api(description = "产检接口")
public class PrenatalInspectorController extends BaseController{
@ -25,14 +25,16 @@ public class PrenatalInspectorController extends BaseController{
    @RequestMapping(value = "getEhrMaternalFirstExamRecord",method = RequestMethod.POST)
    @ApiOperation("获取孕妇建卡信息")
    public Result getEhrMaternalFirstExamRecord(@ApiParam(name="idcard",value="身份证号",defaultValue = "352124761015122")
    public Result getEhrMaternalFirstExamRecord(@ApiParam(name="idcard",value="身份证号",defaultValue = "352124761015122,350204197512284026,222406198209202228,35062719831211252X")
                                                @RequestParam(value = "idcard",required = true) String idcard,
                                                @ApiParam(name="hospital",value="医院code",defaultValue = "3502030500")
                                                @RequestParam(value = "hospital",required = true) String hospital) throws Exception
                                                @RequestParam(value = "hospital",required = false) String hospital,
                                                @ApiParam(name="pregnancyNo",value="产检号")
                                                @RequestParam(value = "pregnancyNo",required = false) String pregnancyNo) throws Exception
    {
        try {
            String re = maternalService.getEhrMaternalFirstExamRecord(idcard,hospital);
            String re = maternalService.getEhrMaternalFirstExamRecord(idcard,hospital,pregnancyNo);
            return Result.success("获取孕妇建卡信息成功!",re);
        } catch (Exception ex) {
@ -46,10 +48,12 @@ public class PrenatalInspectorController extends BaseController{
    public Result getEhrMaternalReExamRecord(@ApiParam(name="idcard",value="身份证号",defaultValue = "352124761015122")
                                             @RequestParam(value = "idcard",required = true) String idcard,
                                             @ApiParam(name="hospital",value="医院code",defaultValue = "3502030500")
                                             @RequestParam(value = "hospital",required = true) String hospital) throws Exception{
                                             @RequestParam(value = "hospital",required = false) String hospital,
                                             @ApiParam(name="pregnancyNo",value="产检号")
                                             @RequestParam(value = "pregnancyNo",required = true) String pregnancyNo) throws Exception{
        try {
            String re = maternalService.getEhrMaternalReExamRecord(idcard,hospital);
            String re = maternalService.getEhrMaternalReExamRecord(idcard,hospital,pregnancyNo);
            return Result.success("获取非第一次产检记录成功!",re);
        } catch (Exception ex) {
@ -60,10 +64,10 @@ public class PrenatalInspectorController extends BaseController{
    @RequestMapping(value = "getEhrMaternalBedPrecontractRecord",method = RequestMethod.POST)
    @ApiOperation("获取产床预约信息")
    public Result getEhrMaternalBedPrecontractRecord(@ApiParam(name="idcard",value="身份证号",defaultValue = "352124761015122")
    public Result getEhrMaternalBedPrecontractRecord(@ApiParam(name="idcard",value="身份证号",defaultValue = "35062719831211252X")
                                                     @RequestParam(value = "idcard",required = true) String idcard,
                                                     @ApiParam(name="hospital",value="医院code",defaultValue = "3502030500")
                                                     @RequestParam(value = "hospital",required = true) String hospital) throws Exception{
                                                     @RequestParam(value = "hospital",required = false) String hospital) throws Exception{
        try {
            String re = maternalService.getEhrMaternalBedPrecontractRecord(idcard,hospital);
@ -80,7 +84,7 @@ public class PrenatalInspectorController extends BaseController{
    public Result getEhrMaternalPregnancyHighRecord(@ApiParam(name="idcard",value="身份证号",defaultValue = "352124761015122")
                                                        @RequestParam(value = "idcard",required = true) String idcard,
                                                    @ApiParam(name="hospital",value="医院code",defaultValue = "3502030500")
                                                        @RequestParam(value = "hospital",required = true) String hospital) throws Exception{
                                                        @RequestParam(value = "hospital",required = false) String hospital) throws Exception{
        try {
            String re = maternalService.getEhrMaternalPregnancyHighRecord(idcard,hospital);
@ -97,7 +101,7 @@ public class PrenatalInspectorController extends BaseController{
    public Result getEhrMaternalDeliveryRecord(@ApiParam(name="idcard",value="身份证号",defaultValue = "352124761015122")
                                                   @RequestParam(value = "idcard",required = true) String idcard,
                                               @ApiParam(name="hospital",value="医院code",defaultValue = "3502030500")
                                                   @RequestParam(value = "hospital",required = true) String hospital) throws Exception{
                                                   @RequestParam(value = "hospital",required = false) String hospital) throws Exception{
        try {
            String re = maternalService.getEhrMaternalDeliveryRecord(idcard,hospital);
@ -114,7 +118,7 @@ public class PrenatalInspectorController extends BaseController{
    public Result getEhrMaternalDeliveryChildRecord(@ApiParam(name="idcard",value="身份证号",defaultValue = "352124761015122")
                                                        @RequestParam(value = "idcard",required = true) String idcard,
                                                    @ApiParam(name="hospital",value="医院code",defaultValue = "3502030500")
                                                        @RequestParam(value = "hospital",required = true) String hospital) throws Exception{
                                                        @RequestParam(value = "hospital",required = false) String hospital) throws Exception{
        try {
            String re = maternalService.getEhrMaternalDeliveryChildRecord(idcard,hospital);
@ -131,7 +135,7 @@ public class PrenatalInspectorController extends BaseController{
    public Result getEhrMaternalChildMedicalRecord(@ApiParam(name="idcard",value="身份证号",defaultValue = "352124761015122")
                                                       @RequestParam(value = "idcard",required = true) String idcard,
                                                   @ApiParam(name="hospital",value="医院code",defaultValue = "3502030500")
                                                       @RequestParam(value = "hospital",required = true) String hospital) throws Exception{
                                                       @RequestParam(value = "hospital",required = false) String hospital) throws Exception{
        try {
            String re = maternalService.getEhrMaternalChildMedicalRecord(idcard,hospital);
@ -148,7 +152,7 @@ public class PrenatalInspectorController extends BaseController{
    public Result getEhrMaternalHomeVisitRecord(@ApiParam(name="idcard",value="身份证号",defaultValue = "352124761015122")
                                                    @RequestParam(value = "idcard",required = true) String idcard,
                                                @ApiParam(name="hospital",value="医院code",defaultValue = "3502030500")
                                                    @RequestParam(value = "hospital",required = true) String hospital) throws Exception{
                                                    @RequestParam(value = "hospital",required = false) String hospital) throws Exception{
        try {
            String re = maternalService.getEhrMaternalHomeVisitRecord(idcard,hospital);
@ -165,7 +169,7 @@ public class PrenatalInspectorController extends BaseController{
    public Result getEhrMaternalChildImmuneRecord(@ApiParam(name="idcard",value="身份证号",defaultValue = "352124761015122")
                                                      @RequestParam(value = "idcard",required = true) String idcard,
                                                  @ApiParam(name="hospital",value="医院code",defaultValue = "3502030500")
                                                      @RequestParam(value = "hospital",required = true) String hospital) throws Exception{
                                                      @RequestParam(value = "hospital",required = false) String hospital) throws Exception{
        try {
            String re = maternalService.getEhrMaternalChildImmuneRecord(idcard,hospital);
@ -182,7 +186,7 @@ public class PrenatalInspectorController extends BaseController{
    public Result getEhrMaternalPreFirstExamRecord(@ApiParam(name="idcard",value="身份证号",defaultValue = "352124761015122")
                                                       @RequestParam(value = "idcard",required = true) String idcard,
                                                   @ApiParam(name="hospital",value="医院code",defaultValue = "3502030500")
                                                       @RequestParam(value = "hospital",required = true) String hospital) throws Exception{
                                                       @RequestParam(value = "hospital",required = false) String hospital) throws Exception{
        try {
            String re = maternalService.getEhrMaternalPreFirstExamRecord(idcard,hospital);

+ 29 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/controller/PrescriptionController.java

@ -99,6 +99,20 @@ public class PrescriptionController extends BaseController{
		}
	}
	
	
	@RequestMapping(value = "cancelPrescription",method = RequestMethod.POST)
	@ApiOperation("接收订单退费消息")
	public Result cancelPrescription(@ApiParam(name="data",value="json串",defaultValue = "{}")
	                                 @RequestParam(value = "data",required = true) String data){
		try {
			
			return prescriptionService.cancelPrescription(data);
		}catch (Exception e){
			e.printStackTrace();
			return Result.error(e.getMessage());
		}
	}
	/***************************************获取im消息*****************************************************/
	@RequestMapping(value = "getLoglist",method = RequestMethod.GET)
@ -310,6 +324,21 @@ public class PrescriptionController extends BaseController{
			return Result.error(ex.getMessage());
		}
	}
	
	@RequestMapping(value = "getDataStatus",method = RequestMethod.POST)
	@ApiOperation("获取长处方相关数据状态接口")
	public Result affirmCARecipe(@ApiParam(name="type",value="数据类型:1:挂号数据;2:处方数据;3:结算数据",defaultValue = "")
	                             @RequestParam(value = "type",required = true) String type,
	                             @ApiParam(name="prescriptionCode",value="长处方单号",defaultValue = "")
	                             @RequestParam(value = "prescriptionCode",required = true) String prescriptionCode){
		try {
			String re = prescriptionService.getDataStatus(type,prescriptionCode);
			return Result.success("查询成功!",re);
		} catch (Exception ex) {
			ex.printStackTrace();
			return Result.error(ex.getMessage());
		}
	}
	/************************************ CA认证 ************************************************************/
	@RequestMapping(value = "RequestRealNameSoftCertAndSign",method = RequestMethod.POST)

+ 23 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/controller/SignController.java

@ -101,6 +101,29 @@ public class SignController {
            }
        }
    }
    
    @RequestMapping(value = "getSickMedicalSimpleListInfo",method = RequestMethod.POST)
    @ApiOperation("查询老年人体检记录接口")
    public Result getSickMedicalSimpleListInfo (
            @ApiParam(name="TIME_START",value="修改的开始时间",defaultValue = "2017-6-6 00:00:00")
            @RequestParam(value="TIME_START",required = false) String TIME_START,
            @ApiParam(name="TIME_END",value="修改的开始时间",defaultValue = "2017-6-7 23:59:59")
            @RequestParam(value="TIME_END",required = false) String TIME_END){
        try {
            String response = signZYService.getSickMedicalSimpleListInfo(TIME_START,TIME_END);
            return Result.success("查询成功!",response);
        } catch (Exception ex) {
            ex.printStackTrace();
            if(ex instanceof ApiException)
            {
                ApiException apiEx = (ApiException) ex;
                return Result.error(apiEx.errorCode(),ex.getMessage());
            }
            else{
                return Result.error(ex.getMessage());
            }
        }
    }

+ 2 - 2
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/HttpLogDao.java

@ -3,9 +3,9 @@
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 *******************************************************************************/
package com.yihu.wlyy.service.dao;
package com.yihu.wlyy.service.dao.log;
import com.yihu.wlyy.service.entity.HttpLog;
import com.yihu.wlyy.service.entity.log.HttpLog;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;

+ 11 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/log/HttpLogDetailDao.java

@ -0,0 +1,11 @@
package com.yihu.wlyy.service.dao.log;
import com.yihu.wlyy.service.entity.log.HttpLogDetail;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * Created by yeshijie on 2017/9/26.
 */
public interface HttpLogDetailDao extends PagingAndSortingRepository<HttpLogDetail, Long>, JpaSpecificationExecutor<HttpLogDetail> {
}

+ 2 - 2
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/ZyPushLogDao.java

@ -1,6 +1,6 @@
package com.yihu.wlyy.service.dao;
package com.yihu.wlyy.service.dao.log;
import com.yihu.wlyy.service.entity.ZyPushLog;
import com.yihu.wlyy.service.entity.log.ZyPushLog;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;

+ 11 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/log/ZyPushLogDetailDao.java

@ -0,0 +1,11 @@
package com.yihu.wlyy.service.dao.log;
import com.yihu.wlyy.service.entity.log.ZyPushLogDetail;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * Created by yeshijie on 2017/9/26.
 */
public interface ZyPushLogDetailDao extends PagingAndSortingRepository<ZyPushLogDetail, Long>, JpaSpecificationExecutor<ZyPushLogDetail> {
}

+ 19 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/prenatal/PrenatalInspectorPreCardDao.java

@ -0,0 +1,19 @@
package com.yihu.wlyy.service.dao.prenatal;
import com.yihu.wlyy.service.entity.prenatal.PrenatalInspectorPreCard;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * Created by yeshijie on 2017/6/6.
 */
public interface PrenatalInspectorPreCardDao extends PagingAndSortingRepository<PrenatalInspectorPreCard, Long>{
    @Query("select a from PrenatalInspectorPreCard a where a.patient = ?1 and a.del='1' order by a.lastMenstrualDate desc")
    List<PrenatalInspectorPreCard> findByPatient(String patient);
    @Query("select a from PrenatalInspectorPreCard a where a.code = ?1 ")
    PrenatalInspectorPreCard findByCode(String code);
}

+ 3 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/prescription/PrescriptionDao.java

@ -34,4 +34,7 @@ public interface PrescriptionDao extends PagingAndSortingRepository<Prescription
    @Modifying
    @Query("update Prescription p set p.jwPayStatus=1 where p.code=?1")
    void updatejwPayStatus(String prescriptionCode);
    
    @Query("from Prescription p where p.visitNo=?1")
    Prescription findByVisitNo(String visitNo);
}

+ 1 - 1
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/entity/HttpLog.java

@ -1,4 +1,4 @@
package com.yihu.wlyy.service.entity;
package com.yihu.wlyy.service.entity.log;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.wlyy.service.common.model.IdEntity;

+ 52 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/entity/log/HttpLogDetail.java

@ -0,0 +1,52 @@
package com.yihu.wlyy.service.entity.log;
import com.yihu.wlyy.service.common.model.IdEntity;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
/**
 * Created by yeshijie on 2017/9/26.
 */
@Entity
@Table(name = "wlyy_http_log_detail")
public class HttpLogDetail extends IdEntity {
    private Long code;//关联code和ZyPushLog表的id
    private String response;//'返回结果',
    private String error;//'报错信息',
    private Date createTime;// '创建时间',
    public Long getCode() {
        return code;
    }
    public void setCode(Long code) {
        this.code = code;
    }
    public String getResponse() {
        return response;
    }
    public void setResponse(String response) {
        this.response = response;
    }
    public String getError() {
        return error;
    }
    public void setError(String error) {
        this.error = error;
    }
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
}

+ 2 - 2
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/entity/ZyPushLog.java

@ -1,4 +1,4 @@
package com.yihu.wlyy.service.entity;
package com.yihu.wlyy.service.entity.log;
import com.yihu.wlyy.service.common.model.IdEntity;
@ -14,7 +14,7 @@ import java.util.Date;
@Table(name = "wlyy_zy_push_log")
public class ZyPushLog extends IdEntity {
    private String type;//'接口类型 1(推送续方),2续方请求',
    private String type;//'接口类型 1(推送续方),2续方请求 3妇幼保健',
    private String content;//'业务内容',
    private String api;//'调用接口',
    private String method;//'调用方式',

+ 61 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/entity/log/ZyPushLogDetail.java

@ -0,0 +1,61 @@
package com.yihu.wlyy.service.entity.log;
import com.yihu.wlyy.service.common.model.IdEntity;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
/**
 * Created by yeshijie on 2017/9/26.
 */
@Entity
@Table(name = "wlyy_zy_push_log_detail")
public class ZyPushLogDetail extends IdEntity {
    private Long code;//关联code和ZyPushLog表的code一致
    private String response;//'返回结果',
    private String request;//'请求数据',
    private String error;//'报错信息',
    private Date createTime;// '创建时间',
    public Long getCode() {
        return code;
    }
    public void setCode(Long code) {
        this.code = code;
    }
    public String getResponse() {
        return response;
    }
    public void setResponse(String response) {
        this.response = response;
    }
    public String getRequest() {
        return request;
    }
    public void setRequest(String request) {
        this.request = request;
    }
    public String getError() {
        return error;
    }
    public void setError(String error) {
        this.error = error;
    }
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
}

+ 550 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/entity/prenatal/PrenatalInspectorPreCard.java

@ -0,0 +1,550 @@
package com.yihu.wlyy.service.entity.prenatal;
import com.yihu.wlyy.service.common.model.IdEntity;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.io.Serializable;
import java.util.Date;
/**
 * 产检预建卡
 * Created by yeshijie on 2017/6/6.
 */
@Entity
@Table(name = "wlyy_prenatal_inspector_pre_card")
public class PrenatalInspectorPreCard extends IdEntity implements Serializable{
    private String code;//产检code
    private String patient;//居民code
    private String name;//居民姓名
    private String ssc;//医保卡号
    private String idcard;//身份证号
    private Date birthday;//出生日期
    private String mobile;//手机号码
    private String doctor;//团队长
    private String doctorName;//医生名称
    private String jwDoctor;//基位医生code
    private Date lastMenstrualDate;//末次月经时间
    private String allergyHistory;//过敏史
    private String maritalStatus;//婚姻情况(1未婚,2已婚,3再婚,4丧偶,5离婚,6分居)
    private String residentialAddress;//现居住址
    private String residentialProvince;//住址省份
    private String residentialCity;//住址城市
    private String residentialTown;//住址区(县)
    private String permanentAddress;//户籍地址
    private String permanentProvince;//户籍省份
    private String permanentCity;//户籍城市
    private String permanentTown;//户籍区(县)
    private Date marryDate;//结婚日期
    private String spouseName;//配偶姓名
    private Date spouseBirthday;//配偶生日
    private String spouseMobile;//配偶手机
    private String eatFolate;//服用叶酸(1是,0否)
    private String eatAcyeterion;//服避孕药(1是,0否)
    private String smoke;//吸烟(1是,0否)
    private String drink;//饮酒(1是,0否)
    private String eatOtherDrugs;//服用其他药物
    private String workUnit;//工作单位
    private String height;//身高(cm)
    private String weight;//体重(kg)
    private Integer vaginalDeliveryTimes;//阴道分娩次数(次)
    private Integer caesareanSectionTimes;//剖宫产次数(次)
    private Integer menarcheAge;//初潮(岁)
    private Integer menstrualPeriod;//经期(天)
    private Integer menstrualCycle;//周期(天)
    private String diseaseHistory;//疾病史
    private String operationHistory;//手术史
    private String hypertensionHistory;//'高血压',
    private String diabetesHistory;//'糖尿病',
    private String mentalDiseaseHistory;//'精神病',
    private String hyperthroidismHistory;//'甲亢',
    private String bloodDiseaseHistory;//'血液病',
    private String epilepsiaHistory;//'癫痫',
    private String otherInformation;//其他
    private String effective;//是否有效(1有效,0无效)
    private String status;//状态
    private Date dueDate;//预产期
    private String hospital;//医院
    private String hospitalName;//医院名称
    private String bedNo;//床位
    private String orderBedTime;//预约床位时间
    private String inspectionPhase;//检查阶段(1社区检查,2医院检查)
    private String del;//是否删除(1正常,0废弃)
    private Date czrq;//创建日期
    private String uploadStatus;// '上传状态(0未上传,1上传成功,2上传失败)',
    private String uploadMsg; //上传记录\'',
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
    public String getPatient() {
        return patient;
    }
    public void setPatient(String patient) {
        this.patient = patient;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSsc() {
        return ssc;
    }
    public void setSsc(String ssc) {
        this.ssc = ssc;
    }
    public Date getBirthday() {
        return birthday;
    }
    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }
    public String getMobile() {
        return mobile;
    }
    public void setMobile(String mobile) {
        this.mobile = mobile;
    }
    public Date getLastMenstrualDate() {
        return lastMenstrualDate;
    }
    public void setLastMenstrualDate(Date lastMenstrualDate) {
        this.lastMenstrualDate = lastMenstrualDate;
    }
    public String getAllergyHistory() {
        return allergyHistory;
    }
    public void setAllergyHistory(String allergyHistory) {
        this.allergyHistory = allergyHistory;
    }
    public String getMaritalStatus() {
        return maritalStatus;
    }
    public void setMaritalStatus(String maritalStatus) {
        this.maritalStatus = maritalStatus;
    }
    public String getResidentialAddress() {
        return residentialAddress;
    }
    public void setResidentialAddress(String residentialAddress) {
        this.residentialAddress = residentialAddress;
    }
    public String getResidentialProvince() {
        return residentialProvince;
    }
    public void setResidentialProvince(String residentialProvince) {
        this.residentialProvince = residentialProvince;
    }
    public String getResidentialCity() {
        return residentialCity;
    }
    public void setResidentialCity(String residentialCity) {
        this.residentialCity = residentialCity;
    }
    public String getResidentialTown() {
        return residentialTown;
    }
    public void setResidentialTown(String residentialTown) {
        this.residentialTown = residentialTown;
    }
    public String getPermanentAddress() {
        return permanentAddress;
    }
    public void setPermanentAddress(String permanentAddress) {
        this.permanentAddress = permanentAddress;
    }
    public String getPermanentProvince() {
        return permanentProvince;
    }
    public void setPermanentProvince(String permanentProvince) {
        this.permanentProvince = permanentProvince;
    }
    public String getPermanentCity() {
        return permanentCity;
    }
    public void setPermanentCity(String permanentCity) {
        this.permanentCity = permanentCity;
    }
    public String getPermanentTown() {
        return permanentTown;
    }
    public void setPermanentTown(String permanentTown) {
        this.permanentTown = permanentTown;
    }
    public Date getMarryDate() {
        return marryDate;
    }
    public void setMarryDate(Date marryDate) {
        this.marryDate = marryDate;
    }
    public String getSpouseName() {
        return spouseName;
    }
    public void setSpouseName(String spouseName) {
        this.spouseName = spouseName;
    }
    public Date getSpouseBirthday() {
        return spouseBirthday;
    }
    public void setSpouseBirthday(Date spouseBirthday) {
        this.spouseBirthday = spouseBirthday;
    }
    public String getSpouseMobile() {
        return spouseMobile;
    }
    public void setSpouseMobile(String spouseMobile) {
        this.spouseMobile = spouseMobile;
    }
    public String getEatFolate() {
        return eatFolate;
    }
    public void setEatFolate(String eatFolate) {
        this.eatFolate = eatFolate;
    }
    public String getEatAcyeterion() {
        return eatAcyeterion;
    }
    public void setEatAcyeterion(String eatAcyeterion) {
        this.eatAcyeterion = eatAcyeterion;
    }
    public String getSmoke() {
        return smoke;
    }
    public void setSmoke(String smoke) {
        this.smoke = smoke;
    }
    public String getDrink() {
        return drink;
    }
    public void setDrink(String drink) {
        this.drink = drink;
    }
    public String getEatOtherDrugs() {
        return eatOtherDrugs;
    }
    public void setEatOtherDrugs(String eatOtherDrugs) {
        this.eatOtherDrugs = eatOtherDrugs;
    }
    public String getWorkUnit() {
        return workUnit;
    }
    public void setWorkUnit(String workUnit) {
        this.workUnit = workUnit;
    }
    public String getHeight() {
        return height;
    }
    public void setHeight(String height) {
        this.height = height;
    }
    public String getWeight() {
        return weight;
    }
    public void setWeight(String weight) {
        this.weight = weight;
    }
    public Integer getVaginalDeliveryTimes() {
        return vaginalDeliveryTimes;
    }
    public void setVaginalDeliveryTimes(Integer vaginalDeliveryTimes) {
        this.vaginalDeliveryTimes = vaginalDeliveryTimes;
    }
    public Integer getCaesareanSectionTimes() {
        return caesareanSectionTimes;
    }
    public void setCaesareanSectionTimes(Integer caesareanSectionTimes) {
        this.caesareanSectionTimes = caesareanSectionTimes;
    }
    public Integer getMenarcheAge() {
        return menarcheAge;
    }
    public void setMenarcheAge(Integer menarcheAge) {
        this.menarcheAge = menarcheAge;
    }
    public Integer getMenstrualPeriod() {
        return menstrualPeriod;
    }
    public void setMenstrualPeriod(Integer menstrualPeriod) {
        this.menstrualPeriod = menstrualPeriod;
    }
    public Integer getMenstrualCycle() {
        return menstrualCycle;
    }
    public void setMenstrualCycle(Integer menstrualCycle) {
        this.menstrualCycle = menstrualCycle;
    }
    public String getDiseaseHistory() {
        return diseaseHistory;
    }
    public void setDiseaseHistory(String diseaseHistory) {
        this.diseaseHistory = diseaseHistory;
    }
    public String getOperationHistory() {
        return operationHistory;
    }
    public void setOperationHistory(String operationHistory) {
        this.operationHistory = operationHistory;
    }
    public String getOtherInformation() {
        return otherInformation;
    }
    public void setOtherInformation(String otherInformation) {
        this.otherInformation = otherInformation;
    }
    public String getEffective() {
        return effective;
    }
    public void setEffective(String effective) {
        this.effective = effective;
    }
    public String getStatus() {
        return status;
    }
    public void setStatus(String status) {
        this.status = status;
    }
    public Date getDueDate() {
        return dueDate;
    }
    public void setDueDate(Date dueDate) {
        this.dueDate = dueDate;
    }
    public String getHospital() {
        return hospital;
    }
    public void setHospital(String hospital) {
        this.hospital = hospital;
    }
    public String getHospitalName() {
        return hospitalName;
    }
    public void setHospitalName(String hospitalName) {
        this.hospitalName = hospitalName;
    }
    public String getBedNo() {
        return bedNo;
    }
    public void setBedNo(String bedNo) {
        this.bedNo = bedNo;
    }
    public String getOrderBedTime() {
        return orderBedTime;
    }
    public void setOrderBedTime(String orderBedTime) {
        this.orderBedTime = orderBedTime;
    }
    public String getInspectionPhase() {
        return inspectionPhase;
    }
    public void setInspectionPhase(String inspectionPhase) {
        this.inspectionPhase = inspectionPhase;
    }
    public String getDel() {
        return del;
    }
    public void setDel(String del) {
        this.del = del;
    }
    public Date getCzrq() {
        return czrq;
    }
    public void setCzrq(Date czrq) {
        this.czrq = czrq;
    }
    public String getIdcard() {
        return idcard;
    }
    public void setIdcard(String idcard) {
        this.idcard = idcard;
    }
    public String getUploadStatus() {
        return uploadStatus;
    }
    public void setUploadStatus(String uploadStatus) {
        this.uploadStatus = uploadStatus;
    }
    public String getUploadMsg() {
        return uploadMsg;
    }
    public void setUploadMsg(String uploadMsg) {
        this.uploadMsg = uploadMsg;
    }
    public String getHypertensionHistory() {
        return hypertensionHistory;
    }
    public void setHypertensionHistory(String hypertensionHistory) {
        this.hypertensionHistory = hypertensionHistory;
    }
    public String getDiabetesHistory() {
        return diabetesHistory;
    }
    public void setDiabetesHistory(String diabetesHistory) {
        this.diabetesHistory = diabetesHistory;
    }
    public String getMentalDiseaseHistory() {
        return mentalDiseaseHistory;
    }
    public void setMentalDiseaseHistory(String mentalDiseaseHistory) {
        this.mentalDiseaseHistory = mentalDiseaseHistory;
    }
    public String getHyperthroidismHistory() {
        return hyperthroidismHistory;
    }
    public void setHyperthroidismHistory(String hyperthroidismHistory) {
        this.hyperthroidismHistory = hyperthroidismHistory;
    }
    public String getBloodDiseaseHistory() {
        return bloodDiseaseHistory;
    }
    public void setBloodDiseaseHistory(String bloodDiseaseHistory) {
        this.bloodDiseaseHistory = bloodDiseaseHistory;
    }
    public String getEpilepsiaHistory() {
        return epilepsiaHistory;
    }
    public void setEpilepsiaHistory(String epilepsiaHistory) {
        this.epilepsiaHistory = epilepsiaHistory;
    }
    public String getDoctor() {
        return doctor;
    }
    public void setDoctor(String doctor) {
        this.doctor = doctor;
    }
    public String getDoctorName() {
        return doctorName;
    }
    public void setDoctorName(String doctorName) {
        this.doctorName = doctorName;
    }
    public String getJwDoctor() {
        return jwDoctor;
    }
    public void setJwDoctor(String jwDoctor) {
        this.jwDoctor = jwDoctor;
    }
}

+ 2 - 1
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/entity/prescription/PrescriptionLog.java

@ -53,6 +53,7 @@ public class PrescriptionLog extends IdEntity {
    //状态枚举
    public enum PrescriptionLogStatus {
        //续方取消
        pay_refund("线下退费",-4),
        pay_outtime("支付超时", -3),
        patient_canel("患者自己取消", -2),
@ -121,7 +122,7 @@ public class PrescriptionLog extends IdEntity {
    private String code;                    //业务流程
    private String prescriptionCode;      //处方code 关联表wlyy_prescription code
    private Date createTime;               //处方创建时间
    private Integer status;                 //状态 (-3 支付过期 -2 患者自己取消 -1 审核不通过 , 0 待审核, 2调整中 10 审核通过/开方中  , 20开方完成/待支付, 21 支付失败 , 30 支付成功/待配药 , 40配药成功/待配送  41配送失败 42分配健管师 45配送中   49配送到服务站  100配送到患者手中/已完成)
    private Integer status;                 //状态 (-4线下退费,-3 支付过期 -2 患者自己取消 -1 审核不通过 , 0 待审核, 2调整中 10 审核通过/开方中  , 20开方完成/待支付, 21 支付失败 , 30 支付成功/待配药 , 40配药成功/待配送  41配送失败 42分配健管师 45配送中   49配送到服务站  100配送到患者手中/已完成)
    private Integer type;                   //类型: 1智业对接 2易联众对接  3创建处方 4 审核  5付款 6 配送 7完成
    private String userCode;                  //医生或者患者code

+ 5 - 3
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/entity/prescription/VO/PrescriptionExpressageVO.java

@ -48,10 +48,12 @@ public class PrescriptionExpressageVO extends Result {
    //付款方式:1:寄方付,2:收方付 3:第三方付
    private Integer pay_method;
    private String receive_time;//收件时间
    
    private Integer dispensaryType;//取药类型:1 自取 2快递配送 3健管师配送
    //收件时间
    private String receive_time;
    
    //取药类型:1 自取 2快递配送 3健管师配送
    private Integer dispensaryType;
    //订单的药品详情
    private List<PrescriptionInfo> infos = new ArrayList<>();

+ 64 - 18
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/service/LogService.java

@ -2,15 +2,20 @@ package com.yihu.wlyy.service.service;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.yihu.wlyy.service.dao.HttpLogDao;
import com.yihu.wlyy.service.dao.ZyPushLogDao;
import com.yihu.wlyy.service.entity.HttpLog;
import com.yihu.wlyy.service.entity.ZyPushLog;
import com.yihu.wlyy.service.dao.log.HttpLogDao;
import com.yihu.wlyy.service.dao.log.HttpLogDetailDao;
import com.yihu.wlyy.service.dao.log.ZyPushLogDao;
import com.yihu.wlyy.service.dao.log.ZyPushLogDetailDao;
import com.yihu.wlyy.service.entity.log.HttpLog;
import com.yihu.wlyy.service.entity.log.HttpLogDetail;
import com.yihu.wlyy.service.entity.log.ZyPushLog;
import com.yihu.wlyy.service.entity.log.ZyPushLogDetail;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.UUID;
/**
 * Created by hzp on 2016/9/24.
@ -25,6 +30,10 @@ public class LogService {
    private HttpLogDao httpLogDao;
    @Autowired
    private ZyPushLogDao zyPushLogDao;
    @Autowired
    private HttpLogDetailDao httpLogDetailDao;
    @Autowired
    private ZyPushLogDetailDao zyPushLogDetailDao;
    @Autowired
    private SystemDictService systemDictService;
@ -33,6 +42,10 @@ public class LogService {
    public String onePayType = "3";
    public String caType = "4";
    public String getCode() {
        return UUID.randomUUID().toString().replaceAll("-", "");
    }
    /**
     * 新增开放api调用日志
     **/
@ -47,10 +60,18 @@ public class LogService {
            log.setParams(params);
            log.setCreateTime(new Date());
            log.setCreateTime(new Date());
            log.setResponse(response);
            log.setError(error);
//            log.setResponse(response);
//            log.setError(error);
            log.setStatus(isSuccess?"1":"0");
            httpLogDao.save(log);
            //明细表
            HttpLogDetail detail = new HttpLogDetail();
            detail.setCode(log.getId());
            detail.setCreateTime(new Date());
            detail.setResponse(response);
            detail.setError(error);
            httpLogDetailDao.save(detail);
        }
        catch (Exception ex)
        {
@ -67,18 +88,31 @@ public class LogService {
            log.setCreateTime(new Date());
            log.setApi(api);
            log.setContent(content);
            log.setError(error);
//            log.setError(error);
            log.setMethod(method);
            log.setRequest(request);
            if(re.length()>10652261){
                log.setResponse("超过longtext限制");
            }else {
                log.setResponse(JSONObject.toJSONString(re, SerializerFeature.WriteMapNullValue));
            }
//            log.setRequest(request);
//            if(re.length()>10652261){
//                log.setResponse("超过longtext限制");
//            }else {
//                log.setResponse(JSONObject.toJSONString(re, SerializerFeature.WriteMapNullValue));
//            }
            log.setRetryTimes(0);
            log.setStatus(status);
            log.setType(type);
            zyPushLogDao.save(log);
            //明细表
            ZyPushLogDetail detail = new ZyPushLogDetail();
            detail.setCode(log.getId());
            detail.setError(error);
            detail.setCreateTime(new Date());
            if(re.length()>10652261){
                detail.setResponse("超过longtext限制");
            }else {
                detail.setResponse(JSONObject.toJSONString(re, SerializerFeature.WriteMapNullValue));
            }
            detail.setRequest(request);
            zyPushLogDetailDao.save(detail);
        }catch (Exception e){
            e.printStackTrace();
            logger.info("保存数据日志出错");
@ -112,14 +146,26 @@ public class LogService {
                log.setHeader(header);
                log.setParams(params);
                log.setCreateTime(new Date());
//                if(response.length()>10652261){
//                    log.setResponse("超过longtext限制");
//                }else {
//                    log.setResponse(response);
//                }
//                log.setError(error);
                log.setStatus(isSuccess?"1":"0");
                httpLogDao.save(log);
                //明细表
                HttpLogDetail detail = new HttpLogDetail();
                detail.setCode(log.getId());
                detail.setCreateTime(new Date());
                if(response.length()>10652261){
                    log.setResponse("超过longtext限制");
                    detail.setResponse("超过longtext限制");
                }else {
                    log.setResponse(response);
                    detail.setResponse(response);
                }
                log.setError(error);
                log.setStatus(isSuccess?"1":"0");
                httpLogDao.save(log);
                detail.setError(error);
                httpLogDetailDao.save(detail);
            }
        }
        catch (Exception ex)

+ 0 - 8
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/service/OpenCountService.java

@ -2,22 +2,14 @@ package com.yihu.wlyy.service.service;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.sun.prism.impl.paint.PaintUtil;
import com.yihu.wlyy.service.common.util.StringUtil;
import com.yihu.wlyy.service.dao.HospitalMappingDao;
import com.yihu.wlyy.service.dao.HttpLogDao;
import com.yihu.wlyy.service.dao.QuotaResultDao;
import com.yihu.wlyy.service.dao.SignFamilyLogDao;
import com.yihu.wlyy.service.entity.HospitalMapping;
import com.yihu.wlyy.service.entity.HttpLog;
import com.yihu.wlyy.service.entity.QuotaResult;
import com.yihu.wlyy.service.entity.SignFamilyLog;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
/**

+ 12 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/service/SignZYService.java

@ -160,4 +160,16 @@ public class SignZYService {
        String response = zysoftService.getSickFamilyDoctorSpecialistControlByIdcard(identity_card_no,hospitalMapping[0],hospitalMapping[1]);
        return response;
    }
    
    /**
     * 查询老年人体检记录接口
     * @param time_start
     * @param time_end
     * @return
     */
	public String getSickMedicalSimpleListInfo(String time_start, String time_end) throws Exception{
        String[] hospitalMapping = getHospitalMapping(null); //获取机构映射
        String response = zysoftService.getSickMedicalSimpleListInfo(time_start,time_end,hospitalMapping[0],hospitalMapping[1]);
        return response;
	}
}

+ 21 - 9
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/service/ZysoftBaseService.java

@ -8,9 +8,11 @@ import com.yihu.wlyy.service.common.http.HttpApiException;
import com.yihu.wlyy.service.common.model.Result;
import com.yihu.wlyy.service.common.util.StringUtil;
import com.yihu.wlyy.service.dao.HospitalMappingDao;
import com.yihu.wlyy.service.dao.ZyPushLogDao;
import com.yihu.wlyy.service.dao.log.ZyPushLogDao;
import com.yihu.wlyy.service.dao.log.ZyPushLogDetailDao;
import com.yihu.wlyy.service.entity.HospitalMapping;
import com.yihu.wlyy.service.entity.ZyPushLog;
import com.yihu.wlyy.service.entity.log.ZyPushLog;
import com.yihu.wlyy.service.entity.log.ZyPushLogDetail;
import com.zoe.phip.ssp.sdk.ApiException;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -39,7 +41,8 @@ public class ZysoftBaseService {
    private HospitalMappingDao hospitalMappingDao;
    @Autowired
    private ZyPushLogDao zyPushLogDao;
    @Autowired
    private ZyPushLogDetailDao zyPushLogDetailDao;
    //默认重复次数
    private int retryTimes = 3;
@ -73,15 +76,24 @@ public class ZysoftBaseService {
        log.setCreateTime(new Date());
        log.setApi(api);
        log.setContent(content);
        log.setError(error);
//        log.setError(error);
        log.setMethod(method);
        log.setRequest(request);
        log.setResponse(JSONObject.toJSONString(re,SerializerFeature.WriteMapNullValue));
//        log.setRequest(request);
//        log.setResponse(JSONObject.toJSONString(re,SerializerFeature.WriteMapNullValue));
        log.setRetryTimes(0);
        log.setStatus(status);
        log.setType(type);
        zyPushLogDao.save(log);
        //明细表
        ZyPushLogDetail detail = new ZyPushLogDetail();
        detail.setCode(log.getId());
        detail.setError(error);
        detail.setCreateTime(new Date());
        detail.setResponse(JSONObject.toJSONString(re,SerializerFeature.WriteMapNullValue));
        detail.setRequest(request);
        zyPushLogDetailDao.save(detail);
        return re;
    }
@ -186,7 +198,7 @@ public class ZysoftBaseService {
    /**
     * 基卫二次封装Post接口
     */
    public String postSecond(String api,String content, Map<String,String> params,JSONObject jsonParams, Map<String,String> headers,boolean needRetry,Integer apiType) throws Exception
    public String postSecond(String api,String content, Map<String,String> params,JSONObject jsonParams, Map<String,String> headers,boolean needRetry,Integer apiType,String type) throws Exception
    {
        String re = "";
        headers.put("INTERFACE",api);
@ -232,7 +244,7 @@ public class ZysoftBaseService {
//            com.alibaba.fastjson.JSONObject j = com.alibaba.fastjson.JSONObject.parseObject(re);
            //保存http日志
//            logService.saveHttpLog(isSuccess,api,content,method,msgHeader,msgBody,re,error);
            logService.saveZyPushLog(api,content,null,"POST",msgHeader+","+msgBody,re,"1","2");
            logService.saveZyPushLog(api,content,null,"POST",msgHeader+","+msgBody,re,"1",type);
        }
        catch (Exception ex)
        {
@ -243,7 +255,7 @@ public class ZysoftBaseService {
            //保存http日志
//            logService.saveHttpLog(isSuccess,api,content,method,msgHeader,msgBody,re,error);
            logService.saveZyPushLog(api,content,error,"POST",msgHeader+","+msgBody,re,"0","2");
            logService.saveZyPushLog(api,content,error,"POST",msgHeader+","+msgBody,re,"0",type);
            if(ex instanceof ApiException)
            {

+ 90 - 23
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/service/ZysoftMaternalService.java

@ -1,5 +1,13 @@
package com.yihu.wlyy.service.service;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yihu.wlyy.service.common.util.DateUtil;
import com.yihu.wlyy.service.dao.SignFamilyDao;
import com.yihu.wlyy.service.dao.prenatal.PrenatalInspectorPreCardDao;
import com.yihu.wlyy.service.entity.SignFamily;
import com.yihu.wlyy.service.entity.prenatal.PrenatalInspectorPreCard;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
@ -13,11 +21,16 @@ import java.util.Map;
@Service
public class ZysoftMaternalService extends ZysoftBaseService{
    @Autowired
    private PrenatalInspectorPreCardDao preCardDao;
    @Autowired
    private SignFamilyDao signFamilyDao;
    /**
     * 7.32获取孕妇建卡信息(妇幼保健)
     */
    public String getEhrMaternalFirstExamRecord(String idcard,String hospitalCode) throws Exception
    public String getEhrMaternalFirstExamRecord(String idcard,String hospitalCode,String pregnancyNo) throws Exception
    {
        String[] hospitalMapping = getHospitalMapping(hospitalCode); //获取机构映射
        String hospital = hospitalMapping[0];
@ -30,8 +43,9 @@ public class ZysoftMaternalService extends ZysoftBaseService{
        Map<String,String> params = new HashMap<>();
        params.put("ORG_CODE",hospital);
        params.put("IDENTITY_CARD_NO",idcard);
        params.put("PREGNANCY_NO",pregnancyNo);
        String response = postSecond("getEhrMaternalFirstExamRecord","获取孕妇建卡信息",params,null,header,false,1);
        String response = postSecond("getEhrMaternalFirstExamRecord","获取孕妇建卡信息",params,null,header,false,1,"3");
        return response;
    }
@ -40,10 +54,11 @@ public class ZysoftMaternalService extends ZysoftBaseService{
     * 7.33 获取非第一次产检记录
     * @param idcard
     * @param hospitalCode
     * @param pregnancyNo 产检号
     * @return
     * @throws Exception
     */
    public String getEhrMaternalReExamRecord(String idcard,String hospitalCode) throws Exception{
    public String getEhrMaternalReExamRecord(String idcard,String hospitalCode,String pregnancyNo) throws Exception{
        String[] hospitalMapping = getHospitalMapping(hospitalCode); //获取机构映射
        String hospital = hospitalMapping[0];
@ -56,8 +71,9 @@ public class ZysoftMaternalService extends ZysoftBaseService{
        Map<String,String> params = new HashMap<>();
        params.put("ORG_CODE",hospital);
        params.put("IDENTITY_CARD_NO",idcard);
        params.put("PREGNANCY_NO",pregnancyNo);
        String response = postSecond("getEhrMaternalReExamRecord","获取非第一次产检记录",params,null,header,false,1);
        String response = postSecond("getEhrMaternalReExamRecord","获取非第一次产检记录",params,null,header,false,1,"3");
        return response;
    }
@ -82,7 +98,7 @@ public class ZysoftMaternalService extends ZysoftBaseService{
        params.put("ORG_CODE",hospital);
        params.put("IDENTITY_CARD_NO",idcard);
        String response = postSecond("getEhrMaternalBedPrecontractRecord","获取产床预约信息",params,null,header,false,1);
        String response = postSecond("getEhrMaternalBedPrecontractRecord","获取产床预约信息",params,null,header,false,1,"3");
        return response;
    }
@ -107,7 +123,7 @@ public class ZysoftMaternalService extends ZysoftBaseService{
        params.put("ORG_CODE",hospital);
        params.put("IDENTITY_CARD_NO",idcard);
        String response = postSecond("getEhrMaternalPregnancyHighRecord","获取高危产妇信息",params,null,header,false,1);
        String response = postSecond("getEhrMaternalPregnancyHighRecord","获取高危产妇信息",params,null,header,false,1,"3");
        return response;
    }
@ -132,7 +148,7 @@ public class ZysoftMaternalService extends ZysoftBaseService{
        params.put("ORG_CODE",hospital);
        params.put("IDENTITY_CARD_NO",idcard);
        String response = postSecond("getEhrMaternalDeliveryRecord","获取孕妇分娩信息",params,null,header,false,1);
        String response = postSecond("getEhrMaternalDeliveryRecord","获取孕妇分娩信息",params,null,header,false,1,"3");
        return response;
    }
@ -157,7 +173,7 @@ public class ZysoftMaternalService extends ZysoftBaseService{
        params.put("ORG_CODE",hospital);
        params.put("IDENTITY_CARD_NO",idcard);
        String response = postSecond("getEhrMaternalDeliveryChildRecord","获取新生儿基本信息",params,null,header,false,1);
        String response = postSecond("getEhrMaternalDeliveryChildRecord","获取新生儿基本信息",params,null,header,false,1,"3");
        return response;
    }
@ -182,7 +198,7 @@ public class ZysoftMaternalService extends ZysoftBaseService{
        params.put("ORG_CODE",hospital);
        params.put("IDENTITY_CARD_NO",idcard);
        String response = postSecond("getEhrMaternalChildMedicalRecord","获取儿童健康体检0-6岁记录",params,null,header,false,1);
        String response = postSecond("getEhrMaternalChildMedicalRecord","获取儿童健康体检0-6岁记录",params,null,header,false,1,"3");
        return response;
    }
@ -207,7 +223,7 @@ public class ZysoftMaternalService extends ZysoftBaseService{
        params.put("ORG_CODE",hospital);
        params.put("IDENTITY_CARD_NO",idcard);
        String response = postSecond("getEhrMaternalHomeVisitRecord","获取新生儿访视信息",params,null,header,false,1);
        String response = postSecond("getEhrMaternalHomeVisitRecord","获取新生儿访视信息",params,null,header,false,1,"3");
        return response;
    }
@ -232,7 +248,7 @@ public class ZysoftMaternalService extends ZysoftBaseService{
        params.put("ORG_CODE",hospital);
        params.put("IDENTITY_CARD_NO",idcard);
        String response = postSecond("getEhrMaternalChildImmuneRecord","获取新生儿免疫记录",params,null,header,false,1);
        String response = postSecond("getEhrMaternalChildImmuneRecord","获取新生儿免疫记录",params,null,header,false,1,"3");
        return response;
    }
@ -256,7 +272,7 @@ public class ZysoftMaternalService extends ZysoftBaseService{
        params.put("ORG_CODE",hospital);
        params.put("IDENTITY_CARD_NO",idcard);
        String response = postSecond("getEhrMaternalPreFirstExamRecord","获取孕妇预建卡信息",params,null,header,false,1);
        String response = postSecond("getEhrMaternalPreFirstExamRecord","获取孕妇预建卡信息",params,null,header,false,1,"3");
        return response;
    }
@ -268,19 +284,70 @@ public class ZysoftMaternalService extends ZysoftBaseService{
     * @throws Exception
     */
    public String SaveEhrMaternalPreFirstExamRecord(String code) throws Exception{
        String[] hospitalMapping = getHospitalMapping(null); //获取机构映射
        PrenatalInspectorPreCard preCard = preCardDao.findByCode(code);
        JSONObject json = new JSONObject();
        json.put("SICK_NAME",preCard.getName());//姓名
        json.put("IDENTITY_CARD_NO",preCard.getIdcard());//身份证号码
        json.put("HEALTH_CARD_NO",preCard.getSsc());//孕妇医保卡
        json.put("BIRTHDAY",DateUtil.dateToStrLong(preCard.getBirthday()));//出生日期
        json.put("SICK_PHONE",preCard.getMobile());//手机号码
        json.put("MENSES_LAST",DateUtil.dateToStrLong(preCard.getLastMenstrualDate()));//末次月经
        json.put("ALLERGIC_HISTORY",preCard.getAllergyHistory());//过敏史
        json.put("MARITAL_STATE",preCard.getMaritalStatus());//婚姻情况
        json.put("SICK_ADDRESS",preCard.getResidentialAddress());//现居地址
        json.put("PERMANENT_ADDRESS_",preCard.getPermanentAddress());//户籍地址
        json.put("WEDDING_DATE_",DateUtil.dateToStrLong(preCard.getMarryDate()));//结婚日期
        json.put("LOVER_NAME",preCard.getSpouseName());//配偶姓名
        json.put("LOVER_BIRTHDAY",DateUtil.dateToStrLong(preCard.getSpouseBirthday()));//配偶生日
        json.put("LOVER_PHONE",preCard.getSpouseMobile());//配偶手机
        json.put("TAKE_FOLACIN",preCard.getEatFolate());//是否服用叶酸
        json.put("TAKE_ACYETERION",preCard.getEatAcyeterion());//是否服避孕药
        json.put("SMOKE",preCard.getSmoke());//是否吸烟
        json.put("DRUNK",preCard.getDrink());//是否饮酒
        json.put("PREGNANCY_NOW_HISTROY_OTHER",preCard.getEatOtherDrugs());//服用其他药物
        json.put("SICK_WORK_COMPANY",preCard.getWorkUnit());//工作单位
        json.put("HEIGHT",preCard.getHeight());//身高
        json.put("WEIGHT",preCard.getWeight());//体重
        json.put("VAGINAL_DELIVERY_TIMES",preCard.getVaginalDeliveryTimes());//阴道分娩次数
        json.put("CESAREAN_SECTION_TIMES",preCard.getCaesareanSectionTimes());//剖宫产次数
        json.put("MENARCHE_AGE",preCard.getMenarcheAge());//初潮
        json.put("PERIOD_DURATION",preCard.getMenstrualPeriod());//经期
        json.put("MENSTRUAL_CYCLE",preCard.getMenstrualCycle());//周期
        json.put("HYPERTENSION_HISTORY",preCard.getHypertensionHistory());//高血压
        json.put("DIABETES_HISTORY",preCard.getDiabetesHistory());//糖尿病
        json.put("MENTAL_DISEASE_HISTORY",preCard.getMentalDiseaseHistory());//精神病
        json.put("HYPERTHYROIDISM_HISTORY",preCard.getHyperthroidismHistory());//甲亢
        json.put("BLOOD_DISEASE_HISTORY",preCard.getBloodDiseaseHistory());//血液病
        json.put("EPILEPSIA_HISTORY",preCard.getEpilepsiaHistory());//癫痫
        json.put("OPERATION_HISTORY",preCard.getOperationHistory());//手术史
        json.put("OTHER_HISTORY",preCard.getOtherInformation());//其他
        json.put("QUERY_TIME",DateUtil.dateToStrLong(preCard.getCzrq()));//询问时间
        json.put("EXPECTED_TIME",DateUtil.dateToStrLong(preCard.getDueDate()));//预产期
        json.put("EXAM_TIME",DateUtil.dateToStrLong(preCard.getCzrq()));//检查时间
        SignFamily signFamily = signFamilyDao.findByPatient(preCard.getPatient());
        String[] hospitalMapping = getHospitalMapping(signFamily.getHospital()); //获取机构映射
        String hospital = hospitalMapping[0];
        String licence = hospitalMapping[1];
        Map<String,String> header = new HashMap<>();
        header.put("ORGCODE",hospital);
        header.put("LICENCE",licence);
        Map<String,String> params = new HashMap<>();
        params.put("ORG_CODE",hospital);
        String response = postSecond("SaveEhrMaternalPreFirstExamRecord","上传孕妇预建卡信息",params,null,header,false,1);
        header.put("OPERATOR",preCard.getJwDoctor());
        String response = postSecond("SaveEhrMaternalPreFirstExamRecord","上传孕妇预建卡信息",null,json,header,false,1,"3");
        JSONObject re = JSONObject.parseObject(response);
        JSONArray data = re.getJSONArray("DATA");
        if(data.size()>0&&"OK".equals(data.getJSONObject(0).getString("MESSAGE"))){
            preCard.setUploadStatus("1");
        }else {
            preCard.setUploadStatus("2");
        }
        preCard.setUploadMsg(response);
        preCardDao.save(preCard);
        return response;
    }
@ -304,7 +371,7 @@ public class ZysoftMaternalService extends ZysoftBaseService{
        params.put("ORG_CODE",hospital);
        params.put("IDENTITY_CARD_NO",idcard);
        String response = postSecond("SaveEhrMaternalHomeVisitRecord","上传新生儿访视信息",params,null,header,false,1);
        String response = postSecond("SaveEhrMaternalHomeVisitRecord","上传新生儿访视信息",params,null,header,false,1,"3");
        return response;
    }
@ -331,7 +398,7 @@ public class ZysoftMaternalService extends ZysoftBaseService{
        params.put("PUERPERA_ID_NUMBER",idcard);
        params.put("TPP_RECORD_DATE_TIME",searchTime);//身份证和查询时间必填一个,区间为一天
        String response = postSecond("getEhrMaternalZSPreDeliveryRecord","获取待产记录",params,null,header,false,1);
        String response = postSecond("getEhrMaternalZSPreDeliveryRecord","获取待产记录",params,null,header,false,1,"3");
        return response;
    }
@ -358,7 +425,7 @@ public class ZysoftMaternalService extends ZysoftBaseService{
        params.put("PUERPERA_ID_NUMBER",idcard);
        params.put("CREATE_TIME",searchTime);
        String response = postSecond("getEhrMaternalZSDeliveryRecord","获取阴道分娩记录",params,null,header,false,1);
        String response = postSecond("getEhrMaternalZSDeliveryRecord","获取阴道分娩记录",params,null,header,false,1,"3");
        return response;
    }
@ -384,7 +451,7 @@ public class ZysoftMaternalService extends ZysoftBaseService{
        params.put("PUERPERA_ID_NUMBER",idcard);//身份证和查询时间必填一个
        params.put("CREATE_TIME",searchTime);
        String response = postSecond("getEhrMaternalZSCaesareanBirthRecord","获取剖宫产记录",params,null,header,false,1);
        String response = postSecond("getEhrMaternalZSCaesareanBirthRecord","获取剖宫产记录",params,null,header,false,1,"3");
        return response;
    }

+ 19 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/service/ZysoftService.java

@ -796,4 +796,23 @@ public class ZysoftService {
        return response;
    }
    /**
     * 查询老年人体检记录接口
     * @param time_start
     * @param time_end
     * @return
     */
	public String getSickMedicalSimpleListInfo(String time_start, String time_end, String hospital,String licence) throws Exception{
        Map<String,String> header = new HashMap<>();
        header.put("ORGCODE",hospital);
        header.put("LICENCE",licence);
        
        Map<String,String> params = new HashMap<>();
        params.put("TIME_START",time_start);
        params.put("TIME_END",time_end);
        
        String response = postSecond("getSickMedicalSimpleListInfo","查询老年人体检记录接口",params,header,false);
        
        return response;
	}
}

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 99 - 34
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/service/prescription/PrescriptionService.java


+ 11 - 0
patient-co-service/wlyy_sign/src/main/java/com/yihu/wlyy/sign/dao/HttpLogDetailDao.java

@ -0,0 +1,11 @@
package com.yihu.wlyy.sign.dao;
import com.yihu.wlyy.sign.entity.HttpLogDetail;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * Created by yeshijie on 2017/9/26.
 */
public interface HttpLogDetailDao extends PagingAndSortingRepository<HttpLogDetail, Long>, JpaSpecificationExecutor<HttpLogDetail> {
}

+ 53 - 0
patient-co-service/wlyy_sign/src/main/java/com/yihu/wlyy/sign/entity/HttpLogDetail.java

@ -0,0 +1,53 @@
package com.yihu.wlyy.sign.entity;
import com.yihu.wlyy.sign.common.model.IdEntity;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
/**
 * Created by yeshijie on 2017/9/26.
 */
@Entity
@Table(name = "wlyy_http_log_detail")
public class HttpLogDetail extends IdEntity {
    private Long code;//关联code和ZyPushLog表的id
    private String response;//'返回结果',
    private String error;//'报错信息',
    private Date createTime;// '创建时间',
    public Long getCode() {
        return code;
    }
    public void setCode(Long code) {
        this.code = code;
    }
    public String getResponse() {
        return response;
    }
    public void setResponse(String response) {
        this.response = response;
    }
    public String getError() {
        return error;
    }
    public void setError(String error) {
        this.error = error;
    }
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
}

+ 24 - 6
patient-co-service/wlyy_sign/src/main/java/com/yihu/wlyy/sign/service/LogService.java

@ -2,8 +2,10 @@ package com.yihu.wlyy.sign.service;
import com.yihu.wlyy.sign.common.util.StringUtil;
import com.yihu.wlyy.sign.dao.HttpLogDao;
import com.yihu.wlyy.sign.dao.HttpLogDetailDao;
import com.yihu.wlyy.sign.dao.SignFamilyLogDao;
import com.yihu.wlyy.sign.entity.HttpLog;
import com.yihu.wlyy.sign.entity.HttpLogDetail;
import com.yihu.wlyy.sign.entity.SignFamilyLog;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -19,10 +21,10 @@ public class LogService {
    @Autowired
    private HttpLogDao httpLogDao;
    @Autowired
    private HttpLogDetailDao httpLogDetailDao;
    @Autowired
    private SignFamilyLogDao signFamilyLogDao;
    @Autowired
    private SystemDictService systemDictService;
@ -40,10 +42,18 @@ public class LogService {
            log.setParams(params);
            log.setCreateTime(new Date());
            log.setCreateTime(new Date());
            log.setResponse(response);
            log.setError(error);
//            log.setResponse(response);
//            log.setError(error);
            log.setStatus(isSuccess?"1":"0");
            httpLogDao.save(log);
            //明细表
            HttpLogDetail detail = new HttpLogDetail();
            detail.setCode(log.getId());
            detail.setCreateTime(new Date());
            detail.setResponse(response);
            detail.setError(error);
            httpLogDetailDao.save(detail);
        }
        catch (Exception ex)
        {
@ -76,10 +86,18 @@ public class LogService {
                log.setHeader(header);
                log.setParams(params);
                log.setCreateTime(new Date());
                log.setResponse(response);
                log.setError(error);
//                log.setResponse(response);
//                log.setError(error);
                log.setStatus(isSuccess?"1":"0");
                httpLogDao.save(log);
                //明细表
                HttpLogDetail detail = new HttpLogDetail();
                detail.setCode(log.getId());
                detail.setCreateTime(new Date());
                detail.setResponse(response);
                detail.setError(error);
                httpLogDetailDao.save(detail);
            }
        }
        catch (Exception ex)

+ 122 - 3
patient-co/patient-co-doctor-assistant/src/main/java/com/yihu/wlyy/service/template/DoctorFeldsherTemplateService.java

@ -117,11 +117,11 @@ public class DoctorFeldsherTemplateService extends BaseService {
            Doctor doctor = doctorDao.findByCode(doctorCode);
            String doctorName = doctor.getName();
            String doctorOpenId = doctor.getOpenid();
            businessType = parseBusinessType(businessType);
            JSONObject sendJson = weiXinTempMsgSendUtils.packageTemplate(businessType, remark, content, dateFormat.format(new Date()));
            Boolean flag = weiXinTempMsgSendUtils.sendTemplateMessage(templateId, doctorOpenId, url, sendJson);
            logger.info("send wechat message param : " + doctorOpenId+" =======> "+content);
            logger.info("send wechat message retuen : " + flag+" =======> "+flag);
            logger.info("send wechat message param : " + doctorOpenId + " =======> " + content);
            logger.info("send wechat message retuen : " + flag + " =======> " + flag);
            logger.info("sendJson: " + sendJson);
            return true;
        } catch (Exception e) {
@ -129,4 +129,123 @@ public class DoctorFeldsherTemplateService extends BaseService {
            return false;
        }
    }
    /**
     * 解析businessType
     *
     * @param businessType 消息类型
     * @return
     */
    private String parseBusinessType(String businessType) {
        try {
            switch (businessType) {
                case "SYSTEM":
                    businessType = "系统消息";
                    break;
                case "P_FU_01":
                    businessType = "随访计划, 您有新的随访计划";
                    break;
                case "P_FU_02":
                    businessType = "随访提醒, 您有新的随访提醒";
                    break;
                case "P_HG_01":
                    businessType = "健康指导, 您有新的健康指导";
                    break;
                case "P_SI_01":
                    businessType = "体测提醒, 您有新的体测提醒";
                    break;
                case "P_IS_01":
                    businessType = "检查检验, 您有新的检查检验建议";
                    break;
                case "P_MG_01":
                    businessType = "用药指导, 您有新的用药指导";
                    break;
                case "P_MR_01":
                    businessType = "病历夹, 您有新的病历记录";
                    break;
                case "P_R_01":
                    businessType = "预约挂号";
                    break;
                case "P_HE_01":
                    businessType = "健康教育, 您有新的健康教育";
                    break;
                case "P_SW_01":
                    businessType = "家庭签约, 家庭签约已申请通过";
                    break;
                case "P_SW_02":
                    businessType = "家庭签约, 医生申请解除家庭签约";
                    break;
                case "P_SW_03":
                    businessType = "家庭签约, 医生已同意您解除家庭签约申请";
                    break;
                case "P_SW_04":
                    businessType = "家庭签约, 医生拒绝解除家庭签约申请";
                    break;
                case "P_CT_01":
                    businessType = "三师咨询, 医生回复了您";
                    break;
                case "P_CP_01":
                    businessType = "公共咨询, 医生回复了您";
                    break;
                case "P_CC_01":
                    businessType = "病友圈, 您有新的回复内容";
                    break;
                case "P_HN_01":
                    businessType = "健康资讯, 您有新的健康资讯";
                    break;
                case "D_CT_01":
                    businessType = "指定咨询, 您有新的指定咨询";
                    break;
                case "D_CT_02":
                    businessType = "名医咨询, 您有新的消息";
                    break;
                case "D_CT_03":
                    businessType = "名医咨询, 您有新的名医咨询";
                    break;
                case "D_CT_04":
                    businessType = "名医咨询, 您有新的名医咨询";
                    break;
                case "D_CT_05":
                    businessType = "续方咨询, 您有新的续方咨询";
                    break;
                case "D_SW_01":
                    businessType = "家庭签约";
                    break;
                case "D_SW_02":
                    businessType = "家庭签约, 患者申请解除家庭签约";
                    break;
                case "D_SW_03":
                    businessType = "家庭签约, 患者同意您的解除家庭签约申请";
                    break;
                case "D_SW_04":
                    businessType = "家庭签约, 患者拒绝您的解除家庭签约申请";
                    break;
                case "D_CV_01":
                    businessType = "视频咨询, 您有新的视频咨询";
                    break;
                case "D_FU_01":
                    businessType = "随访计划, 患者已完成随访计划";
                    break;
                case "D_FU_02":
                    businessType = "随访计划";
                    break;
                case "D_FU_03":
                    businessType = "随访计划";
                case "D_FU_04":
                    businessType = "随访计划, 患者已提交随访内容";
                case "D_HI_01":
                    businessType = "体征指标";
                case "D_P_WRD":
                    businessType = "续方消息, 待取药";
                    break;
                default:
                    businessType = "您有一条新的消息";
                    break;
            }
            return businessType;
        } catch (Exception e) {
            e.printStackTrace();
            return businessType;
        }
    }
}

+ 4 - 0
patient-co/patient-co-doctor-assistant/src/main/java/com/yihu/wlyy/util/RSAUtils.java

@ -376,4 +376,8 @@ public class RSAUtils {
            e.printStackTrace();
        }
    }
    public void setBaseService(BaseService baseService) {
        this.baseService = baseService;
    }
}

+ 2 - 1
patient-co/patient-co-doctor-assistant/src/main/java/com/yihu/wlyy/web/common/account/LoginController.java

@ -312,7 +312,8 @@ public class LoginController extends BaseController {
            if (type == 2) {
                // 医生端
                Doctor doctor = doctorService.findDoctorByMobile(mobile);
                String password = RSAUtils.getInstance(doctorService).decryptString(newpwd);
                rsaUtils.setBaseService(doctorService);
                String password = rsaUtils.decryptString(newpwd);
                password = StringUtils.reverse(password);
                password = MD5.GetMD5Code(password + doctor.getSalt());
                doctor.setPassword(password);

+ 2 - 2
patient-co/patient-co-doctor-assistant/src/main/java/com/yihu/wlyy/web/doctor/account/DoctorController.java

@ -1284,10 +1284,10 @@ public class DoctorController extends BaseController {
                    return error(-1, "身份证号与姓名不一致,请检查后重新输入");
                }
                if (ssc.compareTo(socialSecurityInfo.getCardno() == null ? "" : socialSecurityInfo.getCardno()) != 0 && ssc.compareTo(socialSecurityInfo.getCard16() == null ? "" : socialSecurityInfo.getCard16()) != 0) {
                    return error(-1, "身份证号与医保卡号不一致,请检查后重新输入");
                    return error(-1, "您的社保卡不支持线上签约,请到社区卫生服务中心办理线下签约");
                }
            } else {
                return error(-1, "对不起,暂不支持16年6月份之后办理的医保卡注册");
                return error(-1, "您的社保卡不支持线上签约,请到社区卫生服务中心办理线下签约");
            }
            return write(200, "查询成功!");
        } catch (Exception ex) {

+ 1 - 1
patient-co/patient-co-doctor-assistant/src/main/java/com/yihu/wlyy/web/doctor/template/DoctorFeldsherTemplateController.java

@ -36,7 +36,7 @@ public class DoctorFeldsherTemplateController extends BaseController {
     * @param content      消息内容
     * @return
     */
    @RequestMapping(value = "/sendDoctorTemplate", method = RequestMethod.GET)
    @RequestMapping(value = "/sendDoctorTemplate", method = RequestMethod.POST)
    @ApiOperation(value = "医生助手给医生发送模板消息")
    public String sendDoctorTemplate(@RequestParam @ApiParam(value = "医生code") String doctorCode,
                                     @RequestParam @ApiParam(value = "会话Id", required = false) String sessionId,

+ 22 - 1
patient-co/patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/etl/dataFilter/RenewSignDataFilter.java

@ -10,6 +10,7 @@ import com.yihu.wlyy.statistics.etl.model.LogModel;
import com.yihu.wlyy.statistics.etl.mycache.CachePool;
import com.yihu.wlyy.statistics.job.business.Constant;
import com.yihu.wlyy.statistics.model.hosptial.Hospital;
import com.yihu.wlyy.statistics.model.signfamily.SignFamily;
import com.yihu.wlyy.statistics.model.signfamily.SignFamilyRenew;
import com.yihu.wlyy.statistics.model.system.Town;
import com.yihu.wlyy.statistics.model.team.AdminTeam;
@ -291,7 +292,7 @@ public class RenewSignDataFilter {
    /**
     * 得到二级维度的key
     * 1:性别 2:年龄 3:分组 4:费用 5:健康服务分布 6:年龄 7:年龄疾病
     * 1:理由 2:服务类型
     *
     * @param level2Key
     * @return
@ -305,6 +306,9 @@ public class RenewSignDataFilter {
                    returnLevel2Key = getReason(signFamily);
                    return returnLevel2Key;
                }
                case "2": {
                    return getServerType(signFamily);
                }
            }
        }
        return returnLevel2Key;
@ -314,6 +318,23 @@ public class RenewSignDataFilter {
        return signFamily.getRenewChangeReason();
    }
    private String getServerType(SignFamilyRenew signFamily) {
        //获取服务类型
        List<String> serverType = CachePool.getServerType(signFamily.getCode());
        //返回服务类型
        if (serverType != null && serverType.size() > 0) {
            StringBuffer str = new StringBuffer();
            for (int i = 0; i < serverType.size(); i++) {
                str.append(serverType.get(i));
                if (serverType.size() != (i + 1)) {
                    str.append(",");
                }
            }
            return str.toString();
        }
        return "0";
    }
    public FilterModel filterNoTeam(List<SignFamilyRenew> signFamilies, String level2Key, String level3Key, String sql, String filterDate) {
        //查找出系统全部的机构

+ 32 - 0
patient-co/patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/etl/model/RenewCacheModel.java

@ -0,0 +1,32 @@
package com.yihu.wlyy.statistics.etl.model;
import com.yihu.wlyy.statistics.model.signfamily.SignFamily;
import com.yihu.wlyy.statistics.model.signfamily.SignFamilyRenew;
import java.util.List;
/**
 * Created by Administrator on 2016.10.19.
 * 缓存的model模型
 */
public class RenewCacheModel {
    private List<SignFamilyRenew> signFamilies;//数据
    private String sql;//执行的sql语句
    public List<SignFamilyRenew> getSignFamilies() {
        return signFamilies;
    }
    public void setSignFamilies(List<SignFamilyRenew> signFamilies) {
        this.signFamilies = signFamilies;
    }
    public String getSql() {
        return sql;
    }
    public void setSql(String sql) {
        this.sql = sql;
    }
}

+ 243 - 0
patient-co/patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/etl/mycache/CachePool.java

@ -3,9 +3,11 @@ package com.yihu.wlyy.statistics.etl.mycache;
import com.yihu.wlyy.statistics.dao.SignPatientLabelInfoDao;
import com.yihu.wlyy.statistics.etl.extract.DBExtract;
import com.yihu.wlyy.statistics.etl.model.CacheModel;
import com.yihu.wlyy.statistics.etl.model.RenewCacheModel;
import com.yihu.wlyy.statistics.job.business.Constant;
import com.yihu.wlyy.statistics.model.label.SignPatientLabelInfo;
import com.yihu.wlyy.statistics.model.signfamily.SignFamily;
import com.yihu.wlyy.statistics.model.signfamily.SignFamilyRenew;
import com.yihu.wlyy.statistics.model.signfamily.SignFamilyServer;
import com.yihu.wlyy.statistics.util.SpringUtil;
import org.springframework.beans.factory.annotation.Autowired;
@ -29,6 +31,38 @@ public class CachePool {
     */
    private static Map<String, CacheModel> arriveSignFamilyExpenseStatus1Map = new HashMap<String, CacheModel>();
    /**
     * 续签城市达量的缓存  key 是时间yyyy-MM-dd
     */
    private static Map<String, RenewCacheModel> arriveRenewTotalCityMap = new HashMap<String, RenewCacheModel>();
    /**
     * 续签城镇达量的缓存  key 是时间yyyy-MM-dd
     */
    private static Map<String, RenewCacheModel> arriveRenewTotalTownMap = new HashMap<String, RenewCacheModel>();
    /**
     * 续签机构达量的缓存  key 是时间yyyy-MM-dd
     */
    private static Map<String, RenewCacheModel> arriveRenewTotalOrgMap = new HashMap<String, RenewCacheModel>();
    /**
     * 续签团队达量的缓存  key 是时间yyyy-MM-dd
     */
    private static Map<String, RenewCacheModel> arriveRenewTotalTeamMap = new HashMap<String, RenewCacheModel>();
    /**
     * 机构迁出达量的缓存  key 是时间yyyy-MM-dd
     */
    private static Map<String, RenewCacheModel> arriveRenewSignOrgOutMap = new HashMap<String, RenewCacheModel>();
    /**
     * 区迁出达量的缓存  key 是时间yyyy-MM-dd
     */
    private static Map<String, RenewCacheModel> arriveRenewSignTownOutMap = new HashMap<String, RenewCacheModel>();
    /**
     * 团队迁出达量的缓存  key 是时间yyyy-MM-dd
     */
    private static Map<String, RenewCacheModel> arriveRenewSignTeamOutMap = new HashMap<String, RenewCacheModel>();
    /**
     * 分组标签的缓存 key 是患者code
     */
@ -256,4 +290,213 @@ public class CachePool {
            e.printStackTrace();
        }
    }
    /**
     * 获取续签城市达量的缓存
     *
     * @param date
     * @return
     * @throws Exception
     */
    public synchronized RenewCacheModel getArriveRenewTotalCityMapByDate(String date) throws Exception {
        RenewCacheModel model = arriveRenewTotalCityMap.get(date);
        if (model == null) {
            model = new RenewCacheModel();
            String sql=" select fr.sign_code code,fr.hospital ,fr.admin_team_id  from wlyy_sign_family_renew_log fr where " +
                    "   fr.apply_date<'"+ date + Constant.quota_date_last+"' " +
                    "   and fr.sign_year ='"+Constant.getNowYearByDate(date)+"' " +
                    "   and LENGTH(fr.hospital)=10 " +
                    "   and LENGTH(fr.old_hospital)=10 ";
            //抽取數據
            List<SignFamilyRenew> signFamilies = SpringUtil.getBean(DBExtract.class).extract(SignFamilyRenew.class,sql);
            model.setSql(sql);
            model.setSignFamilies(signFamilies);
            arriveRenewTotalCityMap.put(date, model);
            return model;
        } else {
            return model;
        }
    }
    /**
     * 获取续签城镇达量的缓存
     *
     * @param date
     * @return
     * @throws Exception
     */
    public synchronized RenewCacheModel getArriveRenewTotalTownMapByDate(String date) throws Exception {
        RenewCacheModel model = arriveRenewTotalTownMap.get(date);
        if (model == null) {
            model = new RenewCacheModel();
            String sql=" select fr.sign_code code,fr.old_hospital hospital,fr.old_admin_team_id admin_team_id from wlyy_sign_family_renew_log fr where " +
                    "  fr.apply_date<'"+ date + Constant.quota_date_last+"' " +
                    "  and fr.sign_year ='"+Constant.getNowYearByDate(date)+"'   " +
                    "  and LEFT(fr.hospital,6)=LEFT(fr.old_hospital,6) " +
                    "  and LENGTH(fr.hospital)=10 " +
                    "  and LENGTH(fr.old_hospital)=10 ";
            //抽取數據
            List<SignFamilyRenew> signFamilies= SpringUtil.getBean(DBExtract.class).extract(SignFamilyRenew.class,sql);
            model.setSql(sql);
            model.setSignFamilies(signFamilies);
            arriveRenewTotalTownMap.put(date, model);
            return model;
        } else {
            return model;
        }
    }
    /**
     * 获取续签机构达量的缓存
     *
     * @param date
     * @return
     * @throws Exception
     */
    public synchronized RenewCacheModel getArriveRenewTotalOrgMapByDate(String date) throws Exception {
        RenewCacheModel model = arriveRenewTotalOrgMap.get(date);
        if (model == null) {
            model = new RenewCacheModel();
            String sql="select fr.sign_code code,fr.hospital,fr.admin_team_id from wlyy_sign_family_renew_log fr where " +
                    "   fr.apply_date<'"+date+ Constant.quota_date_last+"' " +
                    "  and fr.sign_year ='"+Constant.getNowYearByDate(date)+"'  " +
                    "  and fr.hospital=fr.old_hospital " +
                    "  and LENGTH(fr.hospital)=10 " +
                    "  and LENGTH(fr.old_hospital)=10";
            //抽取數據
            List<SignFamilyRenew> signFamilies= SpringUtil.getBean(DBExtract.class).extract(SignFamilyRenew.class,sql);
            model.setSql(sql);
            model.setSignFamilies(signFamilies);
            arriveRenewTotalOrgMap.put(date, model);
            return model;
        } else {
            return model;
        }
    }
    /**
     * 获取续签团队达量的缓存
     *
     * @param date
     * @return
     * @throws Exception
     */
    public synchronized RenewCacheModel getArriveRenewTotalTeamMapByDate(String date) throws Exception {
        RenewCacheModel model = arriveRenewTotalTeamMap.get(date);
        if (model == null) {
            model = new RenewCacheModel();
            String sql=" select fr.sign_code code,fr.hospital ,fr.admin_team_id  from wlyy_sign_family_renew_log fr where " +
                    "   fr.apply_date<'"+ date + Constant.quota_date_last+"' " +
                    "   and fr.sign_year ='"+Constant.getNowYearByDate(date)+"' " +
                    "   and fr.admin_team_id=fr.old_admin_team_id " +
                    "   and LENGTH(fr.hospital)=10 " +
                    "   and LENGTH(fr.old_hospital)=10 ";
            //抽取數據
            List<SignFamilyRenew> signFamilies= SpringUtil.getBean(DBExtract.class).extract(SignFamilyRenew.class,sql);
            model.setSql(sql);
            model.setSignFamilies(signFamilies);
            arriveRenewTotalTeamMap.put(date, model);
            return model;
        } else {
            return model;
        }
    }
    /**
     * 获取续签团队迁出达量的缓存
     *
     * @param date
     * @return
     * @throws Exception
     */
    public synchronized RenewCacheModel getArriveRenewSignTeamOutMapByDate(String date) throws Exception {
        RenewCacheModel model = arriveRenewSignTeamOutMap.get(date);
        if (model == null) {
            model = new RenewCacheModel();
            String sql=" select fr.sign_code code,fr.old_hospital hospital,fr.old_admin_team_id admin_team_id from wlyy_sign_family_renew_log fr where " +
                    "  fr.apply_date<'"+ date + Constant.quota_date_last+"'" +
                    "   and fr.sign_year ='"+Constant.getNowYearByDate(date)+"'" +
                    "   and fr.admin_team_id!=fr.old_admin_team_id " +
                    "   and LENGTH(fr.hospital)=10 " +
                    "   and LENGTH(fr.old_hospital)=10 ";
            //抽取數據
            List<SignFamilyRenew> signFamilies= SpringUtil.getBean(DBExtract.class).extract(SignFamilyRenew.class,sql);
            model.setSql(sql);
            model.setSignFamilies(signFamilies);
            arriveRenewSignTeamOutMap.put(date, model);
            return model;
        } else {
            return model;
        }
    }
    /**
     * 获取续签机构迁出达量的缓存
     *
     * @param date
     * @return
     * @throws Exception
     */
    public synchronized RenewCacheModel getArriveRenewSignOrgOutMapByDate(String date) throws Exception {
        RenewCacheModel model = arriveRenewSignOrgOutMap.get(date);
        if (model == null) {
            model = new RenewCacheModel();
            String sql="select fr.sign_code code,fr.old_hospital hospital,fr.old_admin_team_id admin_team_id from wlyy_sign_family_renew_log fr where " +
                    "  fr.apply_date<'"+date+ Constant.quota_date_last+"' " +
                    "  and fr.sign_year ='"+Constant.getNowYearByDate(date)+"'" +
                    "  and fr.hospital!=fr.old_hospital" +
                    "  and LENGTH(fr.hospital)=10 " +
                    "  and LENGTH(fr.old_hospital)=10";
            //抽取數據
            List<SignFamilyRenew> signFamilies= SpringUtil.getBean(DBExtract.class).extract(SignFamilyRenew.class,sql);
            model.setSql(sql);
            model.setSignFamilies(signFamilies);
            arriveRenewSignOrgOutMap.put(date, model);
            return model;
        } else {
            return model;
        }
    }
    /**
     * 获取续签城镇迁出达量的缓存
     *
     * @param date
     * @return
     * @throws Exception
     */
    public synchronized RenewCacheModel getArriveRenewSignTownOutMapByDate(String date) throws Exception {
        RenewCacheModel model = arriveRenewSignTownOutMap.get(date);
        if (model == null) {
            model = new RenewCacheModel();
            String sql=" select fr.sign_code code,fr.old_hospital hospital,fr.old_admin_team_id admin_team_id from wlyy_sign_family_renew_log fr where " +
                    "  fr.apply_date<'"+ date + Constant.quota_date_last+"' " +
                    "  and fr.sign_year ='"+Constant.getNowYearByDate(date)+"'" +
                    "  and LEFT(fr.hospital,6)!=LEFT(fr.old_hospital,6)  " +
                    "  and LENGTH(fr.hospital)=10 " +
                    "  and LENGTH(fr.old_hospital)=10 ";
            //抽取數據
            List<SignFamilyRenew> signFamilies= SpringUtil.getBean(DBExtract.class).extract(SignFamilyRenew.class,sql);
            model.setSql(sql);
            model.setSignFamilies(signFamilies);
            arriveRenewSignTownOutMap.put(date, model);
            return model;
        } else {
            return model;
        }
    }
}

+ 416 - 83
patient-co/patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/business/CurrentDayAllQuotaJob.java

@ -141,6 +141,137 @@ public class CurrentDayAllQuotaJob implements Job {
        }
    }
    /**
     * 获取市签约量
     * @return
     */
    public Map<String,Object> getCityRenewTotals(){
        try{
            String sql=" select fr.sign_code code,fr.old_hospital hospital,fr.old_admin_team_id admin_team_id from wlyy_sign_family_renew_log fr where  " +
                    " fr.apply_date<'"+ tomorrow+"' and " +
                    " fr.sign_year= '" + Constant.getNowYearByDate(tomorrow) + "' and " +
                    " LENGTH(fr.hospital)=10 and " +
                    " LENGTH(fr.old_hospital)=10 ";
            //抽取數據
            List<SignFamilyRenew> signFamilies = SpringUtil.getBean(DBExtract.class).extract(SignFamilyRenew.class, sql);
            Map<String,Object> map = new HashedMap();
            map.put("signFamilies",signFamilies);
            map.put("sql",sql);
            return map;
        }catch (Exception e){
            e.printStackTrace();
        }
        return null;
    }
    /**
     * 获取城镇签约量
     * @return
     */
    public Map<String,Object> getTowmRenewTotals(){
        try{
            String sql=" select fr.sign_code code,fr.old_hospital hospital,fr.old_admin_team_id admin_team_id from wlyy_sign_family_renew_log fr where  " +
                    " fr.apply_date<'"+ tomorrow+"' and " +
                    " fr.sign_year= '" + Constant.getNowYearByDate(tomorrow) + "' and " +
                    " LEFT(fr.hospital,6)=LEFT(fr.old_hospital,6)  and " +
                    " LENGTH(fr.hospital)=10 and " +
                    " LENGTH(fr.old_hospital)=10 ";
            //抽取數據
            List<SignFamilyRenew> signFamilies = SpringUtil.getBean(DBExtract.class).extract(SignFamilyRenew.class, sql);
            Map<String,Object> map = new HashedMap();
            map.put("signFamilies",signFamilies);
            map.put("sql",sql);
            return map;
        }catch (Exception e){
            e.printStackTrace();
        }
        return null;
    }
    /**
     *  获取机构签约量
      * @return
     */
    public Map<String,Object> getOrgRenewTotals(){
        try{
            String sql=" select fr.sign_code code,fr.old_hospital hospital,fr.old_admin_team_id admin_team_id from wlyy_sign_family_renew_log fr where   fr.apply_date<'"+ tomorrow+"' and  fr.sign_year= '" + Constant.getNowYearByDate(tomorrow) + "'and  fr.hospital=fr.old_hospital  and LENGTH(fr.hospital)=10 and LENGTH(fr.old_hospital)=10 ";
            //抽取數據
            List<SignFamilyRenew> signFamilies = SpringUtil.getBean(DBExtract.class).extract(SignFamilyRenew.class, sql);
            Map<String,Object> map = new HashedMap();
            map.put("signFamilies",signFamilies);
            map.put("sql",sql);
            return map;
        }catch (Exception e){
            e.printStackTrace();
        }
        return null;
    }
    /**
     * 获取团队机构签约量
     * @return
     */
    public Map<String,Object> getTeamRenewTotals(){
        try{
            String sql=" select fr.sign_code code,fr.old_hospital hospital,fr.old_admin_team_id admin_team_id from wlyy_sign_family_renew_log fr where   fr.apply_date<'"+ tomorrow+"' and  fr.sign_year= '" + Constant.getNowYearByDate(tomorrow) + "' and fr.admin_team_id=fr.old_admin_team_id  and LENGTH(fr.hospital)=10 and LENGTH(fr.old_hospital)=10 ";
            //抽取數據
            List<SignFamilyRenew> signFamilies = SpringUtil.getBean(DBExtract.class).extract(SignFamilyRenew.class, sql);
            Map<String,Object> map = new HashedMap();
            map.put("signFamilies",signFamilies);
            map.put("sql",sql);
            return map;
        }catch (Exception e){
            e.printStackTrace();
        }
        return null;
    }
    public Map<String,Object> getTeamRenewOut(){
        try{
            String sql=" select fr.sign_code code,fr.old_hospital hospital,fr.old_admin_team_id admin_team_id from wlyy_sign_family_renew_log fr where    fr.apply_date<'"+ tomorrow+"' and  fr.sign_year= '" + Constant.getNowYearByDate(tomorrow) + "' and fr.admin_team_id!=fr.old_admin_team_id  and LENGTH(fr.hospital)=10 and LENGTH(fr.old_hospital)=10 ";
            //抽取數據
            List<SignFamilyRenew> signFamilies = SpringUtil.getBean(DBExtract.class).extract(SignFamilyRenew.class, sql);
            Map<String,Object> map = new HashedMap();
            map.put("signFamilies",signFamilies);
            map.put("sql",sql);
            return map;
        }catch (Exception e){
            e.printStackTrace();
        }
        return null;
    }
    public Map<String,Object> getOrgRenewOut(){
        try{
            String sql=" select fr.sign_code code,fr.old_hospital hospital,fr.old_admin_team_id admin_team_id from wlyy_sign_family_renew_log fr where   fr.apply_date<'"+ tomorrow+"' and  fr.sign_year= '" + Constant.getNowYearByDate(tomorrow) + "' and fr.admin_team_id!=fr.old_admin_team_id and fr.hospital!=fr.old_hospital and LENGTH(fr.hospital)=10 and LENGTH(fr.old_hospital)=10 ";
            //抽取數據
            List<SignFamilyRenew> signFamilies = SpringUtil.getBean(DBExtract.class).extract(SignFamilyRenew.class, sql);
            Map<String,Object> map = new HashedMap();
            map.put("signFamilies",signFamilies);
            map.put("sql",sql);
            return map;
        }catch (Exception e){
            e.printStackTrace();
        }
        return null;
    }
    public Map<String,Object> getTownRenewOut(){
        try{
            String sql=" select fr.sign_code code,fr.old_hospital hospital,fr.old_admin_team_id admin_team_id from wlyy_sign_family_renew_log fr where   fr.apply_date<'"+ tomorrow+"' and  fr.sign_year= '" + Constant.getNowYearByDate(tomorrow) + "' and fr.admin_team_id!=fr.old_admin_team_id and fr.hospital!=fr.old_hospital and LEFT(fr.hospital,6)!=LEFT(fr.old_hospital,6)  and LENGTH(fr.hospital)=10 and LENGTH(fr.old_hospital)=10 ";
            //抽取數據
            List<SignFamilyRenew> signFamilies = SpringUtil.getBean(DBExtract.class).extract(SignFamilyRenew.class, sql);
            Map<String,Object> map = new HashedMap();
            map.put("signFamilies",signFamilies);
            map.put("sql",sql);
            return map;
        }catch (Exception e){
            e.printStackTrace();
        }
        return null;
    }
    //统计
    private void computequota() throws Exception {
@ -165,52 +296,74 @@ public class CurrentDayAllQuotaJob implements Job {
        //抽取數據
        List<SignFamily> signFamilies = SpringUtil.getBean(DBExtract.class).extractByPage(SignFamily.class, sql, sqlCount, true);
        computequota_1(sql, signFamilies, null); //统计今天的签约
        computequota_2(); //统计今天的解约
        computequota_3(); //统计今天的健康咨询量
        computequota_4(); //统计今天的随访量
        computequota_5(); //统计今天的健康指导
        computequota_6(sql, signFamilies, null); //统计今天的签约患者性别
        computequota_7(sql, signFamilies, null);//统计今天的签约患者分组
        computequota_8(sql, signFamilies, null);//统计今天的签约患者年龄
        computequota_9();//统计今天的待签约
        computequota_10();//统计今天的改签
        computequota_12(sql, signFamilies, null);//统计今天的签约下按年龄分组后再
        computequota_13(sql, signFamilies, null);//统计今天的签约量
        computequota_16_1(sql, signFamilies, null);//统计今天的签约数的扣费钱
        computequota_15(sql, signFamilies, null);//统计今天的健康分布统计
        computequota_17(sql, signFamilies, null);//统计今天的年龄疾病
        computequota_20();//统计今天的已经签约患者绑定设备
        computequota_21();//统计今天的已经签约微信关注人数
        computequota_49();//统计今天的已经签约未扣费微信关注人数
        computequota_50();//统计今天的已经签约已扣费微信关注人数
        computequota_22();//未回复的咨询量
        computequota_23();//及时回复的咨询量
        computequota_24();//及时回复的咨询量时间分布
        computequota_25();//统计质询量总数
        computequota_26();//统计未缴费签约总数
        computequota_27();//统计代预约量
        computequota_28();//统计平均值
        computequota_31(); //统计续签夸团队
        computequota_32(); //统计续签夸社区
        computequota_33(); //统计续签夸区
        computequota_34(); //续签团队签入
        computequota_35(); //统计团队签出
        computequota_36(sql, signFamilies, null); //签约服务类型
        //computequota_37(); //统计团队转签 没用指标
        computequota_38(); //续签机构签入
        computequota_39(); //统计机构签出
        computequota_40(); //续签区签入
        computequota_41(); //统计区签出
        computequota_42(); //统计团队续签
        computequota_43(); //统计社区续签
        computequota_44(); //统计区续签
        computequota_29(); //统计市级续签
        //computequota_45(); //统计社区转签 没用指标
        //computequota_46(); //统计区转签  没用指标
        computequota_30(); //统计团队续签原因
//        computequota_47(); //统计社区续签原因 没用指标
//        computequota_48(); //统计区续签原因 没用指标
        //抽取數據签约数
        Map<String,Object>  citySignFamilies =getCityRenewTotals();
        Map<String,Object>  townSignFamilies =getTowmRenewTotals();
        Map<String,Object>  orgSignFamilies =getOrgRenewTotals();
        Map<String,Object>  teamSignFamilies =getTeamRenewTotals();
        //数据抽取迁出率
        Map<String,Object>  townSignOutFamilies =getTowmRenewTotals();
        Map<String,Object>  orgSignOutFamilies =getOrgRenewTotals();
        Map<String,Object>  teamSignOutFamilies =getTeamRenewTotals();
//        computequota_1(sql, signFamilies, null); //统计今天的签约
//        computequota_2(); //统计今天的解约
//        computequota_3(); //统计今天的健康咨询量
//        computequota_4(); //统计今天的随访量
//        computequota_5(); //统计今天的健康指导
//        computequota_6(sql, signFamilies, null); //统计今天的签约患者性别
//        computequota_7(sql, signFamilies, null);//统计今天的签约患者分组
//        computequota_8(sql, signFamilies, null);//统计今天的签约患者年龄
//        computequota_9();//统计今天的待签约
//        computequota_10();//统计今天的改签
//        computequota_12(sql, signFamilies, null);//统计今天的签约下按年龄分组后再
//        computequota_13(sql, signFamilies, null);//统计今天的签约量
//        computequota_16_1(sql, signFamilies, null);//统计今天的签约数的扣费钱
//        computequota_15(sql, signFamilies, null);//统计今天的健康分布统计
//        computequota_17(sql, signFamilies, null);//统计今天的年龄疾病
//        computequota_20();//统计今天的已经签约患者绑定设备
//        computequota_21();//统计今天的已经签约微信关注人数
//        computequota_49();//统计今天的已经签约未扣费微信关注人数
//        computequota_50();//统计今天的已经签约已扣费微信关注人数
//        computequota_22();//未回复的咨询量
//        computequota_23();//及时回复的咨询量
//        computequota_24();//及时回复的咨询量时间分布
//        computequota_25();//统计质询量总数
//        computequota_26();//统计未缴费签约总数
//        computequota_27();//统计代预约量
//        computequota_28();//统计平均值
//        computequota_31(); //统计续签夸团队
//        computequota_32(); //统计续签夸社区
//        computequota_33(); //统计续签夸区
//        computequota_34(); //续签团队签入
//        computequota_35(teamSignOutFamilies); //统计团队签出
//        computequota_36(sql, signFamilies, null); //签约服务类型
//        //computequota_37(); //统计团队转签 没用指标
//        computequota_38(); //续签机构签入
//        computequota_39(orgSignOutFamilies); //统计机构签出
//        computequota_40(); //续签区签入
//        computequota_41(townSignOutFamilies); //统计区签出
//        computequota_42(teamSignFamilies); //统计团队续签
//        computequota_43(townSignFamilies); //统计社区续签
//        computequota_44(orgSignFamilies); //统计区续签
//        computequota_29(citySignFamilies); //统计市级续签
//        //computequota_45(); //统计社区转签 没用指标
//        //computequota_46(); //统计区转签  没用指标
//        computequota_30(); //统计团队续签原因
////        computequota_47(); //统计社区续签原因 没用指标
////        computequota_48(); //统计区续签原因 没用指标
        //1.3.8需求开发
        computequota_51(citySignFamilies);//统计市级续签服务类型维度
        computequota_52(teamSignFamilies);//统计团队续签人数服务类型维度
        computequota_53(orgSignFamilies);//统计社区续签人数服务类型维度
        computequota_54(townSignFamilies);//统计区续签人数服务类型维度
        computequota_55(teamSignOutFamilies);//统计团队续签迁出人数服务类型维度
        computequota_56(orgSignOutFamilies);//统计社区续签迁出人数服务类型维度
        computequota_57(townSignOutFamilies);//统计区续签迁出人数服务类型维度
        quartzJobLog.setJobContent(allContent.toString());
@ -271,7 +424,7 @@ public class CurrentDayAllQuotaJob implements Job {
            //统计数据 二级维度
            List<Map<String, Map<String, List<ETLModel>>>> patientSexRoleData = SpringUtil.getBean(Level2Role.class).elt(returnDatas);
            //保存数据
            SpringUtil.getBean(RedisStorage.class).saveByLevel2(patientSexRoleData, null, quotaId, 13, 10, 0);
            SpringUtil.getBean(RedisStorage.class).saveByLevel2(patientSexRoleData, null, quotaId, 12, 10, 0);
            allContent.append(JsonUtil.objToStr(etlModels.getLogModel()));
        } catch (Exception e) {
            e.printStackTrace();
@ -587,6 +740,7 @@ public class CurrentDayAllQuotaJob implements Job {
                    "   p.idcard = sf.idcard " +
                    " AND sf.type = 2 " +
                    " AND sf. STATUS IN (1, 2) " +
                    " AND ( sf.expenses_status =0 or sf.expenses_status =1 )" +
                    " AND p.openid is not null  " +
                    " AND p.openid_time <'" + tomorrow + "' " +
                    " and sf.sign_year ='"+Constant.getNowYearByDate(tomorrow)+"'  ";
@ -1235,15 +1389,11 @@ public class CurrentDayAllQuotaJob implements Job {
        }
    }
    private void computequota_29() {
    private void computequota_29(Map<String,Object>  sign) {
        String quotaId = "29";
        try {
            String sql=" select fr.sign_code code,fr.old_hospital hospital,fr.old_admin_team_id admin_team_id from wlyy_sign_family_renew_log fr where  " +
                    " fr.apply_date<'"+ tomorrow+"' and " +
                    " fr.sign_year= '" + Constant.getNowYearByDate(tomorrow) + "' and " +
                    " LENGTH(fr.hospital)=10 and " +
                    " LENGTH(fr.old_hospital)=10 "; //抽取數據
            List<SignFamilyRenew> signFamilies = SpringUtil.getBean(DBExtract.class).extract(SignFamilyRenew.class, sql);
            List<SignFamilyRenew> signFamilies = (List<SignFamilyRenew>)sign.get("signFamilies");
            String sql =  (String)sign.get("sql");
            //清洗數據
            FilterModel etlModels = SpringUtil.getBean(RenewSignDataFilter.class).filter(signFamilies, sql, "now");
            //统计数据
@ -1258,6 +1408,29 @@ public class CurrentDayAllQuotaJob implements Job {
        allContent.append("-----------29----------");
    }
    private void computequota_51(Map<String,Object>  sign) {
        String quotaId = "51";
        try {
            List<SignFamilyRenew> signFamilies = (List<SignFamilyRenew>)sign.get("signFamilies");
            String sql =  (String)sign.get("sql");
            //清洗數據
            FilterModel etlModels = SpringUtil.getBean(RenewSignDataFilter.class).filter(signFamilies,"2",null,sql,"now");
            //统计数据 一级维度
            List<Map<String, List<ETLModel>>> returnDatas = SpringUtil.getBean(Level1Role.class).elt(etlModels.getEtlModelList());
            //统计数据 二级维度
            List<Map<String, Map<String, List<ETLModel>>>> patientSexRoleData = SpringUtil.getBean(Level2Role.class).elt(returnDatas);
            //保存数据
            SpringUtil.getBean(RedisStorage.class).saveByLevel2(patientSexRoleData, null, quotaId, 12, 10, 0);
            allContent.append(JsonUtil.objToStr(etlModels.getLogModel()));
        } catch (Exception e) {
            e.printStackTrace();
            allContent.append("统计失败:" + e.getMessage());
        }
        allContent.append("-----------51----------");
    }
    private void computequota_30() {
        String quotaId = "30";
        try {
@ -1428,12 +1601,14 @@ public class CurrentDayAllQuotaJob implements Job {
        allContent.append("-----------34----------");
    }
    private void computequota_35() {
    private void computequota_35(Map<String,Object> sign) {
        String quotaId = "35";
        try {
            String sql=" select fr.sign_code code,fr.old_hospital hospital,fr.old_admin_team_id admin_team_id from wlyy_sign_family_renew_log fr where    fr.apply_date<'"+ tomorrow+"' and  fr.sign_year= '" + Constant.getNowYearByDate(tomorrow) + "' and fr.admin_team_id!=fr.old_admin_team_id  and LENGTH(fr.hospital)=10 and LENGTH(fr.old_hospital)=10 ";
            //抽取數據
            List<SignFamilyRenew> signFamilies = SpringUtil.getBean(DBExtract.class).extract(SignFamilyRenew.class, sql);
            List<SignFamilyRenew> signFamilies = (List<SignFamilyRenew>)sign.get("signFamilies");
            String sql =  (String)sign.get("sql");
//            String sql=" select fr.sign_code code,fr.old_hospital hospital,fr.old_admin_team_id admin_team_id from wlyy_sign_family_renew_log fr where    fr.apply_date<'"+ tomorrow+"' and  fr.sign_year= '" + Constant.getNowYearByDate(tomorrow) + "' and fr.admin_team_id!=fr.old_admin_team_id  and LENGTH(fr.hospital)=10 and LENGTH(fr.old_hospital)=10 ";
//            //抽取數據
//            List<SignFamilyRenew> signFamilies = SpringUtil.getBean(DBExtract.class).extract(SignFamilyRenew.class, sql);
            //清洗數據
            FilterModel etlModels = SpringUtil.getBean(RenewSignDataFilter.class).filter(signFamilies, sql, "now");
            //统计数据
@ -1447,6 +1622,30 @@ public class CurrentDayAllQuotaJob implements Job {
        }
        allContent.append("-----------35----------");
    }
    private void computequota_55(Map<String,Object> sign) {
        String quotaId = "55";
        try {
            List<SignFamilyRenew> signFamilies = (List<SignFamilyRenew>)sign.get("signFamilies");
            String sql =  (String)sign.get("sql");
            //清洗數據
            FilterModel etlModels = SpringUtil.getBean(RenewSignDataFilter.class).filter(signFamilies,"2",null ,sql, "now");
            //统计数据 一级维度
            List<Map<String, List<ETLModel>>> returnDatas = SpringUtil.getBean(Level1Role.class).elt(etlModels.getEtlModelList());
            //统计数据 二级维度
            List<Map<String, Map<String, List<ETLModel>>>> patientSexRoleData = SpringUtil.getBean(Level2Role.class).elt(returnDatas);
            //保存数据
            SpringUtil.getBean(RedisStorage.class).saveByLevel2(patientSexRoleData, null, quotaId, 12, 10, 0);
            allContent.append(JsonUtil.objToStr(etlModels.getLogModel()));
        } catch (Exception e) {
            e.printStackTrace();
            allContent.append("统计失败:" + e.getMessage());
        }
        allContent.append("-----------55----------");
    }
    private void computequota_38() {
        String quotaId = "38";
        try {
@ -1467,12 +1666,17 @@ public class CurrentDayAllQuotaJob implements Job {
        allContent.append("-----------38----------");
    }
    private void computequota_39() {
    private void computequota_39(Map<String,Object> sign) {
        String quotaId = "39";
        try {
            String sql=" select fr.sign_code code,fr.old_hospital hospital,fr.old_admin_team_id admin_team_id from wlyy_sign_family_renew_log fr where   fr.apply_date<'"+ tomorrow+"' and  fr.sign_year= '" + Constant.getNowYearByDate(tomorrow) + "' and fr.admin_team_id!=fr.old_admin_team_id and fr.hospital!=fr.old_hospital and LENGTH(fr.hospital)=10 and LENGTH(fr.old_hospital)=10 ";
            //抽取數據
            List<SignFamilyRenew> signFamilies = SpringUtil.getBean(DBExtract.class).extract(SignFamilyRenew.class, sql);
            List<SignFamilyRenew> signFamilies = (List<SignFamilyRenew>)sign.get("signFamilies");
            String sql =  (String)sign.get("sql");
//            String sql=" select fr.sign_code code,fr.old_hospital hospital,fr.old_admin_team_id admin_team_id from wlyy_sign_family_renew_log fr where   fr.apply_date<'"+ tomorrow+"' and  fr.sign_year= '" + Constant.getNowYearByDate(tomorrow) + "' and fr.admin_team_id!=fr.old_admin_team_id and fr.hospital!=fr.old_hospital and LENGTH(fr.hospital)=10 and LENGTH(fr.old_hospital)=10 ";
//            //抽取數據
//            List<SignFamilyRenew> signFamilies = SpringUtil.getBean(DBExtract.class).extract(SignFamilyRenew.class, sql);
            //清洗數據
            FilterModel etlModels = SpringUtil.getBean(RenewSignDataFilter.class).filter(signFamilies, sql, "now");
            //统计数据
@ -1486,6 +1690,31 @@ public class CurrentDayAllQuotaJob implements Job {
        }
        allContent.append("-----------39----------");
    }
    private void computequota_56(Map<String,Object> sign) {
        String quotaId = "56";
        try {
            List<SignFamilyRenew> signFamilies = (List<SignFamilyRenew>)sign.get("signFamilies");
            String sql =  (String)sign.get("sql");
//            String sql=" select fr.sign_code code,fr.old_hospital hospital,fr.old_admin_team_id admin_team_id from wlyy_sign_family_renew_log fr where   fr.apply_date<'"+ tomorrow+"' and  fr.sign_year= '" + Constant.getNowYearByDate(tomorrow) + "' and fr.admin_team_id!=fr.old_admin_team_id and fr.hospital!=fr.old_hospital and LENGTH(fr.hospital)=10 and LENGTH(fr.old_hospital)=10 ";
//            //抽取數據
//            List<SignFamilyRenew> signFamilies = SpringUtil.getBean(DBExtract.class).extract(SignFamilyRenew.class, sql);
            //清洗數據
            FilterModel etlModels = SpringUtil.getBean(RenewSignDataFilter.class).filter(signFamilies,"2",null,sql, "now");
            //统计数据 一级维度
            List<Map<String, List<ETLModel>>> returnDatas = SpringUtil.getBean(Level1Role.class).elt(etlModels.getEtlModelList());
            //统计数据 二级维度
            List<Map<String, Map<String, List<ETLModel>>>> patientSexRoleData = SpringUtil.getBean(Level2Role.class).elt(returnDatas);
            //保存数据
            SpringUtil.getBean(RedisStorage.class).saveByLevel2(patientSexRoleData, null, quotaId, 12, 10, 0);
            allContent.append(JsonUtil.objToStr(etlModels.getLogModel()));
        } catch (Exception e) {
            e.printStackTrace();
            allContent.append("统计失败:" + e.getMessage());
        }
        allContent.append("-----------56----------");
    }
    public List<Map<String, Object>> getCityTowms() {
        List<Map<String, Object>> map = jdbcTemplate.queryForList(getAvgSqlByCode("city_town_SQL"));
        return map;
@ -1511,12 +1740,14 @@ public class CurrentDayAllQuotaJob implements Job {
        allContent.append("-----------40----------");
    }
    private void computequota_41() {
    private void computequota_41(Map<String,Object> sign) {
        String quotaId = "41";
        try {
            String sql=" select fr.sign_code code,fr.old_hospital hospital,fr.old_admin_team_id admin_team_id from wlyy_sign_family_renew_log fr where   fr.apply_date<'"+ tomorrow+"' and  fr.sign_year= '" + Constant.getNowYearByDate(tomorrow) + "' and fr.admin_team_id!=fr.old_admin_team_id and fr.hospital!=fr.old_hospital and LEFT(fr.hospital,6)!=LEFT(fr.old_hospital,6)  and LENGTH(fr.hospital)=10 and LENGTH(fr.old_hospital)=10 ";
            //抽取數據
            List<SignFamilyRenew> signFamilies = SpringUtil.getBean(DBExtract.class).extract(SignFamilyRenew.class, sql);
            List<SignFamilyRenew> signFamilies = (List<SignFamilyRenew>)sign.get("signFamilies");
            String sql =  (String)sign.get("sql");
//            String sql=" select fr.sign_code code,fr.old_hospital hospital,fr.old_admin_team_id admin_team_id from wlyy_sign_family_renew_log fr where   fr.apply_date<'"+ tomorrow+"' and  fr.sign_year= '" + Constant.getNowYearByDate(tomorrow) + "' and fr.admin_team_id!=fr.old_admin_team_id and fr.hospital!=fr.old_hospital and LEFT(fr.hospital,6)!=LEFT(fr.old_hospital,6)  and LENGTH(fr.hospital)=10 and LENGTH(fr.old_hospital)=10 ";
//            //抽取數據
//            List<SignFamilyRenew> signFamilies = SpringUtil.getBean(DBExtract.class).extract(SignFamilyRenew.class, sql);
            //清洗數據
            FilterModel etlModels = SpringUtil.getBean(RenewSignDataFilter.class).filter(signFamilies, sql, "now");
            //统计数据
@ -1531,12 +1762,35 @@ public class CurrentDayAllQuotaJob implements Job {
        allContent.append("-----------41----------");
    }
    private void computequota_42() {
    private void computequota_57(Map<String,Object> sign) {
        String quotaId = "57";
        try {
            List<SignFamilyRenew> signFamilies = (List<SignFamilyRenew>)sign.get("signFamilies");
            String sql =  (String)sign.get("sql");
//            String sql=" select fr.sign_code code,fr.old_hospital hospital,fr.old_admin_team_id admin_team_id from wlyy_sign_family_renew_log fr where   fr.apply_date<'"+ tomorrow+"' and  fr.sign_year= '" + Constant.getNowYearByDate(tomorrow) + "' and fr.admin_team_id!=fr.old_admin_team_id and fr.hospital!=fr.old_hospital and LEFT(fr.hospital,6)!=LEFT(fr.old_hospital,6)  and LENGTH(fr.hospital)=10 and LENGTH(fr.old_hospital)=10 ";
//            //抽取數據
//            List<SignFamilyRenew> signFamilies = SpringUtil.getBean(DBExtract.class).extract(SignFamilyRenew.class, sql);
            //清洗數據
            FilterModel etlModels = SpringUtil.getBean(RenewSignDataFilter.class).filter(signFamilies,"2",null, sql, "now");
            //统计数据 一级维度
            List<Map<String, List<ETLModel>>> returnDatas = SpringUtil.getBean(Level1Role.class).elt(etlModels.getEtlModelList());
            //统计数据 二级维度
            List<Map<String, Map<String, List<ETLModel>>>> patientSexRoleData = SpringUtil.getBean(Level2Role.class).elt(returnDatas);
            //保存数据
            SpringUtil.getBean(RedisStorage.class).saveByLevel2(patientSexRoleData, null, quotaId, 12, 10, 0);
            allContent.append(JsonUtil.objToStr(etlModels.getLogModel()));
        } catch (Exception e) {
            e.printStackTrace();
            allContent.append("统计失败:" + e.getMessage());
        }
        allContent.append("-----------57----------");
    }
    private void computequota_42(Map<String,Object> sign) {
        String quotaId = "42";
        try {
            String sql=" select fr.sign_code code,fr.old_hospital hospital,fr.old_admin_team_id admin_team_id from wlyy_sign_family_renew_log fr where   fr.apply_date<'"+ tomorrow+"' and  fr.sign_year= '" + Constant.getNowYearByDate(tomorrow) + "' and fr.admin_team_id=fr.old_admin_team_id  and LENGTH(fr.hospital)=10 and LENGTH(fr.old_hospital)=10 ";
            //抽取數據
            List<SignFamilyRenew> signFamilies = SpringUtil.getBean(DBExtract.class).extract(SignFamilyRenew.class, sql);
            List<SignFamilyRenew> signFamilies = (List<SignFamilyRenew>)sign.get("signFamilies");
            String sql =  (String)sign.get("sql");
            //清洗數據
            FilterModel etlModels = SpringUtil.getBean(RenewSignDataFilter.class).filter(signFamilies, sql, "now");
            //统计数据
@ -1550,12 +1804,14 @@ public class CurrentDayAllQuotaJob implements Job {
        }
        allContent.append("-----------42----------");
    }
    private void computequota_43() {
    private void computequota_43(Map<String,Object> sign) {
        String quotaId = "43";
        try {
            String sql=" select fr.sign_code code,fr.old_hospital hospital,fr.old_admin_team_id admin_team_id from wlyy_sign_family_renew_log fr where   fr.apply_date<'"+ tomorrow+"' and  fr.sign_year= '" + Constant.getNowYearByDate(tomorrow) + "'and  fr.hospital=fr.old_hospital  and LENGTH(fr.hospital)=10 and LENGTH(fr.old_hospital)=10 ";
            //抽取數據
            List<SignFamilyRenew> signFamilies = SpringUtil.getBean(DBExtract.class).extract(SignFamilyRenew.class, sql);
            List<SignFamilyRenew> signFamilies = (List<SignFamilyRenew>)sign.get("signFamilies");
            String sql =  (String)sign.get("sql");
//            String sql=" select fr.sign_code code,fr.old_hospital hospital,fr.old_admin_team_id admin_team_id from wlyy_sign_family_renew_log fr where   fr.apply_date<'"+ tomorrow+"' and  fr.sign_year= '" + Constant.getNowYearByDate(tomorrow) + "'and  fr.hospital=fr.old_hospital  and LENGTH(fr.hospital)=10 and LENGTH(fr.old_hospital)=10 ";
//            //抽取數據
//            List<SignFamilyRenew> signFamilies = SpringUtil.getBean(DBExtract.class).extract(SignFamilyRenew.class, sql);
            //清洗數據
            FilterModel etlModels = SpringUtil.getBean(RenewSignDataFilter.class).filter(signFamilies, sql, "now");
            //统计数据
@ -1569,17 +1825,64 @@ public class CurrentDayAllQuotaJob implements Job {
        }
        allContent.append("-----------43----------");
    }
    private void computequota_44() {
    private void computequota_52(Map<String,Object> sign) {
        String quotaId = "52";
        try {
            List<SignFamilyRenew> signFamilies = (List<SignFamilyRenew>)sign.get("signFamilies");
            String sql =  (String)sign.get("sql");
            //清洗數據
            FilterModel etlModels = SpringUtil.getBean(RenewSignDataFilter.class).filter(signFamilies, "2",null,sql, "now");
            //统计数据 一级维度
            List<Map<String, List<ETLModel>>> returnDatas = SpringUtil.getBean(Level1Role.class).elt(etlModels.getEtlModelList());
            //统计数据 二级维度
            List<Map<String, Map<String, List<ETLModel>>>> patientSexRoleData = SpringUtil.getBean(Level2Role.class).elt(returnDatas);
            //保存数据
            SpringUtil.getBean(RedisStorage.class).saveByLevel2(patientSexRoleData, null, quotaId, 12, 10, 0);
            allContent.append(JsonUtil.objToStr(etlModels.getLogModel()));
        } catch (Exception e) {
            e.printStackTrace();
            allContent.append("统计失败:" + e.getMessage());
        }
        allContent.append("-----------52----------");
    }
    private void computequota_53(Map<String,Object> sign) {
        String quotaId = "53";
        try {
            List<SignFamilyRenew> signFamilies = (List<SignFamilyRenew>)sign.get("signFamilies");
            String sql =  (String)sign.get("sql");
//            String sql=" select fr.sign_code code,fr.old_hospital hospital,fr.old_admin_team_id admin_team_id from wlyy_sign_family_renew_log fr where   fr.apply_date<'"+ tomorrow+"' and  fr.sign_year= '" + Constant.getNowYearByDate(tomorrow) + "'and  fr.hospital=fr.old_hospital  and LENGTH(fr.hospital)=10 and LENGTH(fr.old_hospital)=10 ";
//            //抽取數據
//            List<SignFamilyRenew> signFamilies = SpringUtil.getBean(DBExtract.class).extract(SignFamilyRenew.class, sql);
            //清洗數據
            FilterModel etlModels = SpringUtil.getBean(RenewSignDataFilter.class).filter(signFamilies, "2",null,sql, "now");
            //统计数据 一级维度
            List<Map<String, List<ETLModel>>> returnDatas = SpringUtil.getBean(Level1Role.class).elt(etlModels.getEtlModelList());
            //统计数据 二级维度
            List<Map<String, Map<String, List<ETLModel>>>> patientSexRoleData = SpringUtil.getBean(Level2Role.class).elt(returnDatas);
            //保存数据
            SpringUtil.getBean(RedisStorage.class).saveByLevel2(patientSexRoleData, null, quotaId, 12, 10, 0);
            allContent.append(JsonUtil.objToStr(etlModels.getLogModel()));
        } catch (Exception e) {
            e.printStackTrace();
            allContent.append("统计失败:" + e.getMessage());
        }
        allContent.append("-----------53----------");
    }
    private void computequota_44(Map<String,Object> sign) {
        String quotaId = "44";
        try {
            String sql=" select fr.sign_code code,fr.old_hospital hospital,fr.old_admin_team_id admin_team_id from wlyy_sign_family_renew_log fr where  " +
                    " fr.apply_date<'"+ tomorrow+"' and " +
                    " fr.sign_year= '" + Constant.getNowYearByDate(tomorrow) + "' and " +
                    " LEFT(fr.hospital,6)=LEFT(fr.old_hospital,6)  and " +
                    " LENGTH(fr.hospital)=10 and " +
                    " LENGTH(fr.old_hospital)=10 ";
            //抽取數據
            List<SignFamilyRenew> signFamilies = SpringUtil.getBean(DBExtract.class).extract(SignFamilyRenew.class, sql);
//            String sql=" select fr.sign_code code,fr.old_hospital hospital,fr.old_admin_team_id admin_team_id from wlyy_sign_family_renew_log fr where  " +
//                    " fr.apply_date<'"+ tomorrow+"' and " +
//                    " fr.sign_year= '" + Constant.getNowYearByDate(tomorrow) + "' and " +
//                    " LEFT(fr.hospital,6)=LEFT(fr.old_hospital,6)  and " +
//                    " LENGTH(fr.hospital)=10 and " +
//                    " LENGTH(fr.old_hospital)=10 ";
//            //抽取數據
//            List<SignFamilyRenew> signFamilies = SpringUtil.getBean(DBExtract.class).extract(SignFamilyRenew.class, sql);
            List<SignFamilyRenew> signFamilies = (List<SignFamilyRenew>)sign.get("signFamilies");
            String sql =  (String)sign.get("sql");
            //清洗數據
            FilterModel etlModels = SpringUtil.getBean(RenewSignDataFilter.class).filter(signFamilies, sql, "now");
            //统计数据
@ -1593,6 +1896,36 @@ public class CurrentDayAllQuotaJob implements Job {
        }
        allContent.append("-----------44----------");
    }
    private void computequota_54(Map<String,Object> sign) {
        String quotaId = "54";
        try {
//            String sql=" select fr.sign_code code,fr.old_hospital hospital,fr.old_admin_team_id admin_team_id from wlyy_sign_family_renew_log fr where  " +
//                    " fr.apply_date<'"+ tomorrow+"' and " +
//                    " fr.sign_year= '" + Constant.getNowYearByDate(tomorrow) + "' and " +
//                    " LEFT(fr.hospital,6)=LEFT(fr.old_hospital,6)  and " +
//                    " LENGTH(fr.hospital)=10 and " +
//                    " LENGTH(fr.old_hospital)=10 ";
//            //抽取數據
//            List<SignFamilyRenew> signFamilies = SpringUtil.getBean(DBExtract.class).extract(SignFamilyRenew.class, sql);
            List<SignFamilyRenew> signFamilies = (List<SignFamilyRenew>)sign.get("signFamilies");
            String sql =  (String)sign.get("sql");
            //清洗數據
            FilterModel etlModels = SpringUtil.getBean(RenewSignDataFilter.class).filter(signFamilies,"2",null,sql,"now");
            //统计数据 一级维度
            List<Map<String, List<ETLModel>>> returnDatas = SpringUtil.getBean(Level1Role.class).elt(etlModels.getEtlModelList());
            //统计数据 二级维度
            List<Map<String, Map<String, List<ETLModel>>>> patientSexRoleData = SpringUtil.getBean(Level2Role.class).elt(returnDatas);
            //保存数据
            SpringUtil.getBean(RedisStorage.class).saveByLevel2(patientSexRoleData, null, quotaId, 12, 10, 0);
            allContent.append(JsonUtil.objToStr(etlModels.getLogModel()));
        } catch (Exception e) {
            e.printStackTrace();
            allContent.append("统计失败:" + e.getMessage());
        }
        allContent.append("-----------54----------");
    }
    private void computequota_45() {
        String quotaId = "45";
        try {

+ 1 - 1
patient-co/patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/business/SignServerTypeJob.java

@ -100,7 +100,7 @@ public class SignServerTypeJob implements Job {
            List<Map<String, List<ETLModel>>> returnDatas = levelRole.elt(etlModels.getEtlModelList());
            //统计数据 二级维度
            List<Map<String, Map<String, List<ETLModel>>>> level2Data = level2Role.elt(returnDatas);
            dbStorage.saveByLevel2(level2Data, yesterday, wlyyQuota, 13, 10, 0);
            dbStorage.saveByLevel2(level2Data, yesterday, wlyyQuota, 12, 10, 0);
            //保存日志
            quartzJobLog.setJobEndTime(new Date());

+ 1 - 0
patient-co/patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/business/WechatCountJob.java

@ -96,6 +96,7 @@ public class WechatCountJob implements Job {
                    "   p.idcard = sf.idcard " +
                    " AND sf.type = 2 " +
                    " AND sf. STATUS IN (1, 2) " +
                    " AND (sf.expenses_status =0 or sf.expenses_status =1)" +
                    " AND p.openid is not null  " +
                    " AND p.openid_time <'" +yesterday+ Constant.quota_date_last+"' " +
                    " and sf.sign_year ='"+Constant.getNowYearByDateYeaterday(yesterday)+"'  " ;

+ 116 - 0
patient-co/patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/business/signServer/RenewSignOrgOutServerJob.java

@ -0,0 +1,116 @@
package com.yihu.wlyy.statistics.job.business.signServer;
import com.yihu.wlyy.statistics.dao.QuartzJobLogDao;
import com.yihu.wlyy.statistics.etl.dataFilter.RenewSignDataFilter;
import com.yihu.wlyy.statistics.etl.extract.DBExtract;
import com.yihu.wlyy.statistics.etl.model.ETLModel;
import com.yihu.wlyy.statistics.etl.model.FilterModel;
import com.yihu.wlyy.statistics.etl.model.RenewCacheModel;
import com.yihu.wlyy.statistics.etl.mycache.CachePool;
import com.yihu.wlyy.statistics.etl.role.Level1Role;
import com.yihu.wlyy.statistics.etl.role.Level2Role;
import com.yihu.wlyy.statistics.etl.storage.DBStorage;
import com.yihu.wlyy.statistics.job.business.Constant;
import com.yihu.wlyy.statistics.job.business.SignJob;
import com.yihu.wlyy.statistics.model.job.QuartzJobLog;
import com.yihu.wlyy.statistics.model.signfamily.SignFamilyRenew;
import com.yihu.wlyy.statistics.util.JsonUtil;
import com.yihu.wlyy.statistics.vo.WlyyJobConfigVO;
import com.yihu.wlyy.statistics.vo.WlyyQuotaVO;
import org.quartz.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import org.springframework.web.context.support.SpringBeanAutowiringSupport;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
 * 续签团队签入服务类型维度的指标执行类
 */
@Component
@Scope("prototype")
@DisallowConcurrentExecution//防止到了执行时间点前一任务还在执行中,但是这时有空闲的线程,那么马上又会执行,这样一来就会存在同一job被并行执行
public class RenewSignOrgOutServerJob implements Job {
    private WlyyQuotaVO wlyyQuota;//指标对象
    private WlyyJobConfigVO wlyyJobConfig;//配置对象
    @Autowired
    private QuartzJobLogDao quartzJobLogDao;//执行日志Dao
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Autowired
    private Level1Role levelRole;
    @Autowired
    private Level2Role level2Role;
    @Autowired
    private DBStorage dbStorage;
    @Autowired
    private DBExtract dbExtract;
    @Autowired
    private RenewSignDataFilter signDataFilter;
    @Autowired
    private CachePool cachePool;
    String yesterday;
    String daybefore;
    @Override
    public void execute(JobExecutionContext context)
            throws JobExecutionException {
        try{
            SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);
            //初始化参数
            JobDataMap map = context.getJobDetail().getJobDataMap();
            wlyyQuota = (WlyyQuotaVO) map.get("quota");
            wlyyJobConfig = (WlyyJobConfigVO) map.get("jobConfig");
            daybefore= StringUtils.isEmpty(map.get("daybefore"))? SignJob.getDayString(-2):map.get("daybefore").toString();
            yesterday= StringUtils.isEmpty(map.get("yesterday"))?SignJob.getDayString(-1):map.get("yesterday").toString();
            //计算指标
            computequota();
        }catch (Exception e){
            //如果出錯立即重新執行
            JobExecutionException e2 =new JobExecutionException(e);
            e2.setRefireImmediately(true);
        }
    }
    /**
     * 计算指标
     */
    @Transactional
    private void computequota() {
        try{
            jdbcTemplate.execute("delete from wlyy_quota_result where quota_date='"+yesterday+"' and quato_code='"+39+"'");
            //新建任务日志对象
            QuartzJobLog quartzJobLog = new QuartzJobLog();
            quartzJobLog.setJobStartTime(new Date());
            quartzJobLog.setJobId(wlyyJobConfig.getId());
            quartzJobLog.setJobName(wlyyJobConfig.getJobName());
            //抽取數據
            RenewCacheModel cacheModel= cachePool.getArriveRenewSignOrgOutMapByDate(yesterday);
            //清洗數據
            FilterModel etlModels= signDataFilter.filter(cacheModel.getSignFamilies(),"2",null,cacheModel.getSql(),yesterday);
            //统计数据 1级维度
            List<Map<String, List<ETLModel>>>  returnDatas= levelRole.elt(etlModels.getEtlModelList());
            //统计数据 二级维度
            List<Map<String, Map<String, List<ETLModel>>>>  level2Data= level2Role.elt(returnDatas);;
            //保存数据
            dbStorage.saveByLevel2(level2Data,yesterday,wlyyQuota,12,10,1);
            //保存日志
            quartzJobLog.setJobEndTime(new Date());
            quartzJobLog.setJobContent(JsonUtil.objToStr(etlModels.getLogModel()));
            quartzJobLog.setJobType(etlModels.getError()?"1":"0");
            quartzJobLogDao.save(quartzJobLog);
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

+ 115 - 0
patient-co/patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/business/signServer/RenewSignOrgServerJob.java

@ -0,0 +1,115 @@
package com.yihu.wlyy.statistics.job.business.signServer;
import com.yihu.wlyy.statistics.dao.QuartzJobLogDao;
import com.yihu.wlyy.statistics.etl.dataFilter.RenewSignDataFilter;
import com.yihu.wlyy.statistics.etl.extract.DBExtract;
import com.yihu.wlyy.statistics.etl.model.ETLModel;
import com.yihu.wlyy.statistics.etl.model.FilterModel;
import com.yihu.wlyy.statistics.etl.model.RenewCacheModel;
import com.yihu.wlyy.statistics.etl.mycache.CachePool;
import com.yihu.wlyy.statistics.etl.role.Level1Role;
import com.yihu.wlyy.statistics.etl.role.Level2Role;
import com.yihu.wlyy.statistics.etl.storage.DBStorage;
import com.yihu.wlyy.statistics.job.business.Constant;
import com.yihu.wlyy.statistics.job.business.SignJob;
import com.yihu.wlyy.statistics.model.job.QuartzJobLog;
import com.yihu.wlyy.statistics.model.signfamily.SignFamilyRenew;
import com.yihu.wlyy.statistics.util.JsonUtil;
import com.yihu.wlyy.statistics.vo.WlyyJobConfigVO;
import com.yihu.wlyy.statistics.vo.WlyyQuotaVO;
import org.quartz.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import org.springframework.web.context.support.SpringBeanAutowiringSupport;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
/**
 * 续签的市级指标执行类(服务类型维度)
 */
@Component
@Scope("prototype")
@DisallowConcurrentExecution//防止到了执行时间点前一任务还在执行中,但是这时有空闲的线程,那么马上又会执行,这样一来就会存在同一job被并行执行
public class RenewSignOrgServerJob implements Job {
    private WlyyQuotaVO wlyyQuota;//指标对象
    private WlyyJobConfigVO wlyyJobConfig;//配置对象
    @Autowired
    private QuartzJobLogDao quartzJobLogDao;//执行日志Dao
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Autowired
    private Level1Role levelRole;
    @Autowired
    private Level2Role level2Role;
    @Autowired
    private DBStorage dbStorage;
    @Autowired
    private DBExtract dbExtract;
    @Autowired
    private RenewSignDataFilter signDataFilter;
    @Autowired
    private CachePool cachePool;
    String yesterday;
    String daybefore;
    @Override
    public void execute(JobExecutionContext context)
            throws JobExecutionException {
        try{
            SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);
            //初始化参数
            JobDataMap map = context.getJobDetail().getJobDataMap();
            wlyyQuota = (WlyyQuotaVO) map.get("quota");
            wlyyJobConfig = (WlyyJobConfigVO) map.get("jobConfig");
            daybefore= StringUtils.isEmpty(map.get("daybefore"))? SignJob.getDayString(-2):map.get("daybefore").toString();
            yesterday= StringUtils.isEmpty(map.get("yesterday"))?SignJob.getDayString(-1):map.get("yesterday").toString();
            //计算指标
            computequota();
        }catch (Exception e){
            //如果出錯立即重新執行
            JobExecutionException e2 =new JobExecutionException(e);
            e2.setRefireImmediately(true);
        }
    }
    /**
     * 计算指标RenewSignTownJob
     */
    @Transactional
    private void computequota() {
        try{
            jdbcTemplate.execute("delete from wlyy_quota_result where quota_date='"+yesterday+"' and quato_code='"+43+"'");
            //新建任务日志对象
            QuartzJobLog quartzJobLog = new QuartzJobLog();
            quartzJobLog.setJobStartTime(new Date());
            quartzJobLog.setJobId(wlyyJobConfig.getId());
            quartzJobLog.setJobName(wlyyJobConfig.getJobName());
            //从缓存取数据
            RenewCacheModel cacheModel=cachePool.getArriveRenewTotalOrgMapByDate(yesterday);
            //清洗數據
            FilterModel etlModels= signDataFilter.filter(cacheModel.getSignFamilies(),"2",null,cacheModel.getSql(),yesterday);
            //统计数据 1级维度
            List<Map<String, List<ETLModel>>>  returnDatas= levelRole.elt(etlModels.getEtlModelList());
            //统计数据 二级维度
            List<Map<String, Map<String, List<ETLModel>>>>  level2Data= level2Role.elt(returnDatas);;
            //保存数据
            dbStorage.saveByLevel2(level2Data,yesterday,wlyyQuota,12,10,1);
            //保存日志
            quartzJobLog.setJobEndTime(new Date());
            quartzJobLog.setJobContent(JsonUtil.objToStr(etlModels.getLogModel()));
            quartzJobLog.setJobType(etlModels.getError()?"1":"0");
            quartzJobLogDao.save(quartzJobLog);
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

+ 115 - 0
patient-co/patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/business/signServer/RenewSignServerJob.java

@ -0,0 +1,115 @@
package com.yihu.wlyy.statistics.job.business.signServer;
import com.yihu.wlyy.statistics.dao.QuartzJobLogDao;
import com.yihu.wlyy.statistics.etl.dataFilter.RenewSignDataFilter;
import com.yihu.wlyy.statistics.etl.extract.DBExtract;
import com.yihu.wlyy.statistics.etl.model.CacheModel;
import com.yihu.wlyy.statistics.etl.model.ETLModel;
import com.yihu.wlyy.statistics.etl.model.FilterModel;
import com.yihu.wlyy.statistics.etl.model.RenewCacheModel;
import com.yihu.wlyy.statistics.etl.mycache.CachePool;
import com.yihu.wlyy.statistics.etl.role.Level1Role;
import com.yihu.wlyy.statistics.etl.role.Level2Role;
import com.yihu.wlyy.statistics.etl.storage.DBStorage;
import com.yihu.wlyy.statistics.job.business.SignJob;
import com.yihu.wlyy.statistics.model.job.QuartzJobLog;
import com.yihu.wlyy.statistics.util.JsonUtil;
import com.yihu.wlyy.statistics.vo.WlyyJobConfigVO;
import com.yihu.wlyy.statistics.vo.WlyyQuotaVO;
import org.quartz.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import org.springframework.web.context.support.SpringBeanAutowiringSupport;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
 * 续签的市级指标执行类(服务类型维度)
 */
@Component
@Scope("prototype")
@DisallowConcurrentExecution//防止到了执行时间点前一任务还在执行中,但是这时有空闲的线程,那么马上又会执行,这样一来就会存在同一job被并行执行
public class RenewSignServerJob implements Job {
    private WlyyQuotaVO wlyyQuota;//指标对象
    private WlyyJobConfigVO wlyyJobConfig;//配置对象
    @Autowired
    private QuartzJobLogDao quartzJobLogDao;//执行日志Dao
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Autowired
    private Level1Role levelRole;
    @Autowired
    private Level2Role level2Role;
    @Autowired
    private DBStorage dbStorage;
    @Autowired
    private DBExtract dbExtract;
    @Autowired
    private RenewSignDataFilter signDataFilter;
    @Autowired
    private CachePool cachePool;
    String yesterday;
    String daybefore;
    @Override
    public void execute(JobExecutionContext context)
            throws JobExecutionException {
        try{
            SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);
            //初始化参数
            JobDataMap map = context.getJobDetail().getJobDataMap();
            wlyyQuota = (WlyyQuotaVO) map.get("quota");
            wlyyJobConfig = (WlyyJobConfigVO) map.get("jobConfig");
            daybefore= StringUtils.isEmpty(map.get("daybefore"))? SignJob.getDayString(-2):map.get("daybefore").toString();
            yesterday= StringUtils.isEmpty(map.get("yesterday"))?SignJob.getDayString(-1):map.get("yesterday").toString();
            //计算指标
            computequota();
        }catch (Exception e){
            //如果出錯立即重新執行
            JobExecutionException e2 =new JobExecutionException(e);
            e2.setRefireImmediately(true);
        }
    }
    /**
     * 计算指标
     */
    @Transactional
    private void computequota() {
        try{
            jdbcTemplate.execute("delete from wlyy_quota_result where quota_date='"+yesterday+"' and quato_code='"+29+"'");
            //新建任务日志对象
            QuartzJobLog quartzJobLog = new QuartzJobLog();
            quartzJobLog.setJobStartTime(new Date());
            quartzJobLog.setJobId(wlyyJobConfig.getId());
            quartzJobLog.setJobName(wlyyJobConfig.getJobName());
            //从缓存取数据
            RenewCacheModel cacheModel=cachePool.getArriveRenewTotalCityMapByDate(yesterday);
            //清洗數據
            FilterModel etlModels= signDataFilter.filter(cacheModel.getSignFamilies(),"2",null,cacheModel.getSql(),yesterday);
            //统计数据 1级维度
            List<Map<String, List<ETLModel>>>  returnDatas= levelRole.elt(etlModels.getEtlModelList());
            //统计数据 二级维度
            List<Map<String, Map<String, List<ETLModel>>>>  level2Data= level2Role.elt(returnDatas);;
            //保存数据
            dbStorage.saveByLevel2(level2Data,yesterday,wlyyQuota,12,10,1);
            //保存日志
            quartzJobLog.setJobEndTime(new Date());
            quartzJobLog.setJobContent(JsonUtil.objToStr(etlModels.getLogModel()));
            quartzJobLog.setJobType(etlModels.getError()?"1":"0");
            quartzJobLogDao.save(quartzJobLog);
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

+ 114 - 0
patient-co/patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/business/signServer/RenewSignTeamOutServerJob.java

@ -0,0 +1,114 @@
package com.yihu.wlyy.statistics.job.business.signServer;
import com.yihu.wlyy.statistics.dao.QuartzJobLogDao;
import com.yihu.wlyy.statistics.etl.dataFilter.RenewSignDataFilter;
import com.yihu.wlyy.statistics.etl.extract.DBExtract;
import com.yihu.wlyy.statistics.etl.model.ETLModel;
import com.yihu.wlyy.statistics.etl.model.FilterModel;
import com.yihu.wlyy.statistics.etl.model.RenewCacheModel;
import com.yihu.wlyy.statistics.etl.mycache.CachePool;
import com.yihu.wlyy.statistics.etl.role.Level1Role;
import com.yihu.wlyy.statistics.etl.role.Level2Role;
import com.yihu.wlyy.statistics.etl.storage.DBStorage;
import com.yihu.wlyy.statistics.job.business.Constant;
import com.yihu.wlyy.statistics.job.business.SignJob;
import com.yihu.wlyy.statistics.model.job.QuartzJobLog;
import com.yihu.wlyy.statistics.model.signfamily.SignFamilyRenew;
import com.yihu.wlyy.statistics.util.JsonUtil;
import com.yihu.wlyy.statistics.vo.WlyyJobConfigVO;
import com.yihu.wlyy.statistics.vo.WlyyQuotaVO;
import org.quartz.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import org.springframework.web.context.support.SpringBeanAutowiringSupport;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
 * 续签团队签出服务类型维度的指标执行类
 */
@Component
@Scope("prototype")
@DisallowConcurrentExecution//防止到了执行时间点前一任务还在执行中,但是这时有空闲的线程,那么马上又会执行,这样一来就会存在同一job被并行执行
public class RenewSignTeamOutServerJob implements Job {
    private WlyyQuotaVO wlyyQuota;//指标对象
    private WlyyJobConfigVO wlyyJobConfig;//配置对象
    @Autowired
    private QuartzJobLogDao quartzJobLogDao;//执行日志Dao
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Autowired
    private Level1Role levelRole;
    @Autowired
    private Level2Role level2Role;
    @Autowired
    private DBStorage dbStorage;
    @Autowired
    private DBExtract dbExtract;
    @Autowired
    private RenewSignDataFilter signDataFilter;
    @Autowired
    private CachePool cachePool;
    String yesterday;
    String daybefore;
    @Override
    public void execute(JobExecutionContext context)
            throws JobExecutionException {
        try{
            SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);
            //初始化参数
            JobDataMap map = context.getJobDetail().getJobDataMap();
            wlyyQuota = (WlyyQuotaVO) map.get("quota");
            wlyyJobConfig = (WlyyJobConfigVO) map.get("jobConfig");
            daybefore= StringUtils.isEmpty(map.get("daybefore"))? SignJob.getDayString(-2):map.get("daybefore").toString();
            yesterday= StringUtils.isEmpty(map.get("yesterday"))?SignJob.getDayString(-1):map.get("yesterday").toString();
            //计算指标
            computequota();
        }catch (Exception e){
            //如果出錯立即重新執行
            JobExecutionException e2 =new JobExecutionException(e);
            e2.setRefireImmediately(true);
        }
    }
    /**
     * 计算指标
     */
    @Transactional
    private void computequota() {
        try{
            jdbcTemplate.execute("delete from wlyy_quota_result where quota_date='"+yesterday+"' and quato_code='"+35+"'");
            //新建任务日志对象
            QuartzJobLog quartzJobLog = new QuartzJobLog();
            quartzJobLog.setJobStartTime(new Date());
            quartzJobLog.setJobId(wlyyJobConfig.getId());
            quartzJobLog.setJobName(wlyyJobConfig.getJobName());
            //抽取數據
            RenewCacheModel cacheModel= cachePool.getArriveRenewSignTeamOutMapByDate(yesterday);
            //清洗數據
            FilterModel etlModels= signDataFilter.filter(cacheModel.getSignFamilies(),"2",null,cacheModel.getSql(),yesterday);
            //统计数据 1级维度
            List<Map<String, List<ETLModel>>>  returnDatas= levelRole.elt(etlModels.getEtlModelList());
            //统计数据 二级维度
            List<Map<String, Map<String, List<ETLModel>>>>  level2Data= level2Role.elt(returnDatas);;
            //保存数据
            dbStorage.saveByLevel2(level2Data,yesterday,wlyyQuota,12,10,1);
            //保存日志
            quartzJobLog.setJobEndTime(new Date());
            quartzJobLog.setJobContent(JsonUtil.objToStr(etlModels.getLogModel()));
            quartzJobLog.setJobType(etlModels.getError()?"1":"0");
            quartzJobLogDao.save(quartzJobLog);
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

+ 113 - 0
patient-co/patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/business/signServer/RenewSignTeamServerJob.java

@ -0,0 +1,113 @@
package com.yihu.wlyy.statistics.job.business.signServer;
import com.yihu.wlyy.statistics.dao.QuartzJobLogDao;
import com.yihu.wlyy.statistics.etl.dataFilter.RenewSignDataFilter;
import com.yihu.wlyy.statistics.etl.extract.DBExtract;
import com.yihu.wlyy.statistics.etl.model.ETLModel;
import com.yihu.wlyy.statistics.etl.model.FilterModel;
import com.yihu.wlyy.statistics.etl.model.RenewCacheModel;
import com.yihu.wlyy.statistics.etl.mycache.CachePool;
import com.yihu.wlyy.statistics.etl.role.Level1Role;
import com.yihu.wlyy.statistics.etl.role.Level2Role;
import com.yihu.wlyy.statistics.etl.storage.DBStorage;
import com.yihu.wlyy.statistics.job.business.Constant;
import com.yihu.wlyy.statistics.job.business.SignJob;
import com.yihu.wlyy.statistics.model.job.QuartzJobLog;
import com.yihu.wlyy.statistics.model.signfamily.SignFamilyRenew;
import com.yihu.wlyy.statistics.util.JsonUtil;
import com.yihu.wlyy.statistics.vo.WlyyJobConfigVO;
import com.yihu.wlyy.statistics.vo.WlyyQuotaVO;
import org.quartz.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import org.springframework.web.context.support.SpringBeanAutowiringSupport;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
 * 续签的团队级指标执行类(服务类型维度)
 */
@Component
@Scope("prototype")
@DisallowConcurrentExecution//防止到了执行时间点前一任务还在执行中,但是这时有空闲的线程,那么马上又会执行,这样一来就会存在同一job被并行执行
public class RenewSignTeamServerJob implements Job {
    private WlyyQuotaVO wlyyQuota;//指标对象
    private WlyyJobConfigVO wlyyJobConfig;//配置对象
    @Autowired
    private QuartzJobLogDao quartzJobLogDao;//执行日志Dao
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Autowired
    private Level1Role levelRole;
    @Autowired
    private Level2Role level2Role;
    @Autowired
    private DBStorage dbStorage;
    @Autowired
    private DBExtract dbExtract;
    @Autowired
    private RenewSignDataFilter signDataFilter;
    @Autowired
    private CachePool cachePool;
    String yesterday;
    String daybefore;
    @Override
    public void execute(JobExecutionContext context)
            throws JobExecutionException {
        try{
            SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);
            //初始化参数
            JobDataMap map = context.getJobDetail().getJobDataMap();
            wlyyQuota = (WlyyQuotaVO) map.get("quota");
            wlyyJobConfig = (WlyyJobConfigVO) map.get("jobConfig");
            daybefore= StringUtils.isEmpty(map.get("daybefore"))? SignJob.getDayString(-2):map.get("daybefore").toString();
            yesterday= StringUtils.isEmpty(map.get("yesterday"))?SignJob.getDayString(-1):map.get("yesterday").toString();
            //计算指标
            computequota();
        }catch (Exception e){
            //如果出錯立即重新執行
            JobExecutionException e2 =new JobExecutionException(e);
            e2.setRefireImmediately(true);
        }
    }
    /**
     * 计算指标
     */
    @Transactional
    private void computequota() {
        try{
            jdbcTemplate.execute("delete from wlyy_quota_result where quota_date='"+yesterday+"' and quato_code='"+42+"'");
            //新建任务日志对象
            QuartzJobLog quartzJobLog = new QuartzJobLog();
            quartzJobLog.setJobStartTime(new Date());
            quartzJobLog.setJobId(wlyyJobConfig.getId());
            quartzJobLog.setJobName(wlyyJobConfig.getJobName());
            //从缓存取数据
            RenewCacheModel cacheModel=cachePool.getArriveRenewTotalTeamMapByDate(yesterday);
            //清洗數據
            FilterModel etlModels= signDataFilter.filter(cacheModel.getSignFamilies(),"2",null,cacheModel.getSql(),yesterday);
            //统计数据 1级维度
            List<Map<String, List<ETLModel>>>  returnDatas= levelRole.elt(etlModels.getEtlModelList());
            //统计数据 二级维度
            List<Map<String, Map<String, List<ETLModel>>>>  level2Data= level2Role.elt(returnDatas);;
            //保存数据
            dbStorage.saveByLevel2(level2Data,yesterday,wlyyQuota,12,10,1);
            //保存日志
            quartzJobLog.setJobEndTime(new Date());
            quartzJobLog.setJobContent(JsonUtil.objToStr(etlModels.getLogModel()));
            quartzJobLog.setJobType(etlModels.getError()?"1":"0");
            quartzJobLogDao.save(quartzJobLog);
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

+ 113 - 0
patient-co/patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/business/signServer/RenewSignTownOutServerJob.java

@ -0,0 +1,113 @@
package com.yihu.wlyy.statistics.job.business.signServer;
import com.yihu.wlyy.statistics.dao.QuartzJobLogDao;
import com.yihu.wlyy.statistics.etl.dataFilter.RenewSignDataFilter;
import com.yihu.wlyy.statistics.etl.extract.DBExtract;
import com.yihu.wlyy.statistics.etl.model.ETLModel;
import com.yihu.wlyy.statistics.etl.model.FilterModel;
import com.yihu.wlyy.statistics.etl.model.RenewCacheModel;
import com.yihu.wlyy.statistics.etl.mycache.CachePool;
import com.yihu.wlyy.statistics.etl.role.Level1Role;
import com.yihu.wlyy.statistics.etl.role.Level2Role;
import com.yihu.wlyy.statistics.etl.storage.DBStorage;
import com.yihu.wlyy.statistics.job.business.Constant;
import com.yihu.wlyy.statistics.job.business.SignJob;
import com.yihu.wlyy.statistics.model.job.QuartzJobLog;
import com.yihu.wlyy.statistics.model.signfamily.SignFamilyRenew;
import com.yihu.wlyy.statistics.util.JsonUtil;
import com.yihu.wlyy.statistics.vo.WlyyJobConfigVO;
import com.yihu.wlyy.statistics.vo.WlyyQuotaVO;
import org.quartz.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import org.springframework.web.context.support.SpringBeanAutowiringSupport;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
 * 续签团队签出服务类型的指标执行类
 */
@Component
@Scope("prototype")
@DisallowConcurrentExecution//防止到了执行时间点前一任务还在执行中,但是这时有空闲的线程,那么马上又会执行,这样一来就会存在同一job被并行执行
public class RenewSignTownOutServerJob implements Job {
    private WlyyQuotaVO wlyyQuota;//指标对象
    private WlyyJobConfigVO wlyyJobConfig;//配置对象
    @Autowired
    private QuartzJobLogDao quartzJobLogDao;//执行日志Dao
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Autowired
    private Level1Role levelRole;
    @Autowired
    private Level2Role level2Role;
    @Autowired
    private DBStorage dbStorage;
    @Autowired
    private DBExtract dbExtract;
    @Autowired
    private RenewSignDataFilter signDataFilter;
    @Autowired
    private CachePool cachePool;
    String yesterday;
    String daybefore;
    @Override
    public void execute(JobExecutionContext context)
            throws JobExecutionException {
        try{
            SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);
            //初始化参数
            JobDataMap map = context.getJobDetail().getJobDataMap();
            wlyyQuota = (WlyyQuotaVO) map.get("quota");
            wlyyJobConfig = (WlyyJobConfigVO) map.get("jobConfig");
            daybefore= StringUtils.isEmpty(map.get("daybefore"))? SignJob.getDayString(-2):map.get("daybefore").toString();
            yesterday= StringUtils.isEmpty(map.get("yesterday"))?SignJob.getDayString(-1):map.get("yesterday").toString();
            //计算指标
            computequota();
        }catch (Exception e){
            //如果出錯立即重新執行
            JobExecutionException e2 =new JobExecutionException(e);
            e2.setRefireImmediately(true);
        }
    }
    /**
     * 计算指标
     */
    @Transactional
    private void computequota() {
        try{
            jdbcTemplate.execute("delete from wlyy_quota_result where quota_date='"+yesterday+"' and quato_code='"+41+"'");
            //新建任务日志对象
            QuartzJobLog quartzJobLog = new QuartzJobLog();
            quartzJobLog.setJobStartTime(new Date());
            quartzJobLog.setJobId(wlyyJobConfig.getId());
            quartzJobLog.setJobName(wlyyJobConfig.getJobName());
            //抽取數據
            RenewCacheModel cacheModel= cachePool.getArriveRenewSignTownOutMapByDate(yesterday);
            //清洗數據
            FilterModel etlModels= signDataFilter.filter(cacheModel.getSignFamilies(),"2",null,cacheModel.getSql(),yesterday);
            //统计数据 1级维度
            List<Map<String, List<ETLModel>>>  returnDatas= levelRole.elt(etlModels.getEtlModelList());
            //统计数据 二级维度
            List<Map<String, Map<String, List<ETLModel>>>>  level2Data= level2Role.elt(returnDatas);;
            //保存数据
            dbStorage.saveByLevel2(level2Data,yesterday,wlyyQuota,12,10,1);
            //保存日志
            quartzJobLog.setJobEndTime(new Date());
            quartzJobLog.setJobContent(JsonUtil.objToStr(etlModels.getLogModel()));
            quartzJobLog.setJobType(etlModels.getError()?"1":"0");
            quartzJobLogDao.save(quartzJobLog);
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

+ 113 - 0
patient-co/patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/business/signServer/RenewSignTownServerJob.java

@ -0,0 +1,113 @@
package com.yihu.wlyy.statistics.job.business.signServer;
import com.yihu.wlyy.statistics.dao.QuartzJobLogDao;
import com.yihu.wlyy.statistics.etl.dataFilter.RenewSignDataFilter;
import com.yihu.wlyy.statistics.etl.extract.DBExtract;
import com.yihu.wlyy.statistics.etl.model.ETLModel;
import com.yihu.wlyy.statistics.etl.model.FilterModel;
import com.yihu.wlyy.statistics.etl.model.RenewCacheModel;
import com.yihu.wlyy.statistics.etl.mycache.CachePool;
import com.yihu.wlyy.statistics.etl.role.Level1Role;
import com.yihu.wlyy.statistics.etl.role.Level2Role;
import com.yihu.wlyy.statistics.etl.storage.DBStorage;
import com.yihu.wlyy.statistics.job.business.Constant;
import com.yihu.wlyy.statistics.job.business.SignJob;
import com.yihu.wlyy.statistics.model.job.QuartzJobLog;
import com.yihu.wlyy.statistics.model.signfamily.SignFamilyRenew;
import com.yihu.wlyy.statistics.util.JsonUtil;
import com.yihu.wlyy.statistics.vo.WlyyJobConfigVO;
import com.yihu.wlyy.statistics.vo.WlyyQuotaVO;
import org.quartz.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import org.springframework.web.context.support.SpringBeanAutowiringSupport;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
 * 续签的城镇级指标执行类(服务类型维度)
 */
@Component
@Scope("prototype")
@DisallowConcurrentExecution//防止到了执行时间点前一任务还在执行中,但是这时有空闲的线程,那么马上又会执行,这样一来就会存在同一job被并行执行
public class RenewSignTownServerJob implements Job {
    private WlyyQuotaVO wlyyQuota;//指标对象
    private WlyyJobConfigVO wlyyJobConfig;//配置对象
    @Autowired
    private QuartzJobLogDao quartzJobLogDao;//执行日志Dao
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Autowired
    private Level1Role levelRole;
    @Autowired
    private Level2Role level2Role;
    @Autowired
    private DBStorage dbStorage;
    @Autowired
    private DBExtract dbExtract;
    @Autowired
    private RenewSignDataFilter signDataFilter;
    @Autowired
    private CachePool cachePool;
    String yesterday;
    String daybefore;
    @Override
    public void execute(JobExecutionContext context)
            throws JobExecutionException {
        try{
            SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);
            //初始化参数
            JobDataMap map = context.getJobDetail().getJobDataMap();
            wlyyQuota = (WlyyQuotaVO) map.get("quota");
            wlyyJobConfig = (WlyyJobConfigVO) map.get("jobConfig");
            daybefore= StringUtils.isEmpty(map.get("daybefore"))? SignJob.getDayString(-2):map.get("daybefore").toString();
            yesterday= StringUtils.isEmpty(map.get("yesterday"))?SignJob.getDayString(-1):map.get("yesterday").toString();
            //计算指标
            computequota();
        }catch (Exception e){
            //如果出錯立即重新執行
            JobExecutionException e2 =new JobExecutionException(e);
            e2.setRefireImmediately(true);
        }
    }
    /**
     * 计算指标
     */
    @Transactional
    private void computequota() {
        try{
            jdbcTemplate.execute("delete from wlyy_quota_result where quota_date='"+yesterday+"' and quato_code='"+44+"'");
            //新建任务日志对象
            QuartzJobLog quartzJobLog = new QuartzJobLog();
            quartzJobLog.setJobStartTime(new Date());
            quartzJobLog.setJobId(wlyyJobConfig.getId());
            quartzJobLog.setJobName(wlyyJobConfig.getJobName());
            //从缓存取数据
            RenewCacheModel cacheModel=cachePool.getArriveRenewTotalTeamMapByDate(yesterday);
            //清洗數據
            FilterModel etlModels= signDataFilter.filter(cacheModel.getSignFamilies(),"2",null,cacheModel.getSql(),yesterday);
            //统计数据 1级维度
            List<Map<String, List<ETLModel>>>  returnDatas= levelRole.elt(etlModels.getEtlModelList());
            //统计数据 二级维度
            List<Map<String, Map<String, List<ETLModel>>>>  level2Data= level2Role.elt(returnDatas);;
            //保存数据
            dbStorage.saveByLevel2(level2Data,yesterday,wlyyQuota,12,10,1);
            //保存日志
            quartzJobLog.setJobEndTime(new Date());
            quartzJobLog.setJobContent(JsonUtil.objToStr(etlModels.getLogModel()));
            quartzJobLog.setJobType(etlModels.getError()?"1":"0");
            quartzJobLogDao.save(quartzJobLog);
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

+ 1 - 1
patient-co/patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/model/job/QuartzJobLog.java

@ -81,7 +81,7 @@ public class QuartzJobLog implements java.io.Serializable {
	}
	public void setJobContent(String jobContent) {
		this.jobContent = jobContent;
		this.jobContent = "";
	}
	@Column(name = "job_type", length = 1)

+ 5 - 5
patient-co/patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/service/JobService.java

@ -164,7 +164,7 @@ public class JobService {
                params.put("yesterday", getYesterday(0 - i));
                if (!StringUtils.isEmpty(quartzJobConfig.getJobClass())) {
                    quartzHelper.startNow(getRightClass(quartzJobConfig), quartzJobConfig.getId() + UUID.randomUUID().toString().replace("-", ""), params);
                    Thread.sleep(30000L);
                    Thread.sleep(60000L);
                }
            }
        }
@ -206,7 +206,7 @@ public class JobService {
            params.put("yesterday", yesterday);
            if (!StringUtils.isEmpty(quartzJobConfig.getJobClass())) {
                quartzHelper.startNow(getRightClass(quartzJobConfig), quartzJobConfig.getId() + UUID.randomUUID().toString().replace("-", ""), params);
                Thread.sleep(30000L);
                Thread.sleep(60000L);
            }
        }
@ -252,7 +252,7 @@ public class JobService {
        params.put("yesterday", yesterday);
        if (!StringUtils.isEmpty(quartzJobConfig.getJobClass())) {
            quartzHelper.startNow(getRightClass(quartzJobConfig), quartzJobConfig.getId() + UUID.randomUUID().toString().replace("-", ""), params);
            Thread.sleep(30000L);
            Thread.sleep(60000L);
        }
    }
@ -283,7 +283,7 @@ public class JobService {
            params.put("yesterday", getYesterday(0 - i));
            if (!StringUtils.isEmpty(quartzJobConfig.getJobClass())) {
                quartzHelper.startNow(getRightClass(quartzJobConfig), quartzJobConfig.getId() + UUID.randomUUID().toString().replace("-", ""), params);
                Thread.sleep(30000L);
                Thread.sleep(60000L);
            }
        }
    }
@ -418,7 +418,7 @@ public class JobService {
        params.put("now", yesterday);
        params.put("yesterday", day);
        quartzHelper.startNow(HealthMessageJob.class, HealthMessageJob.jobKey + UUID.randomUUID().toString().replace("-", ""), params);
        Thread.sleep(30000L);
        Thread.sleep(60000L);
    }
    public void productHealthDataByDayToDay(String start, String end) throws Exception {

+ 2 - 1
patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/config/SwaggerConfig.java

@ -101,7 +101,8 @@ public class SwaggerConfig {
                        regex("/login/.*"),
                        regex("/qrcode/.*"),
                        regex("/onepay/.*"),
                        regex("/wlyy_service/.*")
                        regex("/wlyy_service/.*"),
                        regex("/zydict/.*")
                ))
                .build()
                .apiInfo(otherApiInfo());

+ 26 - 1
patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/event/ApplicationEvent.java

@ -84,7 +84,7 @@ public class ApplicationEvent implements ApplicationListener<ContextRefreshedEve
            //同步智业字典 每晚1点同步
            if (!quartzHelper.isExistJob("zy_dict_job")) {
                String trigger = SystemConf.getInstance().getSystemProperties().getProperty("zy_dict_job");
                quartzHelper.addJob(ZyDictJob.class, trigger, "zy_dict_job", new HashMap<String, Object>());
               // quartzHelper.addJob(ZyDictJob.class, trigger, "zy_dict_job", new HashMap<String, Object>());
                logger.info("zy_dict_job job success");
            } else {
                logger.info("zy_dict_job job exist");
@ -99,6 +99,14 @@ public class ApplicationEvent implements ApplicationListener<ContextRefreshedEve
                logger.info("zy_execute_sick_settle_job reorder job job exist");
            }
            //处理当天支付,页面回调及异步回调失败的支付,每3分钟一次去主动查询并保存
            if (!quartzHelper.isExistJob("prescription_pay_query_job")) {
                String trigger = SystemConf.getInstance().getSystemProperties().getProperty("prescription_pay_query_job");
                quartzHelper.addJob(PrescriptionPayQueryJob.class, trigger, "prescription_pay_query_job", new HashMap<String, Object>());
                logger.info("prescription_pay_query_job reorder job job success");
            } else {
                logger.info("prescription_pay_query_job reorder job job exist");
            }
            //居民24小时未回复的咨询自动关闭 每小时59分开始执行一次
            if (!quartzHelper.isExistJob("finish_consult_job")) {
                String trigger = SystemConf.getInstance().getSystemProperties().getProperty("finish_consult_job");
@ -126,6 +134,23 @@ public class ApplicationEvent implements ApplicationListener<ContextRefreshedEve
                logger.info("patient_disease_contion_syn_job  job exist");
            }
            //查询家庭签约支付结果,补更新医保签约号,3分钟跑一次
            if (!quartzHelper.isExistJob("sign_family_pay_result_migisterno_job")) {
                String trigger = SystemConf.getInstance().getSystemProperties().getProperty("sign_family_pay_result_migisterno_job");
                quartzHelper.addJob(SignFamilyPayResultJob.class, trigger, "sign_family_pay_result_migisterno_job", new HashMap<String, Object>());
                logger.info("sign_family_pay_result_migisterno_job  job success");
            } else {
                logger.info("sign_family_pay_result_migisterno_job  job exist");
            }
            //处理家庭签约当天支付,页面回调及异步回调失败的支付,每3分钟一次去主动查询并保存
            if (!quartzHelper.isExistJob("onepay_query_job")) {
                String trigger = SystemConf.getInstance().getSystemProperties().getProperty("onepay_query_job");
                quartzHelper.addJob(OnePayQueryJob.class, trigger, "onepay_query_job", new HashMap<String, Object>());
                logger.info("onepay_query_job  job success");
            } else {
                logger.info("onepay_query_job  job exist");
            }
            // 启动redis 消息队列线程

+ 55 - 0
patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/job/OnePayQueryJob.java

@ -0,0 +1,55 @@
package com.yihu.wlyy.job;
import com.yihu.wlyy.repository.charge.ChargeDao;
import com.yihu.wlyy.service.app.charge.OnePayService;
import com.yihu.wlyy.wechat.util.WeiXinAccessTokenUtils;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.List;
/**
 * 处理家庭签约当天支付,页面回调及异步回调失败的支付,每3分钟一次去主动查询并保存
 * Created by Reece on 2017/9/26/029.
 */
public class OnePayQueryJob implements Job {
    private static final Logger logger = LoggerFactory.getLogger(OnePayQueryJob.class);
    @Autowired
    private ChargeDao chargeDao;
    @Autowired
    private OnePayService payService;
    @Autowired
    WeiXinAccessTokenUtils weiXinAccessTokenUtils;
    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        logger.info("OnePayQueryJob start ..........");
        try {
            String accesstoken =  weiXinAccessTokenUtils.getAccessToken();
            //获取支付成功,回调失败的支付记录
            List<String> codeList = chargeDao.findTodayUnpay();
            if (!codeList.isEmpty()) {
                for (String code : codeList) {
                    try {
                        payService.chargeQuery(code,accesstoken);
                    } catch (Exception e) {
                        logger.info("OnePayQueryJob error ..........continue this JOB,CODE:" + code + ",message:" + e.getMessage());
                        continue;
                    }
                }
            }
            logger.info("OnePayQueryJob end ..........");
        } catch (Exception e) {
            e.printStackTrace();
            logger.info("OnePayQueryJob error ..........,message:" + e.getMessage());
        }
    }
}

+ 36 - 30
patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/job/PrenatalInspectorJob.java

@ -1,30 +1,36 @@
//package com.yihu.wlyy.job;
//
//import com.yihu.wlyy.service.app.prenatalInspector.PrenatalInspectorPreCardService;
//import com.yihu.wlyy.util.DateUtil;
//import org.quartz.Job;
//import org.quartz.JobExecutionContext;
//import org.quartz.JobExecutionException;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.web.context.support.SpringBeanAutowiringSupport;
//
//import java.util.Date;
//
///**
// * 产检提醒(1预约提醒,2就诊提醒)
// * Created by yeshijie on 2017/6/7.
// */
//public class PrenatalInspectorJob implements Job{
//
//    @Autowired
//    private PrenatalInspectorPreCardService preCardService;
//
//    @Override
//    public void execute(JobExecutionContext context) throws JobExecutionException {
//        SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);
//        System.out.print("prenatal inspector wx message sending...");
//        String date = DateUtil.dateToStrShort(new Date());
//        //发送产检微信模板提醒消息
//        preCardService.sendPrenatalInspectorRemind();
//    }
//}
package com.yihu.wlyy.job;
import com.yihu.wlyy.service.app.prenatalInspector.PrenatalInspectorPreCardService;
import com.yihu.wlyy.util.DateUtil;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.context.support.SpringBeanAutowiringSupport;
import java.util.Date;
/**
 * 产检提醒(1预约提醒,2就诊提醒)
 * Created by yeshijie on 2017/6/7.
 */
public class PrenatalInspectorJob implements Job{
    private static Logger logger = LoggerFactory.getLogger(PrenatalInspectorJob.class);
    @Autowired
    private PrenatalInspectorPreCardService preCardService;
    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);
        logger.info("prenatal inspector wx message sending start...");
        String date = DateUtil.dateToStrShort(new Date());
        //发送产检微信模板提醒消息
        preCardService.sendPrenatalInspectorRemind();
        logger.info("prenatal inspector wx message sending end...");
    }
}

+ 2 - 2
patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/job/PrescriptionExecuteSickSettleJob.java

@ -28,7 +28,7 @@ public class PrescriptionExecuteSickSettleJob implements Job {
    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        logger.info("START=====开始执行长处方支付成功,院内结算失败,重新执行院内结算的JOB");
//        logger.info("START=====开始执行长处方支付成功,院内结算失败,重新执行院内结算的JOB");
        try {
            //获取支付完成,院内结算失败的 处方CODE 集合
            List<String> prescriptionCodeList = prescriptionService.findCodesByPayStautsAndExecuteSickStatus();
@ -43,7 +43,7 @@ public class PrescriptionExecuteSickSettleJob implements Job {
                    }
                }
            }
        logger.info("END========执行长处方支付成功,院内结算失败,重新执行院内结算的JOB");
//        logger.info("END========执行长处方支付成功,院内结算失败,重新执行院内结算的JOB");
        }catch (Exception e){
            e.printStackTrace();
            logger.info("END===ERROE===执行长处方支付成功,院内结算失败,重新执行院内结算的JOB,message:"+e.getMessage());

+ 57 - 0
patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/job/PrescriptionPayQueryJob.java

@ -0,0 +1,57 @@
package com.yihu.wlyy.job;
import com.yihu.wlyy.repository.prescription.PrescriptionPayDao;
import com.yihu.wlyy.service.app.prescription.PatientPrescriptionPayService;
import com.yihu.wlyy.service.app.prescription.PrescriptionService;
import com.yihu.wlyy.service.third.jw.JwPrescriptionService;
import com.yihu.wlyy.wechat.util.WeiXinAccessTokenUtils;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.List;
/**
 * 处理当天支付,页面回调及异步回调失败的支付,每3分钟一次去主动查询并保存
 * Created by Reece on 2017/8/29/029.
 */
public class PrescriptionPayQueryJob implements Job {
    private static final Logger logger = LoggerFactory.getLogger(PrescriptionPayQueryJob.class);
    @Autowired
    private PrescriptionPayDao prescriptionPayDao;
    @Autowired
    private PatientPrescriptionPayService payService;
    @Autowired
    WeiXinAccessTokenUtils weiXinAccessTokenUtils;
    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        logger.info("PrescriptionPayQueryJob start ..........");
        try {
            String accesstoken =  weiXinAccessTokenUtils.getAccessToken();
            //获取支付完成,院内结算失败的 处方CODE 集合
            List<String> prescriptionCodeList = prescriptionPayDao.findTodayUnpay();
            if (!prescriptionCodeList.isEmpty()) {
                for (String code : prescriptionCodeList) {
                    try {
                        payService.chargeQuery(code,accesstoken);
                    } catch (Exception e) {
                        logger.info("PrescriptionPayQueryJob error ..........continue this JOB,CODE:" + code + ",message:" + e.getMessage());
                        continue;
                    }
                }
            }
            logger.info("PrescriptionPayQueryJob end ..........");
        } catch (Exception e) {
            e.printStackTrace();
            logger.info("PrescriptionPayQueryJob error ..........,message:" + e.getMessage());
        }
    }
}

+ 4 - 4
patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/job/SFExpressJob.java

@ -38,15 +38,15 @@ public class SFExpressJob implements Job {
    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        try {
            logger.info("顺丰快递JOB开始:搜索已支付成功,但是顺丰快递下单失败的处方物流记录,重新下单---------时间:"+ DateUtil.getNowDate());
//            logger.info("顺丰快递JOB开始:搜索已支付成功,但是顺丰快递下单失败的处方物流记录,重新下单---------时间:"+ DateUtil.getNowDate());
            List<PrescriptionExpressage> expresslist = prescriptionExpressageService.findByPrescriptionPaidExpressOrderFail();
            if(!expresslist.isEmpty()){
                logger.info("顺丰快递JOB:找到"+expresslist.size()+"条下单失败记录,开始重新下单"+ DateUtil.getNowDate());
//                logger.info("顺丰快递JOB:找到"+expresslist.size()+"条下单失败记录,开始重新下单"+ DateUtil.getNowDate());
                sfexpressService.reOrderExpress(expresslist);
            }else{
                logger.info("顺丰快递JOB:未找到下单失败的处方快递记录"+ DateUtil.getNowDate());
//                logger.info("顺丰快递JOB:未找到下单失败的处方快递记录"+ DateUtil.getNowDate());
            }
            logger.info("顺丰快递JOB结束:搜索已支付成功,但是顺丰快递下单失败的处方物流记录,重新下单---------时间:"+ DateUtil.getNowDate());
//            logger.info("顺丰快递JOB结束:搜索已支付成功,但是顺丰快递下单失败的处方物流记录,重新下单---------时间:"+ DateUtil.getNowDate());
        } catch (Exception e) {
            e.printStackTrace();
            logger.info("顺丰快递JOB执行出错:错误信息"+ e.getMessage());

+ 36 - 0
patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/job/SignFamilyPayResultJob.java

@ -0,0 +1,36 @@
package com.yihu.wlyy.job;
import com.yihu.wlyy.service.app.prescription.PatientPrescriptionPayService;
import com.yihu.wlyy.util.DateUtil;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.Date;
/**
 * 遍历没有医保签约号的家庭签约支付记录,
 * 查询家庭签约支付结果,补更新医保签约号
 * @author huangwenjie
 * @date 2017/9/29 11:04
 */
public class SignFamilyPayResultJob implements Job {
	private static final Logger logger = LoggerFactory.getLogger(SignFamilyPayResultJob.class);
	
	@Autowired
	private PatientPrescriptionPayService payService;
	
	@Override
	public void execute(JobExecutionContext context) throws JobExecutionException {
		try {
			//根据起止时间查询家签慢病患者定标情况,并同步到本地数据库
			payService.getSignFamilyPayResultJob(new Date(),DateUtil.getNextMin(new Date(),-(60*24)));
		}catch (Exception e){
			e.printStackTrace();
			logger.info("END===ERROE==遍历没有医保签约号的家庭签约支付记录JOB,message:"+e.getMessage());
		}
	}
}

+ 7 - 0
patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/repository/charge/ChargeDao.java

@ -59,4 +59,11 @@ public interface ChargeDao extends PagingAndSortingRepository<WlyyCharge, Long>,
    int updateByChargeCode(String chargeCode, String chargeTime, Date updateTime, Integer totalAmount, Integer insuranceAmount, Integer selfPayAmount, String billNo, String miRegisterNo,String tradeStatus);
    List<WlyyCharge> findByPatient(String patient, Pageable pageRequest);
    @Query(value = "select * from wlyy_charge where trade_status = ?1 AND (mi_register_no IS null OR mi_register_no = '') AND update_time BETWEEN ?2  and ?3",nativeQuery = true)
    List<WlyyCharge> findByTradeStatusAndMiRegisterNoAndUpdateTime(int tradestatus, Date enddate, Date startdate);
    //   查询当天支付,页面回调及异步回调均失败的支付 tradeStatus为空
    @Query(value = "SELECT t.`code` FROM wlyy_charge t WHERE t.trade_status is null AND t.create_time >= date(now()) AND t.create_time < DATE_ADD(date(now()), INTERVAL 1 DAY)", nativeQuery = true)
    List<String> findTodayUnpay();
}

+ 20 - 20
patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/repository/patient/PrenatalInspectorPlanDao.java

@ -1,20 +1,20 @@
//package com.yihu.wlyy.repository.patient;
//
//import com.yihu.wlyy.entity.patient.prenatal.PrenatalInspectorPlan;
//import com.yihu.wlyy.entity.patient.prenatal.PrenatalInspectorPlanLibrary;
//import org.springframework.data.jpa.repository.Query;
//import org.springframework.data.repository.PagingAndSortingRepository;
//
//import java.util.List;
//
///**
// * Created by yeshijie on 2017/6/6.
// */
//public interface PrenatalInspectorPlanDao extends PagingAndSortingRepository<PrenatalInspectorPlan, Long>{
//
//    @Query("select a from PrenatalInspectorPlan a where a.inspectionCode = ?1 and a.status = '0' ")
//    List<PrenatalInspectorPlan> findByCode(String inspectionCode);
//
//    @Query("select a from PrenatalInspectorPlan a where a.inspectionTime is not null and a.status = '0' and ( TO_DAYS(a.inspectionTime)- TO_DAYS(NOW())=7 or TO_DAYS(a.inspectionTime)- TO_DAYS(NOW())=1 ) ")
//    List<PrenatalInspectorPlan> findWxTipList();
//}
package com.yihu.wlyy.repository.patient;
import com.yihu.wlyy.entity.patient.prenatal.PrenatalInspectorPlan;
import com.yihu.wlyy.entity.patient.prenatal.PrenatalInspectorPlanLibrary;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * Created by yeshijie on 2017/6/6.
 */
public interface PrenatalInspectorPlanDao extends PagingAndSortingRepository<PrenatalInspectorPlan, Long>{
    @Query("select a from PrenatalInspectorPlan a where a.inspectionCode = ?1 and a.status = '0' ")
    List<PrenatalInspectorPlan> findByCode(String inspectionCode);
    @Query("select a from PrenatalInspectorPlan a where a.inspectionTime is not null and a.status = '0' and ( TO_DAYS(a.inspectionTime)- TO_DAYS(NOW())=7 or TO_DAYS(a.inspectionTime)- TO_DAYS(NOW())=1 ) ")
    List<PrenatalInspectorPlan> findWxTipList();
}

+ 20 - 20
patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/repository/patient/PrenatalInspectorPlanLibraryDao.java

@ -1,20 +1,20 @@
//package com.yihu.wlyy.repository.patient;
//
//import com.yihu.wlyy.entity.patient.SignFamily;
//import com.yihu.wlyy.entity.patient.prenatal.PrenatalInspectorPlanLibrary;
//import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
//import org.springframework.data.jpa.repository.Query;
//import org.springframework.data.repository.PagingAndSortingRepository;
//
//import java.util.List;
//
///**
// * Created by yeshijie on 2017/6/6.
// */
//public interface PrenatalInspectorPlanLibraryDao extends PagingAndSortingRepository<PrenatalInspectorPlanLibrary, Long>{
//
//
//    @Query("select a from PrenatalInspectorPlanLibrary a where a.endDay >= ?1 ")
//    List<PrenatalInspectorPlanLibrary> findByDays(Long endDay);
//
//}
package com.yihu.wlyy.repository.patient;
import com.yihu.wlyy.entity.patient.SignFamily;
import com.yihu.wlyy.entity.patient.prenatal.PrenatalInspectorPlanLibrary;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * Created by yeshijie on 2017/6/6.
 */
public interface PrenatalInspectorPlanLibraryDao extends PagingAndSortingRepository<PrenatalInspectorPlanLibrary, Long>{
    @Query("select a from PrenatalInspectorPlanLibrary a where a.endDay >= ?1 ")
    List<PrenatalInspectorPlanLibrary> findByDays(Long endDay);
}

+ 17 - 17
patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/repository/patient/PrenatalInspectorPreCardDao.java

@ -1,17 +1,17 @@
//package com.yihu.wlyy.repository.patient;
//
//import com.yihu.wlyy.entity.patient.prenatal.PrenatalInspectorPlanLibrary;
//import com.yihu.wlyy.entity.patient.prenatal.PrenatalInspectorPreCard;
//import org.springframework.data.jpa.repository.Query;
//import org.springframework.data.repository.PagingAndSortingRepository;
//
//import java.util.List;
//
///**
// * Created by yeshijie on 2017/6/6.
// */
//public interface PrenatalInspectorPreCardDao extends PagingAndSortingRepository<PrenatalInspectorPreCard, Long>{
//
//    @Query("select a from PrenatalInspectorPreCard a where a.patient = ?1 and a.del='1' order by a.lastMenstrualDate desc")
//    List<PrenatalInspectorPreCard> findByPatient(String patient);
//}
package com.yihu.wlyy.repository.patient;
import com.yihu.wlyy.entity.patient.prenatal.PrenatalInspectorPlanLibrary;
import com.yihu.wlyy.entity.patient.prenatal.PrenatalInspectorPreCard;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * Created by yeshijie on 2017/6/6.
 */
public interface PrenatalInspectorPreCardDao extends PagingAndSortingRepository<PrenatalInspectorPreCard, Long>{
    @Query("select a from PrenatalInspectorPreCard a where a.patient = ?1 and a.del='1' order by a.lastMenstrualDate desc")
    List<PrenatalInspectorPreCard> findByPatient(String patient);
}

+ 1 - 1
patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/repository/prescription/PrescriptionDao.java

@ -22,7 +22,7 @@ public interface PrescriptionDao extends PagingAndSortingRepository<Prescription
    @Query("select p from Prescription p where p.jwCode=?1 and p.status=?2 ")
    List<Prescription> fingdByJwCodeAndStatus(String jwcode,Integer status);
    @Query(value = "select p.prescription_code from wlyy_prescription_pay p LEFT JOIN  wlyy_prescription a on a.code = p.prescription_code where p.trade_status = 1 and a.jw_pay_status = 0",nativeQuery = true)
    @Query(value = "select p.prescription_code from wlyy_prescription_pay p LEFT JOIN  wlyy_prescription a on a.code = p.prescription_code where p.trade_status = 1 and a.jw_pay_status = 0 and a.status=50",nativeQuery = true)
    List<String> findCodesByPayStautsAndExecuteSickStatus();
    @Modifying

+ 8 - 0
patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/repository/prescription/PrescriptionPayDao.java

@ -13,4 +13,12 @@ import java.util.List;
public interface PrescriptionPayDao extends PagingAndSortingRepository<PrescriptionPay, Long>, JpaSpecificationExecutor<PrescriptionPay> {
    @Query("from PrescriptionPay p where p.prescriptionCode=?1 ")
    PrescriptionPay findByPrescriptionPay(String prescriptionCode);
    //查询支付记录
    @Query("from PrescriptionPay p where p.code=?1 ")
    PrescriptionPay findByCode(String code);
    //   查询当天支付,页面回调及异步回调均失败的支付 tradeStatus为空
    @Query(value = "SELECT t.`code` FROM wlyy_prescription_pay t WHERE t.trade_status is null AND t.create_time >= date(now()) AND t.create_time < DATE_ADD(date(now()), INTERVAL 1 DAY)", nativeQuery = true)
    List<String> findTodayUnpay();
}

+ 12 - 0
patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/repository/ylz/PayLogDao.java

@ -0,0 +1,12 @@
package com.yihu.wlyy.repository.ylz;
import com.yihu.wlyy.entity.ylz.PayLog;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * Created by Reece on 2017/9/20.
 */
public interface PayLogDao extends PagingAndSortingRepository<PayLog, Long>,JpaSpecificationExecutor<PayLog> {
}

+ 251 - 0
patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/service/app/charge/OnePayService.java

@ -0,0 +1,251 @@
package com.yihu.wlyy.service.app.charge;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.wlyy.entity.charge.WlyyCharge;
import com.yihu.wlyy.entity.organization.HospitalMapping;
import com.yihu.wlyy.entity.ylz.PayConfigura;
import com.yihu.wlyy.repository.charge.ChargeDao;
import com.yihu.wlyy.repository.doctor.DoctorDao;
import com.yihu.wlyy.repository.organization.HospitalMappingDao;
import com.yihu.wlyy.repository.patient.PatientDao;
import com.yihu.wlyy.repository.patient.SignFamilyDao;
import com.yihu.wlyy.repository.ylz.PayConfiguraDao;
import com.yihu.wlyy.service.third.ylz.PayLogService;
import com.yihu.wlyy.util.SystemConf;
import com.ylzinfo.onepay.sdk.OnepayDefaultClient;
import com.ylzinfo.onepay.sdk.domain.RequestParams;
import com.ylzinfo.onepay.sdk.domain.ResponseParams;
import com.ylzinfo.onepay.sdk.utils.DateUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.text.SimpleDateFormat;
import java.util.*;
/**
 * 易联众统一支付服务类
 * add by hzp at 20170523
 */
@Service
@Transactional
public class OnePayService {
    @Autowired
    private PayConfiguraDao configuraDao;
    private String signType = "MD5";
    private String encryptType = "AES";
    @Autowired
    private HospitalMappingDao hospitalMappingDao;
    @Autowired
    ObjectMapper objectMapper;
    @Autowired
    ChargeDao chargeDao;
    @Autowired
    PatientDao patientDao;
    @Autowired
    SignFamilyDao signFamilyDao;
    @Autowired
    DoctorDao doctorDao;
    @Value("${server.server_url}")
    private String serverUrl;
    @Value("${wechat.accId}")
    private String accId;
    Properties systemConf = SystemConf.getInstance().getSystemProperties();
    private static final Logger LOGGER = LoggerFactory.getLogger(OnePayService.class);
    /**
     * 家庭医生签约支付查询
     */
    public String chargeQuery(String code, String accessToken) throws Exception {
        Boolean isSuccess = true;
        String msgBody = "";
        String response = "";
        String error = "";
        String result = null;
        PayConfigura config = configuraDao.findWorkConfigura();
        try {
            WlyyCharge charge = chargeDao.findByCode(code);
            HospitalMapping hospitalMapping = hospitalMappingDao.findByCode(charge.getHospital());
            OnepayDefaultClient onepayClient = new OnepayDefaultClient(config.getOnepayApi(), hospitalMapping.getAppId(), hospitalMapping.getAppSecret(), signType, encryptType);
            RequestParams requestParams = new RequestParams();
//            requestParams.setVersion();
//            requestParams.setSign();
//            requestParams.setEncryptData();
//            requestParams.setAppId(appId);
            requestParams.setAppId(hospitalMapping.getAppId());
            requestParams.setTimestamp(DateUtil.getCurrentDateTime());
            requestParams.setSignType(signType);
            requestParams.setEncryptType(encryptType);
            requestParams.setTransType(config.getChargeQueryType());
            //业务参数
            JSONObject params = new JSONObject();
            params.put("outChargeNo", code);  //接入应用结算业务流水号
            params.put("wxToken", accessToken);
            requestParams.setParam(params);
            msgBody = JSON.toJSONString(requestParams);
            //执行支付 返回原生返回值
            ResponseParams<JSONObject> res = onepayClient.execute(requestParams);
            response = JSON.toJSONString(res);
            if (OnepayDefaultClient.isSuccessful(res)) {
                //业务处理*******************
//                只返回业务出参
                result = JSON.toJSONString(res.getParam());
//                 新增保存数据
                JSONObject request = JSON.parseObject(result);
                String chargeStatus = request.getString("chargeStatus");//交易状态
                String chargeNo = request.getString("chargeNo");//支付平台流水号
                String chargeTime = request.getString("chargeTime");//支付平台交易成功时间
                String outChargeNo = request.getString("outChargeNo");//接入应用业务流水号
                String outChargeTime = request.getString("outChargeTime");//接入应用时间
                String medOrgNo = request.getString("medOrgNo");//医疗机构编号
                String medOrgName = request.getString("medOrgName");//医疗机构名称
                String billNo = request.getString("billNo");//待结算费用单据号
                String cardNo = request.getString("cardNo");//医保卡号
                String totalAmount = request.getString("totalAmount");//交易总金额
                String insuranceAmount = request.getString("insuranceAmount");//医保支付金额
                String selfPayAmount = request.getString("selfPayAmount");//自付金额
                String userId = request.getString("userId");//用户openID
                String userName = request.getString("userName");//用户名字
                String idType = request.getString("idType");//证件类型
                String idNo = request.getString("idNo");//证件号码
//                String appId = request.getString("appId");
//                String channel = request.getString("channel");//支付方式
//                String sign = request.getString("sign");
//                String signType = request.getString("signType");
//                String timestamp = request.getString("timestamp");
                JSONObject responseContents = request.getJSONObject("responseContent");//医保结构体
                WlyyCharge chargePay = chargeDao.findByCode(outChargeNo);
                if (responseContents != null) {
                    String miRegisterNo = null;//医保挂号
                    String miCollectDate = null;//收费日期
                    String miCollectTime = null;//收费时间
                    String miSettleNo = null;//医保收费单据号 (医保签约号)
                    String miCollectStatus = null;//扣费状态
                    String miRegisterStatus = null;//登记状态
                    String cadresPay = "0";//公务员补助
                    String miTotalFee = "0";//本次报销总额
                    String healthCarePay = "0";//保健基金支付
                    String heathPay = "0";//健康账户支付
                    String accountPay = "0";//个人账户支付
                    String selfPay = "0";//个人现金支付
                    String civilPay = "0";//民政补助金额
                    if (responseContents.containsKey(miRegisterNo)) {
                        miRegisterNo = responseContents.getString("miRegisterNo");
                    }
                    if (responseContents.containsKey(miCollectDate)) {
                        miCollectDate = responseContents.getString("miCollectDate");
                    }
                    if (responseContents.containsKey(miCollectTime)) {
                        miCollectTime = responseContents.getString("miCollectTime");
                    }
                    if (responseContents.containsKey(miSettleNo)) {
                        miSettleNo = responseContents.getString("miSettleNo");
                    }
                    if (responseContents.containsKey(miCollectStatus)) {
                        miCollectStatus = responseContents.getString("miCollectStatus");
                    }
                    if (responseContents.containsKey(miRegisterStatus)) {
                        miRegisterStatus = responseContents.getString("miRegisterStatus");
                    }
                    if (responseContents.containsKey(cadresPay)) {
                        cadresPay = responseContents.getString("cadresPay");
                    }
                    if (responseContents.containsKey(miTotalFee)) {
                        miTotalFee = responseContents.getString("miTotalFee");
                    }
                    if (responseContents.containsKey(healthCarePay)) {
                        healthCarePay = responseContents.getString("healthCarePay");
                    }
                    if (responseContents.containsKey(heathPay)) {
                        heathPay = responseContents.getString("heathPay");
                    }
                    if (responseContents.containsKey(accountPay)) {
                        accountPay = responseContents.getString("accountPay");
                    }
                    if (responseContents.containsKey(selfPay)) {
                        selfPay = responseContents.getString("selfPay");
                    }
                    if (responseContents.containsKey(civilPay)) {
                        civilPay = responseContents.getString("civilPay");
                    }
                    chargePay.setMiRegisterNo(miRegisterNo);//医保挂号
                    chargePay.setMiCollectDate(miCollectDate);
                    chargePay.setMiCollectTime(miCollectTime);
                    chargePay.setMiSettleNo(miSettleNo);
                    chargePay.setMiCollectStatus(miCollectStatus);
                    chargePay.setMiRegisterStatus(miRegisterStatus);
                    chargePay.setCadresPay(cadresPay);
                    chargePay.setMiTotalFee(miTotalFee);
                    chargePay.setHealthCarePay(healthCarePay);
                    chargePay.setHeathPay(heathPay);
                    chargePay.setAccountPay(accountPay);
                    chargePay.setSelfPay(selfPay);
                    chargePay.setCivilPay(civilPay);
                }
                if ("0".equals(chargeStatus) || "SUCCESS".equals(chargeStatus)) {
                    chargePay.setTradeStatus("1");//交易状态 成功1 失败0
                } else {
                    chargePay.setTradeStatus("0");//交易状态 成功1 失败0
                }
                chargePay.setChargeNo(chargeNo);//支付流水号
                SimpleDateFormat formatDate = new SimpleDateFormat("yyyyMMddHHmmss");
                chargePay.setChargeTime(chargeTime);//支付平台交易成功时间
                chargePay.setCreateTime(formatDate.parse(outChargeTime));//接入应用内业务时间
                chargePay.setMedOrgNo(medOrgNo);//医疗机构编号
                chargePay.setMedOrgName(medOrgName);//医疗机构名称
                chargePay.setBillNo(billNo);//待结算费用单据号
                chargePay.setSsc(cardNo);//医保卡号
                chargePay.setTotalAmount(Integer.parseInt(totalAmount));//交易总金额
                chargePay.setInsuranceAmount(Integer.parseInt(insuranceAmount));//医保支付金额
                chargePay.setSelfpayAmount(Integer.parseInt(selfPayAmount));//自付金额
                chargePay.setOpenid(userId);
                chargePay.setName(userName);
                chargePay.setIdType(idType);//证件类型
                chargePay.setIdNo(idNo);//证件号码
                //        保存数据库更改记录
                chargeDao.save(chargePay);
                LOGGER.info("请求成功,返回参数: " + result);
            } else {
                isSuccess = false;
                error = "请求失败,返回结果:" + res.getRespCode() + "," + res.getRespMsg();
            }
        } catch (Exception ex) {
            isSuccess = false;
            StringWriter sw = new StringWriter();
            PrintWriter pw = new PrintWriter(sw);
            ex.printStackTrace(pw);
            error = sw.toString();
        }
        if (!isSuccess) {
            throw new Exception(error);
        }
        return result;
    }
}

+ 2 - 0
patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/service/app/family/FamilyMemberService.java

@ -165,6 +165,7 @@ public class FamilyMemberService extends BaseService {
        //设置家人openid
        if(StringUtils.isBlank(m.getOpenid())){
            m.setOpenid(p.getOpenid());
            m.setOpenidTime(new Date());
            patientDao.save(m);
        }
@ -1130,6 +1131,7 @@ public class FamilyMemberService extends BaseService {
        //设置家人openid
        if(StringUtils.isBlank(m.getOpenid())){
            m.setOpenid(p.getOpenid());
            m.setOpenidTime(new Date());
            patientDao.save(m);
        }

+ 85 - 240
patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/service/app/prenatalInspector/PrenatalInspectorPreCardService.java

@ -1,240 +1,85 @@
//package com.yihu.wlyy.service.app.prenatalInspector;
//
//import com.yihu.wlyy.entity.patient.Patient;
//import com.yihu.wlyy.entity.patient.SignFamily;
//import com.yihu.wlyy.entity.patient.prenatal.PrenatalInspectorPlan;
//import com.yihu.wlyy.entity.patient.prenatal.PrenatalInspectorPlanLibrary;
//import com.yihu.wlyy.entity.patient.prenatal.PrenatalInspectorPreCard;
//import com.yihu.wlyy.repository.patient.PatientDao;
//import com.yihu.wlyy.repository.patient.PrenatalInspectorPlanDao;
//import com.yihu.wlyy.repository.patient.PrenatalInspectorPlanLibraryDao;
//import com.yihu.wlyy.repository.patient.PrenatalInspectorPreCardDao;
//import com.yihu.wlyy.service.BaseService;
//import com.yihu.wlyy.service.app.sign.FamilyContractService;
//import com.yihu.wlyy.task.PushMsgTask;
//import com.yihu.wlyy.util.DateUtil;
//import com.yihu.wlyy.wechat.util.WeiXinAccessTokenUtils;
//import org.apache.commons.lang3.StringUtils;
//import org.json.JSONArray;
//import org.json.JSONObject;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Component;
//import org.springframework.transaction.annotation.Transactional;
//
//import java.util.ArrayList;
//import java.util.Date;
//import java.util.List;
//
///**
// * Created by yeshijie on 2017/6/6.
// */
//@Component
//@Transactional(rollbackFor = Exception.class)
//public class PrenatalInspectorPreCardService extends BaseService {
//
//    @Autowired
//    private PrenatalInspectorPreCardDao prenatalInspectorPreCardDao;
//    @Autowired
//    private PrenatalInspectorPlanLibraryDao prenatalInspectorPlanLibraryDao;
//    @Autowired
//    private PrenatalInspectorPlanDao prenatalInspectorPlanDao;
//    @Autowired
//    private WeiXinAccessTokenUtils accessTokenUtils;
//    @Autowired
//    private PatientDao patientDao;
//    @Autowired
//    private FamilyContractService familyContractService;
//
//    /**
//     * 待产检计划
//     * @param code
//     * @return
//     */
//    public JSONArray planList(String code){
//        JSONArray jsonArray = new JSONArray();
//        List<PrenatalInspectorPlan> planList = prenatalInspectorPlanDao.findByCode(code);
//        for (PrenatalInspectorPlan plan:planList){
//            JSONObject json = new JSONObject();
//            json.put("checkItem",plan.getCheckItem());
//            json.put("name",plan.getName());
//            json.put("thisFoucs",plan.getThisFocus());
//            json.put("thisNote",plan.getThisNote());
//            if(plan.getInspectionTime()==null){
//                json.put("inspectionTime","");
//            }else {
//                json.put("inspectionTime",DateUtil.dateToStrShort(plan.getInspectionTime()));
//            }
//            json.put("inspectionEndTime",DateUtil.dateToStrShort(plan.getInspectionEndTime()));
//            json.put("inspectionStartTime",DateUtil.dateToStrShort(plan.getInspectionStartTime()));
//
//
//            jsonArray.put(json);
//        }
//
//
//        return jsonArray;
//    }
//
//    /**
//     * 预建卡列表-孕检计划
//     * @param patient
//     * @return
//     */
//    public JSONArray preCardList(String patient){
//        JSONArray jsonArray = new JSONArray();
//        List<PrenatalInspectorPreCard> preCards = prenatalInspectorPreCardDao.findByPatient(patient);
//        for (PrenatalInspectorPreCard preCard:preCards){
//            JSONObject json = new JSONObject();
//            json.put("code",preCard.getCode());
//            json.put("dueDate",DateUtil.dateToStrShort(preCard.getDueDate()));//预产期
//            Date date = new Date();
//            Long dueDateDay = DateUtil.getDays(preCard.getDueDate(),date);
//            if(dueDateDay>0){
//                json.put("dueDateWeek",getWeek(dueDateDay.intValue()));//距离预产期周数
//                json.put("dueDateDay",getDay(dueDateDay.intValue()));//距离预产期周数的余数
//                Long pregnancyDay = DateUtil.getDays(date,preCard.getLastMenstrualDate());
//                int week = getWeek(pregnancyDay.intValue());
//                int day = getDay(pregnancyDay.intValue());
//                String preDay = day==0?(week+"周"):(week+"周"+day+"天");//怀孕时间
//                json.put("status",preDay);
//            }else {
//                json.put("dueDateWeek",0);//距离预产期周数
//                json.put("dueDateDay",0);//距离预产期周数的余数
//                json.put("status",preCard.getStatus());
//            }
//
//            json.put("hospitalName",preCard.getHospitalName());//预约床位医院
//            json.put("orderBedTime",preCard.getOrderBedTime());//预约床位时间
//
//            jsonArray.put(json);
//        }
//
//        return jsonArray;
//    }
//
//    /**
//     * 把天数换算成周数
//     * @param day
//     * @return
//     */
//    private int getWeek(Integer day){
//        return day/7;
//    }
//
//    /**
//     * 把天数换算成周数的余数
//     * @param day
//     * @return
//     */
//    private int getDay(Integer day){
//        return day%7;
//    }
//
//    /**
//     * 新建产检预建卡
//     */
//    @Transactional
//    public void addPrenatalInspectorPreCard(PrenatalInspectorPreCard preCard){
//        //1、保存预建卡
//        Date date = new Date();
//        Date lastMenstrualDate = preCard.getLastMenstrualDate();
//        preCard.setDel("1");
//        preCard.setCode(getCode());
//        preCard.setCzrq(date);
//        preCard.setDueDate(DateUtil.getDueDate(preCard.getLastMenstrualDate()));//预产期
//        preCard.setStatus("0");
//        preCard.setEffective("");
//        preCard.setInspectionPhase("1");//检查阶段
//        prenatalInspectorPreCardDao.save(preCard);
//
//        String patient = preCard.getPatient();
//
//        //2、生成待产检计划
//        Long days = DateUtil.getDays(date,lastMenstrualDate);
//        List<PrenatalInspectorPlanLibrary> libraries = prenatalInspectorPlanLibraryDao.findByDays(days);
//        List<PrenatalInspectorPlan> plans = new ArrayList<>();
//        PrenatalInspectorPlan plan = null;
//        for (PrenatalInspectorPlanLibrary library:libraries){
//            plan = new PrenatalInspectorPlan();
//            plan.setInspectionPhase(library.getInspectionPhase());
//            plan.setStatus("0");
//            plan.setPatient(patient);
//            plan.setCzrq(date);
//            plan.setCheckItem(library.getCheckItem());
//            plan.setInspectionCode(preCard.getCode());
//            plan.setInspectionEndTime(DateUtil.getPrenatalInspectorDate(lastMenstrualDate,library.getEndDay().intValue()));
//            plan.setInspectionStartTime(DateUtil.getPrenatalInspectorDate(lastMenstrualDate,library.getStartDay().intValue()));
//            plan.setName(library.getName());
//            plan.setThisFocus(library.getThisFocus());
//            plan.setThisNote(library.getThisNote());
//
//            if("1".equals(plan.getInspectionPhase())){
//                SignFamily jiating = familyContractService.findByPatientByType(patient, 2);
//                if(jiating!=null){
//                    plan.setSignHospital(jiating.getHospital());
//                }
//            }
//
//            plans.add(plan);
//        }
//        if (plans.size()>0){
//            prenatalInspectorPlanDao.save(plans);
//        }
//
//    }
//
//    /**
//     * 产检提醒(1预约提醒,2就诊提醒)
//     * 1、当居民已有经医生确认过的下一次产检时间,则距离下一次产检前7天(保证居民可自行预约),发出产检预约提醒通知。点击该消息,进入预约页面
//     * 2、当居民已有经医生确认过的下一次产检时间,则距离下一次产检前1天,发出产检就诊提醒,提醒居民就诊。点击该消息,进入预约记录页面
//     */
//    public void sendPrenatalInspectorRemind(){
//        System.out.println("产检计划---running");
//        List<PrenatalInspectorPlan> planList = prenatalInspectorPlanDao.findWxTipList();
//        for (PrenatalInspectorPlan plan:planList){
//            try {
//                Patient patient = patientDao.findByCode(plan.getPatient());
//                String openId = patient.getOpenid();
//                String name = patient.getName();
//                String patientCode = patient.getCode();
//                if(StringUtils.isNotBlank(openId)){
//                    Long day = DateUtil.getDays(plan.getInspectionTime(),DateUtil.getNowDateShort());
//                    JSONObject json = new JSONObject();
//                    if(day==7){
//                        //产检提醒
//                        json.put("remark","产检内容以医生实际检查为准。点击进行预约");
//                        json.put("first",name+",您好!您和您的宝宝需要进行产检啦~请及时预约产检,如已预约,请忽略");
//                        if("1".equals(plan.getInspectionPhase())){
//                            if(StringUtils.isNotBlank(plan.getSignHospital())){
//                                json.put("url","wdyy/html/hospital-dept.html?openid="+openId+"&toUser="+patientCode+"&toName="+name+"&hospitalId="+plan.getSignHospital());
//                            }else {
//                                json.put("url","wdyy/html/appointment-register.html?openid="+openId+"&toUser="+patientCode+"&toName="+name+"&orderType=1");
//                            }
//                        }else {
//                            json.put("url","wdyy/html/appointment-register.html?openid="+openId+"&toUser="+patientCode+"&toName="+name);
//                        }
//
//                        json.put("keyword1","产检提醒");
//                        String keyword2 = DateUtil.getStringDateShort()+"\n产检内容:"+plan.getCheckItem();
//                        json.put("keyword2",keyword2);
//                        PushMsgTask.getInstance().sendWeixinMessage(accessTokenUtils.getAccessToken(), 18, openId, name, json);
//                    }else if(day==1){
//                        //产检就诊提醒
//                        json.put("remark","产检内容以医生实际检查为准。点击查看预约记录");
//                        json.put("first",name+",您好!您和您的宝宝即将进行产检啦~请按时就诊,如已就诊,请忽略");
//                        json.put("url","wdyy/html/my-appointment.html?openid="+openId+"&toUser="+patientCode+"&toName="+name);
//                        json.put("keyword1","产检就诊提醒");
//                        String keyword2 = DateUtil.getStringDateShort()+"\n产检内容:"+plan.getCheckItem();
//                        json.put("keyword2",keyword2);
//                        PushMsgTask.getInstance().sendWeixinMessage(accessTokenUtils.getAccessToken(), 18, openId, name, json);
//                    }
//                }
//            }catch (Exception e){
//                System.out.println("微信提醒发送失败");
//                e.printStackTrace();
//            }
//        }
//
//    }
//
//}
package com.yihu.wlyy.service.app.prenatalInspector;
import com.yihu.wlyy.entity.patient.Patient;
import com.yihu.wlyy.entity.patient.prenatal.PrenatalInspectorPlan;
import com.yihu.wlyy.repository.patient.PatientDao;
import com.yihu.wlyy.repository.patient.PrenatalInspectorPlanDao;
import com.yihu.wlyy.service.BaseService;
import com.yihu.wlyy.service.app.sign.FamilyContractService;
import com.yihu.wlyy.task.PushMsgTask;
import com.yihu.wlyy.util.DateUtil;
import com.yihu.wlyy.wechat.util.WeiXinAccessTokenUtils;
import org.apache.commons.lang3.StringUtils;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
 * Created by yeshijie on 2017/6/6.
 */
@Component
@Transactional(rollbackFor = Exception.class)
public class PrenatalInspectorPreCardService extends BaseService {
    @Autowired
    private PrenatalInspectorPlanDao prenatalInspectorPlanDao;
    @Autowired
    private WeiXinAccessTokenUtils accessTokenUtils;
    @Autowired
    private PatientDao patientDao;
    @Autowired
    private FamilyContractService familyContractService;
    @Autowired
    private PushMsgTask pushMsgTask;
    /**
     * 产检提醒(1预约提醒,2就诊提醒)
     * 1、当居民已有经医生确认过的下一次产检时间,则距离下一次产检前7天(保证居民可自行预约),发出产检预约提醒通知。点击该消息,进入预约页面
     * 2、当居民已有经医生确认过的下一次产检时间,则距离下一次产检前1天,发出产检就诊提醒,提醒居民就诊。点击该消息,进入预约记录页面
     */
    public void sendPrenatalInspectorRemind(){
        System.out.println("产检计划---running");
        List<PrenatalInspectorPlan> planList = prenatalInspectorPlanDao.findWxTipList();
        for (PrenatalInspectorPlan plan:planList){
            try {
                Patient patient = patientDao.findByCode(plan.getPatient());
                String openId = patient.getOpenid();
                String name = patient.getName();
                String patientCode = patient.getCode();
                if(StringUtils.isNotBlank(openId)){
                    Long day = DateUtil.getDays(plan.getInspectionTime(),DateUtil.getNowDateShort());
                    JSONObject json = new JSONObject();
                    if(day==7){
                        //产检提醒
                        json.put("remark","产检内容以医生实际检查为准。点击进行预约");
                        json.put("first",name+",您好!您和您的宝宝需要进行产检啦~请及时预约产检,如已预约,请忽略");
                        json.put("url","wdyy/html/appointment-register.html?openid="+openId+"&toUser="+patientCode+"&toName="+name);
                        json.put("keyword1","产检提醒");
                        String keyword2 = DateUtil.getStringDateShort()+"\n产检内容:"+plan.getCheckItem();
                        json.put("keyword2",keyword2);
                        pushMsgTask.sendWeixinMessage(accessTokenUtils.getAccessToken(), 18, openId, name, json);
                    }else if(day==1){
                        //产检就诊提醒
                        json.put("remark","产检内容以医生实际检查为准。点击查看预约记录");
                        json.put("first",name+",您好!您和您的宝宝即将进行产检啦~请按时就诊,如已就诊,请忽略");
                        json.put("url","wdyy/html/my-appointment.html?openid="+openId+"&toUser="+patientCode+"&toName="+name);
                        json.put("keyword1","产检就诊提醒");
                        String keyword2 = DateUtil.getStringDateShort()+"\n产检内容:"+plan.getCheckItem();
                        json.put("keyword2",keyword2);
                        pushMsgTask.sendWeixinMessage(accessTokenUtils.getAccessToken(), 18, openId, name, json);
                    }
                }
            }catch (Exception e){
                System.out.println("微信提醒发送失败");
                e.printStackTrace();
            }
        }
    }
}

+ 501 - 0
patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/service/app/prescription/PatientPrescriptionPayService.java

@ -0,0 +1,501 @@
package com.yihu.wlyy.service.app.prescription;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.wlyy.entity.charge.WlyyCharge;
import com.yihu.wlyy.entity.message.Message;
import com.yihu.wlyy.entity.organization.Hospital;
import com.yihu.wlyy.entity.organization.HospitalMapping;
import com.yihu.wlyy.entity.patient.Patient;
import com.yihu.wlyy.entity.patient.SignFamily;
import com.yihu.wlyy.entity.patient.prescription.*;
import com.yihu.wlyy.entity.security.AccessToken;
import com.yihu.wlyy.entity.ylz.PayConfigura;
import com.yihu.wlyy.entity.zydict.ZyPushLog;
import com.yihu.wlyy.repository.charge.ChargeDao;
import com.yihu.wlyy.repository.doctor.DoctorDao;
import com.yihu.wlyy.repository.message.MessageDao;
import com.yihu.wlyy.repository.organization.HospitalDao;
import com.yihu.wlyy.repository.organization.HospitalMappingDao;
import com.yihu.wlyy.repository.patient.PatientDao;
import com.yihu.wlyy.repository.patient.SignFamilyDao;
import com.yihu.wlyy.repository.prescription.PrescriptionDao;
import com.yihu.wlyy.repository.prescription.PrescriptionExpressageDao;
import com.yihu.wlyy.repository.prescription.PrescriptionInfoDao;
import com.yihu.wlyy.repository.prescription.PrescriptionPayDao;
import com.yihu.wlyy.repository.ylz.PayConfiguraDao;
import com.yihu.wlyy.service.BaseService;
import com.yihu.wlyy.service.common.account.AccessTokenService;
import com.yihu.wlyy.util.SystemConf;
import com.ylzinfo.onepay.sdk.OnepayDefaultClient;
import com.ylzinfo.onepay.sdk.domain.RequestParams;
import com.ylzinfo.onepay.sdk.domain.ResponseParams;
import com.ylzinfo.onepay.sdk.utils.DateUtil;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.util.StreamUtils;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.transaction.Transactional;
import java.io.InputStream;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.nio.charset.Charset;
import java.text.SimpleDateFormat;
import java.util.*;
/**
 * Created by Reece on 2017/7/28/028.
 * 患者支付
 */
@Service
public class PatientPrescriptionPayService extends BaseService {
    private Logger logger=LoggerFactory.getLogger(PatientPrescriptionPayService.class);
    //公共配置文件
    Properties systemConf = SystemConf.getInstance().getSystemProperties();
    //    各环境对应配置
    @Value("${server.server_url}")
    private String serverUrl;
    @Value("${wechat.accId}")
    private String accId;
    @Value("${wechat.appId}")
    private String appId;
    @Value("${wechat.appSecret}")
    private String appSecret;
    //    Java配置文件 后续删除
    private String signType = "MD5";
    private String encryptType = "AES";
    //    引入实例
    @Autowired
    private PayConfiguraDao configuraDao;
    @Autowired
    private PrescriptionPayDao payDao;
    @Autowired
    private HospitalMappingDao mappingDao;
    @Autowired
    private PrescriptionDao prescriptionDao;
    @Autowired
    private ChargeDao chargeDao;
    @Autowired
    private SignFamilyDao signFamilyDao;
    @Autowired
    private HospitalMappingDao hospitalMappingDao;
    @Autowired
    private AccessTokenService accessTokenService;
    @Autowired
    private com.yihu.wlyy.util.HttpUtil HttpUtil;
    @Autowired
    private PrescriptionExpressageDao expressageDao;
    /**
     * 家庭医生签约支付查询
     */
    public String chargeQuery(String code, String accessToken) throws Exception {
        PayConfigura config = configuraDao.findWorkConfigura();
        SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
        int flag = 0;
        Boolean isSuccess = true;
        String msgBody = "";
        String response = "";
        String error = "";
        String result = null;
        try {
            PrescriptionPay charge = payDao.findByCode(code);
            String prescriptionCode = charge.getPrescriptionCode();
            Prescription prescription = prescriptionDao.findByCode(prescriptionCode);
            HospitalMapping hospitalMapping = mappingDao.findByCode(prescription.getHospital());
            OnepayDefaultClient onepayClient = new OnepayDefaultClient(config.getOnepayApi(), hospitalMapping.getAppId(), hospitalMapping.getAppSecret(), signType, encryptType);
            RequestParams requestParams = new RequestParams();
//            requestParams.setVersion();
//            requestParams.setSign();
//            requestParams.setEncryptData();
//            requestParams.setAppId(appId);
            requestParams.setAppId(hospitalMapping.getAppId());
            requestParams.setTimestamp(DateUtil.getCurrentDateTime());
            requestParams.setSignType(signType);
            requestParams.setEncryptType(encryptType);
            requestParams.setTransType(config.getChargeQueryType());
            //业务参数
            JSONObject params = new JSONObject();
            params.put("outChargeNo", code);  //接入应用结算业务流水号
            params.put("wxToken", accessToken);
            requestParams.setParam(params);
            msgBody = JSON.toJSONString(requestParams);
            //执行支付 返回原生返回值
            ResponseParams<JSONObject> res = onepayClient.execute(requestParams);
            response = JSON.toJSONString(res);
            if (OnepayDefaultClient.isSuccessful(res)) {
                //业务处理*******************
//                只返回业务出参
                flag = 1;
                result = JSON.toJSONString(res.getParam());
//             新增保存数据
                JSONObject request = JSON.parseObject(result);
                String chargeStatus = request.getString("chargeStatus");//交易状态
                String chargeNo = request.getString("chargeNo");//支付平台流水号
                String chargeTime = request.getString("chargeTime");//支付平台交易成功时间
                String outChargeNo = request.getString("outChargeNo");//接入应用业务流水号
                String outChargeTime = request.getString("outChargeTime");//接入应用时间
                String medOrgNo = request.getString("medOrgNo");//医疗机构编号
                String medOrgName = request.getString("medOrgName");//医疗机构名称
                String billNo = request.getString("billNo");//待结算费用单据号
                String cardNo = request.getString("cardNo");//医保卡号
                String totalAmount = request.getString("totalAmount");//交易总金额
                String insuranceAmount = request.getString("insuranceAmount");//医保支付金额
                String selfPayAmount = request.getString("selfPayAmount");//自付金额
                String userId = request.getString("userId");//用户openID
                String userName = request.getString("userName");//用户名字
                String idNo = request.getString("idNo");//证件号码
                String idType = request.getString("idType");//证件类型
//                String appId = request.getString("appId");
//                String channel = request.getString("channel");//支付方式
//                String sign = request.getString("sign");
//                String signType = request.getString("signType");
//                String timestamp = request.getString("timestamp");
                JSONObject responseContents = request.getJSONObject("responseContent");//医保结构体
                PrescriptionPay prescriptionPay = payDao.findByCode(outChargeNo);
                if (responseContents != null) {
                    String miSettleNo = null;//医保收费单据号 (医保签约号)
                    String miRegisterNo = null;//医保挂号
                    String miCollectDate = null;//收费日期
                    String miCollectTime = null;//收费时间
                    String miCollectorName = null;//收费人姓名
                    String miTotalFee = "0";//本次报销总额
                    String selfPay = "0";//个人现金支付
                    String accountPay = "0";//个人账户支付
                    String heathPay = "0";//健康账户支付
                    String cadresPay = "0";//公务员补助
                    String fundPay = "0";//基金支付
                    String healthCarePay = "0";//保健基金支付
                    String commercePay = "0";//商业保险支付
                    String familyPay = "0";//共济账户支付
                    String civilPay = "0";//民政补助金额
                    String civilZone = null;//民政行政区号
                    String bdrugPay = "0";//乙类支付金额
                    String unlessAmount = "0";//非医保费用
                    String exceedAmount = "0";//超封顶线金额
                    String accountBalance = "0";//个人账户余额
                    String healthBalance = "0";//健康账户余额
                    if (responseContents.containsKey("miSettleNo")) {
                        miSettleNo = responseContents.getString("miSettleNo");
                    }
                    if (responseContents.containsKey("miRegisterNo")) {
                        miRegisterNo = responseContents.getString("miRegisterNo");
                    }
                    if (responseContents.containsKey("miCollectDate")) {
                        miCollectDate = responseContents.getString("miCollectDate");
                    }
                    if (responseContents.containsKey("miCollectTime")) {
                        miCollectTime = responseContents.getString("miCollectTime");
                    }
                    if (responseContents.containsKey("miCollectorName")) {
                        miCollectorName = responseContents.getString("miCollectorName");
                    }
                    if (responseContents.containsKey("miTotalFee")) {
                        miTotalFee = responseContents.getString("miTotalFee");
                    }
                    if (responseContents.containsKey("selfPay")) {
                        selfPay = responseContents.getString("selfPay");
                    }
                    if (responseContents.containsKey("accountPay")) {
                        accountPay = responseContents.getString("accountPay");
                    }
                    if (responseContents.containsKey("heathPay")) {
                        heathPay = responseContents.getString("heathPay");
                    }
                    if (responseContents.containsKey("cadresPay")) {
                        cadresPay = responseContents.getString("cadresPay");
                    }
                    if (responseContents.containsKey("fundPay")) {
                        fundPay = responseContents.getString("fundPay");
                    }
                    if (responseContents.containsKey("healthCarePay")) {
                        healthCarePay = responseContents.getString("healthCarePay");
                    }
                    if (responseContents.containsKey("commercePay")) {
                        commercePay = responseContents.getString("commercePay");
                    }
                    if (responseContents.containsKey("familyPay")) {
                        familyPay = responseContents.getString("familyPay");
                    }
                    if (responseContents.containsKey("civilPay")) {
                        civilPay = responseContents.getString("civilPay");
                    }
                    if (responseContents.containsKey("civilZone")) {
                        civilZone = responseContents.getString("civilZone");
                    }
                    if (responseContents.containsKey("bdrugPay")) {
                        bdrugPay = responseContents.getString("bdrugPay");
                    }
                    if (responseContents.containsKey("unlessAmount")) {
                        unlessAmount = responseContents.getString("unlessAmount");
                    }
                    if (responseContents.containsKey("exceedAmount")) {
                        exceedAmount = responseContents.getString("exceedAmount");
                    }
                    if (responseContents.containsKey("accountBalance")) {
                        accountBalance = responseContents.getString("accountBalance");
                    }
                    if (responseContents.containsKey("healthBalance")) {
                        healthBalance = responseContents.getString("healthBalance");
                    }
                    prescriptionPay.setMiSettleNo(miSettleNo);//医保收费单据号
                    prescriptionPay.setMiRegisterNo(miRegisterNo);//医保挂号
                    SimpleDateFormat formatDate = new SimpleDateFormat("yyyyMMdd");
                    prescriptionPay.setMiCollectDate(formatDate.parse(miCollectDate));//收费日期
                    SimpleDateFormat formatTime = new SimpleDateFormat("HHmm");
                    prescriptionPay.setMiCollectTime(formatTime.parse(miCollectTime));//收费时间
                    prescriptionPay.setMiCollectorName(miCollectorName);//收费人姓名
                    prescriptionPay.setMiTotalFee(Integer.parseInt(miTotalFee));//本次报销总额
                    prescriptionPay.setSelfPay(Integer.parseInt(selfPay));//个人现金支付
                    prescriptionPay.setAccountPay(Integer.parseInt(accountPay));//个人账户支付
                    prescriptionPay.setHeathPay(Integer.parseInt(heathPay));//健康账户支付
                    prescriptionPay.setCadresPay(Integer.parseInt(cadresPay));//公务员补助
                    prescriptionPay.setFundPay(Integer.parseInt(fundPay));//基金支付
                    prescriptionPay.setHealthCarePay(Integer.parseInt(healthCarePay));//保健基金支付
                    prescriptionPay.setCommercePay(Integer.parseInt(commercePay));//商业保险支付
                    prescriptionPay.setFamilyPay(Integer.parseInt(familyPay));//共济账户支付
                    prescriptionPay.setCivilPay(Integer.parseInt(civilPay));//民政补助金额
                    prescriptionPay.setCivilZone(civilZone);//民政行政区号
                    prescriptionPay.setBdrugPay(Integer.parseInt(bdrugPay));//乙类支付金额
                    prescriptionPay.setUnlessAmount(Integer.parseInt(unlessAmount));//非医保费用
                    prescriptionPay.setExceedAmount(Integer.parseInt(exceedAmount));//超封顶线金额
                    prescriptionPay.setAccountBalance(Integer.parseInt(accountBalance));//个人账户余额
                    prescriptionPay.setHealthBalance(Integer.parseInt(healthBalance));//健康账户余额
                }
                prescriptionPay.setTradeStatus(chargeStatus);
                prescriptionPay.setChargeNo(chargeNo);//支付流水号
                prescriptionPay.setChargeTime(format.parse(chargeTime));
                prescriptionPay.setOutChargeTime(format.parse(outChargeTime));
                prescriptionPay.setMedOrgNo(medOrgNo);
                prescriptionPay.setMedOrgName(medOrgName);
                prescriptionPay.setBillNo(billNo);
                prescriptionPay.setPrincipalCardNo(cardNo);
                prescriptionPay.setTotalAmount(Integer.parseInt(totalAmount));
                prescriptionPay.setInsuranceAmount(Integer.parseInt(insuranceAmount));//医保支付金额
                prescriptionPay.setSelfPayAmount(Integer.parseInt(selfPayAmount));//自付金额
                prescriptionPay.setOpenid(userId);
                prescriptionPay.setUserName(userName);
                prescriptionPay.setIdType(idType);
                prescriptionPay.setIdNo(idNo);
                //        保存数据库更改记录
                payDao.save(prescriptionPay);
                PrescriptionExpressage expressage = expressageDao.findByPrescriptionPay(prescriptionCode);
                if ("0".equals(chargeStatus) || "SUCCESS".equals(chargeStatus)) {
                    prescriptionPay.setTradeStatus("1");//交易状态 成功1 失败0
                    prescription.setStatus(PrescriptionLog.PrescriptionLogStatus.pay_success.getValue());//续费状态 枚举 支付成功
                    expressage.setDel(1);//快递信息状态 1可用 0删除
                    expressageDao.save(expressage);
                    prescriptionDao.save(prescription);
                } else if ("1".equals(chargeStatus) || "FAIL".equals(chargeStatus)) {
                    prescriptionPay.setTradeStatus("0");//交易状态 成功1 失败0
                    prescription.setStatus(PrescriptionLog.PrescriptionLogStatus.pay_error.getValue());////续费状态 支付失败
                    expressage.setDel(0);//快递信息状态 1可用 0删除
                    expressageDao.save(expressage);
                    prescriptionDao.save(prescription);
                }
                logger.info("请求成功,返回参数: " + result);
            } else {
                isSuccess = false;
                error = "请求失败,返回结果:" + res.getRespCode() + "," + res.getRespMsg();
            }
        } catch (Exception ex) {
            isSuccess = false;
            StringWriter sw = new StringWriter();
            PrintWriter pw = new PrintWriter(sw);
            ex.printStackTrace(pw);
            error = sw.toString();
        }
        if (!isSuccess) {
            throw new Exception(error);
        }
        return result;
    }
    public String getSignFamilyPayResult(String outChargeNo, String accessToken, String appId, String appSecret) throws Exception {
        PayConfigura config = configuraDao.findWorkConfigura();
        Boolean isSuccess = true;
        String msgBody = "";
        String response = "";
        String error = "";
        String result = null;
//      ***************************  测通流程 ***************************************
        OnepayDefaultClient onepayClient = new OnepayDefaultClient(config.getOnepayApi(), appId, appSecret, signType, encryptType);
        try {
            RequestParams requestParams = new RequestParams();
            requestParams.setAppId(appId);
            requestParams.setTimestamp(DateUtil.getCurrentDateTime());
            requestParams.setSignType(signType);
            requestParams.setEncryptType(encryptType);
            requestParams.setTransType(config.getChargeQueryType());
            //业务参数
            JSONObject params = new JSONObject();
            params.put("outChargeNo", outChargeNo);  //接入应用结算业务流水号
            params.put("wxToken", accessToken);
            requestParams.setParam(params);
            msgBody = JSON.toJSONString(requestParams);
//              ***************************  测通流程 ***************************************
            //执行支付 返回原生返回值
            ResponseParams<JSONObject> res = onepayClient.execute(requestParams);
            response = JSON.toJSONString(res);
            if (OnepayDefaultClient.isSuccessful(res)) {
                //业务处理*******************
//                只返回业务出参
                result = JSON.toJSONString(res.getParam());
//                logger.info("请求成功,返回参数: " + result);
            } else {
                isSuccess = false;
                error = "请求失败,返回结果:" + res.getRespCode() + "," + res.getRespMsg();
            }
        } catch (Exception ex) {
            isSuccess = false;
            StringWriter sw = new StringWriter();
            PrintWriter pw = new PrintWriter(sw);
            ex.printStackTrace(pw);
            error = sw.toString();
        }
        //type = 3易联众接口保存http日志
//        logger.info("api - " + config.getChargeQueryType());
//        logger.info("request - " + msgBody);
//        logger.info("responses - " + response);
//        logger.info("error - " + error);
        if (!isSuccess) {
            throw new Exception(error);
        }
        return result;
    }
    /**
     * 1.根据时间范围遍历没有医保签约号的家庭签约支付记录
     * 2.询家庭签约支付结果,补更新医保签约号
     * @param startdate
     * @param enddate
     */
    public void getSignFamilyPayResultJob(Date startdate, Date enddate) throws Exception {
        //根据时间范围遍历没有医保签约号的家庭签约支付记录
        List<WlyyCharge> charges = chargeDao.findByTradeStatusAndMiRegisterNoAndUpdateTime(0,enddate,startdate);
        if(!charges.isEmpty()){
            logger.info("根据时间范围遍历没有医保签约号的家庭签约支付记录:"+charges.size()+"条");
            String accessToken = this.getAccessToken();
            for (WlyyCharge charge:charges) {
                try {
                    //1.根据签约ID获取家庭签约记录,判断是否有效
                    SignFamily signFamily = signFamilyDao.findByCode(charge.getChargeRelation());
                    if(1 == signFamily.getStatus()){
                        HospitalMapping hospitalMapping = hospitalMappingDao.findByCode(charge.getHospital());
                        String appid = hospitalMapping.getAppId();
                        String appsecert =  hospitalMapping.getAppSecret();
                        String signFamilyPayResultJson = this.getSignFamilyPayResult(charge.getCode(),"",appid,appsecert);
                        if(StringUtils.isNotBlank(signFamilyPayResultJson)){
                            JSONObject reobj =  JSON.parseObject(signFamilyPayResultJson);
                            if(reobj.containsKey("responseContent")){
                                JSONObject responseContent = reobj.getJSONObject("responseContent");
                                if(responseContent.containsKey("miRegisterNo") && StringUtils.isNotBlank(responseContent.getString("miRegisterNo"))){
                                    String miRegisterNo = responseContent.getString("miRegisterNo");
                                    charge.setMiRegisterNo(miRegisterNo);
                                    charge.setNeedUpload("1");
                                    charge.setUpdateTime(new Date());
                                    chargeDao.save(charge);
                                }else{
                                    logger.info("ERROR======获取家庭签约支付医保签约号JOB,CODE:"+charge.getCode()+",message:miRegisterNo不存在");
                                }
                            }else{
                                logger.info("ERROR======获取家庭签约支付医保签约号JOB,CODE:"+charge.getCode()+",message:responseContent不存在");
                            }
                        }else{
                            logger.info("ERROR======获取家庭签约支付医保签约号JOB,CODE:"+charge.getCode()+",message:接口无返回值");
                        }
                    }else{
                        logger.info("ERROR======获取家庭签约支付医保签约号JOB,CODE:"+charge.getCode()+",message:对应的签约记录无效");
                    }
                }catch (Exception e){
                    logger.info("ERROR======获取家庭签约支付医保签约号JOB,CODE:"+charge.getCode()+",message:" +e.getMessage());
                    continue;
                }
            }
        }
    }
    /**
     * 获取微信的access_token
     *
     * @return
     */
    public String getAccessToken() throws Exception{
        Iterable<AccessToken> accessTokens = accessTokenService.findAccessToken();
        if (accessTokens != null) {
            for (AccessToken accessToken : accessTokens) {
                if ((System.currentTimeMillis() - accessToken.getAdd_timestamp()) < (accessToken.getExpires_in() * 1000)) {
                    return accessToken.getAccess_token();
                } else {
                    accessTokenService.delAccessToken(accessToken);
                    break;
                }
            }
        }
        String token_url = "https://api.weixin.qq.com/cgi-bin/token";
        String params = "grant_type=client_credential&appid=" + appId + "&secret=" + appSecret;
        String result = HttpUtil.sendGet(token_url, params);
        org.json.JSONObject json = new org.json.JSONObject(result);
        if (json.has("access_token")) {
            String token = json.get("access_token").toString();
            String expires_in = json.get("expires_in").toString();
            AccessToken newaccessToken = new AccessToken();
            newaccessToken.setAccess_token(token);
            newaccessToken.setExpires_in(Long.parseLong(expires_in));
            newaccessToken.setAcc_id(accId);
            accessTokenService.addAccessToken(newaccessToken);
            return token;
        } else {
            return null;
        }
    }
}

+ 1 - 0
patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/service/app/sign/FamilyContractService.java

@ -488,6 +488,7 @@ public class FamilyContractService extends BaseService {
            p.setTownName(townName);
            p.setAddress(address);
            p.setOpenid(openid);
            p.setOpenidTime(new Date());
            p.setIdcard(idcard);
            p.setMobile(mobile);
            p.setSsc(ssc);

+ 610 - 0
patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/service/third/jw/ZyDictService.java

@ -0,0 +1,610 @@
package com.yihu.wlyy.service.third.jw;
import com.yihu.wlyy.entity.zydict.*;
import com.yihu.wlyy.repository.zydict.*;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
 * Created by chenweida on 2017/9/30.
 */
@Service
public class ZyDictService {
    public Logger logger = LoggerFactory.getLogger(ZyDictService.class);
    @Autowired
    public ZyCommonDictDao zyCommonDictDao;
    @Autowired
    public ZyIvDeptDictDao zyIvDeptDictDao;
    @Autowired
    public ZyIvDeptStaffAllotDictDao zyIvDeptStaffAllotDictDao;
    @Autowired
    public ZyIvDiagnoseClassDictDao zyIvDiagnoseClassDictDao;
    @Autowired
    public ZyIvDiagnoseDictDao zyIvDiagnoseDictDao;
    @Autowired
    public ZyIvOrgPhysicAllotDictDao zyIvOrgPhysicAllotDictDao;
    @Autowired
    public ZyIvPhysicDictDao zyIvPhysicDictDao;
    @Autowired
    public ZyIvStaffDictDao zyIvStaffDictDao;
    @Autowired
    public ZyIvStaffRegTypeAllotDictDao zyIvStaffRegTypeAllotDictDao;
    @Autowired
    public ZyIvSubjectClassDictDao zyIvSubjectClassDictDao;
    @Autowired
    public JwPrescriptionService jwPrescriptionService;
    public void synchronizeZy_iv_diagnose_dict() {
        logger.info("synchronized zy_iv_diagnose_dict start");
        String dictName = this.IV_DIAGNOSE_DICT;
        List<ZyIvDiagnoseDict> zyIvDiagnoseDicts = new ArrayList<>();
        //得到list
        zyIvDiagnoseDicts = commonGetOneDict(ZyIvDiagnoseDict.class, dictName);
        if (zyIvDiagnoseDicts != null && zyIvDiagnoseDicts.size() > 0) {
            //清空表
            zyIvDiagnoseDictDao.deleteAll();
            //新增数据
            logger.info("save table zy_iv_diagnose_dict  ,size:" + zyIvDiagnoseDicts.size());
            List<ZyIvDiagnoseDict> zyIvDiagnoseDictTemp = new ArrayList<>();
            for (int i = 0; i < zyIvDiagnoseDicts.size(); i++) {
                zyIvDiagnoseDictTemp.add(zyIvDiagnoseDicts.get(i));
                //批量提交
                if (((zyIvDiagnoseDictTemp.size() % 2000) == 0) || (zyIvDiagnoseDictTemp.size() == i)) {
                    saveZy_iv_diagnose_dict(zyIvDiagnoseDictTemp);
                    zyIvDiagnoseDictTemp = new ArrayList<>();
                }
            }
        }
        logger.info("synchronized zy_iv_diagnose_dict end");
    }
    @Transactional
    private void saveZy_iv_diagnose_dict(List<ZyIvDiagnoseDict> zyIvDiagnoseDictTemp) {
        zyIvDiagnoseDictDao.save(zyIvDiagnoseDictTemp);
    }
    public void synchronizeZy_iv_subject_class_dict() {
        logger.info("synchronized zy_iv_subject_class_dict start");
        String dictName = this.IV_SUBJECT_CLASS_DICT;
        List<ZyIvSubjectClassDict> zyIvSubjectClassDicts = new ArrayList<>();
        //得到list
        zyIvSubjectClassDicts = commonGetOneDict(ZyIvSubjectClassDict.class, dictName);
        if (zyIvSubjectClassDicts.size() > 0) {
            //清空表
            zyIvSubjectClassDictDao.deleteAll();
            //新增数据
            logger.info("save table zy_iv_subject_class_dict  ,size:" + zyIvSubjectClassDicts.size());
            List<ZyIvSubjectClassDict> zyIvSubjectClassDictTemp = new ArrayList<>();
            for (int i = 0; i < zyIvSubjectClassDicts.size(); i++) {
                zyIvSubjectClassDictTemp.add(zyIvSubjectClassDicts.get(i));
                //批量提交
                if (((zyIvSubjectClassDictTemp.size() % 2000) == 0) || (zyIvSubjectClassDictTemp.size() == i)) {
                    saveZy_iv_subject_class_dict(zyIvSubjectClassDictTemp);
                    zyIvSubjectClassDictTemp = new ArrayList<>();
                }
            }
            logger.info("synchronized zy_iv_subject_class_dict end");
        }
    }
    @Transactional
    private void saveZy_iv_subject_class_dict(List<ZyIvSubjectClassDict> zyIvSubjectClassDictTemp) {
        zyIvSubjectClassDictDao.save(zyIvSubjectClassDictTemp);
    }
    public void synchronizeZy_iv_staff_reg_type_allot_dict() {
        logger.info("synchronized zy_iv_staff_reg_type_allot_dict start");
        String dictName = this.IV_STAFF_REG_TYPE_ALLOT_DICT;
        List<ZyIvStaffRegTypeAllotDict> zyIvStaffRegTypeAllotDicts = new ArrayList<>();
        //得到list
        zyIvStaffRegTypeAllotDicts = commonGetOneDict(ZyIvStaffRegTypeAllotDict.class, dictName);
        if (zyIvStaffRegTypeAllotDicts != null && zyIvStaffRegTypeAllotDicts.size() > 0) {
            //清空表
            zyIvStaffRegTypeAllotDictDao.deleteAll();
            //新增数据
            logger.info("save table zy_iv_staff_reg_type_allot_dict  ,size:" + zyIvStaffRegTypeAllotDicts.size());
            List<ZyIvStaffRegTypeAllotDict> zyIvStaffRegTypeAllotDictTemp = new ArrayList<>();
            for (int i = 0; i < zyIvStaffRegTypeAllotDicts.size(); i++) {
                zyIvStaffRegTypeAllotDictTemp.add(zyIvStaffRegTypeAllotDicts.get(i));
                //批量提交
                if (((zyIvStaffRegTypeAllotDictTemp.size() % 2000) == 0) || (zyIvStaffRegTypeAllotDictTemp.size() == i)) {
                    saveZy_iv_staff_reg_type_allot_dict(zyIvStaffRegTypeAllotDictTemp);
                    zyIvStaffRegTypeAllotDictTemp = new ArrayList<>();
                }
            }
            logger.info("synchronized zy_iv_staff_reg_type_allot_dict end");
        }
    }
    @Transactional
    private void saveZy_iv_staff_reg_type_allot_dict(List<ZyIvStaffRegTypeAllotDict> zyIvStaffRegTypeAllotDictTemp) {
        zyIvStaffRegTypeAllotDictDao.save(zyIvStaffRegTypeAllotDictTemp);
    }
    @Transactional
    public void synchronizeZ_iv_staff_dict() {
        logger.info("synchronized zy_iv_staff_dict start");
        String dictName = this.IV_STAFF_DICT;
        List<ZyIvStaffDict> zyIvStaffDicts = new ArrayList<>();
        //得到list
        zyIvStaffDicts = commonGetOneDict(ZyIvStaffDict.class, dictName);
        //清空表
        if (zyIvStaffDicts != null && zyIvStaffDicts.size() > 0) {
            zyIvStaffDictDao.deleteAll();
            //新增数据
            logger.info("save table zy_iv_staff_dict  ,size:" + zyIvStaffDicts.size());
            zyIvStaffDictDao.save(zyIvStaffDicts);
            logger.info("synchronized zy_iv_staff_dict end");
        }
    }
    public void synchronizeZy_iv_physic_dict() {
        logger.info("synchronized zy_iv_physic_dict start");
        String dictName = this.IV_PHYSIC_DICT;
        List<ZyIvPhysicDict> zyIvPhysicDicts = new ArrayList<>();
        //得到list
        zyIvPhysicDicts = commonGetOneDict(ZyIvPhysicDict.class, dictName);
        if (zyIvPhysicDicts != null && zyIvPhysicDicts.size() > 0) {
            //清空表
            zyIvPhysicDictDao.deleteAll();
            //新增数据
            logger.info("save table zy_iv_physic_dict  ,size:" + zyIvPhysicDicts.size());
            List<ZyIvPhysicDict> zyIvPhysicDictsTemp = new ArrayList<>();
            for (int i = 0; i < zyIvPhysicDicts.size(); i++) {
                zyIvPhysicDictsTemp.add(zyIvPhysicDicts.get(i));
                //批量提交
                if (((zyIvPhysicDictsTemp.size() % 2000) == 0) || (zyIvPhysicDictsTemp.size() == i)) {
                    saveObPhysicDict(zyIvPhysicDictsTemp);
                    zyIvPhysicDictsTemp = new ArrayList<>();
                }
            }
            logger.info("synchronized zy_iv_physic_dict end");
        }
    }
    @Transactional
    private void saveObPhysicDict(List<ZyIvPhysicDict> zyIvPhysicDictsTemp) {
        zyIvPhysicDictDao.save(zyIvPhysicDictsTemp);
    }
    @Transactional
    public void synchronizeZy_iv_org_physic_allot_dict() {
        logger.info("synchronized zy_iv_org_physic_allot_dict start");
        String dictName = this.IV_ORG_PHYSIC_ALLOT_DICT;
        List<ZyIvOrgPhysicAllotDict> zyIvOrgPhysicAllotDicts = new ArrayList<>();
        //得到list
        zyIvOrgPhysicAllotDicts = commonGetOneDict(ZyIvOrgPhysicAllotDict.class, dictName);
        if (zyIvOrgPhysicAllotDicts != null && zyIvOrgPhysicAllotDicts.size() > 0) {
            //清空表
            zyIvOrgPhysicAllotDictDao.deleteAll();
            //新增数据
            logger.info("save table zy_iv_org_physic_allot_dict  ,size:" + zyIvOrgPhysicAllotDicts.size());
            List<ZyIvOrgPhysicAllotDict> zyIvStaffRegTypeAllotDictTemp = new ArrayList<>();
            for (int i = 0; i < zyIvOrgPhysicAllotDicts.size(); i++) {
                zyIvStaffRegTypeAllotDictTemp.add(zyIvOrgPhysicAllotDicts.get(i));
                //批量提交
                if (((zyIvStaffRegTypeAllotDictTemp.size() % 2000) == 0) || (zyIvStaffRegTypeAllotDictTemp.size() == i)) {
                    saveZy_iv_org_physic_allot_dict(zyIvStaffRegTypeAllotDictTemp);
                    zyIvStaffRegTypeAllotDictTemp = new ArrayList<>();
                }
            }
            logger.info("synchronized zy_iv_org_physic_allot_dict end");
        }
    }
    @Transactional
    private void saveZy_iv_org_physic_allot_dict(List<ZyIvOrgPhysicAllotDict> zyIvOrgPhysicAllotDicts) {
        zyIvOrgPhysicAllotDictDao.save(zyIvOrgPhysicAllotDicts);
    }
    public void synchronizeZy_iv_diagnose_class_dict() {
        logger.info("synchronized zy_iv_diagnose_class_dict start");
        String dictName = this.IV_DIAGNOSE_CLASS_DICT;
        List<ZyIvDiagnoseClassDict> zIvDiagnoseClassDicts = new ArrayList<>();
        //得到list
        zIvDiagnoseClassDicts = commonGetOneDict(ZyIvDiagnoseClassDict.class, dictName);
        if (zIvDiagnoseClassDicts != null && zIvDiagnoseClassDicts.size() > 0) {
            //清空表
            zyIvDiagnoseClassDictDao.deleteAll();
            //新增数据
            logger.info("save table zy_iv_diagnose_class_dict  ,size:" + zIvDiagnoseClassDicts.size());
            List<ZyIvDiagnoseClassDict> zyIvStaffRegTypeAllotDictTemp = new ArrayList<>();
            for (int i = 0; i < zIvDiagnoseClassDicts.size(); i++) {
                zyIvStaffRegTypeAllotDictTemp.add(zIvDiagnoseClassDicts.get(i));
                //批量提交
                if (((zyIvStaffRegTypeAllotDictTemp.size() % 2000) == 0) || (zyIvStaffRegTypeAllotDictTemp.size() == i)) {
                    saveZy_iv_diagnose_class_dict(zyIvStaffRegTypeAllotDictTemp);
                    zyIvStaffRegTypeAllotDictTemp = new ArrayList<>();
                }
            }
            logger.info("synchronized zy_iv_diagnose_class_dict end");
        }
    }
    @Transactional
    private void saveZy_iv_diagnose_class_dict(List<ZyIvDiagnoseClassDict> zIvDiagnoseClassDicts) {
        zyIvDiagnoseClassDictDao.save(zIvDiagnoseClassDicts);
    }
    @Transactional
    public void synchronizeZy_iv_dept_staff_allot_dict() {
        logger.info("synchronized zy_iv_dept_staff_allot_dict start");
        String dictName = this.IV_DEPT_STAFF_ALLOT_DICT;
        List<ZyIvDeptStaffAllotDict> syIvDeptStaffAllotDictz = new ArrayList<>();
        //得到list
        syIvDeptStaffAllotDictz = commonGetOneDict(ZyIvDeptStaffAllotDict.class, dictName);
        if (syIvDeptStaffAllotDictz != null && syIvDeptStaffAllotDictz.size() > 0) {
            //清空表
            zyIvDeptStaffAllotDictDao.deleteAll();
            //新增数据
            logger.info("save table zy_iv_dept_staff_allot_dict  ,size:" + syIvDeptStaffAllotDictz.size());
            List<ZyIvDeptStaffAllotDict> zyIvStaffRegTypeAllotDictTemp = new ArrayList<>();
            for (int i = 0; i < syIvDeptStaffAllotDictz.size(); i++) {
                zyIvStaffRegTypeAllotDictTemp.add(syIvDeptStaffAllotDictz.get(i));
                //批量提交
                if (((zyIvStaffRegTypeAllotDictTemp.size() % 2000) == 0) || (zyIvStaffRegTypeAllotDictTemp.size() == i)) {
                    saveZy_iv_dept_staff_allot_dict(zyIvStaffRegTypeAllotDictTemp);
                    zyIvStaffRegTypeAllotDictTemp = new ArrayList<>();
                }
            }
            logger.info("synchronized zy_iv_dept_staff_allot_dict end");
        }
    }
    private void saveZy_iv_dept_staff_allot_dict(List<ZyIvDeptStaffAllotDict> syIvDeptStaffAllotDictz) {
        zyIvDeptStaffAllotDictDao.save(syIvDeptStaffAllotDictz);
    }
    public void synchronizeZyCommonDict() {
        logger.info("synchronized zy_common_dict start");
        String[] dictNames = new String[]{
                this.IV_PHYSIC_FORM_DICT, this.IV_PHYSIC_INJECT_PLACE_DICT, this.IV_PHYSIC_SKIN_TEST_DICT,
                this.IV_RATE_TYPE_DICT, this.IV_RECIPE_FREQUENCY_DICT, this.IV_RECIPE_USAGE_DICT,
                this.IV_SEX_DICT, this.IV_PHYSIC_TOXICOLOGY_TYPE_DICT, this.IV_MEASURE_UNIT_DICT,
                this.IV_DEPT_TYPE_DICT};
        List<ZyCommonDict> zyCommonDictz = new ArrayList<>();
        Boolean isFlush = true;
        for (String dictName : dictNames) {
            String json = null;
            try {
                //调用智业的接口得到字典
                json = jwPrescriptionService.getDictForI(dictName);
                JSONObject returnJson = JSONObject.fromObject(json);
                if (returnJson.getInt("status") != 200) {
                    throw new Exception("zy dict error status not 200");
                }
                if (returnJson.containsKey("data")) {
                    String dataString = returnJson.getString("data");
                    JSONArray dataJSONArray = JSONObject.fromObject(dataString).getJSONArray("returnData");
                    if (dataJSONArray.size() == 0) {
                        logger.info("zy dict data size " + dataJSONArray.size() + ",dictname:" + dictName);
                        continue;
                    }
                    //下划线转驼峰
                    JSONArray newJA = new JSONArray();
                    JSONArray jsonArrayTemp = dataJSONArray.getJSONArray(0);
                    logger.info("zy dict data size " + jsonArrayTemp.size() + ",dictname:" + dictName);
                    for (int i = 0; i < jsonArrayTemp.size(); i++) {
                        JSONObject jo = jsonArrayTemp.getJSONObject(i);
                        JSONObject newJO = new JSONObject();
                        jo.keySet().stream().forEach(key -> {
                            Object value = jo.get(key);
                            String newKey = Tool.lineToHump(key.toString());
                            newJO.put(newKey, value);
                        });
                        newJA.add(newJO);
                    }
                    ZyCommonDict[] zyCommonDictArrays = (ZyCommonDict[]) JSONArray.toArray(newJA, ZyCommonDict.class);
                    zyCommonDictz.addAll(Arrays.asList(zyCommonDictArrays));
                } else {
                    throw new Exception("zy dict error no contain data");
                }
            } catch (Exception e) {
                e.printStackTrace();
                isFlush = false; //设置状态不能更新
                logger.error("dictName:" + dictName);
                logger.error("returnJson:" + json);
                logger.error(e.getMessage());
            }
        }
        //判断是否可以更新
        if (isFlush) {
            // 判断返回的数据是否大于0
            if (zyCommonDictz.size() > 0) {
                //清空表
                zyCommonDictDao.deleteAll();
                //新增数据
                logger.info("save table zy_common_dict  ,size:" + zyCommonDictz.size());
                List<ZyCommonDict> zyIvStaffRegTypeAllotDictTemp = new ArrayList<>();
                for (int i = 0; i < zyCommonDictz.size(); i++) {
                    zyIvStaffRegTypeAllotDictTemp.add(zyCommonDictz.get(i));
                    //批量提交
                    if (((zyIvStaffRegTypeAllotDictTemp.size() % 2000) == 0) || (zyIvStaffRegTypeAllotDictTemp.size() == i)) {
                        saveZyCommonDict(zyIvStaffRegTypeAllotDictTemp);
                        zyIvStaffRegTypeAllotDictTemp = new ArrayList<>();
                    }
                }
                logger.info("synchronized zy_common_dict end");
            }
        }
    }
    @Transactional
    private void saveZyCommonDict(List<ZyCommonDict> zyCommonDictz) {
        zyCommonDictDao.save(zyCommonDictz);
    }
    public void synchronizeZy_iv_dept_dict() {
        logger.info("synchronized zy_iv_dept_dict start");
        String dictName = this.IV_DEPT_DICT;
        List<ZyIvDeptDict> zyIvDeptDicts = new ArrayList<>();
        //得到list
        zyIvDeptDicts = commonGetOneDict(ZyIvDeptDict.class, dictName);
        if (zyIvDeptDicts != null && zyIvDeptDicts.size() > 0) {
            //清空表
            zyIvDeptDictDao.deleteAll();
            //新增数据
            logger.info("save table zy_iv_dept_dict  ,size:" + zyIvDeptDicts.size());
            List<ZyIvDeptDict> zyIvStaffRegTypeAllotDictTemp = new ArrayList<>();
            for (int i = 0; i < zyIvDeptDicts.size(); i++) {
                zyIvStaffRegTypeAllotDictTemp.add(zyIvDeptDicts.get(i));
                //批量提交
                if (((zyIvStaffRegTypeAllotDictTemp.size() % 2000) == 0) || (zyIvStaffRegTypeAllotDictTemp.size() == i)) {
                    saveZy_iv_dept_dict(zyIvStaffRegTypeAllotDictTemp);
                    zyIvStaffRegTypeAllotDictTemp = new ArrayList<>();
                }
            }
            logger.info("synchronized zy_iv_dept_dict end");
        }
    }
    @Transactional
    private void saveZy_iv_dept_dict(List<ZyIvDeptDict> zyIvDeptDicts) {
        zyIvDeptDictDao.save(zyIvDeptDicts);
    }
    /**
     * 得到单个字典
     *
     * @param clazz    class
     * @param dictName 字典名称
     */
    public List commonGetOneDict(Class clazz, String dictName) {
        String json = null;
        try {
            //调用智业的接口得到字典
            json = jwPrescriptionService.getDictForI(dictName);
            JSONObject returnJson = JSONObject.fromObject(json);
            if (returnJson.getInt("status") != 200) {
                throw new Exception("zy dict error status not 200");
            }
            if (returnJson.containsKey("data")) {
                String dataJSONStr = returnJson.getString("data");
                JSONObject joTemp = JSONObject.fromObject(dataJSONStr);
                JSONArray dataJSONArray = joTemp.getJSONArray("returnData");
                if (dataJSONArray.size() == 0) {
                    logger.info("zy dict data size " + dataJSONArray.size() + ",dictname:" + dictName);
                    return null;
                } else {
                    dataJSONArray = dataJSONArray.getJSONArray(0);
                }
                logger.info("zy dict data size " + dataJSONArray.size() + ",dictname:" + dictName);
                //下划线转驼峰
                JSONArray newJA = new JSONArray();
                for (int i = 0; i < dataJSONArray.size(); i++) {
                    JSONObject jo = dataJSONArray.getJSONObject(i);
                    JSONObject newJO = new JSONObject();
                    jo.keySet().stream().forEach(key -> {
                        Object value = jo.get(key);
                        String newKey = Tool.lineToHump(key.toString());
                        newJO.put(newKey, value);
                    });
                    newJA.add(newJO);
                }
                return (List) JSONArray.toCollection(newJA, clazz);
            } else {
                throw new Exception("zy dict error no contain data");
            }
        } catch (Exception e) {
            logger.error("dictName:" + dictName);
            logger.error("returnJson:" + json);
            logger.error(e.getMessage());
        }
        return null;
    }
    /**
     * 智业的字典
     */
    public static final String IV_MEASURE_UNIT_DICT = "IV_MEASURE_UNIT_DICT";//("计量单位字典", "IV_MEASURE_UNIT_DICT"),
    public static final String IV_PHYSIC_FORM_DICT = "IV_PHYSIC_FORM_DICT";//("药品剂型字典", "IV_PHYSIC_FORM_DICT"),
    public static final String IV_PHYSIC_INJECT_PLACE_DICT = "IV_PHYSIC_INJECT_PLACE_DICT";//"计量单位字典", "IV_PHYSIC_INJECT_PLACE_DICT"),
    public static final String IV_PHYSIC_SKIN_TEST_DICT = "IV_PHYSIC_SKIN_TEST_DICT";//("皮试类型字典", "IV_PHYSIC_SKIN_TEST_DICT"),
    public static final String IV_RATE_TYPE_DICT = "IV_RATE_TYPE_DICT";//("费别字典", "IV_RATE_TYPE_DICT"),
    public static final String IV_RECIPE_FREQUENCY_DICT = "IV_RECIPE_FREQUENCY_DICT";//("频次字典", "IV_RECIPE_FREQUENCY_DICT"),
    public static final String IV_RECIPE_USAGE_DICT = "IV_RECIPE_USAGE_DICT";//("用药方法字典", "IV_RECIPE_USAGE_DICT"),
    public static final String IV_SEX_DICT = "IV_SEX_DICT";//("性别字典", "IV_SEX_DICT"),
    public static final String IV_PHYSIC_DICT = "IV_PHYSIC_DICT";//("药品字典", "IV_PHYSIC_DICT"),
    public static final String IV_ORG_PHYSIC_ALLOT_DICT = "IV_ORG_PHYSIC_ALLOT_DICT";//("机构药品分发字典", "IV_ORG_PHYSIC_ALLOT_DICT "),
    public static final String IV_SUBJECT_CLASS_DICT = "IV_SUBJECT_CLASS_DICT";//("科目类别字典", "IV_SUBJECT_CLASS_DICT"),
    public static final String IV_PHYSIC_TOXICOLOGY_TYPE_DICT = "IV_PHYSIC_TOXICOLOGY_TYPE_DICT";//("药品毒理分类字典", "IV_PHYSIC_TOXICOLOGY_TYPE_DICT"),
    public static final String IV_DEPT_DICT = "IV_DEPT_DICT";//("科室字典", "IV_DEPT_DICT"),
    public static final String IV_DEPT_TYPE_DICT = "IV_DEPT_TYPE_DICT";//("科室类型字典", "IV_DEPT_TYPE_DICT"),
    public static final String IV_DIAGNOSE_DICT = "IV_DIAGNOSE_DICT";//("诊断字典", "IV_DIAGNOSE_DICT"),
    public static final String IV_DIAGNOSE_CLASS_DICT = "IV_DIAGNOSE_CLASS_DICT";//("诊断类别字典", "IV_DIAGNOSE_CLASS_DICT"),
    public static final String IV_STAFF_DICT = "IV_STAFF_DICT";//("员工字典", "IV_STAFF_DICT"),
    public static final String IV_STAFF_REG_TYPE_ALLOT_DICT = "IV_STAFF_REG_TYPE_ALLOT_DICT";//("员工挂号类型配置字典", "IV_STAFF_REG_TYPE_ALLOT_DICT"),
    public static final String IV_DEPT_STAFF_ALLOT_DICT = "IV_DEPT_STAFF_ALLOT_DICT";//("科室员工配置字典", "IV_DEPT_STAFF_ALLOT_DICT");
    /**
     * 字典表的枚举类
     */
    public enum TableName {
        zy_common_dict("通用字典", "zy_common_dict"),
        zy_iv_dept_dict("科室字典", "zy_iv_dept_dict"),
        zy_iv_dept_staff_allot_dict("科室员工配置字典", "zy_iv_dept_staff_allot_dict"),
        zy_iv_diagnose_class_dict("诊断类别字典", "zy_iv_diagnose_class_dict"),
        zy_iv_diagnose_dict("诊断字典表", "zy_iv_diagnose_dict"),
        zy_iv_org_physic_allot_dict("机构药品分发字典", "zy_iv_org_physic_allot_dict"),
        zy_iv_physic_dict("药品字典", "zy_iv_physic_dict"),
        zy_iv_staff_dict("员工字典", "zy_iv_staff_dict"),
        zy_iv_staff_reg_type_allot_dict("员工挂号类型配置字典", "zy_iv_staff_reg_type_allot_dict"),
        zy_iv_subject_class_dict("科目类别字典", "zy_iv_subject_class_dict");
        TableName(String name, String dict) {
            this.name = name;
            this.dict = dict;
        }
        public String name;
        public String dict;
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getDict() {
            return dict;
        }
        public void setDict(String dict) {
            this.dict = dict;
        }
    }
    /**
     * 根据字典获取表名
     *
     * @param dictName
     * @return
     */
    public String getTableName(String dictName) {
        switch (dictName) {
            case IV_PHYSIC_FORM_DICT: {
                return TableName.zy_common_dict.getDict();
            }
            case IV_PHYSIC_INJECT_PLACE_DICT: {
                return TableName.zy_common_dict.getDict();
            }
            case IV_PHYSIC_SKIN_TEST_DICT: {
                return TableName.zy_common_dict.getDict();
            }
            case IV_RATE_TYPE_DICT: {
                return TableName.zy_common_dict.getDict();
            }
            case IV_RECIPE_FREQUENCY_DICT: {
                return TableName.zy_common_dict.getDict();
            }
            case IV_RECIPE_USAGE_DICT: {
                return TableName.zy_common_dict.getDict();
            }
            case IV_SEX_DICT: {
                return TableName.zy_common_dict.getDict();
            }
            case IV_PHYSIC_TOXICOLOGY_TYPE_DICT: {
                return TableName.zy_common_dict.getDict();
            }
            case IV_MEASURE_UNIT_DICT: {
                return TableName.zy_common_dict.getDict();
            }
            case IV_DEPT_TYPE_DICT: {
                return TableName.zy_common_dict.getDict();
            }
            case IV_PHYSIC_DICT: {
                return TableName.zy_iv_physic_dict.getDict();
            }
            case IV_ORG_PHYSIC_ALLOT_DICT: {
                return TableName.zy_iv_org_physic_allot_dict.getDict();
            }
            case IV_SUBJECT_CLASS_DICT: {
                return TableName.zy_iv_subject_class_dict.getDict();
            }
            case IV_DIAGNOSE_DICT: {
                return TableName.zy_iv_diagnose_dict.getDict();
            }
            case IV_DIAGNOSE_CLASS_DICT: {
                return TableName.zy_iv_diagnose_class_dict.getDict();
            }
            case IV_STAFF_DICT: {
                return TableName.zy_iv_staff_dict.getDict();
            }
            case IV_STAFF_REG_TYPE_ALLOT_DICT: {
                return TableName.zy_iv_staff_reg_type_allot_dict.getDict();
            }
            case IV_DEPT_STAFF_ALLOT_DICT: {
                return TableName.zy_iv_dept_staff_allot_dict.getDict();
            }
            case IV_DEPT_DICT: {
                return TableName.zy_iv_dept_dict.getDict();
            }
        }
        return "";
    }
    public static class Tool {
        public static Pattern linePattern = Pattern.compile("_(\\w)");
        /**
         * 下划线转驼峰
         */
        public static String lineToHump(String str) {
            str = str.toLowerCase();
            Matcher matcher = linePattern.matcher(str);
            StringBuffer sb = new StringBuffer();
            while (matcher.find()) {
                matcher.appendReplacement(sb, matcher.group(1).toUpperCase());
            }
            matcher.appendTail(sb);
            return sb.toString();
        }
        /**
         * 驼峰转下划线(简单写法,效率低于{@link #humpToLine2(String)})
         */
        public static String humpToLine(String str) {
            return str.replaceAll("[A-Z]", "_$0").toLowerCase();
        }
        public static Pattern humpPattern = Pattern.compile("[A-Z]");
        /**
         * 驼峰转下划线,效率比上面高
         */
        public static String humpToLine2(String str) {
            Matcher matcher = humpPattern.matcher(str);
            StringBuffer sb = new StringBuffer();
            while (matcher.find()) {
                matcher.appendReplacement(sb, "_" + matcher.group(0).toLowerCase());
            }
            matcher.appendTail(sb);
            return sb.toString();
        }
    }
}

+ 58 - 0
patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/service/third/ylz/PayLogService.java

@ -0,0 +1,58 @@
package com.yihu.wlyy.service.third.ylz;
import com.yihu.wlyy.entity.ylz.PayLog;
import com.yihu.wlyy.repository.ylz.PayLogDao;
import com.yihu.wlyy.service.system.SystemDictService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
/**
 * Created by Reece on 2017/9/20.
 * 日志服务
 */
@Service
public class PayLogService {
    @Autowired
    private PayLogDao payLogDao;
    @Autowired
    private SystemDictService systemDictService;
    public String onepayType = "0"; //0家庭签约支付
    public String onepayRecipeType = "1";     //1续方支付
    /**
     * 保存http调用日志  type 0家庭签约支付 1续方支付
     */
    public void saveHttpLog(Boolean isSuccess,String url,String content,String method,String header,String params,String response,String error,String type)
    {
        try {
            //成功日志是否保存
            Boolean saveSuccessLog = systemDictService.getSaveSuccessLog();
            if(!isSuccess || saveSuccessLog) {
                //新增日志
                PayLog log = new PayLog();
                log.setType(type);
                log.setApi(url);
                log.setContent(content);
                log.setMethod(method);
                log.setHeader(header);
                log.setParams(params);
                log.setCreateTime(new Date());
                log.setResponse(response);
                log.setError(error);
                log.setStatus(isSuccess?"1":"0");
                payLogDao.save(log);
            }
        }
        catch (Exception ex)
        {
            ex.printStackTrace();
        }
    }
}

+ 72 - 0
patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/web/ZyDictController.java

@ -0,0 +1,72 @@
package com.yihu.wlyy.web;
import com.yihu.wlyy.service.third.jw.ZyDictService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
/**
 * Created by chenweida on 2017/9/30.
 */
@Controller
@RequestMapping(value = "/zydict/")
@Api(description = "同步智业字典")
public class ZyDictController extends BaseController {
    private Logger logger = LoggerFactory.getLogger(ZyDictController.class);
    @Autowired
    private ZyDictService zyDictService;
    @ApiOperation("同步智业字典")
    @RequestMapping(value = "/synchronousDict", produces = "application/json;charset=UTF-8", method = RequestMethod.GET)
    public String synchronousDict(
            @ApiParam(name = "dictName", value = "字典名称", defaultValue = "") @RequestParam(value = "dictName", required = true) String dictName) {
        try {
            if (ZyDictService.TableName.zy_common_dict.getDict().equals(dictName)) {
                logger.info("同步 zy_common_dict");
                zyDictService.synchronizeZyCommonDict();
            } else if (ZyDictService.TableName.zy_iv_dept_dict.getDict().equals(dictName)) {
                logger.info("同步 zy_iv_dept_dict");
                zyDictService.synchronizeZy_iv_dept_dict();
            } else if (ZyDictService.TableName.zy_iv_dept_staff_allot_dict.getDict().equals(dictName)) {
                logger.info("同步 zy_iv_dept_staff_allot_dict");
                zyDictService.synchronizeZy_iv_dept_staff_allot_dict();
            } else if (ZyDictService.TableName.zy_iv_diagnose_dict.getDict().equals(dictName)) {
                logger.info("同步 zy_iv_diagnose_dict");
                zyDictService.synchronizeZy_iv_diagnose_dict();
            } else if (ZyDictService.TableName.zy_iv_diagnose_class_dict.getDict().equals(dictName)) {
                logger.info("同步 zy_iv_diagnose_class_dict");
                zyDictService.synchronizeZy_iv_diagnose_class_dict();
            } else if (ZyDictService.TableName.zy_iv_org_physic_allot_dict.getDict().equals(dictName)) {
                logger.info("同步 zy_iv_org_physic_allot_dict");
                zyDictService.synchronizeZy_iv_org_physic_allot_dict();
            } else if (ZyDictService.TableName.zy_iv_physic_dict.getDict().equals(dictName)) {
                logger.info("同步 zy_iv_physic_dict");
                zyDictService.synchronizeZy_iv_physic_dict();
            } else if (ZyDictService.TableName.zy_iv_staff_dict.getDict().equals(dictName)) {
                logger.info("同步 zy_iv_staff_dict");
                zyDictService.synchronizeZ_iv_staff_dict();  //birthday    Date(529084800000+0800) 无法解析
            } else if (ZyDictService.TableName.zy_iv_staff_reg_type_allot_dict.getDict().equals(dictName)) {
                logger.info("同步 zy_iv_staff_reg_type_allot_dict");
                zyDictService.synchronizeZy_iv_staff_reg_type_allot_dict();
            } else if (ZyDictService.TableName.zy_iv_subject_class_dict.getDict().equals(dictName)) {
                logger.info("同步 zy_iv_subject_class_dict");
                zyDictService.synchronizeZy_iv_subject_class_dict();
            }
            return success("同步成功");
        } catch (Exception e) {
            logger.error(e.getMessage());
            return invalidUserException(e, -1, "同步失败");
        }
    }
}

+ 34 - 0
patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/web/quota/JobController.java

@ -451,6 +451,23 @@ public class JobController extends BaseController {
        }
    }
    /**
     * 遍历长处方支付但回调都失败的记录,主动查询易联众支付记录并保存
     *
     * @author wujunjie
     * @date 2017/8/30 14:16
     */
    @RequestMapping(value = "/prescriptionPayQueryJob", method = RequestMethod.POST)
    @ApiOperation("遍历长处方支付但回调都失败的记录,主动查询易联众支付记录并保存")
    public String PrescriptionPayQueryJob() {
        try {
            quartzHelper.startNow(PrescriptionPayQueryJob.class, "PRESCRIPTION-PAY_QUERY", null);
            return write(200, "启动成功");
        } catch (Exception e) {
            error(e);
            return error(-1, e.getMessage());
        }
    }
    //******************************长处方 end********************************
    /**
     * 居民监测方案提醒通知
@ -521,4 +538,21 @@ public class JobController extends BaseController {
            return error(-1, e.getMessage());
        }
    }
    /**
     *立即执行:查询家庭签约支付结果,补更新医保签约号
     *@author huangwenjie
     *@date 2017/9/29 13:37
     */
    @RequestMapping(value = "/executeSignFamilyPayResultJob", method = RequestMethod.POST)
    @ApiOperation("立即执行查询家庭签约支付结果,补更新医保签约号")
    public String executeSignFamilyPayResultJob() {
        try {
            quartzHelper.startNow(SignFamilyPayResultJob.class, "SIGN_FAMILY_PAY_RESULT_MIRESISTERNO_JOB", null);
            return write(200, "启动成功");
        } catch (Exception e) {
            error(e);
            return error(-1, e.getMessage());
        }
    }
}

+ 2 - 2
patient-co/patient-co-wlyy-job/src/main/resources/application-prod.yml

@ -20,8 +20,8 @@ spring:
channel:
  redis:
    host: 10.95.22.142 # Redis server host.
    port: 6380 # Redis server port.
    host: 59.61.92.90 # Redis server host.
    port: 9054 # Redis server port.
    password: jkzlehr
server:

+ 8 - 2
patient-co/patient-co-wlyy-job/src/main/resources/system.properties

@ -87,8 +87,8 @@ sfexpress_reorder_job=0 0/10 * * * ?
#同步智业字典
zy_dict_job=0 0 1 * * ?
#遍历支付成功,院内结算失败的的记录,重新结算,10分钟跑一次
zy_execute_sick_settle_job=0 0/10 * * * ?
#遍历支付成功,院内结算失败的的记录,重新结算,3分钟跑一次
zy_execute_sick_settle_job=0 0/3 * * * ?
#处理当天支付,页面回调及异步回调失败的支付,每3分钟一次去主动查询并保存
prescription_pay_query_job=0 0/3 * * * ?
@ -101,6 +101,12 @@ doctor_feldsher_template_job=0 0/29 * * * ?
# 病患者定标情况同步JOB (每天2点一次)
patient_disease_contion_syn_job=0 0 2 * * ?
#查询家庭签约支付结果,补更新医保签约号,3分钟跑一次
sign_family_pay_result_migisterno_job=0 0/3 * * * ?
# 家庭签约支付回调失败,每3分钟一次去主动查询并保存
onepay_query_job=0 0/3 * * * ?
#统一支付平台支付成功后页面跳转地址
return_url={server}/wx/html/qygl/html/pay_result.html

+ 1 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/adapter/PresModeAdapter.java

@ -308,6 +308,7 @@ public class PresModeAdapter {
                    prescriptionInfo.put("physicInjectPlaceName",info.getString("PHYSIC_INJECT_PLACE_NAME"));//注射地点名称
                    prescriptionInfo.put("physicSkinTest",info.getString("PHYSIC_SKIN_TEST"));//皮试类型名称
                    prescriptionInfo.put("physicSkinTestName",info.getString("PHYSIC_SKIN_TEST_NAME"));//皮试类型名称
                    prescriptionInfo.put("subjectClass",info.getString("SUBJECT_CLASS"));//科目类型
                    prescriptionInfos.add(prescriptionInfo);
                }
                p.put("prescriptionInfo",prescriptionInfos);

+ 11 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/httplog/HttpLogDetailDao.java

@ -0,0 +1,11 @@
package com.yihu.wlyy.repository.httplog;
import com.yihu.wlyy.entity.httpLog.HttpLogDetail;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * Created by yeshijie on 2017/9/26.
 */
public interface HttpLogDetailDao extends PagingAndSortingRepository<HttpLogDetail, Long>, JpaSpecificationExecutor<HttpLogDetail> {
}

+ 27 - 20
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/patient/PrenatalInspectorPlanDao.java

@ -1,20 +1,27 @@
//package com.yihu.wlyy.repository.patient;
//
//import com.yihu.wlyy.entity.patient.prenatal.PrenatalInspectorPlan;
//import com.yihu.wlyy.entity.patient.prenatal.PrenatalInspectorPlanLibrary;
//import org.springframework.data.jpa.repository.Query;
//import org.springframework.data.repository.PagingAndSortingRepository;
//
//import java.util.List;
//
///**
// * Created by yeshijie on 2017/6/6.
// */
//public interface PrenatalInspectorPlanDao extends PagingAndSortingRepository<PrenatalInspectorPlan, Long>{
//
//    @Query("select a from PrenatalInspectorPlan a where a.inspectionCode = ?1 and a.status = '0' ")
//    List<PrenatalInspectorPlan> findByCode(String inspectionCode);
//
//    @Query("select a from PrenatalInspectorPlan a where a.inspectionTime is not null and a.status = '0' and ( TO_DAYS(a.inspectionTime)- TO_DAYS(NOW())=7 or TO_DAYS(a.inspectionTime)- TO_DAYS(NOW())=1 ) ")
//    List<PrenatalInspectorPlan> findWxTipList();
//}
package com.yihu.wlyy.repository.patient;
import com.yihu.wlyy.entity.patient.prenatal.PrenatalInspectorPlan;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * Created by yeshijie on 2017/6/6.
 */
public interface PrenatalInspectorPlanDao extends PagingAndSortingRepository<PrenatalInspectorPlan, Long>{
    @Query("select a from PrenatalInspectorPlan a where a.inspectionCode = ?1 and a.status = '0' and a.del='1' order by a.inspectionTime asc")
    List<PrenatalInspectorPlan> findByCode(String inspectionCode);
    @Query("select a from PrenatalInspectorPlan a where a.patient = ?1 and a.status = '0' and a.del='1' and NOW()<=a.inspectionTime order by a.inspectionTime asc")
    List<PrenatalInspectorPlan> findByPatient(String patient);
    @Query("select a from PrenatalInspectorPlan a where a.status = '0' and a.del='1' and ( TO_DAYS(a.inspectionTime)- TO_DAYS(NOW())=7 or TO_DAYS(a.inspectionTime)- TO_DAYS(NOW())=1 ) ")
    List<PrenatalInspectorPlan> findWxTipList();
    @Modifying
    @Query("update PrenatalInspectorPlan a set a.del = '0' where a.patient= ?1 and a.del='1'")
    int updateStatus(String patient);
}

+ 20 - 20
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/patient/PrenatalInspectorPlanLibraryDao.java

@ -1,20 +1,20 @@
//package com.yihu.wlyy.repository.patient;
//
//import com.yihu.wlyy.entity.patient.SignFamily;
//import com.yihu.wlyy.entity.patient.prenatal.PrenatalInspectorPlanLibrary;
//import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
//import org.springframework.data.jpa.repository.Query;
//import org.springframework.data.repository.PagingAndSortingRepository;
//
//import java.util.List;
//
///**
// * Created by yeshijie on 2017/6/6.
// */
//public interface PrenatalInspectorPlanLibraryDao extends PagingAndSortingRepository<PrenatalInspectorPlanLibrary, Long>{
//
//
//    @Query("select a from PrenatalInspectorPlanLibrary a where a.endDay >= ?1 ")
//    List<PrenatalInspectorPlanLibrary> findByDays(Long endDay);
//
//}
package com.yihu.wlyy.repository.patient;
import com.yihu.wlyy.entity.patient.SignFamily;
import com.yihu.wlyy.entity.patient.prenatal.PrenatalInspectorPlanLibrary;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * Created by yeshijie on 2017/6/6.
 */
public interface PrenatalInspectorPlanLibraryDao extends PagingAndSortingRepository<PrenatalInspectorPlanLibrary, Long>{
    @Query("select a from PrenatalInspectorPlanLibrary a where a.endDay <= ?1 order by a.endDay desc ")
    List<PrenatalInspectorPlanLibrary> findByDays(Long endDay);
}

+ 17 - 17
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/patient/PrenatalInspectorPreCardDao.java

@ -1,17 +1,17 @@
//package com.yihu.wlyy.repository.patient;
//
//import com.yihu.wlyy.entity.patient.prenatal.PrenatalInspectorPlanLibrary;
//import com.yihu.wlyy.entity.patient.prenatal.PrenatalInspectorPreCard;
//import org.springframework.data.jpa.repository.Query;
//import org.springframework.data.repository.PagingAndSortingRepository;
//
//import java.util.List;
//
///**
// * Created by yeshijie on 2017/6/6.
// */
//public interface PrenatalInspectorPreCardDao extends PagingAndSortingRepository<PrenatalInspectorPreCard, Long>{
//
//    @Query("select a from PrenatalInspectorPreCard a where a.patient = ?1 and a.del='1' order by a.lastMenstrualDate desc")
//    List<PrenatalInspectorPreCard> findByPatient(String patient);
//}
package com.yihu.wlyy.repository.patient;
import com.yihu.wlyy.entity.patient.prenatal.PrenatalInspectorPlanLibrary;
import com.yihu.wlyy.entity.patient.prenatal.PrenatalInspectorPreCard;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * Created by yeshijie on 2017/6/6.
 */
public interface PrenatalInspectorPreCardDao extends PagingAndSortingRepository<PrenatalInspectorPreCard, Long>{
    @Query("select a from PrenatalInspectorPreCard a where a.patient = ?1 and a.del='1' order by a.lastMenstrualDate desc")
    List<PrenatalInspectorPreCard> findByPatient(String patient);
}

+ 3 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/patient/SignFamilyDao.java

@ -415,4 +415,7 @@ public interface SignFamilyDao extends PagingAndSortingRepository<SignFamily, Lo
    @Query(" select a from SignFamily a where a.patient = ?1 ")
    SignFamily findPatientExpensesStatus(String patient);
    // 查询团队已签约的总数
    @Query("select count(1) from SignFamily a where  a.adminTeamId = ?1 and (a.status = 1 or a.status = 2) and a.type = 2")
    int countAmountSignedByAdminTeam(Long id);
}

+ 11 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/zydict/ZyZoneDictDao.java

@ -0,0 +1,11 @@
package com.yihu.wlyy.repository.zydict;
import com.yihu.wlyy.entity.zydict.ZyZoneDict;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * Created by yeshijie on 2017/10/10.
 */
public interface ZyZoneDictDao extends PagingAndSortingRepository<ZyZoneDict, Long>, JpaSpecificationExecutor<ZyZoneDict> {
}

+ 132 - 13
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/account/PatientInfoService.java

@ -1,5 +1,7 @@
package com.yihu.wlyy.service.app.account;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.yihu.wlyy.entity.address.City;
import com.yihu.wlyy.entity.address.Province;
import com.yihu.wlyy.entity.address.Street;
@ -32,8 +34,7 @@ import com.yihu.wlyy.service.common.account.PatientService;
import com.yihu.wlyy.service.common.account.TokenService;
import com.yihu.wlyy.service.common.login.LoginLogService;
import com.yihu.wlyy.service.third.jw.JwArchivesService;
import com.yihu.wlyy.util.DateUtil;
import com.yihu.wlyy.util.MD5;
import com.yihu.wlyy.util.*;
import org.apache.commons.lang3.StringUtils;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
@ -42,17 +43,14 @@ import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import com.yihu.wlyy.service.BaseService;
import com.yihu.wlyy.util.EncodesUtil;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.net.URLDecoder;
import java.util.*;
/**
 * 患者基本信息类.
 *
 * @author George
 * @author George.
 */
@Component
@Transactional
@ -73,8 +71,6 @@ public class PatientInfoService extends BaseService {
    @Autowired
    private TblBasicDao tblBasicDao;
    @Autowired
    private SocialSecurityInfoDao socialSecurityInfoDao;
    @Autowired
    SMSService smsService;
    @Autowired
    SignFamilyDao signFamilyDao;
@ -94,6 +90,10 @@ public class PatientInfoService extends BaseService {
    JwArchivesService jwArchivesService;
    @Autowired
    JdbcTemplate jdbcTemplate;
    @Autowired
    RSAUtils rsaUtils;
    @Autowired
    SocialSecurityInfoDao socialSecurityInfoDao;
    /**
     * 患者更换手机号
@ -339,7 +339,7 @@ public class PatientInfoService extends BaseService {
        Patient p = patientDao.findByCode(patient);
        JSONObject json = new JSONObject();
        com.alibaba.fastjson.JSONObject json = new com.alibaba.fastjson.JSONObject();
        json.put("ARCHIVE_TIME", DateUtil.getStringDateShort());//建档时间
        json.put("ARCHIVE_STATUS","3");//档案状态【1.未管理 2.死亡 3.正常 4.高危】
        json.put("SICK_NAME",p.getName());//姓名
@ -353,14 +353,44 @@ public class PatientInfoService extends BaseService {
        json.put("ORG_ID","0");//新增默认传0
        json.put("RESIDENCE","1");//户籍【1.户籍 2.非户籍】
        json.put("NATIONAL",nation);//民族【NATION_DICT】
        json.put("ORIGO","3502030502");//户口所在地【ZONE_DICT】
        json.put("ORIGO","350200");//户口所在地【ZONE_DICT】
        json.put("BLOOD",blood);//血型【1.A型 2.3.O型4.AB型 5.不详】
        json.put("BLOOD_RH","1");//RH阴性【1.否 2.是 3.不详】
        json.put("MARRIAGE",marry);//婚姻状况【10.未婚 20.已婚 30.丧偶 40.离婚 90.未说明的婚姻状况】
        //补充参数
        json.put("ALLERGIC_WITHOUT","1");//药物过敏史--无【0不勾选 1勾选】(同一类别,新增时,默认勾选)",
        json.put("TRAUMA","0");// "TRAUMA":"既往史--外伤--【0 无 1 有】(同一类别,新增时,默认选无)",
        json.put("TRANSFUSION","0");//   "TRANSFUSION":"既往史--输血--【0 无 1 有】(同一类别,新增时,默认选无)",
        json.put("SURGERY","0");// "SURGERY":"既往史--手术--【0 无 1 有】(同一类别,新增时,默认选无)",
        json.put("EXPOSE_WITHOUT","1");//"EXPOSE_WITHOUT":"暴露史--无【0不勾选 1勾选】(同一类别,新增时,默认勾选)",
        json.put("FAMILY_FATHER_NONE","1");// "FAMILY_FATHER_NONE":"家族史--父亲--无【0不勾选 1勾选】(同一类别,新增时,默认勾选)",
        json.put("FAMILY_MOTHER_NONE","1");// "FAMILY_MOTHER_NONE":"家族史--母亲--无【0不勾选 1勾选】(同一类别,新增时,默认勾选)",
        json.put("FAMILY_BROTHERS_NONE","1");//  "FAMILY_BROTHERS_NONE":"家族史--兄弟姐妹--无【0不勾选 1勾选】(同一类别,新增时,默认勾选)",
        json.put("FAMILY_CHILDREN_NONE","1");//  "FAMILY_CHILDREN_NONE":"家族史--子女--无【0不勾选 1勾选】(同一类别,新增时,默认勾选)",
        json.put("GENETIC","0");//  "GENETIC":"遗传病史【0 无 1 有】(同一类别,新增时,默认选无)",
        json.put("DISABILITY_WITHOUT","1");//  "DISABILITY_WITHOUT":"有无残疾--无残疾【0不勾选 1勾选】(同一类别,新增时,默认勾选)",
        json.put("PAST_NONE","1");//  既往史--疾病--无【0不勾选 1勾选】(同一类别,新增时,默认勾选)
        String doctor = doctorCode;
        String response = jwArchivesService.saveSickArchiveRecord(json.toString(),doctor);
        String response = jwArchivesService.saveSickArchiveRecord(com.alibaba.fastjson.JSONObject.toJSONString(json, SerializerFeature.WriteMapNullValue),doctor);
        if("0".equals(response)){
            return -1;
        }
        //保存建档记录
        SocialSecurityInfo info = new SocialSecurityInfo();
        info.setXming0(p.getName());
        info.setXbie00(p.getSex()+"");
        info.setSfzh18(p.getIdcard());
        info.setId0000(p.getIdcard());
        info.setCardno(p.getSsc());
        info.setCard16(p.getSsc());
        info.setCsrqi0(brithday.replace("-",""));
        info.setGrsfen("8");
        info.setGzztai("01");
        socialSecurityInfoDao.save(info);
        return 1;
    }
@ -383,4 +413,93 @@ public class PatientInfoService extends BaseService {
        List<Map<String,Object>> rs = jdbcTemplate.queryForList(sql,new Object[]{name});
        return rs;
    }
    public JSONObject checkPatientArchives(String icCard)throws Exception{
        String rs = jwArchivesService.getSickArchiveFlag(icCard);
        SignFamily signFamily =  signFamilyDao.findByIdcard(icCard);
        JSONObject r = new JSONObject();
        int state = 1;
        if("0".equals(rs)){
            //未建档
            state = -1;
            if(signFamily==null){
                state = -3;
                r.put("state",state);
                r.put("mes","未建档且未签约");
                return r;
            }
            r.put("state",state);
            r.put("mes","未建档且已经签约");
            return r;
        }else{
            if(signFamily==null){
                state = -2;
                r.put("state",state);
                r.put("mes","已建档且未签约");
                return r;
            }else{
                r.put("state",state);
                r.put("mes","已建档已签约");
                return r;
            }
        }
    }
    public JSONObject createProfileAndSign(String doctorCode,
                                           String idcard,
                                           String ssc,
                                           String name,
                                           String mobile,
                                           String brithday,
                                           String jwCountryCode,
                                           String nation,
                                           String blood,
                                           String marry,
                                           String adress)throws Exception{
        JSONObject rs = new  JSONObject();
        // 解密身份证号
        rsaUtils.setBaseService(patientService);
        idcard = rsaUtils.decryptString(idcard);
        idcard = URLDecoder.decode(idcard, "UTF-8");
        idcard = StringUtils.reverse(idcard);
        // 校验身份证号
        IdcardValidator validator = new IdcardValidator();
        if (validator.isValidatedAllIdcard(idcard)) {
            if (idcard.length() == 15) {
                idcard = validator.convertIdcarBy15bit(idcard);
                if (StringUtils.isEmpty(idcard)) {
                    rs.put("code","-1");
                    rs.put("mes","身份证格式不正确!") ;
                    return rs;
                }
            }
        } else {
            rs.put("code","-1");
            rs.put("mes","身份证格式不正确!") ;
            return rs;
        }
        if(mobile.length()!=11){
            rs.put("code","-2");
            rs.put("mes","手机格式不正确!") ;
            return rs;
        }
        String salt = UUID.randomUUID().toString().replace("-", "");
        String password = idcard.substring(idcard.length()-6,idcard.length());
        password = MD5.GetMD5Code(password + salt);
        Patient p = patientService.registerAPPBydoctor(idcard,ssc,name,mobile,password,salt,salt,3);
        createProfile(doctorCode,p.getCode(), brithday, jwCountryCode, nation, blood, marry,adress);
        rs.put("code","1");
        rs.put("mes","操作成功!") ;
        return rs;
    }
}

+ 2 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/family/FamilyMemberService.java

@ -165,6 +165,7 @@ public class FamilyMemberService extends BaseService {
        //设置家人openid
        if(StringUtils.isBlank(m.getOpenid())){
            m.setOpenid(p.getOpenid());
            m.setOpenidTime(new Date());
            patientDao.save(m);
        }
@ -1130,6 +1131,7 @@ public class FamilyMemberService extends BaseService {
        //设置家人openid
        if(StringUtils.isBlank(m.getOpenid())){
            m.setOpenid(p.getOpenid());
            m.setOpenidTime(new Date());
            patientDao.save(m);
        }

+ 72 - 64
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/label/SignPatientLabelInfoService.java

@ -4506,85 +4506,93 @@ public class SignPatientLabelInfoService extends BaseService {
        //1.清空居民标签
        String delSql = " DELETE FROM wlyy_sign_patient_label_info WHERE patient ='"+patient+"'";
        jdbcTemplate.execute(delSql);
        //2.新增健康情况标签
        String healths[] = health.split(",");
        //获取所有健康情况标签
        List<Map<String,Object>> healthList = getLabelsByType("2");
        //减低循环层级
        Map<String,Map<String,Object>> healthMap = new HashedMap();
        for(Map<String,Object> map : healthList){
            String code = (String)map.get("code");
            healthMap.put(code,map);
        }
        if(healths!=null&&healths.length>0){
            for(int i=0;i<healths.length;i++){
                SignPatientLabelInfo info = new SignPatientLabelInfo();
                info.setCzrq(new Date());
                info.setLabelType("2");
                info.setPatient(patient);
                info.setPname(p.getName());
                info.setLabel(healths[i]);
                info.setStatus(1);
                String name = (String)healthMap.get(healths[i]).get("name");
                info.setLabelName(name);
                signPatientLabelInfoDao.save(info);
        //2.新增健康情况标签
        if(StringUtils.isNotBlank(health)){
            String healths[] = health.split(",");
            //获取所有健康情况标签
            List<Map<String,Object>> healthList = getLabelsByType("2");
            //减低循环层级
            Map<String,Map<String,Object>> healthMap = new HashedMap();
            for(Map<String,Object> map : healthList){
                String code = (String)map.get("code");
                healthMap.put(code,map);
            }
            if(healths!=null&&healths.length>0){
                for(int i=0;i<healths.length;i++){
                    SignPatientLabelInfo info = new SignPatientLabelInfo();
                    info.setCzrq(new Date());
                    info.setLabelType("2");
                    info.setPatient(patient);
                    info.setPname(p.getName());
                    info.setLabel(healths[i]);
                    info.setStatus(1);
                    String name = (String)healthMap.get(healths[i]).get("name");
                    info.setLabelName(name);
                    signPatientLabelInfoDao.save(info);
                }
            }
        }
        //2.新增疾病标签
        String diseases[] = disease.split(",");
        //获取所有健康情况标签
        List<Map<String,Object>> diseaseList = getLabelsByType("3");
        //减低循环层级
        Map<String,Map<String,Object>> diseaseMap = new HashedMap();
        for(Map<String,Object> map : diseaseList){
            String code = (String)map.get("code");
            diseaseMap.put(code,map);
        }
        if(StringUtils.isNotBlank(disease)){
            String diseases[] = disease.split(",");
            //获取所有健康情况标签
            List<Map<String,Object>> diseaseList = getLabelsByType("3");
            //减低循环层级
            Map<String,Map<String,Object>> diseaseMap = new HashedMap();
            for(Map<String,Object> map : diseaseList){
                String code = (String)map.get("code");
                diseaseMap.put(code,map);
            }
        if(diseases!=null&&diseases.length>0){
            for(int i=0;i<diseases.length;i++){
                SignPatientLabelInfo info = new SignPatientLabelInfo();
                info.setCzrq(new Date());
                info.setLabelType("3");
                info.setPatient(patient);
                info.setPname(p.getName());
                info.setLabel(diseases[i]);
                String name = (String)diseaseMap.get(diseases[i]).get("name");
                info.setLabelName(name);
                info.setStatus(1);
                signPatientLabelInfoDao.save(info);
            if(diseases!=null&&diseases.length>0){
                for(int i=0;i<diseases.length;i++){
                    SignPatientLabelInfo info = new SignPatientLabelInfo();
                    info.setCzrq(new Date());
                    info.setLabelType("3");
                    info.setPatient(patient);
                    info.setPname(p.getName());
                    info.setLabel(diseases[i]);
                    String name = (String)diseaseMap.get(diseases[i]).get("name");
                    info.setLabelName(name);
                    info.setStatus(1);
                    signPatientLabelInfoDao.save(info);
                }
            }
        }
        //3.新增自定义标签
        String customs[] = custom.split(",");
        //获取所有健康情况标签
        List<Map<String,Object>> customList = getLabelsByType("4");
        //减低循环层级
        Map<String,Map<String,Object>> customMap = new HashedMap();
        for(Map<String,Object> map : customList){
            String code = (String)map.get("code");
            customMap.put(code,map);
        }
        if(StringUtils.isNotBlank(custom)){
            String customs[] = custom.split(",");
            //获取所有健康情况标签
            List<Map<String,Object>> customList = getLabelsByType("4");
            //减低循环层级
            Map<String,Map<String,Object>> customMap = new HashedMap();
            for(Map<String,Object> map : customList){
                String code = (String)map.get("code");
                customMap.put(code,map);
            }
        if(customs!=null&&customs.length>0){
            for(int i=0;i<customs.length;i++){
                SignPatientLabelInfo info = new SignPatientLabelInfo();
                info.setCzrq(new Date());
                info.setLabelType("4");
                info.setPatient(patient);
                info.setPname(p.getName());
                info.setLabel(customs[i]);
                String name = (String)customMap.get(customs[i]).get("name");
                info.setLabelName(name);
                info.setStatus(1);
                signPatientLabelInfoDao.save(info);
            if(customs!=null&&customs.length>0){
                for(int i=0;i<customs.length;i++){
                    SignPatientLabelInfo info = new SignPatientLabelInfo();
                    info.setCzrq(new Date());
                    info.setLabelType("4");
                    info.setPatient(patient);
                    info.setPname(p.getName());
                    info.setLabel(customs[i]);
                    String name = (String)customMap.get(customs[i]).get("name");
                    info.setLabelName(name);
                    info.setStatus(1);
                    signPatientLabelInfoDao.save(info);
                }
            }
        }
        return 1;
    }

+ 584 - 233
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/prenatalInspector/PrenatalInspectorPreCardService.java

@ -1,240 +1,591 @@
//package com.yihu.wlyy.service.app.prenatalInspector;
//
//import com.yihu.wlyy.entity.patient.Patient;
//import com.yihu.wlyy.entity.patient.SignFamily;
//import com.yihu.wlyy.entity.patient.prenatal.PrenatalInspectorPlan;
//import com.yihu.wlyy.entity.patient.prenatal.PrenatalInspectorPlanLibrary;
//import com.yihu.wlyy.entity.patient.prenatal.PrenatalInspectorPreCard;
//import com.yihu.wlyy.repository.patient.PatientDao;
//import com.yihu.wlyy.repository.patient.PrenatalInspectorPlanDao;
//import com.yihu.wlyy.repository.patient.PrenatalInspectorPlanLibraryDao;
//import com.yihu.wlyy.repository.patient.PrenatalInspectorPreCardDao;
//import com.yihu.wlyy.service.BaseService;
//import com.yihu.wlyy.service.app.sign.FamilyContractService;
//import com.yihu.wlyy.task.PushMsgTask;
//import com.yihu.wlyy.util.DateUtil;
//import com.yihu.wlyy.wechat.util.WeiXinAccessTokenUtils;
//import org.apache.commons.lang3.StringUtils;
//import org.json.JSONArray;
//import org.json.JSONObject;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Component;
//import org.springframework.transaction.annotation.Transactional;
//
//import java.util.ArrayList;
//import java.util.Date;
//import java.util.List;
//
///**
// * Created by yeshijie on 2017/6/6.
// */
//@Component
//@Transactional(rollbackFor = Exception.class)
//public class PrenatalInspectorPreCardService extends BaseService {
//
//    @Autowired
//    private PrenatalInspectorPreCardDao prenatalInspectorPreCardDao;
//    @Autowired
//    private PrenatalInspectorPlanLibraryDao prenatalInspectorPlanLibraryDao;
//    @Autowired
//    private PrenatalInspectorPlanDao prenatalInspectorPlanDao;
//    @Autowired
//    private WeiXinAccessTokenUtils accessTokenUtils;
//    @Autowired
//    private PatientDao patientDao;
//    @Autowired
//    private FamilyContractService familyContractService;
//
//    /**
//     * 待产检计划
//     * @param code
//     * @return
//     */
//    public JSONArray planList(String code){
//        JSONArray jsonArray = new JSONArray();
//        List<PrenatalInspectorPlan> planList = prenatalInspectorPlanDao.findByCode(code);
//        for (PrenatalInspectorPlan plan:planList){
//            JSONObject json = new JSONObject();
//            json.put("checkItem",plan.getCheckItem());
//            json.put("name",plan.getName());
//            json.put("thisFoucs",plan.getThisFocus());
//            json.put("thisNote",plan.getThisNote());
//            if(plan.getInspectionTime()==null){
//                json.put("inspectionTime","");
//            }else {
//                json.put("inspectionTime",DateUtil.dateToStrShort(plan.getInspectionTime()));
//            }
//            json.put("inspectionEndTime",DateUtil.dateToStrShort(plan.getInspectionEndTime()));
//            json.put("inspectionStartTime",DateUtil.dateToStrShort(plan.getInspectionStartTime()));
//
//
//            jsonArray.put(json);
//        }
//
//
//        return jsonArray;
//    }
//
//    /**
//     * 预建卡列表-孕检计划
//     * @param patient
//     * @return
//     */
//    public JSONArray preCardList(String patient){
//        JSONArray jsonArray = new JSONArray();
//        List<PrenatalInspectorPreCard> preCards = prenatalInspectorPreCardDao.findByPatient(patient);
//        for (PrenatalInspectorPreCard preCard:preCards){
//            JSONObject json = new JSONObject();
//            json.put("code",preCard.getCode());
//            json.put("dueDate",DateUtil.dateToStrShort(preCard.getDueDate()));//预产期
//            Date date = new Date();
//            Long dueDateDay = DateUtil.getDays(preCard.getDueDate(),date);
//            if(dueDateDay>0){
//                json.put("dueDateWeek",getWeek(dueDateDay.intValue()));//距离预产期周数
//                json.put("dueDateDay",getDay(dueDateDay.intValue()));//距离预产期周数的余数
//                Long pregnancyDay = DateUtil.getDays(date,preCard.getLastMenstrualDate());
//                int week = getWeek(pregnancyDay.intValue());
//                int day = getDay(pregnancyDay.intValue());
//                String preDay = day==0?(week+"周"):(week+"周"+day+"天");//怀孕时间
//                json.put("status",preDay);
//            }else {
//                json.put("dueDateWeek",0);//距离预产期周数
//                json.put("dueDateDay",0);//距离预产期周数的余数
//                json.put("status",preCard.getStatus());
//            }
//
//            json.put("hospitalName",preCard.getHospitalName());//预约床位医院
//            json.put("orderBedTime",preCard.getOrderBedTime());//预约床位时间
//
//            jsonArray.put(json);
//        }
//
//        return jsonArray;
//    }
//
//    /**
//     * 把天数换算成周数
//     * @param day
//     * @return
//     */
//    private int getWeek(Integer day){
//        return day/7;
//    }
//
//    /**
//     * 把天数换算成周数的余数
//     * @param day
//     * @return
//     */
//    private int getDay(Integer day){
//        return day%7;
//    }
//
//    /**
//     * 新建产检预建卡
//     */
//    @Transactional
//    public void addPrenatalInspectorPreCard(PrenatalInspectorPreCard preCard){
//        //1、保存预建卡
//        Date date = new Date();
//        Date lastMenstrualDate = preCard.getLastMenstrualDate();
//        preCard.setDel("1");
//        preCard.setCode(getCode());
//        preCard.setCzrq(date);
//        preCard.setDueDate(DateUtil.getDueDate(preCard.getLastMenstrualDate()));//预产期
//        preCard.setStatus("0");
//        preCard.setEffective("");
//        preCard.setInspectionPhase("1");//检查阶段
//        prenatalInspectorPreCardDao.save(preCard);
//
//        String patient = preCard.getPatient();
//
//        //2、生成待产检计划
//        Long days = DateUtil.getDays(date,lastMenstrualDate);
//        List<PrenatalInspectorPlanLibrary> libraries = prenatalInspectorPlanLibraryDao.findByDays(days);
//        List<PrenatalInspectorPlan> plans = new ArrayList<>();
//        PrenatalInspectorPlan plan = null;
//        for (PrenatalInspectorPlanLibrary library:libraries){
//            plan = new PrenatalInspectorPlan();
//            plan.setInspectionPhase(library.getInspectionPhase());
//            plan.setStatus("0");
//            plan.setPatient(patient);
//            plan.setCzrq(date);
//            plan.setCheckItem(library.getCheckItem());
package com.yihu.wlyy.service.app.prenatalInspector;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yihu.wlyy.entity.doctor.profile.Doctor;
import com.yihu.wlyy.entity.patient.Patient;
import com.yihu.wlyy.entity.patient.SignFamily;
import com.yihu.wlyy.entity.patient.prenatal.PrenatalInspectorPlan;
import com.yihu.wlyy.entity.patient.prenatal.PrenatalInspectorPlanLibrary;
import com.yihu.wlyy.entity.patient.prenatal.PrenatalInspectorPreCard;
import com.yihu.wlyy.repository.doctor.DoctorDao;
import com.yihu.wlyy.repository.patient.*;
import com.yihu.wlyy.service.BaseService;
import com.yihu.wlyy.service.app.sign.FamilyContractService;
import com.yihu.wlyy.service.third.jw.JwMaternalChildService;
import com.yihu.wlyy.service.third.jw.ZyDictService;
import com.yihu.wlyy.task.PushMsgTask;
import com.yihu.wlyy.util.DateUtil;
import com.yihu.wlyy.wechat.util.WeiXinAccessTokenUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
 * Created by yeshijie on 2017/6/6.
 */
@Component
@Transactional(rollbackFor = Exception.class)
public class PrenatalInspectorPreCardService extends BaseService {
    @Autowired
    private PrenatalInspectorPreCardDao prenatalInspectorPreCardDao;
    @Autowired
    private PrenatalInspectorPlanLibraryDao prenatalInspectorPlanLibraryDao;
    @Autowired
    private PrenatalInspectorPlanDao prenatalInspectorPlanDao;
    @Autowired
    private WeiXinAccessTokenUtils accessTokenUtils;
    @Autowired
    private PatientDao patientDao;
    @Autowired
    private FamilyContractService familyContractService;
    @Autowired
    private PushMsgTask pushMsgTask;
    @Autowired
    private JwMaternalChildService jwMaternalChildService;
    @Autowired
    private SignFamilyDao signFamilyDao;
    @Autowired
    private DoctorDao doctorDao;
    @Autowired
    private ZyDictService zyDictService;
//    public
    /**
     * 待产检计划
     * @param code
     * @return
     */
    public JSONArray planList(String code){
        JSONArray jsonArray = new JSONArray();
        List<PrenatalInspectorPlan> planList = prenatalInspectorPlanDao.findByCode(code);
        for (PrenatalInspectorPlan plan:planList){
            JSONObject json = new JSONObject();
            json.put("checkItem",plan.getCheckItem());
            json.put("name",plan.getName());
            json.put("thisFoucs",plan.getThisFocus());
            json.put("thisNote",plan.getThisNote());
            json.put("inspectionTime",DateUtil.dateToStrShort(plan.getInspectionTime()));
            jsonArray.add(json);
        }
        return jsonArray;
    }
    /**
     * 获取产检列表
     * @param patientCode
     * @return
     */
    public JSONArray getEhrMaternalFirstExamRecord(String patientCode){
        JSONArray re = new JSONArray();
        SignFamily signFamily = signFamilyDao.findByPatient(patientCode);
        String hospital = null;
        if(signFamily!=null){
            hospital = signFamily.getHospital();
        }
        Patient patient = patientDao.findByCode(patientCode);
        try{
            String response = jwMaternalChildService.getEhrMaternalFirstExamRecord(patient.getIdcard(),hospital);
            JSONObject json = JSONObject.parseObject(response);
            JSONArray data = null;
            if(json.getInteger("status")==200){
                data = json.getJSONObject("data").getJSONArray("DATA");
            }
            if(data!=null&&data.size()>0){//有建卡信息
                for (int i=0;i<data.size();i++) {
                    JSONObject planJson = new JSONObject();
                    JSONObject pregnancy = data.getJSONObject(i);
                    String PREGNANCY_NO = pregnancy.getString("PREGNANCY_NO");//智业产检号
                    String END_MANNER = pregnancy.getString("END_MANNER");//妊娠终止方式
                    String END_TIME = pregnancy.getString("END_TIME");//结束妊娠
                    String MENSES_LAST = pregnancy.getString("MENSES_LAST");//末次月经
                    String EXPECTED_TIME = pregnancy.getString("EXPECTED_TIME");//预产期
                    String DELIVERY_WAY = pregnancy.getString("DELIVERY_WAY");//分娩方式
                    String DELIVERY_TIME = pregnancy.getString("DELIVERY_TIME");//分娩方式时间
                    String EXAM_TIME = pregnancy.getString("EXAM_TIME");//检查日期
                    planJson.put("pregnancyNo",PREGNANCY_NO);
                    planJson.put("endManner",END_MANNER);
                    planJson.put("endTime",END_TIME);
                    planJson.put("mensesLast",MENSES_LAST);
                    planJson.put("expectedTime",EXPECTED_TIME);
                    Date date = new Date();
                    if(StringUtils.isBlank(END_TIME)){
                        //未结束妊娠,生成待产检计划
                        List<PrenatalInspectorPlan> plans = prenatalInspectorPlanDao.findByPatient(patientCode);
                        boolean flag = false;
                        if(plans==null||plans.size()==0){
                            flag = true;
                        }else {
                            String inspectionCode = plans.get(0).getInspectionCode();
                            if(StringUtils.isBlank(inspectionCode)){//有待产检计划,但是产检号为空,说明是预建卡生成的产检记录
                                flag = true;
                                //更新居民待产检计划,需要重新生成
                                prenatalInspectorPlanDao.updateStatus(patientCode);
                            }
                        }
                        if(flag){//判断是否已经生成产检记录
                            Date dueDay = DateUtil.strToDate(EXPECTED_TIME);
                            Long days = DateUtil.getDays(dueDay,date);
                            List<PrenatalInspectorPlanLibrary> libraries = prenatalInspectorPlanLibraryDao.findByDays(days);
                            plans = new ArrayList<>();
                            PrenatalInspectorPlan plan = null;
                            for (PrenatalInspectorPlanLibrary library:libraries){
                                plan = new PrenatalInspectorPlan();
                                plan.setInspectionPhase(library.getInspectionPhase());
                                plan.setStatus("0");
                                plan.setPatient(patientCode);
                                plan.setCzrq(date);
                                plan.setDel("1");
                                plan.setInspectionCode(PREGNANCY_NO);//产检号
                                plan.setCheckItem(library.getCheckItem());
                                plan.setInspectionTime(DateUtil.getPrenatalInspectorDate(dueDay,-library.getEndDay().intValue()));
                                plan.setName(library.getName());
                                plan.setThisFocus(library.getThisFocus());
                                plan.setThisNote(library.getThisNote());
                                plans.add(plan);
                            }
                            if (plans.size()>0){
                                prenatalInspectorPlanDao.save(plans);
                            }
                        }
                        //计算距离下次产检时间
                        Long nextExamDay = 0l;
                        for (PrenatalInspectorPlan plan:plans) {
                            Long temp = DateUtil.getDays(date,plan.getInspectionStartTime());
                            if(nextExamDay==0||nextExamDay>temp){
                                nextExamDay = temp;
                            }
                        }
                        planJson.put("plans",plans);//待产检列表
                        planJson.put("nextExamDay",nextExamDay);//距离下次产检天数
                        //产床预约信息
                        String precontract_org_name = "";//产床医院
                        try {
                            String bedRecode = jwMaternalChildService.getEhrMaternalBedPrecontractRecord(patient.getIdcard(),hospital);
                            JSONObject bedJson = JSONObject.parseObject(bedRecode);
                            JSONArray bedData = null;
                            if(bedJson.getInteger("status")==200){
                                bedData = json.getJSONObject("data").getJSONArray("DATA");
                            }
                            if(bedData!=null&&bedData.size()>0){
                                JSONObject exam = data.getJSONObject(data.size()-1);
                                precontract_org_name = exam.getString("PRECONTRACT_ORG_NAME");
                            }
                        }catch (Exception e){
                            e.printStackTrace();
                        }
                        planJson.put("precontractOrgName",precontract_org_name);//产床医院
                    }
                    re.add(planJson);
                }
            }else{
                //没有建卡信息,请求预建卡接口
                response = jwMaternalChildService.getEhrMaternalPreFirstExamRecord(patient.getIdcard(),hospital);
                JSONObject preJson = JSONObject.parseObject(response);
                JSONArray preData = null;
                if(preJson.getInteger("status")==200){
                    preData = preJson.getJSONObject("data").getJSONArray("DATA");
                    if(preData!=null&&preData.size()>0){
                        for (int i=0;i<preData.size();i++){
                            JSONObject planJson = new JSONObject();
                            JSONObject pregnancy = preData.getJSONObject(i);
                            String PREGNANCY_NO = pregnancy.getString("PREGNANCY_NO");//智业产检号
                            String END_MANNER = pregnancy.getString("END_MANNER");//妊娠终止方式
                            String END_TIME = pregnancy.getString("END_TIME");//结束妊娠
                            String MENSES_LAST = pregnancy.getString("MENSES_LAST");//末次月经
                            Date dueday = DateUtil.getDueDate(DateUtil.strToDateLong(MENSES_LAST));//预产期
                            planJson.put("pregnancyNo",PREGNANCY_NO);
                            planJson.put("endManner",END_MANNER);
                            planJson.put("endTime",END_TIME);
                            planJson.put("mensesLast",MENSES_LAST);
                            planJson.put("expectedTime",DateUtil.dateToStrLong(dueday));
                            Date date = new Date();
                            List<PrenatalInspectorPlan> plans = prenatalInspectorPlanDao.findByPatient(patientCode);
                            if(plans==null||plans.size()==0){//判断是否已经生成产检记录
                                //预建卡还没产检,有产检就会生成产检记录,建卡接口就会有数据
                                Long days = DateUtil.getDays(dueday,date);
//                                days = days>365?0:days;//老早前的测试数据处理
                                List<PrenatalInspectorPlanLibrary> libraries = prenatalInspectorPlanLibraryDao.findByDays(days);
                                plans = new ArrayList<>();
                                PrenatalInspectorPlan plan = null;
                                for (PrenatalInspectorPlanLibrary library:libraries){
                                    plan = new PrenatalInspectorPlan();
                                    plan.setInspectionPhase(library.getInspectionPhase());
                                    plan.setStatus("0");
                                    plan.setPatient(patientCode);
                                    plan.setCzrq(date);
                                    plan.setDel("1");
                                    plan.setCheckItem(library.getCheckItem());
//                                    plan.setInspectionCode(PREGNANCY_NO);//产检号
                                    plan.setInspectionTime(DateUtil.getPrenatalInspectorDate(dueday,-library.getEndDay().intValue()));
//                                    plan.setInspectionEndTime(DateUtil.getPrenatalInspectorDate(lastMenstrualDate,library.getEndDay().intValue()));
//                                    plan.setInspectionStartTime(DateUtil.getPrenatalInspectorDate(dueday,-library.getEndDay().intValue()));
                                    plan.setName(library.getName());
                                    plan.setThisFocus(library.getThisFocus());
                                    plan.setThisNote(library.getThisNote());
                                    plans.add(plan);
                                }
                                if (plans.size()>0){
                                    prenatalInspectorPlanDao.save(plans);
                                }
                            }
                            //计算距离下次产检时间
                            Long nextExamDay = 0l;
                            for (PrenatalInspectorPlan plan:plans) {
                                Long temp = DateUtil.getDays(date,plan.getInspectionStartTime());
                                if(nextExamDay==0||nextExamDay>temp){
                                    nextExamDay = temp;
                                }
                            }
                            planJson.put("plans",plans);//待产检列表
                            planJson.put("nextExamDay",nextExamDay);//距离下次产检天数
                            planJson.put("precontractOrgName",null);//产床医院
                            re.add(planJson);
                        }
                    }
                }
            }
        }catch (Exception e){
            e.printStackTrace();
        }
        return re;
    }
    /**
     * 初检
     * @param patientCode
     * @return
     */
    public JSONObject firstExam(String patientCode,String pregnancyNo){
        JSONObject re = new JSONObject();
        try {
            SignFamily signFamily = signFamilyDao.findByPatient(patientCode);
            String hospital = null;
            if(signFamily!=null){
                hospital = signFamily.getHospital();
            }
            Patient patient = patientDao.findByCode(patientCode);
            String response = jwMaternalChildService.getEhrMaternalFirstExamRecord(patient.getIdcard(),hospital);
            JSONObject json = JSONObject.parseObject(response);
            JSONArray data = null;
            if(json.getInteger("status")==200){
                data = json.getJSONObject("data").getJSONArray("DATA");
            }
            if(data!=null&&data.size()>0){
                for (int i=0;i<data.size();i++){
                    if(pregnancyNo.equals(data.getJSONObject(i).getString("PREGNANCY_NO"))){//判断是否同一个产检
                        re = data.getJSONObject(i);
                        String SICK_PROVINCE = re.getString("SICK_PROVINCE");//省
                        String SICK_CITY = re.getString("SICK_CITY");//市
                        String SICK_COUNTY = re.getString("SICK_COUNTY");//县
                        String SICK_COUNTRY = re.getString("SICK_COUNTRY");//街道
                        String SICK_VILLAGE = re.getString("SICK_VILLAGE");//居委会
                        String SICK_HOUSEHOLD_PROVINCE = re.getString("SICK_HOUSEHOLD_PROVINCE");//户籍省
                        String SICK_HOUSEHOLD_CITY = re.getString("SICK_HOUSEHOLD_CITY");//户籍市
                        String SICK_HOUSEHOLD_COUNTY = re.getString("SICK_HOUSEHOLD_COUNTY");//户籍县
                        String SICK_HOUSEHOLD_COUNTRY = re.getString("SICK_HOUSEHOLD_COUNTRY");//户籍街道
                        String SICK_HOUSEHOLD_VILLAGE = re.getString("SICK_HOUSEHOLD_VILLAGE");//户籍居委会
                        if(StringUtils.isNotBlank(SICK_PROVINCE)){
                            re.put("SICK_PROVINCE",zyDictService.findZoneName(SICK_PROVINCE));
                        }
                        if(StringUtils.isNotBlank(SICK_CITY)){
                            re.put("SICK_CITY",zyDictService.findZoneName(SICK_CITY));
                        }
                        if(StringUtils.isNotBlank(SICK_COUNTY)){
                            re.put("SICK_COUNTY",zyDictService.findZoneName(SICK_COUNTY));
                        }
                        if(StringUtils.isNotBlank(SICK_COUNTRY)){
                            re.put("SICK_COUNTRY",zyDictService.findZoneName(SICK_COUNTRY));
                        }
                        if(StringUtils.isNotBlank(SICK_VILLAGE)){
                            re.put("SICK_VILLAGE",zyDictService.findZoneName(SICK_VILLAGE));
                        }
                        if(StringUtils.isNotBlank(SICK_HOUSEHOLD_PROVINCE)){
                            re.put("SICK_HOUSEHOLD_PROVINCE",zyDictService.findZoneName(SICK_HOUSEHOLD_PROVINCE));
                        }
                        if(StringUtils.isNotBlank(SICK_HOUSEHOLD_CITY)){
                            re.put("SICK_HOUSEHOLD_CITY",zyDictService.findZoneName(SICK_HOUSEHOLD_CITY));
                        }
                        if(StringUtils.isNotBlank(SICK_HOUSEHOLD_COUNTY)){
                            re.put("SICK_HOUSEHOLD_COUNTY",zyDictService.findZoneName(SICK_HOUSEHOLD_COUNTY));
                        }
                        if(StringUtils.isNotBlank(SICK_HOUSEHOLD_COUNTRY)){
                            re.put("SICK_HOUSEHOLD_COUNTRY",zyDictService.findZoneName(SICK_HOUSEHOLD_COUNTRY));
                        }
                        if(StringUtils.isNotBlank(SICK_HOUSEHOLD_VILLAGE)){
                            re.put("SICK_HOUSEHOLD_VILLAGE",zyDictService.findZoneName(SICK_HOUSEHOLD_VILLAGE));
                        }
                        return re;
                    }
                }
            }
        }catch (Exception e){
            e.printStackTrace();
        }
        return re;
    }
    /**
     * 复检记录
     * @param patientCode
     * @return
     */
    public String reExamRecode(String patientCode,String pregnancyNo){
        String re = "";
        try {
            SignFamily signFamily = signFamilyDao.findByPatient(patientCode);
            String hospital = null;
            if(signFamily!=null){
                hospital = signFamily.getHospital();
            }
            Patient patient = patientDao.findByCode(patientCode);
            String response = jwMaternalChildService.getEhrMaternalReExamRecord(patient.getIdcard(),hospital,pregnancyNo);
            return response;
        }catch (Exception e){
            e.printStackTrace();
        }
        return re;
    }
    /**
     * 获取最后一次产检时间
     * @param idcard
     * @param hospital
     * @return
     */
    public String getLastExamTime(String idcard,String hospital,String pregnancyNo){
        String re = "";
        try {
            String response = jwMaternalChildService.getEhrMaternalReExamRecord(idcard,hospital,pregnancyNo);
            JSONObject json = JSONObject.parseObject(response);
            JSONArray data = null;
            if(json.getInteger("status")==200){
                data = json.getJSONObject("data").getJSONArray("DATA");
            }
            if(data!=null&&data.size()>0){
                JSONObject exam = data.getJSONObject(data.size()-1);
//                String PREGNANCY_WEEK = exam.getString("PREGNANCY_WEEK");//检查孕周
                String examTime = exam.getString("EXAM_TIME");//产检日期
                re = examTime;
            }
        }catch (Exception e){
            e.printStackTrace();
        }
        return re;
    }
    /**
     * 产床预约信息
     * @param idcard
     * @param hospital
     * @return
     */
    public String getEhrMaternalBedPrecontractRecord(String idcard,String hospital){
        String re = "";
        try {
            String response = jwMaternalChildService.getEhrMaternalBedPrecontractRecord(idcard,hospital);
            JSONObject json = JSONObject.parseObject(response);
            JSONArray data = null;
            if(json.getInteger("status")==200){
                data = json.getJSONObject("data").getJSONArray("DATA");
            }
            if(data!=null&&data.size()>0){
                JSONObject exam = data.getJSONObject(data.size()-1);
                String PREGNANCY_WEEK = exam.getString("PREGNANCY_WEEK");//检查孕周
                String examTime = exam.getString("EXAM_TIME");//产检日期
                re = examTime;
            }
        }catch (Exception e){
            e.printStackTrace();
        }
        return re;
    }
    /**
     * 预建卡列表-孕检计划
     * @param patient
     * @return
     */
    public JSONArray preCardList(String patient){
        JSONArray jsonArray = new JSONArray();
        List<PrenatalInspectorPreCard> preCards = prenatalInspectorPreCardDao.findByPatient(patient);
        for (PrenatalInspectorPreCard preCard:preCards){
            JSONObject json = new JSONObject();
            json.put("code",preCard.getCode());
            json.put("dueDate",DateUtil.dateToStrShort(preCard.getDueDate()));//预产期
            Date date = new Date();
            Long dueDateDay = DateUtil.getDays(preCard.getDueDate(),date);
            if(dueDateDay>0){
                json.put("dueDateWeek",getWeek(dueDateDay.intValue()));//距离预产期周数
                json.put("dueDateDay",getDay(dueDateDay.intValue()));//距离预产期周数的余数
                Long pregnancyDay = DateUtil.getDays(date,preCard.getLastMenstrualDate());
                int week = getWeek(pregnancyDay.intValue());
                int day = getDay(pregnancyDay.intValue());
                String preDay = day==0?(week+"周"):(week+"周"+day+"天");//怀孕时间
                json.put("status",preDay);
            }else {
                json.put("dueDateWeek",0);//距离预产期周数
                json.put("dueDateDay",0);//距离预产期周数的余数
                json.put("status",preCard.getStatus());
            }
            json.put("hospitalName",preCard.getHospitalName());//预约床位医院
            json.put("orderBedTime",preCard.getOrderBedTime());//预约床位时间
            jsonArray.add(json);
        }
        return jsonArray;
    }
    /**
     * 把天数换算成周数
     * @param day
     * @return
     */
    private int getWeek(Integer day){
        return day/7;
    }
    /**
     * 把天数换算成周数的余数
     * @param day
     * @return
     */
    private int getDay(Integer day){
        return day%7;
    }
    /**
     * 上传预建卡
     * @param code
     */
    public String uploadPreExam(String code){
        String re = "";
        try {
            //上传预建卡
            String response = jwMaternalChildService.SaveEhrMaternalPreFirstExamRecord(code);
            JSONObject preJson = JSONObject.parseObject(response);
            if(preJson.getInteger("status")!=200){
                re = preJson.getString("msg");
            }else {
                JSONObject json = preJson.getJSONObject("data");
                if("0".equals(json.getString("code"))){
                    re = json.getString("MESSAGE");
                }
            }
            if(re.contains("身份证为空,请检查")){
                re = "身份证为空,请检查";
            }else if(re.contains("操作员为空,请检查")){
                re = "操作员为空,请检查";
            }
        }catch (Exception e){
            e.printStackTrace();
        }
        return re;
    }
    /**
     * 新建产检预建卡
     */
    @Transactional
    public String addPrenatalInspectorPreCard(PrenatalInspectorPreCard preCard,String patientcCode){
        SignFamily signFamily = signFamilyDao.findByPatient(patientcCode);
        if(signFamily==null){
            return "-1";
        }
        //获取团队长
        Doctor doctor = doctorDao.findByAdminTeamId(signFamily.getAdminTeamId());
        preCard.setDoctor(doctor.getCode());
        preCard.setDoctorName(doctor.getName());
        //保存智业的医生信息
        Map<String,Object> map = zyDictService.findJwDoctorByDoctor(doctor.getCode());
        if(map!=null){
            preCard.setJwDoctor(map.get("jw_doctor").toString());
        }
        String re = "";
        //1、保存预建卡
        Date date = new Date();
        Date lastMenstrualDate = preCard.getLastMenstrualDate();
        Date dueDate = DateUtil.getDueDate(preCard.getLastMenstrualDate());
        preCard.setDel("1");
        preCard.setCode(getCode());
        preCard.setCzrq(date);
        preCard.setDueDate(dueDate);//预产期
        preCard.setStatus("0");
        preCard.setEffective("");
        preCard.setInspectionPhase("1");//检查阶段
        preCard.setUploadStatus("0");//未上传
        prenatalInspectorPreCardDao.save(preCard);
        String patient = preCard.getPatient();
        //更新居民信息
//        Patient p = patientDao.findByCode(patient);
//        p.setName(preCard.getName());
//        p.setSsc(preCard.getSsc());
//        p.setBirthday(preCard.getBirthday());
//        p.setMobile(preCard.getMobile());
        //2、生成待产检计划(待产检计划由获取健康信息接口生成,关联产检计划)
        Long days = DateUtil.getDays(dueDate,date);
        List<PrenatalInspectorPlanLibrary> libraries = prenatalInspectorPlanLibraryDao.findByDays(days);
        List<PrenatalInspectorPlan> plans = new ArrayList<>();
        PrenatalInspectorPlan plan = null;
        for (PrenatalInspectorPlanLibrary library:libraries){
            plan = new PrenatalInspectorPlan();
            plan.setInspectionPhase(library.getInspectionPhase());
            plan.setStatus("0");
            plan.setPatient(patient);
            plan.setCzrq(date);
            plan.setDel("1");
            plan.setCheckItem(library.getCheckItem());
//            plan.setInspectionCode(preCard.getCode());
//            plan.setInspectionEndTime(DateUtil.getPrenatalInspectorDate(lastMenstrualDate,library.getEndDay().intValue()));
//            plan.setInspectionStartTime(DateUtil.getPrenatalInspectorDate(lastMenstrualDate,library.getStartDay().intValue()));
//            plan.setName(library.getName());
//            plan.setThisFocus(library.getThisFocus());
//            plan.setThisNote(library.getThisNote());
//
            plan.setInspectionTime(DateUtil.getPrenatalInspectorDate(dueDate,-library.getEndDay().intValue()));
            plan.setName(library.getName());
            plan.setThisFocus(library.getThisFocus());
            plan.setThisNote(library.getThisNote());
//            if("1".equals(plan.getInspectionPhase())){
//                SignFamily jiating = familyContractService.findByPatientByType(patient, 2);
//                if(jiating!=null){
//                    plan.setSignHospital(jiating.getHospital());
//                }
//            }
//
//            plans.add(plan);
//        }
//        if (plans.size()>0){
//            prenatalInspectorPlanDao.save(plans);
//        }
//
//    }
//
//    /**
//     * 产检提醒(1预约提醒,2就诊提醒)
//     * 1、当居民已有经医生确认过的下一次产检时间,则距离下一次产检前7天(保证居民可自行预约),发出产检预约提醒通知。点击该消息,进入预约页面
//     * 2、当居民已有经医生确认过的下一次产检时间,则距离下一次产检前1天,发出产检就诊提醒,提醒居民就诊。点击该消息,进入预约记录页面
//     */
//    public void sendPrenatalInspectorRemind(){
//        System.out.println("产检计划---running");
//        List<PrenatalInspectorPlan> planList = prenatalInspectorPlanDao.findWxTipList();
//        for (PrenatalInspectorPlan plan:planList){
//            try {
//                Patient patient = patientDao.findByCode(plan.getPatient());
//                String openId = patient.getOpenid();
//                String name = patient.getName();
//                String patientCode = patient.getCode();
//                if(StringUtils.isNotBlank(openId)){
//                    Long day = DateUtil.getDays(plan.getInspectionTime(),DateUtil.getNowDateShort());
//                    JSONObject json = new JSONObject();
//                    if(day==7){
//                        //产检提醒
//                        json.put("remark","产检内容以医生实际检查为准。点击进行预约");
//                        json.put("first",name+",您好!您和您的宝宝需要进行产检啦~请及时预约产检,如已预约,请忽略");
//                        if("1".equals(plan.getInspectionPhase())){
//                            if(StringUtils.isNotBlank(plan.getSignHospital())){
//                                json.put("url","wdyy/html/hospital-dept.html?openid="+openId+"&toUser="+patientCode+"&toName="+name+"&hospitalId="+plan.getSignHospital());
//                            }else {
//                                json.put("url","wdyy/html/appointment-register.html?openid="+openId+"&toUser="+patientCode+"&toName="+name+"&orderType=1");
//                            }
//                        }else {
//                            json.put("url","wdyy/html/appointment-register.html?openid="+openId+"&toUser="+patientCode+"&toName="+name);
//                        }
//
//                        json.put("keyword1","产检提醒");
//                        String keyword2 = DateUtil.getStringDateShort()+"\n产检内容:"+plan.getCheckItem();
//                        json.put("keyword2",keyword2);
//                        PushMsgTask.getInstance().sendWeixinMessage(accessTokenUtils.getAccessToken(), 18, openId, name, json);
//                    }else if(day==1){
//                        //产检就诊提醒
//                        json.put("remark","产检内容以医生实际检查为准。点击查看预约记录");
//                        json.put("first",name+",您好!您和您的宝宝即将进行产检啦~请按时就诊,如已就诊,请忽略");
//                        json.put("url","wdyy/html/my-appointment.html?openid="+openId+"&toUser="+patientCode+"&toName="+name);
//                        json.put("keyword1","产检就诊提醒");
//                        String keyword2 = DateUtil.getStringDateShort()+"\n产检内容:"+plan.getCheckItem();
//                        json.put("keyword2",keyword2);
//                        PushMsgTask.getInstance().sendWeixinMessage(accessTokenUtils.getAccessToken(), 18, openId, name, json);
//                    }
//                }
//            }catch (Exception e){
//                System.out.println("微信提醒发送失败");
//                e.printStackTrace();
//            }
//        }
//
//    }
//
//}
            plans.add(plan);
        }
        if (plans.size()>0){
            prenatalInspectorPlanDao.save(plans);
        }
        return preCard.getCode();
    }
}

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 328 - 210
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/prescription/PatientPrescriptionPayService.java


+ 16 - 2
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/prescription/PrescriptionInfoService.java

@ -35,7 +35,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.*;
/**
 * Created  Trick on 2017/7/25.
 * Created  Trick on 2017/7/25..
 */
@Service
@Transactional
@ -661,8 +661,8 @@ public class PrescriptionInfoService extends BaseService {
    public void setSQL(StringBuffer pre_sql, List<Object> params, Integer teamCode, String state, String startDate, String endDate, String nameKeyword, String patient, Integer page, Integer size) {
        if (teamCode != null && teamCode > 0) {
            pre_sql.append(" AND pr.admin_team_id =?");
            params.add(teamCode);
        }
        params.add(teamCode);
        if (StringUtils.isNotBlank(state)) {
            pre_sql.append(" AND pr.status IN (" + state + ") ");
@ -805,6 +805,20 @@ public class PrescriptionInfoService extends BaseService {
            PrescriptionReviewed reviewed = prescriptionReviewedDao.findByPrescriptionCode(code);
            if ("1".equals(state)) {
                if(StringUtils.isNotBlank(dept)){
                    String sql = "SELECT t.dept_name AS deptName FROM zy_iv_dept_dict t WHERE t.dept_code = '"+dept+"'" ;
                    List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
                    if(list!=null&&list.size()>0){
                        String name = (String)list.get(0).get("deptName");
                        p.setDeptName(name);
                        p.setDept(dept);
                    }else{
                        throw new RuntimeException("科室不能为空");
                    }
                }else{
                    throw new RuntimeException("科室不能为空");
                }
                //审核通过,前往智业开方
                p.setStatus(PrescriptionLog.PrescriptionLogStatus.adding.getValue());
                p.setReviewedTime(new Date());

+ 34 - 16
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/sign/FamilyContractService.java

@ -130,6 +130,8 @@ public class FamilyContractService extends BaseService {
    private SignFamilyMappingDao signFamilyMappingDao;
    @Autowired
    private JwArchivesService jwArchivesService;
    @Autowired
    private FamilyContractService familyContractService;
    @Autowired
    private ImUtill ImUtill;
@ -345,8 +347,9 @@ public class FamilyContractService extends BaseService {
        json.put("services", services);
        //是否签约上限
        int signLimit = signWebService.getSickFamilyDoctorSignLimit(doctor);
        json.put("signLimit", signLimit);
        JSONObject signLimit = signWebService.getSickFamilyDoctorSignLimit(doctor);
        json.put("signTotal",signLimit.getInt("signTotal"));//签约总数
        json.put("limitTotal",signLimit.getInt("limitTotal"));//限制总数
        return json;
    }
@ -498,6 +501,7 @@ public class FamilyContractService extends BaseService {
            p.setTownName(townName);
            p.setAddress(address);
            p.setOpenid(openid);
            p.setOpenidTime(new Date());
            p.setIdcard(idcard);
            p.setMobile(mobile);
            p.setSsc(ssc);
@ -885,7 +889,7 @@ public class FamilyContractService extends BaseService {
     * @return
     * @throws Exception
     */
    synchronized public SignFamily agent(String access_token, String name,
    synchronized public String agent(String access_token, String name,
                                         String doctor, String doctorName,
                                         String doctorHealth, String doctorHealthName,
                                         String hospital, String hospitalName,
@ -900,14 +904,13 @@ public class FamilyContractService extends BaseService {
        if (sc != null) {
            throw new Exception("已签约了家庭医生!");
        }
        //判断是否有三师签约 并且判断全科医生一致
        //屏蔽三师签约判断
//        SignFamily sssignFamily = signFamilyDao.findSSByIdcard(idcard);
//        if (sssignFamily != null && !doctor.equals(sssignFamily.getDoctor())) {
//            throw new Exception("全科医生不一致!");
//        }
        //1.3.7.2  判断是否建档---------------------------
        String rp = familyContractService.checkSickArchiveFlag(idcard);
        if("0".equals(rp)){
            return "-1";
        }
        //1.3.7.2  end------------------------------------
//        List<SystemDict> systemDicts = systemDictDao.findByDictName("SIGN_YEAR");
        Calendar cal = Calendar.getInstance();
        int m = cal.get(Calendar.MONTH) + 1;
        String signYear = "";
@ -973,6 +976,7 @@ public class FamilyContractService extends BaseService {
        if (StringUtils.isNotBlank(sevId)) {
            signWebService.setSevId(sf, sevId);
        }
        // 查询该患者是否已注册
        Patient patient = patientDao.findByIdcard(idcard);
        if (patient == null) {
@ -1190,9 +1194,9 @@ public class FamilyContractService extends BaseService {
        }
        BusinessLogs.info(BusinessLogs.BusinessType.sign, signDoctorCode, sf.getPatient(), new JSONObject(sf));
        //签约成功之后给患者新增标签
        String openId = sf.getOpenid();
        hospital = sf.getHospital();
        return temp;
//        String openId = sf.getOpenid();
//        hospital = sf.getHospital();
        return "1";
    }
    /**
@ -1718,7 +1722,14 @@ public class FamilyContractService extends BaseService {
     * @return
     */
    public int countAmountSigned(String doctor) {
        return signFamilyDao.countAmountSignedByDoctor(doctor);
        AdminTeam adminTeam = doctorAdminTeamDao.findByLeaderCode(doctor);
        if(adminTeam!=null){
            //团队长只显示实际有签约关系的数量
            return signFamilyDao.countAmountSignedByAdminTeam(adminTeam.getId());
        }else{
            //不是团队长显示所有有服务关系的数量
            return signFamilyDao.countAmountSignedByDoctor(doctor);
        }
    }
    /**
@ -4050,7 +4061,7 @@ public class FamilyContractService extends BaseService {
                "  a.patient=p.`code` " +
                " AND a.`status` IN (1, 2) ");
        List params = new ArrayList<>();
        if (teamCode!=null&&teamCode>0) {
        if (teamCode != null && teamCode > 0) {
            sb.append(" AND a.admin_team_code =?  ");
            params.add(teamCode);
        }
@ -4063,12 +4074,19 @@ public class FamilyContractService extends BaseService {
        return patients;
    }
    public String getSickArchiveFlag(String patient)throws Exception{
    public String getSickArchiveFlag(String patient) throws Exception {
        Patient p = patientDao.findByCode(patient);
        String rs = jwArchivesService.getSickArchiveFlag(p.getIdcard());
        return rs;
    }
    public String checkSickArchiveFlag(String idCard)throws Exception{
        String rs = jwArchivesService.getSickArchiveFlag(idCard);
        return rs ;
    }
}

+ 1 - 1
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/sign/SignFamilyServiceService.java

@ -169,7 +169,7 @@ public class SignFamilyServiceService {
                "   wlyy_service_item s, " +
                "   wlyy_sign_family_service_item si " +
                " WHERE " +
                "   s.`code` = si.service_item_code and si.del=1 ");
                "   s.`code` = si.service_item_code and si.del=1 and s.del=1");
        if (!StringUtils.isEmpty(patient)) {
            sql.append(" and si.patient = '" + patient + "'");
        }

+ 9 - 10
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/sign/SignWebService.java

@ -1885,7 +1885,7 @@ public class SignWebService extends BaseService {
     */
    public JSONObject getOverDuePatients(String year, Long teamCode, String doctor, Integer page, Integer pageSize) {
        StringBuffer sql = new StringBuffer("SELECT IFNULL(year( from_days( datediff( now(), p.birthday))),'未知') age," +
                "t.patient code,t.idcard,t.name,t.mobile,t.openid," +
                "t.patient code,t.idcard,t.name,t.mobile,t.openid,p.photo," +
                "t.ssc,t.type signType,p.sex ,t.expenses_status expensesStatus " +
                " FROM wlyy_sign_family t " +
                " LEFT JOIN wlyy_patient p ON t.patient = p.code " +
@ -2621,13 +2621,15 @@ public class SignWebService extends BaseService {
     * @param doctorCode
     * @return
     */
    public Integer getSickFamilyDoctorSignLimit(String doctorCode){
        Integer re = 0;//0未达上线 1 已达上限
    public JSONObject getSickFamilyDoctorSignLimit(String doctorCode){
        JSONObject re = new JSONObject();//0未达上线 1 已达上限
        Integer signTotal = 0;
        Integer limitTotal = 0;
        List<AdminTeam> adminTeams = doctorAdminTeamMemberDao.findDoctorTeams(doctorCode);
        int limitNum = 0;
        for(AdminTeam one:adminTeams){
            //获取团队签约数
            Integer signCount = signFamilyDao.findByAdminTeamIdAndStatus(one.getId(),0);
            signTotal+=signCount;
            //获取智业团队签约上线
            String jwCode = one.getMappingCode();//智业服务团队的code
            try{
@ -2637,18 +2639,15 @@ public class SignWebService extends BaseService {
                    com.alibaba.fastjson.JSONObject data = json.getJSONObject("data");
                    if("1".equals(data.getString("CODE"))){
                        int sign_limit_number = data.getJSONArray("DATA").getJSONObject(0).getInteger("SIGN_LIMIT_NUMBER");//签约上线
                        if(signCount>=sign_limit_number){
                            limitNum++;
                        }
                        limitTotal+=sign_limit_number;
                    }
                }
            }catch (Exception e){
                e.printStackTrace();
            }
        }
        if(adminTeams.size()==limitNum){
            re = 1;
        }
        re.put("signTotal",signTotal);
        re.put("limitTotal",limitTotal);
        return re;
    }

+ 137 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/statistics/StatisticsAllService.java

@ -19,6 +19,7 @@ import com.yihu.wlyy.repository.statistics.WlyyQuotaResultDao;
import com.yihu.wlyy.service.BaseService;
import com.yihu.wlyy.service.system.SystemDictService;
import com.yihu.wlyy.util.DateUtil;
import org.apache.commons.collections.map.HashedMap;
import org.json.JSONArray;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
@ -936,6 +937,59 @@ public class StatisticsAllService extends BaseService {
        return resultList;
    }
    /**
     * 获取过去某个日期某个区域一级指标的下级统计(单条记录)
     *
     * @param date
     * @param area
     * @param level
     * @param index
     * @return
     */
    public Map<String, Object> getTodayBeforeLowLevelTotalSingle(String date, String area, int level, String index) throws Exception {
        Map<String, Object> map = new HashedMap();
        List<Map<String, Object>> resultList = new ArrayList<>();
        String areaField = "";
        String lowLevelField = "";
        String lowLevelName = "";
        if (level == 4) {
            // 市级别
            areaField = "city";
            lowLevelField = "city";
            lowLevelName = "city_name";
        } else if (level == 3) {
            // 区、城镇级别
            areaField = "town";
            lowLevelField = "town";
            lowLevelName = "town_name";
        } else if (level == 2) {
            // 机构级别
            areaField = "org_code";
            lowLevelField = "org_code";
            lowLevelName = "org_name";
        } else if (level == 1) {
            throw new Exception("param level error");
        }
        // 查询语句
        String sql = " select " +
                "     ifnull(" + lowLevelField + ",'') code " +
                "     ,ifnull(" + lowLevelName + ",'') 'name' " +
                "     ,ifnull(result,'0') amount" +
                " from  " +
                "     wlyy_quota_result " +
                " where " +
                "     quato_code = '" + index + "' " +
                "   and level1_type = ? and del = '1'" +
                "   and quota_date = ? " +
                "   and " + areaField + " = ? ";
        resultList = jdbcTemplate.queryForList(sql,level, date, area);
        return resultList.get(0);
    }
    /**
     * 获取今天及以后某个区域一级指标的下级统计
@ -1027,6 +1081,38 @@ public class StatisticsAllService extends BaseService {
        return resultList;
    }
    /**
     * 获取今天某个区域一级指标的下级统计(单条记录)
     *
     * @param area
     * @param level
     * @param index
     * @return
     */
    public Map<String, Object> getTodayLowLevelTotalSingle(String area, int level, String index) throws Exception {
        Map<String, Object> data = new HashMap<>();
        String redisData = "";
        try {
            redisData = redisTemplate.opsForValue().get("quota:" + index + ":" + level + ":" + area  + ":" + getQuotaTimeStamp());
        } catch (Exception e) {
            redisData = "";
        }
        if (!StringUtils.isEmpty(redisData)) {
                JSONObject json = new JSONObject(redisData);
                data.put("code", String.valueOf(json.get("code")));
                data.put("name", String.valueOf(json.get("name")));
                data.put("amount", Long.valueOf(String.valueOf(json.get("num"))));
        } else {
            Calendar today = Calendar.getInstance();
            today.add(Calendar.DATE, -1);
            String preDate = new SimpleDateFormat("yyyy-MM-dd").format(today.getTime());
            data = getTodayBeforeLowLevelTotalSingle(preDate, area, level, index);
        }
        return data;
    }
    /**
     * 获取今天某个区域一级指标的下级统计
     *
@ -2455,6 +2541,36 @@ public class StatisticsAllService extends BaseService {
        }
    }
    /**
     * 查询某个级别的某个指标到达量(单条记录)
     *
     * @param date
     * @param area
     * @param level
     * @return
     * @throws Exception
     */
    public JSONObject getLowLevelTotalSingle2(String date, String area, int level) throws Exception {
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        //获取微信关注的未交费
        Map<String, Object> expenseStatus0 = getByIndexSingle(date, area, level, "49",dateFormat);
        //获取微信关注的已交费
        Map<String, Object> expenseStatus1 = getByIndexSingle(date, area, level, "50",dateFormat);
        //获取已缴费的签约数
        Map<String, Object> expenseStatus1Sigjn = getByIndexSingle(date, area, level, "1",dateFormat);
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("name", expenseStatus1Sigjn.get("name"));
        jsonObject.put("code", area);
        Long  weChatAmount0 =  (Long) expenseStatus0.get("amount");
        Long  weChatAmount1 =  (Long) expenseStatus1.get("amount");
        jsonObject.put("weChatAmount0", weChatAmount0);//微信关注未交费数
        jsonObject.put("weChatAmount1", weChatAmount1);//微信关注已交费数
        jsonObject.put("bindRate", getRangeDouuble(weChatAmount0.intValue(), weChatAmount1.intValue(), 2));//微信关注率
        return jsonObject;
    }
    /**
     * 获取某个指标某一天某一level的值   到达量
     *
@ -2484,6 +2600,27 @@ public class StatisticsAllService extends BaseService {
        return returnMap;
    }
    /**
     * 获取某个指标某一天某一level的值 到达量(单条记录)
     *
     * @param date
     * @param area
     * @param level
     * @param index
     * @param dateFormat
     * @return
     * @throws Exception
     */
    private Map<String,Object> getByIndexSingle(String date, String area, int level, String index, SimpleDateFormat dateFormat) throws Exception {
        Map<String,Object> map ;
        if (date.compareTo(dateFormat.format(new Date())) >= 0) {
            map = getTodayLowLevelTotalSingle(area, level, index);
        } else {
            map = getTodayBeforeLowLevelTotalSingle(date, area, level, index);
        }
        return map;
    }
    /**
     * 查询签约人数
     *

+ 0 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/statistics/StatisticsService.java


Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio