ソースを参照

居民健康管理服务平台问卷模板管理bug修改及微信统计报表新增签约来源判断

humingfen 7 年 前
コミット
bcdcb63e09

+ 12 - 10
patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/controller/manager/datastatic/WeChatStaticController.java

@ -41,9 +41,10 @@ public class WeChatStaticController extends BaseController {
			@RequestParam(value = "town",required = false)String town,
			@RequestParam(value = "hospital",required = false)String hospital,
			@RequestParam(value = "attention",required = false)String attention,
			@RequestParam(value = "signSource",required = false)String signSource,
			HttpServletResponse response){
		try {
			List<WechatSignVO> datalist = wechatService.geSignWechatDataList(hospital,attention);
			List<WechatSignVO> datalist = wechatService.geSignWechatDataList(hospital,attention, signSource);
			response.setContentType("octets/stream");
			response.setHeader("Content-Disposition", "attachment; filename="+ new String( "signWechatDataList.xls"));
			OutputStream os = response.getOutputStream();
@ -120,7 +121,7 @@ public class WeChatStaticController extends BaseController {
			WritableSheet ws;
			ws = wwb.createSheet("sheet",1);
			
			String[] header = {"居民openid","居民姓名","手机号码","openid更新时间", "身份证号","全科医生", "健管师", "社区医院", "居委会","住址","街道","openid重复数"};
			String[] header = {"居民openid","居民姓名","手机号码","openid更新时间","医疗保险号", "身份证号","全科医生", "健管师", "社区医院", "居委会","住址","街道","openid重复数"};
			int k = 0;
			for (String h : header) {
				addCell(ws, 0, k, h);//表名,行,列,header
@ -133,14 +134,15 @@ public class WeChatStaticController extends BaseController {
				addCell(ws, i, 1, m.getPatientname(),"");
				addCell(ws, i, 2, m.getMobile(),"");
				addCell(ws, i, 3, m.getOpenid_time(),"");
				addCell(ws, i, 4, m.getIdcard(),"");
				addCell(ws, i, 5, m.getDoctor_name(),"");
				addCell(ws, i, 6, m.getDoctor_health_name(),"");
				addCell(ws, i, 7, m.getHospital_name(),"");
				addCell(ws, i, 8, m.getSick_village_name(),"");
				addCell(ws, i, 9, m.getAddress(),"");
				addCell(ws, i, 10, m.getStreet_name(),"");
				addCell(ws, i, 11, m.getTcount(),"");
				addCell(ws, i, 4, m.getMedicare_number(), "");
				addCell(ws, i, 5, m.getIdcard(),"");
				addCell(ws, i, 6, m.getDoctor_name(),"");
				addCell(ws, i, 7, m.getDoctor_health_name(),"");
				addCell(ws, i, 8, m.getHospital_name(),"");
				addCell(ws, i, 9, m.getSick_village_name(),"");
				addCell(ws, i, 10, m.getAddress(),"");
				addCell(ws, i, 11, m.getStreet_name(),"");
				addCell(ws, i, 12, m.getTcount(),"");
				i++;
			}
			wwb.write();

+ 10 - 1
patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/entity/wechat/WechatSignVO.java

@ -11,6 +11,7 @@ public class WechatSignVO {
	private String patientname;
	private String mobile;
	private String openid_time;
	private String medicare_number;
	private String idcard;
	private String doctor_name;
	private String doctor_health_name;
@ -59,7 +60,15 @@ public class WechatSignVO {
	public void setOpenid_time(String openid_time) {
		this.openid_time = openid_time;
	}
	
	public String getMedicare_number() {
		return medicare_number;
	}
	public void setMedicare_number(String medicare_number) {
		this.medicare_number = medicare_number;
	}
	public String getIdcard() {
		return idcard;
	}

+ 24 - 10
patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/service/wechat/WechatService.java

@ -31,7 +31,7 @@ public class WechatService extends BaseService {
	 * @param attention
	 * @return
	 */
	public List<WechatSignVO> geSignWechatDataList(String hospital,String attention) {
	public List<WechatSignVO> geSignWechatDataList(String hospital,String attention, String signSource) {
		Calendar a = Calendar.getInstance();
		int year = a.get(Calendar.YEAR)-1;
		int month = a.get(Calendar.MONTH)+1;
@ -47,6 +47,7 @@ public class WechatService extends BaseService {
					"t.NAME as patientname," +
					"a.mobile," +
					"t.openid_time," +
					"t.medicare_number,"+
					"CONCAT(LEFT (a.idcard,6),'**********',RIGHT (a.idcard,2)) idcard," +
					"a.doctor_name," +
					"a.doctor_health_name," +
@ -54,15 +55,16 @@ public class WechatService extends BaseService {
					"t.address," +
					"a.hospital_name,"+
					"t.street_name FROM (" +
					"SELECT b.patient,b.mobile,b.idcard,b.doctor_name,b.doctor_health_name,b.hospital_name FROM wlyy_sign_family b WHERE b.hospital='"+hospital+"' AND b.sign_year=2017 AND b.STATUS=1 AND b.expenses_status=1) a,wlyy_patient t WHERE t.CODE=a.patient) m," +
					"SELECT b.patient,b.mobile,b.idcard,b.doctor_name,b.doctor_health_name,b.hospital_name FROM wlyy_sign_family b WHERE b.hospital='"+hospital+"' AND b.sign_year='"+year+"' AND b.STATUS=1 AND b.expenses_status=1) a,wlyy_patient t WHERE t.CODE=a.patient) m," +
					"(SELECT t.openid,count(t.openid) tcount FROM wlyy_patient t WHERE t.`code` IN (" +
					"SELECT patient FROM wlyy_sign_family s WHERE s.hospital='"+hospital+"' AND s.sign_year='"+year+"' AND s.expenses_status=1 AND s.STATUS=1) GROUP BY t.openid) n WHERE m.openid=n.openid";
					"SELECT patient FROM wlyy_sign_family s WHERE s.hospital='"+hospital+"' AND s.sign_year='"+year+"' AND s.expenses_status=1 AND s.STATUS=1 AND s.sign_source = '"+signSource+"') GROUP BY t.openid) n WHERE m.openid=n.openid";
		}else if("0".equals(attention)){
			sql = "SELECT m.*FROM (" +
			sql = "SELECT m.* FROM (" +
					"SELECT a.mobile," +
					"a.code as patientcode ," +
					"a.NAME as patientname ," +
					"a.openid_time," +
					"a.medicare_number," +
					"CONCAT(LEFT (a.idcard,6),'**********',RIGHT (a.idcard,2)) idcard," +
					"b.doctor_name," +
					"b.doctor_health_name," +
@ -70,8 +72,8 @@ public class WechatService extends BaseService {
					"a.address," +
					"a.sick_village_name," +
					"a.street_name FROM (" +
					"SELECT t.CODE,t.NAME,t.address,t.sick_village_name,t.street_name,idcard,mobile,openid_time FROM wlyy_patient t WHERE t.`code` IN (" +
					"SELECT patient FROM wlyy_sign_family s WHERE s.hospital='"+hospital+"' AND s.sign_year='"+year+"' AND s.expenses_status=1 AND s.STATUS=1 AND s.expenses_time IS NOT NULL) AND t.openid IS NULL) a,wlyy_sign_family b WHERE b.hospital='"+hospital+"' AND b.sign_year=2017 AND b.STATUS=1 AND b.expenses_status=1 AND a.CODE=b.patient AND b.expenses_time IS NOT NULL) m";
					"SELECT t.CODE,t.NAME,t.address,t.sick_village_name,t.street_name,t.medicare_number,idcard,mobile,openid_time FROM wlyy_patient t WHERE t.`code` IN (" +
					"SELECT patient FROM wlyy_sign_family s WHERE s.hospital='"+hospital+"' AND s.sign_year='"+year+"' AND s.expenses_status=1 AND s.STATUS=1 AND s.expenses_time IS NOT NULL) AND t.openid IS NULL) a,wlyy_sign_family b WHERE b.hospital='"+hospital+"' AND b.sign_year='"+year+"' AND b.STATUS=1 AND b.expenses_status=1 AND a.CODE=b.patient AND b.expenses_time IS NOT NULL AND b.sign_source ='"+signSource+"') m";
		}
		
@ -86,6 +88,12 @@ public class WechatService extends BaseService {
	 */
	public List<WechatTotalVO> hosipitaTotalData() {
		List<WechatTotalVO> list = new ArrayList<>();
		Calendar a = Calendar.getInstance();
		int year = a.get(Calendar.YEAR)-1;
		int month = a.get(Calendar.MONTH)+1;
		if(month >= 7){
			year = a.get(Calendar.YEAR);
		}
		String sql  = "SELECT " +
				"a1.hospital_name as name," +
				"(a1.count/a2.count) as attRate," +
@ -95,10 +103,10 @@ public class WechatService extends BaseService {
				"FROM wlyy_patient p,wlyy_sign_family sf WHERE p.idcard=sf.idcard AND sf.type=2 " +
				"AND sf.STATUS> 0 AND LENGTH(sf.hospital)=10 " +
				"AND sf.admin_team_code IS NOT NULL AND p.openid IS NOT NULL " +
				"AND p.openid_time<= '"+ DateUtil.dateToStrShort(new Date())+"' AND sf.sign_year='2017' GROUP BY sf.hospital ORDER BY count desc) a1," +
				"AND p.openid_time<= '"+ DateUtil.dateToStrShort(new Date())+"' AND sf.sign_year='"+year+"' GROUP BY sf.hospital ORDER BY count desc) a1," +
				"(SELECT a.hospital hospital,count(a.id) count,a.hospital_name hospital_name " +
				"FROM wlyy_sign_family a WHERE STATUS IN (1,2) AND a.type=2 AND expenses_status=1 " +
				"AND a.expenses_time<= '"+ DateUtil.dateToStrShort(new Date())+"' AND a.sign_year='2017' GROUP BY a.hospital ORDER BY count desc) a2 WHERE a1.hospital=a2.hospital";
				"AND a.expenses_time<= '"+ DateUtil.dateToStrShort(new Date())+"' AND a.sign_year='"+year+"' GROUP BY a.hospital ORDER BY count desc) a2 WHERE a1.hospital=a2.hospital";
	
		list =  jdbcTemplate.query(sql,new BeanPropertyRowMapper(WechatTotalVO.class));
		return list ;
@ -111,6 +119,12 @@ public class WechatService extends BaseService {
	 */
	public List<WechatTotalVO> townTotalData() {
		List<WechatTotalVO> list = new ArrayList<>();
		Calendar a = Calendar.getInstance();
		int year = a.get(Calendar.YEAR)-1;
		int month = a.get(Calendar.MONTH)+1;
		if(month >= 7){
			year = a.get(Calendar.YEAR);
		}
		String sql  = "SELECT " +
				"a1.town_name as name," +
				"(a1.count/a2.count) as attRate," +
@ -121,10 +135,10 @@ public class WechatService extends BaseService {
				"FROM wlyy_patient p,wlyy_sign_family sf,dm_hospital h WHERE p.idcard=sf.idcard " +
				"AND sf.type=2 AND sf.STATUS> 0 AND LENGTH(sf.hospital)=10 AND sf.hospital=h.CODE " +
				"AND sf.admin_team_code IS NOT NULL AND p.openid IS NOT NULL " +
				"AND p.openid_time< '"+ DateUtil.dateToStrShort(new Date())+"' AND sf.sign_year='2017' GROUP BY h.town ORDER BY count desc) a1,(" +
				"AND p.openid_time< '"+ DateUtil.dateToStrShort(new Date())+"' AND sf.sign_year='"+year+"' GROUP BY h.town ORDER BY count desc) a1,(" +
				"SELECT count(a.id) count,h.town_name town_name,h.town town FROM wlyy_sign_family a,dm_hospital h" +
				" WHERE STATUS IN (1,2) AND a.type=2 AND expenses_status=1 AND a.hospital=h.CODE " +
				"AND a.expenses_time< '"+ DateUtil.dateToStrShort(new Date())+"' AND a.sign_year='2017' GROUP BY h.town) a2 WHERE a1.town=a2.town";
				"AND a.expenses_time< '"+ DateUtil.dateToStrShort(new Date())+"' AND a.sign_year='"+year+"' GROUP BY h.town) a2 WHERE a1.town=a2.town";
		
		list =  jdbcTemplate.query(sql,new BeanPropertyRowMapper(WechatTotalVO.class));
		return list ;

+ 1 - 2
patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/questionnaire/template/add_template.jsp

@ -40,7 +40,7 @@
		.div-combox{position: absolute; left: 77px;top: -13px;}
		.f-tac{text-align: center}
		.f-dn{display: none;}
		#div-form{width: 500px;position: absolute;top: 50%;margin-top: -102px;left: 50%;margin-left: -250px;}
		#div-form{width: 500px;position: absolute;top: 35%;margin-top: -102px;left: 50%;margin-left: -250px;}
		.div-next .position-relative{display: inline-block;position: relative;top: -3px;}
		.div-textarea{height: 148px; border: 1px solid #dcdcdc;padding:5px;}
		.div-label{top: 7px;display: inline-block;}
@ -102,7 +102,6 @@
					<input type="text" id="inp_diseaseType" class="ajax useTitle" required-title="疾病类型不能为空">
				</div>
			</div>
		</div>
	</div>

+ 11 - 6
patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/static/static_wechat.jsp

@ -14,19 +14,23 @@
            <div style="height:auto;width:auto;border:#dde7f1 1px solid;">
                <div class="m-form-group f-mt10" id="we_export_div">
                    <div class="m-form-control f-ml15" style="display: none">
                        <input type="text" id="inp_device_name" placeholder="请选择城市" class="f-ml10"/></div>
                    <br>
                        <input type="text" id="inp_device_name" placeholder="请选择城市" class="f-ml10"/>
                    </div>
                    <br>
                    <div class="m-form-control f-ml15">
                    <input type="text" id="inp_categoryCode" placeholder="请选择市区" class="f-ml10"/>
                        <input type="text" id="inp_categoryCode" placeholder="请选择市区" class="f-ml10"/>
                    </div>
                    <br>
                    <div class="m-form-control f-ml15">
                    <input type="text" id="inp_hos" placeholder="请选择机构" class="f-ml10"/>
                        <input type="text" id="inp_hos" placeholder="请选择机构" class="f-ml10"/>
                    </div>
                    <br>
                    <div class="m-form-control f-ml15">
                    <input type="text" id="inp_att" placeholder="请选择关注状态" class="f-ml10"/>
                    <div class="m-form-control f-ml15 essential">
                        <input type="text" id="inp_att" placeholder="请选择关注状态" class="required useTitle f-ml10" required-title="关注状态不能为空"  />
                    </div>
                    <br>
                    <div class="m-form-control f-ml15 essential">
                        <input type="text" id="inp_signSource" placeholder="请选择签约来源" class="required useTitle f-ml10" required-title="签约来源不能为空" />
                    </div>
                    <br>
                    <div id="export_list" class="l-button u-btn u-btn-primary u-btn-small f-ib f-vam  f-ml10" >
@ -37,6 +41,7 @@
                </div>
            </div>
        </div>
    </div>
        <div style="font-family:微软雅黑;font-size:Small;display:block;clear:left;padding:0;margin:0;margin-left: 5px">
            <div style="position:relative;display:inline;left:10px;top:8px;white-space:nowrap;text-align:center;background-color:#ffffff;font-weight:bold">社区微信关注率</div>

+ 25 - 0
patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/static/static_wechat_js.jsp

@ -15,6 +15,7 @@
            // 通用工具类库
            var retrieve = null;
            var inpStarDate = null,inpEndDate = null;
            var jValidation = $.jValidation;
            retrieve = {
                url: {
@ -35,6 +36,7 @@
                $inpStatus:$('#inp_status'),//状态
                $inpStarDate: $('#inp_star_date'),
                $inpEndDate: $('#inp_end_date'),
                $signSource: $('#inp_signSource'),//签约来源
                dnc: null,
                ccc: null,
@ -72,6 +74,15 @@
                        valueField: 'statusId',
                    });
                    //签约来源拉框
                    retrieve.signSourceBox = $('#inp_signSource').ligerComboBox({
                        width: 150,
                        data: [
                            {text: '社区签约', id: '1'},
                            {text: '移动签约', id: '2'},
                        ],
                        initIsTriggerEvent: false,
                    });
                    this.bindEvents();
@ -154,6 +165,13 @@
                    }
                },
                bindEvents: function () {
                    var validator = new jValidation.Validation($("#we_export_div"), {
                        immediate: true, onSubmit: false,
                        onElementValidateForAjax: function (elm) {
                        }
                    });
                    var me = this;
                    //城市下拉
                    me.$inpDeviceName.on( 'change', function () {
@ -169,6 +187,9 @@
                    });
                    //关注量详情导出
                    me.$btnExportList.on('click',function () {
                        if (!validator.validate()) {
                            return;
                        }
                        //定义一个form表单
                        var myform = $("<form></form>");
                        myform.attr('method','post')
@ -186,10 +207,14 @@
                        var attention = $("<input type='hidden' name='attention' />")
                        attention.attr('value',$("#inp_att_val").val());
                        //签约来源
                        var signSource = $("<input type='hidden' name='signSource' />")
                        signSource.attr('value',$("#inp_signSource_val").val());
                        myform.append(town);
                        myform.append(hospital);
                        myform.append(attention);
                        myform.append(signSource);
                        myform.appendTo('body').submit(); //must add this line for higher html spec
                    });