forked from kidgrow-microservices-platform

luliqiang
2020-12-28 f41b3b53dad6a8468fc1ae9babb85a0270124d01
kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/PartnerDockingInfoServiceImpl.java
@@ -3,14 +3,20 @@
import cn.hutool.core.date.DateTime;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.kidgrow.common.constant.SecurityConstants;
import com.kidgrow.common.model.PageResult;
import com.kidgrow.common.model.ResultBody;
import com.kidgrow.common.service.impl.SuperServiceImpl;
import com.kidgrow.common.utils.EncryptUtils;
import com.kidgrow.oprationcenter.mapper.PartnerDockingInfoMapper;
import com.kidgrow.oprationcenter.model.PartnerDockingInfo;
import com.kidgrow.oprationcenter.model.PartnerInfo;
import com.kidgrow.oprationcenter.model.ProductOrder;
import com.kidgrow.oprationcenter.model.ProductOrderRecord;
import com.kidgrow.oprationcenter.service.IPartnerDockingInfoService;
import com.kidgrow.oprationcenter.service.IPartnerInfoService;
import com.kidgrow.oprationcenter.service.IProductOrderRecordService;
import com.kidgrow.oprationcenter.service.IProductOrderService;
import com.kidgrow.usercenter.feign.SysDepartmentService;
import com.kidgrow.usercenter.feign.SysDoctorService;
import com.kidgrow.usercenter.feign.SysHospitalService;
@@ -34,11 +40,12 @@
/**
 * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
 *
 * @version 1.0
 * @Description: 合作商客户对接信息表<br>
 * @Project: 运营中心<br>
 * @CreateDate: Created in 2020-12-08 14:35:33 <br>
 * @Author: <a href="1024030301@kidgrow.com">LuLiQiang</a>
 * @version 1.0
 */
@Slf4j
@Service
@@ -59,8 +66,15 @@
    @Autowired
    IPartnerInfoService partnerInfoService;
    @Autowired
    IProductOrderService productOrderService;
    @Autowired
    IProductOrderRecordService productOrderRecordService;
    /**
     * 列表
     *
     * @param params
     * @return
     */
@@ -73,6 +87,7 @@
    /**
   * 根据PartnerDockingInfo对象当做查询条件进行查询
     *
   * @param partnerDockingInfo
   * @return PartnerDockingInfo
   */
@@ -84,6 +99,7 @@
    /**
     * 根据对接类型版本等信息,创建客户私有云数据库脚本
     *
     * @param partnerDockingInfo
     * @return
     */
@@ -101,9 +117,13 @@
        String partnerSQL = "";
        // 服务器信息SQL文
        String serverSQL= "";
        InputStream fileImput =null;
        // 服务期限和数量的SQL文
        String serviceSQL = "";
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        InputStream fileImput = null;
        // 时间转换格式
        SimpleDateFormat dateTimeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        String createTime = "";
        String updateTime = "";
@@ -123,8 +143,8 @@
                List<SysHospital> 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());
                    createTime = "'" + dateTimeFormat.format(hospitalInfo.getCreateTime()) + "'";
                    updateTime = (hospitalInfo.getUpdateTime() == null) ? "NULL" : "'" + dateTimeFormat.format(hospitalInfo.getUpdateTime())+ "'";
                    hospitalSQL = " INSERT INTO sys_hospital  VALUES (" +
                            hospitalInfo.getId() + ", " +
                            "'" + hospitalInfo.getHospitalName()+ "', " +
@@ -154,17 +174,21 @@
                            "'" + hospitalInfo.getCreateUserName()+ "', " +
                            hospitalInfo.getUpdateUserId() + ", " +
                            "'" + hospitalInfo.getUpdateUserName()+ "', " +
                            "'" + createTime+ "', " +
                            "'" + updateTime+"' " +
                            createTime + ", " +
                            updateTime + " " +
                            ");\n\r";
                } else {
                    return "医院信息读取失败,请重新生成SQL!";
                }
            } else {
                return "医院信息读取失败,请重新生成SQL!";
            }
            // 3、读取科室信息表Department_Info,生成SQL文
            departmentSQL = "INSERT INTO sys_department VALUES ("+
                    +partnerDockingInfo.getDepartmentId()+ ", "+
                    "'" + partnerDockingInfo.getDepartmentName() +"', " +
                    +partnerDockingInfo.getHospitalId() + ", " +
                    "0, 1, 0, '喜高科技', 0 , '喜高科技', " +
                    "'" + DateTime.now().toString() + "', " +
                    "'" + DateTime.now().toString() + "', " +
