1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nanometer.smartlab.dao.OpeUseFlowDao">
  <resultMap id="OpeUseFlow" type="com.nanometer.smartlab.entity.OpeUseFlow">
    <id property="id" column="id"/>
    <result property="reagentCode" column="reagent_code"></result>
    <result property="articleNumber" column="articleNumber"></result>
    <result property="status" column="status" typeHandler="com.nanometer.smartlab.entity.handler.ArrivalStatusHandler"></result>
    <result property="houseId" column="house_id"></result>
    <result property="containerId" column="container_id"></result>
    <result property="userId" column="user_id"></result>
    <result property="userName" column="userName"></result>
    <result property="validFlag" column="valid_flag" typeHandler="com.nanometer.smartlab.entity.handler.ValidFlagHandler"></result>
    <result property="createTime" column="create_time"></result>
    <result property="realstatus" column="realstatus"></result>
    <result property="operateState" column="operatestate"></result>
    <result property="remainder" column="remainder"></result>
    <result property="place" column="place"></result>
    <result property="storeType" column="store_type" typeHandler="com.nanometer.smartlab.entity.handler.StoreTypeHandler"></result>
    <result column="laboratoryName" jdbcType="VARCHAR" property="laboratoryName" />
    <result column="warehouseName" jdbcType="VARCHAR" property="warehouseName" />
    <result column="warehouseContainerName" jdbcType="VARCHAR" property="warehouseContainerName" />
    <result column="warehouseContainerCode" jdbcType="VARCHAR" property="warehouseContainerCode" />
    <result column="laboratoryContainerName" jdbcType="VARCHAR" property="laboratoryContainerName" />
    <result column="laboratoryContainerCode" jdbcType="VARCHAR" property="laboratoryContainerCode" />
    <result column="operatestateName" jdbcType="VARCHAR" property="operatestateName" />
 
    <association property="reagent" javaType="com.nanometer.smartlab.entity.SysReagent">
          <id property="id" column="reagentId"/>
        <result property="name" column="name"></result>
        <result property="cas" column="cas"></result>
        <result property="reagentType" column="reagent_type"></result>
        <result property="reagentCharacter" column="reagent_character"></result>
        <result property="supplierId" column="supplier_id"></result>
        <result property="reagentFormat" column="reagent_format"></result>
        <result property="mainMetering" column="main_metering"></result>
        <result property="reagentUnit" column="reagent_unit"></result>
        <result property="price" column="price"></result>
        <result property="perBox" column="per_box"></result>
        <result property="memo" column="memo"></result>
        <result property="validFlag" column="valid_flag" typeHandler="com.nanometer.smartlab.entity.handler.ValidFlagHandler"></result>
        <result property="createTime" column="create_time"></result>
        <result property="updateTime" column="update_time"></result>
        <result property="supplierName" column="supplierName"></result>
    </association>
  </resultMap>
 
    <update id="updateTimeByCode" parameterType="java.util.Map">
        update ope_use_flow set create_time=now() where reagent_code=#{code} and status=#{status}
    </update>
  <sql id="queryWhereSql">
    <if test="reagentId != null and reagentId != ''">
      and ors.reagent_id = #{reagentId}
    </if>
    <if test="userId != null and userId != ''">
      and oa.user_id = #{userId}
    </if>
    <if test="departmentUserIds != null">
      and oa.user_id in
      <foreach collection="departmentUserIds" item="item" index="index" open="(" separator="," close=")">
          #{item}
       </foreach>
    </if>
    <if test="reagentCode != null and reagentCode != ''">
      and oa.reagent_code like #{reagentCode}
    </if>
    <if test="status != null">
      and oa.status = #{status}
    </if>
    <if test="reagentName != null and reagentName != ''">
      and sr.name like concat('%',#{reagentName},'%')
    </if>
      <if test="houseName != null and houseName != ''">
          and ( l.name like concat('%',#{houseName},'%') or w.name like concat('%',#{houseName},'%') )
      </if>
    <if test="startDate != null and startDate !=''">
        and oa.create_time &gt;= #{startDate}
    </if>
    <if test="endDate != null and endDate !=''">
        and oa.create_time &lt;= #{endDate}
    </if>
  </sql>
 
    <sql id="queryColumns">
        select oa.*,
        sr.*,
        ors.article_number as articleNumber,
        sr.id as reagentId,
        su.name as userName,
        ss.name as supplierName,
        l.name as laboratoryName,
        w.name as warehouseName,
        lc.name as warehouseContainerName,
        wc.name as laboratoryContainerName,
        lc.container_code as warehouseContainerCode,
        wc.container_code as laboratoryContainerCode,
        bm1.meta_value as operatestateName
    </sql>
 
    <sql id="queryJoins">
        left join ope_reagent_status ors on ors.reagent_code = oa.reagent_code
        left join sys_reagent sr on ors.reagent_id = sr.id
        left join sys_supplier as ss on sr.supplier_id = ss.id
        left join sys_user as su on oa.user_id = su.id
        left join sys_warehouse_container wc on wc.id = oa.container_id
        left join sys_warehouse w on w.id = wc.warehouse_id
        left join sys_laboratory_container lc on lc.id = oa.container_id
        left join sys_laboratory l on l.id = lc.laboratory_id
        left join base_meta bm1 on bm1.id = oa.operatestate
    </sql>
 
    <select id="getOpeUseFlowList" parameterType="java.util.Map" resultMap="OpeUseFlow">
        <include refid="queryColumns"/>
        from ope_use_flow as oa
       <include refid="queryJoins"/>
        where oa.valid_flag = 1
        <include refid="queryWhereSql"/>
           order by oa.create_time desc
    <if test="first != null and pageSize != null">
      limit #{first}, #{pageSize}
    </if>
  </select>
 
  <select id="getOpeUseFlowTotalCount" parameterType="java.util.Map" resultType="int">
    select count(1)
    from ope_use_flow as oa
      <include refid="queryJoins"/>
    where oa.valid_flag = 1
    <include refid="queryWhereSql"/>
  </select>
 
  <insert id="insertOpeUseFlow" parameterType="com.nanometer.smartlab.entity.OpeUseFlow">
    insert into ope_use_flow(id, reagent_code, status, house_id, container_id, user_id, remainder, place, store_type, valid_flag, create_time, realstatus, operatestate)
    values (#{id}, #{reagentCode}, #{status}, #{houseId}, #{containerId}, #{userId}, #{remainder}, #{place}, #{storeType}, 1, #{createTime}, #{realstatus},#{operateState})
  </insert>
 
 
    <delete id="deleteByReagentCode" parameterType="java.lang.String" >
        delete from ope_use_flow
        where reagent_code=#{reagentCode}
    </delete>
 
 
    <delete id="deleteByReagentCodeAndStatus" parameterType="java.util.Map" >
        update ope_use_flow
        set valid_flag = #{validFlag}
        where reagent_code = #{reagentCode} and status = #{status}
    </delete>
 
 
</mapper>