小么熊🐻 пре 1 година
родитељ
комит
e35d5d6367

+ 16 - 1
jsjp-admin/src/main/java/com/miaxis/app/controller/tms/CoachInfoController.java

@@ -9,8 +9,11 @@ import com.miaxis.tms.dto.CoachInfoDTO;
 import com.miaxis.tms.dto.CoachInfoIdDTO;
 import com.miaxis.tms.dto.CoachInfoPwDTO;
 import com.miaxis.tms.service.ICoachInfoService;
+import com.miaxis.tms.vo.CoachInfoQRVo;
+import com.miaxis.tms.vo.CoachInfoVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PutMapping;
@@ -38,11 +41,23 @@ public class CoachInfoController extends BaseController {
      */
     @GetMapping("/getCoachInfo")
     @ApiOperation("获取教练员详细信息")
-    public Response<CoachInfo> getCoachInfo(CoachInfoIdDTO coaIdDto) {
+    public Response<CoachInfoVo> getCoachInfo(CoachInfoIdDTO coaIdDto) {
         return Response.success(coachInfoService.getCoachInfoById(coaIdDto));
     }
 
 
+    /**
+     * 获取教练员生成二维码信息
+     */
+    @GetMapping("/getCoachQrInfo")
+    @ApiOperation("获取教练员生成二维码信息")
+    public Response<CoachInfoQRVo> getCoachQrInfo(CoachInfoIdDTO coaIdDto) {
+        CoachInfoVo coachInfoVo = coachInfoService.getCoachInfoById(coaIdDto);
+        CoachInfoQRVo qrVo = new CoachInfoQRVo();
+        BeanUtils.copyProperties(coachInfoVo,qrVo);
+        return Response.success(qrVo);
+    }
+
     /**
      * 教练登录测试
      */

+ 2 - 7
jsjp-admin/src/test/java/com/miaxis/test/CoachTest.java

@@ -1,20 +1,15 @@
 package com.miaxis.test;
 
 import com.miaxis.JsjpApplication;
-import com.miaxis.order.dto.QuerySchoolOrderListDTO;
-import com.miaxis.order.service.IOrderInfoService;
-import com.miaxis.order.vo.QuerySchoolOrderDetailedVo;
-import com.miaxis.tms.domain.CoachInfo;
 import com.miaxis.tms.dto.CoachInfoIdDTO;
 import com.miaxis.tms.service.ICoachInfoService;
+import com.miaxis.tms.vo.CoachInfoVo;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit4.SpringRunner;
 
-import java.util.List;
-
 @SpringBootTest(classes = JsjpApplication.class)
 @RunWith(SpringRunner.class)
 public class CoachTest {
@@ -33,7 +28,7 @@ public class CoachTest {
         coachIdDto.setCity("3501");
         coachIdDto.setId(3501033734l);
 
-        CoachInfo coachInfo = coachInfoService.getCoachInfoById(coachIdDto);
+        CoachInfoVo coachInfo = coachInfoService.getCoachInfoById(coachIdDto);
         System.out.println(coachInfo);
 
     }

+ 3 - 0
jsjp-service/src/main/java/com/miaxis/tms/dto/TmsStudentInfoDTO.java

@@ -19,6 +19,9 @@ public class TmsStudentInfoDTO implements Serializable {
     @ApiModelProperty(value = "教练员ID")
     private String coachId;
 
+    @ApiModelProperty(value = "APPP教练员ID")
+    private String appCoachId;
+
     @ApiModelProperty(value = "地区编号",required = true)
     private String city;
 

+ 25 - 0
jsjp-service/src/main/java/com/miaxis/tms/dto/TmsStudentInfoQrDTO.java

@@ -0,0 +1,25 @@
+package com.miaxis.tms.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+
+@Data
+public class TmsStudentInfoQrDTO implements Serializable {
+
+
+    @ApiModelProperty(value = "id",required = true)
+    private Long id;
+
+    @ApiModelProperty(value = "id",required = true)
+    private Long appCoachId;
+
+
+    @ApiModelProperty(value = "地区编号",required = true)
+    private String city;
+
+
+
+}

+ 2 - 1
jsjp-service/src/main/java/com/miaxis/tms/mapper/CoachInfoMapper.java

@@ -6,6 +6,7 @@ import com.miaxis.tms.domain.CoachInfo;
 import com.miaxis.tms.dto.CoachInfoDTO;
 import com.miaxis.tms.dto.CoachInfoIdDTO;
 import com.miaxis.tms.dto.CoachInfoPwDTO;
+import com.miaxis.tms.vo.CoachInfoVo;
 
 /**
  * <p>
@@ -18,7 +19,7 @@ import com.miaxis.tms.dto.CoachInfoPwDTO;
 public interface CoachInfoMapper extends BaseMapper<CoachInfo> {
 
 
-    CoachInfo getCoachInfoById(CoachInfoIdDTO coaDto);
+    CoachInfoVo getCoachInfoById(CoachInfoIdDTO coaDto);
 
     CoachInfo getCoachBylogin(CoachInfoDTO coaDto);
 

+ 2 - 1
jsjp-service/src/main/java/com/miaxis/tms/service/ICoachInfoService.java

@@ -6,6 +6,7 @@ import com.miaxis.tms.domain.CoachInfo;
 import com.miaxis.tms.dto.CoachInfoDTO;
 import com.miaxis.tms.dto.CoachInfoIdDTO;
 import com.miaxis.tms.dto.CoachInfoPwDTO;
+import com.miaxis.tms.vo.CoachInfoVo;
 
 /**
  * <p>
@@ -19,7 +20,7 @@ public interface ICoachInfoService extends IService<CoachInfo> {
 
 
 
-    CoachInfo getCoachInfoById(CoachInfoIdDTO coaDto);
+    CoachInfoVo getCoachInfoById(CoachInfoIdDTO coaDto);
 
 
     CoachInfo getCoachBylogin(CoachInfoDTO coaDto);

+ 2 - 1
jsjp-service/src/main/java/com/miaxis/tms/service/impl/CoachInfoServiceImpl.java

@@ -10,6 +10,7 @@ import com.miaxis.tms.dto.CoachInfoIdDTO;
 import com.miaxis.tms.dto.CoachInfoPwDTO;
 import com.miaxis.tms.mapper.CoachInfoMapper;
 import com.miaxis.tms.service.ICoachInfoService;
+import com.miaxis.tms.vo.CoachInfoVo;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 
@@ -32,7 +33,7 @@ public class CoachInfoServiceImpl extends ServiceImpl<CoachInfoMapper, CoachInfo
     CoachInfoMapper mapper;
 
     @Override
-    public CoachInfo getCoachInfoById(CoachInfoIdDTO coaDto) {
+    public CoachInfoVo getCoachInfoById(CoachInfoIdDTO coaDto) {
         return  mapper.getCoachInfoById(coaDto);
     }
 

+ 45 - 0
jsjp-service/src/main/java/com/miaxis/tms/vo/CoachInfoQRVo.java

@@ -0,0 +1,45 @@
+package com.miaxis.tms.vo;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 用户对象 user_info
+ *
+ * @author miaxis
+ * @date 2021-01-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value = "CoachInfoQRVo", description = "教练对象 tms_coach_info")
+public class CoachInfoQRVo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "教练Id")
+    private Long id;
+
+    @ApiModelProperty(value = "教练全国统一编号")
+    private String coachNum;
+
+    @ApiModelProperty(value = "姓名")
+    private String name;
+
+    @ApiModelProperty(value = "所属驾校内部ID")
+    private Long schoolId;
+
+    @ApiModelProperty(value = "驾校名称")
+    private String schoolName;
+
+    @ApiModelProperty(value = "城市编号")
+    private String dqbh;
+
+
+}

+ 219 - 0
jsjp-service/src/main/java/com/miaxis/tms/vo/CoachInfoVo.java

@@ -0,0 +1,219 @@
+package com.miaxis.tms.vo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 用户对象 user_info
+ *
+ * @author miaxis
+ * @date 2021-01-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("tms_coach_info")
+@ApiModel(value = "CoachInfo", description = "教练对象 tms_coach_info")
+public class CoachInfoVo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+
+    @ApiModelProperty(value = "教练Id")
+    private Long id;
+
+    @ApiModelProperty(value = "教练全国统一编号")
+    private String coachNum;
+
+
+    /** 备案时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "备案时间")
+    private Date recordDate;
+
+    /**
+     * 所属驾校内部ID
+     */
+    @ApiModelProperty(value = "所属驾校内部ID")
+    private Long schoolId;
+
+    @ApiModelProperty(value = "姓名")
+    private String name;
+
+    /**
+     * 性别(1:男性;2:女性)
+     */
+    @ApiModelProperty(value = "性别(1:男性;2:女性)")
+    private String sex;
+
+    /** 身份证号码 */
+    @ApiModelProperty(value = "身份证号")
+    private String idcard;
+
+    /** 手机号码 */
+    @ApiModelProperty(value = "手机号码")
+    private String mobile;
+
+    /** 联系地址 */
+    @ApiModelProperty(value = "联系地址")
+    private String address;
+
+    /** 照片文件ID(成功上传的教练员头像文件ID) */
+    @ApiModelProperty(value = "照片文件ID(成功上传的教练员头像文件ID)")
+    private Long photo;
+
+    /** 指纹图片ID(成功上传的指纹图片ID) */
+    @ApiModelProperty(value = "指纹图片ID(成功上传的指纹图片ID)")
+    private Long fingerPrint;
+
+
+    /** 指驾驶证号 */
+    @ApiModelProperty(value = "驾驶证号")
+    private Long drilicence;
+
+    /** 驾驶证初领日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "驾驶证初领日期")
+    private Date fstdrilicDate;
+
+    /** 职业资格证号 */
+    @ApiModelProperty(value = "职业资格证号")
+    private String occupationNo;
+
+    /** 职业资格等级(1:一级; 2:二级; 3:三级; 4:四级;) */
+    @ApiModelProperty(value = "职业资格等级(1:一级; 2:二级; 3:三级; 4:四级;)")
+    private String occupationLevel;
+
+    /** 准驾车型(下列编码单选:A1,A2,A3,B1,B2,C1,C2,C3,C4,C5,D,E,F,M,N,P) */
+    @ApiModelProperty(value = "准驾车型(下列编码单选:A1,A2,A3,B1,B2,C1,C2,C3,C4,C5,D,E,F,M,N,P)")
+    private String dripermitted;
+
+
+    /** 准教车型(下列编码单选:A1,A2,A3,B1,B2,C1,C2,C3,C4,C5,D,E,F,M,N,P) */
+    @ApiModelProperty(value = "准教车型(下列编码单选:A1,A2,A3,B1,B2,C1,C2,C3,C4,C5,D,E,F,M,N,P)")
+    private String teachpermitted;
+
+
+    /** 供职状态(0:在职; 1:离职;) */
+    @ApiModelProperty(value = "供职状态(0:在职; 1:离职;)")
+    private String employStatus;
+
+
+    /** 入职日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "入职日期")
+    private Date hireDate;
+
+    /** 离职日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "离职日期")
+    private Date leaveDate;
+
+    /** 创建时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建时间")
+    private Date createDate;
+
+    /** 创建人ID */
+    @ApiModelProperty(value = "创建人ID")
+    private Long createUser;
+
+    /** 创建人真实姓名 */
+    @ApiModelProperty(value = "创建人真实姓名")
+    private String createUserName;
+
+
+    /** 照片地址 */
+    @ApiModelProperty(value = "照片地址")
+    private String photoPath;
+
+    /** 修改时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "修改时间")
+    private Date updateDate;
+
+    /** 修改人ID */
+    @ApiModelProperty(value = "修改人ID")
+    private Long updateUser;
+
+
+    /** 修改人真实姓名 */
+    @ApiModelProperty(value = "修改人真实姓名")
+    private String updateUserName;
+
+    /** 证件类型 */
+    @ApiModelProperty(value = "卡类型:1-ic卡,2-身份证")
+    private String cardType;
+
+
+    @ApiModelProperty(value = "卡物理ID(身份证芯片号等)")
+    private String cardId;
+
+    @ApiModelProperty(value = "状态 1 已注销 0 正常")
+    private String logout;
+
+    @ApiModelProperty(value = "同步状态 1 已同步 0 未同步")
+    private String sync;
+
+    @ApiModelProperty(value = "同步时间")
+    private Date syncTime;
+
+    @ApiModelProperty(value = "密码")
+    private String password;
+
+    @ApiModelProperty(value = "教练归属分组ID 便 于以后使用")
+    private Long groupId;
+
+    @ApiModelProperty(value = "锁定状态 0 未锁定 1 已锁定")
+    private String lockStatus;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "锁定时间/解锁时间")
+    private Date lockDate;
+
+    @ApiModelProperty(value = "协议保存地址")
+    private String protocolPath;
+
+    @ApiModelProperty(value = "审核状态  0 待审核 1 审核通过 2 审核驳回")
+    private String auditStatus;
+
+    /**
+     * 教练类型 0 理论 1 实操 2 理论+实操--------------
+     * 旧1,实操  2,理论  3,实操+理论  4,模拟  5,实操+模拟  6,理论+模拟  7,实操+理论+模拟  8,科目鉴定
+     */
+    @ApiModelProperty(value = "教练类型")
+    private String type;
+
+    @ApiModelProperty(value = "增加毒、酒、醉等88号文件的判断(1:否;2:是)")
+    private String isIllegal;
+
+
+    @ApiModelProperty(value = "健康情况(1,健康;2,亚健康;3,疾病)")
+    private String healthState;
+
+    @ApiModelProperty(value = "籍贯")
+    private String origo;
+
+    /** 文化程度 0:无 1:博士 2:硕士 3:本科 4:大专 5:中专 6:高中 7:初中 8:小学 */
+    @ApiModelProperty(value = "教育程度")
+    private String educationLevel;
+
+    @ApiModelProperty(value = "是否同意协议 0 不同意 1 已同意")
+    private Integer isAgree;
+
+
+    @ApiModelProperty(value = "驾校名称")
+    private String schoolName;
+
+    @ApiModelProperty(value = "城市编号")
+    private String dqbh;
+
+}

+ 13 - 0
jsjp-service/src/main/java/com/miaxis/tms/vo/TmsStudentInfoIdVo.java

@@ -96,6 +96,19 @@ public class TmsStudentInfoIdVo implements Serializable {
     @TableField("SRI_TRAIN_TWO_EXAM_TIME")
     private Date trainTwoExamTime;
 
+    @TableField("SRI_TRAIN_THREE_EXAM_STATUS")
+    private String trainThreeExamStatus;
+
+    @TableField("SRI_TRAIN_THREE_EXAM_TIME")
+    private Date trainThreeExamTime;
+
+
+    @TableField("SRI_TRAIN_FOUR_EXAM_STATUS")
+    private String trainFourExamStatus;
+
+    @TableField("SRI_TRAIN_FOUR_EXAM_TIME")
+    private Date trainFourExamTime;
+
     @TableField("K1")
     private String k1;
 

+ 0 - 1
jsjp-service/src/main/java/com/miaxis/tms/vo/TmsStudentInfoVo.java

@@ -3,7 +3,6 @@ package com.miaxis.tms.vo;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.fasterxml.jackson.annotation.JsonFormat;
-import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 

+ 54 - 2
jsjp-service/src/main/resources/mapper/tms/CoachInfoMapper.xml

@@ -51,10 +51,62 @@
     </resultMap>
 
 
+    <!-- 定义结果映射 -->
+    <resultMap type="com.miaxis.tms.vo.CoachInfoVo" id="CoachInfoVoResultMap">
+        <id property="id" column="TCI_ID"/>
+        <result property="coachNum" column="TCI_COACHNUM"/>
+        <result property="recordDate" column="TCI_RECORD_DATE"/>
+        <result property="schoolId" column="TCI_SCHOOL_ID"/>
+        <result property="name" column="TCI_NAME"/>
+        <result property="sex" column="TCI_SEX"/>
+        <result property="idcard" column="TCI_IDCARD"/>
+        <result property="mobile" column="TCI_MOBILE"/>
+        <result property="address" column="TCI_ADDRESS"/>
+        <result property="photo" column="TCI_PHOTO"/>
+        <result property="fingerPrint" column="TCI_FINGERPRINT"/>
+        <result property="drilicence" column="TCI_DRILICENCE"/>
+        <result property="fstdrilicDate" column="TCI_FSTDRILICDATE"/>
+        <result property="occupationNo" column="TCI_OCCUPATIONNO"/>
+        <result property="occupationLevel" column="TCI_OCCUPATIONLEVEL"/>
+        <result property="dripermitted" column="TCI_DRIPERMITTED"/>
+        <result property="teachpermitted" column="TCI_TEACHPERMITTED"/>
+        <result property="employStatus" column="TCI_EMPLOYSTATUS"/>
+        <result property="hireDate" column="TCI_HIREDATE"/>
+        <result property="leaveDate" column="TCI_LEAVEDATE"/>
+        <result property="createDate" column="TCI_CREATE_DATE"/>
+        <result property="createUser" column="TCI_CREATE_USER"/>
+        <result property="createUserName" column="TCI_CREATE_USER_NAME"/>
+        <result property="photoPath" column="TCI_PHOTO_PATH"/>
+        <result property="updateDate" column="TCI_UPDATE_DATE"/>
+        <result property="updateUser" column="TCI_UPDATE_USER"/>
+        <result property="updateUserName" column="TCI_UPDATE_USER_NAME"/>
+        <result property="cardType" column="TCI_CARD_TYPE"/>
+        <result property="cardId" column="TCI_CARD_ID"/>
+        <result property="logout" column="TCI_LOGOUT"/>
+        <result property="sync" column="TCI_SYNC"/>
+        <result property="syncTime" column="TCI_SYNC_TIME"/>
+        <result property="password" column="TCI_PASSWORD"/>
+        <result property="groupId" column="TCI_GROUP_ID"/>
+        <result property="lockStatus" column="TCI_LOCK_STATUS"/>
+        <result property="lockDate" column="TCI_LOCK_DATE"/>
+        <result property="protocolPath" column="TCI_PROTOCOL_PATH"/>
+        <result property="auditStatus" column="TCI_AUDIT_STATUS"/>
+        <result property="type" column="TCI_TYPE"/>
+        <result property="isIllegal" column="TCI_IS_ILLEGAL"/>
+        <result property="healthState" column="TCI_HEALTH_STATE"/>
+        <result property="origo" column="TCI_ORIGO"/>
+        <result property="educationLevel" column="TCI_EDUCATION_LEVEL"/>
+        <result property="isAgree" column="TCI_IS_AGREE"/>
+        <result property="schoolName" column="TSI_NAME"/>
+        <result property="dqbh" column="TSI_DQBH"/>
+    </resultMap>
+
+
+
 
 
-    <select id="getCoachInfoById"  parameterType="com.miaxis.tms.dto.CoachInfoIdDTO" resultMap="CoachInfoResultMap">
-        select * from tms_coach_info@TMS${city} where tci_id =#{id,jdbcType=NUMERIC}
+    <select id="getCoachInfoById"  parameterType="com.miaxis.tms.dto.CoachInfoIdDTO" resultMap="CoachInfoVoResultMap">
+        select c.*,s.tsi_dqbh,s.tsi_name from tms_coach_info@TMS${city} c join tms_school_info@TMS${city} s on c.tci_school_id = s.tsi_id where c.tci_id = #{id,jdbcType=NUMERIC}
     </select>
 
 

+ 6 - 0
jsjp-service/src/main/resources/mapper/tms/TmsStudentInfoMapper.xml

@@ -51,6 +51,10 @@
         <result property="trainOneExamTime" column="SRI_TRAIN_ONE_EXAM_TIME" />
         <result property="trainTwoExamStatus" column="SRI_TRAIN_TWO_EXAM_STATUS" />
         <result property="trainTwoExamTime" column="SRI_TRAIN_TWO_EXAM_TIME" />
+        <result property="trainThreeExamStatus" column="SRI_TRAIN_THREE_EXAM_STATUS" />
+        <result property="trainThreeExamTime" column="SRI_TRAIN_THREE_EXAM_TIME" />
+        <result property="trainFourExamStatus" column="SRI_TRAIN_FOUR_EXAM_STATUS" />
+        <result property="trainFourExamTime" column="SRI_TRAIN_FOUR_EXAM_TIME" />
         <result property="k1" column="K1" />
         <result property="k2" column="K2" />
         <result property="k3" column="K3" />
@@ -78,6 +82,7 @@
             AND t1.TSO_BUSITYPE in ('0', '1')
             AND t1.TSO_LOGOUT = 0
             <if test="coachId!=null" > AND t1.TSO_COACHID = #{coachId } </if>
+            <if test="appCoachId!=null" > AND t1.TSO_APP_COACH_ID = #{appCoachId } </if>
             <if test="field != null  and field != ''"> AND (t1.Tso_Name like '%' || #{field,jdbcType=VARCHAR} || '%' or t1.TSO_IDCARD like '%' || #{field,jdbcType=VARCHAR} || '%' or t1.Tso_Phone like '%' || #{field,jdbcType=VARCHAR} || '%') </if>
             <if test="schoolId != null "> and t1.TSO_SCHOOL_ID = #{schoolId} </if>
             <if test="state != null  and state != ''"> AND t1.TSO_STATE = #{state}</if>
@@ -110,6 +115,7 @@
                S.TSI_DQBH,
                S.TSI_DQMC,
                t2.Sri_Train_One_Exam_Status,t2.Sri_Train_One_Exam_Time,t2.Sri_Train_TWO_Exam_Status,t2.Sri_Train_Two_Exam_Time,
+               t2.Sri_Train_Three_Exam_Status,t2.Sri_Train_Three_Exam_Time,t2.Sri_Train_Four_Exam_Status,t2.Sri_Train_Four_Exam_Time,
                nvl(trunc(t2.sri_train_one / 45), 0) || '学时' ||nvl((mod(t2.sri_train_one, 45)), 0) || '分钟' as K1,
                nvl(trunc(t2.sri_train_two / 45), 0) || '学时' ||nvl((mod(t2.sri_train_two, 45)), 0) || '分钟' as K2,
                nvl(trunc(t2.sri_train_three / 45), 0) || '学时' ||nvl((mod(t2.sri_train_three, 45)), 0) || '分钟' as K3,