@@ -189,8 +213,7 @@
                            + doctorInfo.getDepartmentId() + ", " +
                            "'" + doctorInfo.getDepartmentName()+ "', " +
                            "'" + doctorInfo.getDoctorName()+ "', " +
                            "NULL, " +
                            "'" + doctorInfo.getDoctorCcie()+ "', " +
                            "NULL, NULL, " +
                            "'" + doctorInfo.getDoctorTel()+ "', " +
                            "'" + DigestUtils.md5DigestAsHex("123456".getBytes()).replace("-","") +"', " +
                            "'" + doctorInfo.getDoctorRankId()+ "', " +
@@ -201,19 +224,23 @@
                            "0, " +
                            doctorInfo.getDoctorState()+ ", " +
                            doctorInfo.getDoctorType()+ ", " +
                            "0, 1, 0, '喜高科技', 0 , '喜高科技', " +
                            "1, 0, '喜高科技', 0 , '喜高科技', " +
                            "'" + DateTime.now().toString() + "', " +
                            "'" + DateTime.now().toString() + "', " +
                            "1" +
                            ");\n\r";
                } else {
                    return "医生信息读取失败,请先创建管理员,再重新生成SQL!";
                }
            } else {
                return "医生信息读取失败,请先创建管理员,再重新生成SQL!";
            }
            // 5、读取合作商信息表Partner_Info,生成SQL文
            PartnerInfo partnerInfo = partnerInfoService.getById(partnerDockingInfo.getPartnerId());
            if (partnerInfo!= null) {
                createTime = simpleDateFormat.format(partnerInfo.getCreateTime());
                updateTime = simpleDateFormat.format(partnerInfo.getUpdateTime());
                createTime = "'" + dateTimeFormat.format(partnerInfo.getCreateTime()) + "'";
                updateTime = (partnerInfo.getUpdateTime() == null) ? "NULL" : "'" + dateTimeFormat.format(partnerInfo.getUpdateTime()) + "'";
                partnerSQL = "INSERT INTO partner_info VALUES (" +
                        partnerInfo.getId() + ", " +
@@ -230,37 +257,131 @@
                        "'" +partnerInfo.getPartnerUniqueCode() + "', " +
                        "0, 1, "+ partnerInfo.getCreateUserId() + ", " +
                        "'" +partnerInfo.getCreateUserName() + "', " +
                        "'" +createTime + "', " +
                        createTime + ", " +
                        + partnerInfo.getUpdateUserId() + ", " +
                        "'" +partnerInfo.getUpdateUserName() + "', " +
                        "'" +updateTime + "'  " +
                        updateTime +
                        ");\n\r";
            } else {
                return "合作商信息读取失败,请重新生成SQL!";
            }
            // 6、读取服务器信息表Server_Info,生成SQL文
            if ((partnerDockingInfo.getAccessKey() != null) && (!partnerDockingInfo.getAccessKey().isEmpty())) {
                createTime = simpleDateFormat.format(partnerDockingInfo.getCreateTime());
                updateTime = simpleDateFormat.format(partnerDockingInfo.getUpdateTime());
            createTime = "'"+ dateTimeFormat.format(partnerDockingInfo.getCreateTime())+"'";
            updateTime = (partnerDockingInfo.getUpdateTime() == null) ? "NULL" : "'"+ dateTimeFormat.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, " +
                    "NULL, NULL, NULL, NULL, ";
            // 判断机器码是否为空,拼接不同的字符串。
            if ((partnerDockingInfo.getServerMachineCode() == null) || (partnerDockingInfo.getServerMachineCode().isEmpty())) {
                serverSQL += "NULL, ";
            } else {
                serverSQL += "'" + partnerDockingInfo.getServerMachineCode() + "', ";
            }
            serverSQL += "NULL, NULL, " +
                        "'" + partnerDockingInfo.getAccessKey() + "', " +
                        "0, 1, " +
                        partnerDockingInfo.getCreateUserId() + ", " +
                        "'" + partnerDockingInfo.getCreateUserName() + "', " +
                        "'" + createTime + "', " +
                    createTime + ", " +
                        partnerDockingInfo.getUpdateUserId() + ", " +
                        "'" + partnerDockingInfo.getUpdateUserName() + "', " +
                        "'" + updateTime + "', " +
                    updateTime + " " +
                    ");\n\r";
            // 7、Todo 订单、订单明细(服务期限和数量)的数据生成
            // 7.1 订单数据
            Map<String, Object> orderMap = new HashMap<>();
            orderMap.put("hospital_id", partnerDockingInfo.getHospitalId());
            orderMap.put("department_id", partnerDockingInfo.getDepartmentId());
            orderMap.put("enabled", 1);
            orderMap.put("is_del", 0);
            List<ProductOrder> productOrderList = productOrderService.listByMap(orderMap);
            if ((productOrderList != null) && (productOrderList.size() > 0)) {
                for (int i = 0; i < productOrderList.size(); i++) {
                    ProductOrder productOrder = productOrderList.get(i);
                    createTime = "'"+dateTimeFormat.format(productOrder.getCreateTime()) +"'";
                    updateTime = (productOrder.getUpdateTime() == null) ? "NULL" : "'"+dateTimeFormat.format(productOrder.getUpdateTime())+"'";
                    serviceSQL += "INSERT INTO order_record VALUES(" +
                            productOrder.getId() + ", " +
                            productOrder.getHospitalId() + ", " +
                            "'" + productOrder.getHospitalName() + "', " +
                            productOrder.getDepartmentId() + ", " +
                            "'" + productOrder.getDepartmentName() + "', " +
                            "'" + productOrder.getContractNo() + "', " +
                            "'" + productOrder.getContractTitle() + "', " +
                            "'" + dateFormat.format(productOrder.getContractBeginTime()) + "', " +
                            "'" + dateFormat.format(productOrder.getContractEndTime()) + "', " +
                            "'" + dateTimeFormat.format(productOrder.getContractTime()) + "', " +
                            productOrder.getIsDel() + ", " +
                            productOrder.getEnabled() + ", " +
                            createTime + ", " +
                            productOrder.getCreateUserId() + ", " +
                            "'" + productOrder.getCreateUserName() + "', " +
                            updateTime + ", " +
                            productOrder.getUpdateUserId() + ", " +
                            "'" + productOrder.getUpdateUserName() + "' " +
                            ");\n\r";
                    // 7.2 订单明细数据
                    orderMap.clear();
                    orderMap.put("order_id", productOrder.getId());
                    orderMap.put("enabled", 1);
                    orderMap.put("is_del", 0);
                    List<ProductOrderRecord> productOrderRecordList = productOrderRecordService.listByMap(orderMap);
                    if ((productOrderRecordList != null) && (productOrderRecordList.size() > 0)) {
                        for (i = 0; i < productOrderRecordList.size(); i++) {
                            ProductOrderRecord productOrderRecord = productOrderRecordList.get(i);
                            createTime = "'"+dateTimeFormat.format(productOrderRecord.getCreateTime())+"'";
                            updateTime = (productOrderRecord.getUpdateTime() == null) ? "NULL" : "'"+dateTimeFormat.format(productOrderRecord.getUpdateTime())+"'";
                            serviceSQL += "INSERT INTO order_detail VALUES( " +
                                    productOrderRecord.getId() + ", " +
                                    productOrderRecord.getOrderId() + ", " +
                                    productOrderRecord.getProId() + ", " +
                                    productOrderRecord.getProType() + ", " +
                                    "'" + productOrderRecord.getProName() + "', " +
                                    productOrderRecord.getAilightCount() + ", " +
                                    productOrderRecord.getRecordCount() + ", " +
                                    "'" + dateFormat.format(productOrderRecord.getProBegintime()) + "', " +
                                    "'" + dateFormat.format(productOrderRecord.getProEndtime()) + "', " +
                                    productOrderRecord.getIsShare() + ", " +
                                    "0, 0, " +
                                    // 服务验证字符串【合作商ID、医院ID、科室ID、产品ID、开始日期、结束日期、读片数量、报告数量、已使用读片数量、已使用报告数量】
                                    "'" + EncryptUtils.encryptAES((partnerDockingInfo.getPartnerId().toString() + "|" +
                                    partnerDockingInfo.getHospitalId().toString() + "|" +
                                    partnerDockingInfo.getDepartmentId().toString() + "|" +
                                    productOrderRecord.getProId().toString() + "|" +
                                    dateFormat.format(productOrderRecord.getProBegintime()) + "|" +
                                    dateFormat.format(productOrderRecord.getProEndtime()) + "|" +
                                    productOrderRecord.getAilightCount().toString() + "|" +
                                    productOrderRecord.getRecordCount() + "|" +
                                    "0|0"), SecurityConstants.AES_KEY) + "', " +
                                    productOrderRecord.getIsDel() + ", " +
                                    productOrderRecord.getEnabled() + ", " +
                                    createTime + ", " +
                                    productOrderRecord.getCreateUserId() + ", " +
                                    "'" + productOrderRecord.getCreateUserName() + "', " +
                                    updateTime + ", " +
                                    productOrderRecord.getUpdateUserId() + ", " +
                                    "'" + productOrderRecord.getUpdateUserName() + "' " +
                        ");\n\r";
            }
            // 7、所有SQL文合并入基本的SQL中
            dbSql += hospitalSQL + departmentSQL + doctorSQL + partnerSQL +serverSQL;
                    } else {
                        return "没有已开通的服务记录,请先充值,再生成SQL文";
                    }
                }
            } else {
                return "没有已开通的服务记录,请先充值,再生成SQL文";
            }
            // 8、所有SQL文合并入基本的SQL中
            dbSql += hospitalSQL + departmentSQL + doctorSQL + partnerSQL + serverSQL + serviceSQL;
        } catch (Exception e){
            e.printStackTrace();
@@ -273,8 +394,8 @@
        }
        return  dbSql;
    };
    }
    ;
}