package com.kidgrow.oprationcenter.service.impl; import cn.hutool.core.date.DateTime; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.kidgrow.common.model.PageResult; import com.kidgrow.common.model.ResultBody; import com.kidgrow.common.service.impl.SuperServiceImpl; import com.kidgrow.oprationcenter.mapper.PartnerDockingInfoMapper; import com.kidgrow.oprationcenter.model.PartnerDockingInfo; import com.kidgrow.oprationcenter.model.PartnerInfo; import com.kidgrow.oprationcenter.service.IPartnerDockingInfoService; import com.kidgrow.oprationcenter.service.IPartnerInfoService; import com.kidgrow.usercenter.feign.SysDepartmentService; import com.kidgrow.usercenter.feign.SysDoctorService; import com.kidgrow.usercenter.feign.SysHospitalService; import com.kidgrow.usercenter.model.SysDoctor; import com.kidgrow.usercenter.model.SysHospital; import io.undertow.util.FileUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.MapUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.Resource; import org.springframework.core.io.ResourceLoader; import org.springframework.stereotype.Service; import org.springframework.util.DigestUtils; import java.io.IOException; import java.io.InputStream; import java.text.SimpleDateFormat; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020
* @Description: 合作商客户对接信息表
* @Project: 运营中心
* @CreateDate: Created in 2020-12-08 14:35:33
* @Author: LuLiQiang * @version 1.0 */ @Slf4j @Service public class PartnerDockingInfoServiceImpl extends SuperServiceImpl implements IPartnerDockingInfoService { @Autowired ResourceLoader resourceLoader; @Autowired SysHospitalService sysHospitalService; @Autowired SysDepartmentService sysDepartmentService; @Autowired SysDoctorService sysDoctorService; @Autowired IPartnerInfoService partnerInfoService; /** * 列表 * @param params * @return */ @Override public PageResult findList(Map params){ Page page = new Page<>(MapUtils.getInteger(params, "page"), MapUtils.getInteger(params, "limit")); List list = baseMapper.findList(page, params); return PageResult.builder().data(list).code(0).count(page.getTotal()).build(); } /** * 根据PartnerDockingInfo对象当做查询条件进行查询 * @param partnerDockingInfo * @return PartnerDockingInfo */ @Override public PartnerDockingInfo findByObject(PartnerDockingInfo partnerDockingInfo){ return baseMapper.findByObject(partnerDockingInfo); } /** * 根据对接类型版本等信息,创建客户私有云数据库脚本 * @param partnerDockingInfo * @return */ @Override public String createSQL( PartnerDockingInfo partnerDockingInfo ){ // 模板SQL文 String dbSql = ""; // 医院信息SQL文 String hospitalSQL = ""; // 科室信息SQL文 String departmentSQL = ""; // 医生信息SQL文 String doctorSQL = ""; // 合作商信息SQL文 String partnerSQL = ""; // 服务器信息SQL文 String serverSQL= ""; InputStream fileImput =null; SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String createTime = ""; String updateTime = ""; try { // 1、读取基础表结构SQL Resource resource = resourceLoader.getResource("classpath:template//imageServer_template.sql"); fileImput = resource.getInputStream(); //new FileInputStream("./template/imageServer_template.sql"); dbSql = FileUtils.readFile(fileImput); // 2、读取医院信息表Hospital_Info,插入SQL文中 Map hospitalMap = new HashMap<>(); hospitalMap.put("id",partnerDockingInfo.getHospitalId()); ResultBody hospitalResult = sysHospitalService.findAllByMap(hospitalMap); if (hospitalResult.isOk()){ String jsonData = JSONObject.toJSONString(hospitalResult.getData()); List hospitalLists= JSONObject.parseArray(jsonData,SysHospital.class); if (hospitalLists.size()> 0) { SysHospital hospitalInfo = hospitalLists.get(0); createTime = simpleDateFormat.format(hospitalInfo.getCreateTime()); updateTime = simpleDateFormat.format(hospitalInfo.getUpdateTime()); hospitalSQL = " INSERT INTO sys_hospital VALUES (" + hospitalInfo.getId() + ", " + "'" + hospitalInfo.getHospitalName()+ "', " + "'" + hospitalInfo.getHospitalShortName()+ "', " + "'" + hospitalInfo.getHospitalCode()+ "', " + "'" + hospitalInfo.getHospitalTypeId()+ "', " + "'" + hospitalInfo.getHospitalTypeName()+ "', " + "'" + hospitalInfo.getHospitalTel()+ "', " + "'" + hospitalInfo.getHospitalProvince()+ "', " + "'" + hospitalInfo.getHospitalCity()+ "', " + "'" + hospitalInfo.getHospitalArea()+ "', " + "'" + hospitalInfo.getAreaCode()+ "', " + "'" + hospitalInfo.getHospitalLink()+ "', " + "'" + hospitalInfo.getHospitalAdress()+ "', " + "'" + hospitalInfo.getLatitude()+ "', " + "'" + hospitalInfo.getLongitude()+ "', " + "'" + hospitalInfo.getHospitalQualifiedId()+ "', " + "'" + hospitalInfo.getHospitalQualifiedName()+ "', " + "NULL," + "NULL," + "NULL," + "'" + hospitalInfo.getHospitalAbout()+ "', " + hospitalInfo.getHospitalState() + ", " + hospitalInfo.getEnabled() + ", " + hospitalInfo.getIsDel() + ", " + hospitalInfo.getCreateUserId() + ", " + "'" + hospitalInfo.getCreateUserName()+ "', " + hospitalInfo.getUpdateUserId() + ", " + "'" + hospitalInfo.getUpdateUserName()+ "', " + "'" + createTime+ "', " + "'" + updateTime+"' " + ");\n\r"; } } // 3、读取科室信息表Department_Info,生成SQL文 departmentSQL = "INSERT INTO sys_department VALUES ("+ +partnerDockingInfo.getDepartmentId()+ ", "+ "'" + partnerDockingInfo.getDepartmentName() +"', " + "0, 1, 0, '喜高科技', 0 , '喜高科技', " + "'" + DateTime.now().toString() + "', " + "'" + DateTime.now().toString() + "', " + "6 " + ");\n\r"; // 4、读取医生信息表Doctor_Info,生成SQL文 Map doctorMap = new HashMap<>(); doctorMap.put("hospital_id",partnerDockingInfo.getHospitalId()); doctorMap.put("department_id",partnerDockingInfo.getDepartmentId()); doctorMap.put("is_admin_user",1); ResultBody doctorResult = sysDoctorService.getListByMap(doctorMap); if (doctorResult.isOk()) { String jsonData = JSONObject.toJSONString(doctorResult.getData()); List doctorList = JSONObject.parseArray(jsonData, SysDoctor.class); if (doctorList.size() > 0) { SysDoctor doctorInfo = doctorList.get(0); doctorSQL = "INSERT INTO sys_doctor VALUES(" + doctorInfo.getId() + ", " + + doctorInfo.getHospitalId() + ", " + "'" + doctorInfo.getHospitalName()+ "', " + + doctorInfo.getDepartmentId() + ", " + "'" + doctorInfo.getDepartmentName()+ "', " + "'" + doctorInfo.getDoctorName()+ "', " + "NULL, " + "'" + doctorInfo.getDoctorCcie()+ "', " + "'" + doctorInfo.getDoctorTel()+ "', " + "'" + DigestUtils.md5DigestAsHex("123456".getBytes()).replace("-","") +"', " + "'" + doctorInfo.getDoctorRankId()+ "', " + "'" + doctorInfo.getDoctorRank()+ "', " + "'" + doctorInfo.getDoctorOtherLink()+ "', " + "'" + doctorInfo.getDoctorEmail()+ "', " + "'" + doctorInfo.getDoctorAbout()+ "', " + "0, " + doctorInfo.getDoctorState()+ ", " + doctorInfo.getDoctorType()+ ", " + "0, 1, 0, '喜高科技', 0 , '喜高科技', " + "'" + DateTime.now().toString() + "', " + "'" + DateTime.now().toString() + "', " + "1" + ");\n\r"; } } // 5、读取合作商信息表Partner_Info,生成SQL文 PartnerInfo partnerInfo = partnerInfoService.getById(partnerDockingInfo.getPartnerId()); if (partnerInfo!= null) { createTime = simpleDateFormat.format(partnerInfo.getCreateTime()); updateTime = simpleDateFormat.format(partnerInfo.getUpdateTime()); partnerSQL = "INSERT INTO partner_info VALUES (" + partnerInfo.getId() + ", " + "'" +partnerInfo.getPartnerName() + "', " + + partnerInfo.getPartnerType() + ", " + "'" +partnerInfo.getPartnerAddress() + "', " + "'" +partnerInfo.getPartnerProvince() + "', " + "'" +partnerInfo.getPartnerCity() + "', " + "'" +partnerInfo.getPartnerArea() + "', " + "'" +partnerInfo.getPartnerLinkMan() + "', " + "'" +partnerInfo.getPartnerLinkTelephone() + "', " + "'" +partnerInfo.getPartnerBussinessArea() + "', " + "'" +partnerInfo.getPartnerIntroduce() + "', " + "'" +partnerInfo.getPartnerUniqueCode() + "', " + "0, 1, "+ partnerInfo.getCreateUserId() + ", " + "'" +partnerInfo.getCreateUserName() + "', " + "'" +createTime + "', " + + partnerInfo.getUpdateUserId() + ", " + "'" +partnerInfo.getUpdateUserName() + "', " + "'" +updateTime + "' " + ");\n\r"; } // 6、读取服务器信息表Server_Info,生成SQL文 if ((partnerDockingInfo.getAccessKey() != null) && (!partnerDockingInfo.getAccessKey().isEmpty())) { createTime = simpleDateFormat.format(partnerDockingInfo.getCreateTime()); updateTime = simpleDateFormat.format(partnerDockingInfo.getUpdateTime()); serverSQL = "INSERT INTO server_info VALUES(" + partnerDockingInfo.getId() + ", " + partnerDockingInfo.getPartnerId() + ", " + partnerDockingInfo.getHospitalId() + ", " + partnerDockingInfo.getDepartmentId() + ", " + "NULL, NULL, NULL, NULL, " + "'" + partnerDockingInfo.getServerMachineCode() + "', " + "NULL, NULL, " + "'" + partnerDockingInfo.getAccessKey() + "', " + "0, 1, " + partnerDockingInfo.getCreateUserId() + ", " + "'" + partnerDockingInfo.getCreateUserName() + "', " + "'" + createTime + "', " + partnerDockingInfo.getUpdateUserId() + ", " + "'" + partnerDockingInfo.getUpdateUserName() + "', " + "'" + updateTime + "', " + ");\n\r"; } // 7、所有SQL文合并入基本的SQL中 dbSql += hospitalSQL + departmentSQL + doctorSQL + partnerSQL +serverSQL; } catch (Exception e){ e.printStackTrace(); } finally { try { fileImput.close(); } catch (IOException e){ e.printStackTrace(); } } return dbSql; }; }