kongzy
2024-07-01 47a751cb301d05276ae5d75145d57b2d090fe4e1
src/main/java/com/nanometer/smartlab/dao/OpeApplyDao.xml
@@ -4,13 +4,14 @@
  <resultMap id="OpeApply" type="com.nanometer.smartlab.entity.OpeApply">
    <id property="id" column="id"/>
      <result property="firstUser" column="first_user"></result>
      <result property="firName" column="firName"></result>
      <result property="secondUserName" column="secondUserName"></result>
      <result property="reagentId" column="reagent_id"></result>
      <result property="firName" column="fir_name"></result>
      <result property="secondUserName" column="second_user_name"></result>
    <result property="applyCode" column="apply_code"></result>
    <result property="num" column="num"></result>
    <result property="deadline" column="deadline"></result>
    <result property="applyUserId" column="apply_user_id"></result>
    <result property="objective" column="objective"></result>
    <result property="projectId" column="project_id"></result>
    <result property="status" column="status" typeHandler="com.nanometer.smartlab.entity.handler.ApplyStatusHandler"></result>
    <result property="createTime" column="create_time"></result>
    <result property="updateTime" column="update_time"></result>
@@ -18,45 +19,49 @@
    <result property="approveUserId" column="approve_user_id"></result>
    <result property="beforeApproveUserId" column="before_approve_user_id"></result>
    <result property="memo" column="memo"></result>
    <result property="applyUserName" column="applyUserName"></result>
    <result property="applyUserProject" column="applyUserProject"></result>
    <result property="applyUserDepartment" column="applyUserDepartment"></result>
    <result property="approveUserName" column="approveUserName"></result>
    <result property="applyUserName" column="apply_user_name"></result>
    <result property="applyUserProject" column="apply_user_project"></result>
    <result property="applyUserDepartment" column="apply_user_department"></result>
    <result property="approveUserName" column="approve_user_name"></result>
    <result property="startReagentCode" column="start_reagent_code"></result>
    <result property="endReagentCode" column="end_reagent_code"></result>
    <result property="arrivalNum" column="arrival_num"></result>
      <result property="articleNumber" column="article_number"></result>
      <result property="houseId" column="house_id"></result>
      <result property="containerId" column="container_id"></result>
      <result property="placeId" column="place"></result>
      <result property="place" column="place"></result>
      <result property="applyGoal" column="apply_goal"></result>
      <result property="applyPrice" column="apply_price"></result>
      <result property="stockFlag" column="stock_flag"></result>
    <association property="reagent" javaType="com.nanometer.smartlab.entity.SysReagent">
      <id property="id" column="reagent_id"></id>
      <result property="name" column="reagentName"></result>
      <result property="cas" column="reagentCas"></result>
      <result property="reagentType" column="reagentType"></result>
      <result property="reagentCharacter" column="reagentCharacter"></result>
      <result property="supplierId" column="reagentSupplierId"></result>
      <result property="reagentFormat" column="reagentFormat"></result>
      <result property="mainMetering" column="reagentMainMetering"></result>
      <result property="reagentUnit" column="reagentUnit"></result>
      <result property="price" column="reagentPrice"></result>
      <result property="perBox" column="reagentPerBox"></result>
      <result property="memo" column="reagentMemo"></result>
      <result property="validFlag" column="reagentValidFlag"></result>
      <result property="createTime" column="reagentCreateTime"></result>
      <result property="updateTime" column="reagentUpdateTime"></result>
      <result property="supplierName" column="supplierName"></result>
      <result property="productSn" column="reagentProductSn"></result>
      <result property="controlProducts" column="controlProducts"></result>
      <result property="dangerousFlag" column="reagentDangerousFlag" typeHandler="com.nanometer.smartlab.entity.handler.DangerousFlagHandler"></result>
      <result property="productHome" column="productHome"></result>
      <result property="productHomeName" column="productHomeName"></result>
      <result property="name" column="reagent_name"></result>
      <result property="cas" column="reagent_cas"></result>
      <result property="reagentType" column="reagent_type"></result>
      <result property="reagentCharacter" column="reagent_character"></result>
      <result property="supplierId" column="reagent_supplier_id"></result>
      <result property="reagentFormat" column="reagent_format"></result>
      <result property="mainMetering" column="reagent_main_metering"></result>
      <result property="reagentUnit" column="reagent_unit"></result>
      <result property="price" column="reagent_price"></result>
      <result property="perBox" column="reagent_per_box"></result>
      <result property="memo" column="reagent_memo"></result>
      <result property="validFlag" column="reagent_valid_flag"></result>
      <result property="createTime" column="reagent_create_time"></result>
      <result property="updateTime" column="reagent_update_time"></result>
      <result property="supplierName" column="supplier_name"></result>
      <result property="productSn" column="reagent_product_sn"></result>
      <result property="controlProducts" column="control_products"></result>
      <result property="dangerousFlag" column="reagent_dangerous_flag" typeHandler="com.nanometer.smartlab.entity.handler.DangerousFlagHandler"></result>
      <result property="productHome" column="product_home"></result>
      <result property="type" column="type"></result>
      <result property="supplierFlag" column="supplierFlag"></result>
      <result property="supplierFlag" column="supplier_flag"></result>
    </association>
      <association property="order" javaType="com.nanometer.smartlab.entity.OpeOrder">
          <id property="id" column="order_id"></id>
          <result property="orderName" column="order_name"></result>
          <result property="orderCode" column="order_code"></result>
      </association>
  </resultMap>
   <resultMap id="OpeApplyReserve" type="com.nanometer.smartlab.entity.OpeApplyReserve">
@@ -69,31 +74,32 @@
    <result property="applyUserId" column="apply_user_id"></result>
    <result property="applyUser" column="apply_user"></result>
    <result property="arrivalTime" column="arrival_time"></result>
    <result property="articleNumber" column="articleNumber"></result>
    <result property="projectManage" column="projectManage"/>
    <result property="project" column="project"/>
    <result property="articleNumber" column="article_number"></result>
    <result property="projectManage" column="project_manage"/>
    <result property="projectName" column="project_name"/>
   <result property="startReagentCode" column="start_reagent_code"></result>
   <result property="endReagentCode" column="end_reagent_code"></result>
    <association property="reagent" javaType="com.nanometer.smartlab.entity.SysReagent">
      <id property="id" column="reagent_id"></id>
      <result property="name" column="reagentName"></result>
      <result property="cas" column="reagentCas"></result>
      <result property="reagentType" column="reagentType"></result>
      <result property="reagentCharacter" column="reagentCharacter"></result>
      <result property="supplierId" column="reagentSupplierId"></result>
      <result property="reagentFormat" column="reagentFormat"></result>
      <result property="mainMetering" column="reagentMainMetering"></result>
      <result property="reagentUnit" column="reagentUnit"></result>
      <result property="price" column="reagentPrice"></result>
      <result property="perBox" column="reagentPerBox"></result>
      <result property="memo" column="reagentMemo"></result>
      <result property="validFlag" column="reagentValidFlag"></result>
      <result property="createTime" column="reagentCreateTime"></result>
      <result property="updateTime" column="reagentUpdateTime"></result>
      <result property="supplierName" column="supplierName"></result>
      <result property="productSn" column="reagentProductSn"></result>
      <result property="controlProducts" column="controlProducts"></result>
      <result property="dangerousFlag" column="reagentDangerousFlag" typeHandler="com.nanometer.smartlab.entity.handler.DangerousFlagHandler"></result>
      <result property="productHome" column="productHome"></result>
      <result property="productHomeName" column="productHomeName"></result>
        <id property="id" column="reagent_id"></id>
        <result property="name" column="reagent_name"></result>
        <result property="cas" column="reagent_cas"></result>
        <result property="reagentType" column="reagent_type"></result>
        <result property="reagentCharacter" column="reagent_character"></result>
        <result property="supplierId" column="reagent_supplier_id"></result>
        <result property="reagentFormat" column="reagent_format"></result>
        <result property="mainMetering" column="reagent_main_metering"></result>
        <result property="reagentUnit" column="reagent_unit"></result>
        <result property="price" column="reagent_price"></result>
        <result property="perBox" column="reagent_per_box"></result>
        <result property="memo" column="reagent_memo"></result>
        <result property="validFlag" column="reagent_valid_flag"></result>
        <result property="createTime" column="reagent_create_time"></result>
        <result property="updateTime" column="reagent_update_time"></result>
        <result property="supplierName" column="supplier_name"></result>
        <result property="productSn" column="reagent_product_sn"></result>
        <result property="controlProducts" column="control_products"></result>
        <result property="dangerousFlag" column="reagent_dangerous_flag" typeHandler="com.nanometer.smartlab.entity.handler.DangerousFlagHandler"></result>
        <result property="productHome" column="product_home"></result>
    </association>
  </resultMap>
@@ -139,19 +145,21 @@
        </if>
   </sql>
  <select id="getOpeApply" parameterType="java.lang.String"  resultMap="OpeApply" >
  <select id="getOpeApply"  resultMap="OpeApply" >
    select oa.*,sys.name as secondUserName,
    sr.name as reagentName, sr.cas as reagentCas, sr.reagent_type as reagentType, sr.reagent_character as reagentCharacter, sr.supplier_id as reagentSupplierId, sr.dangerous_flag as reagentDangerousFlag,
    sr.reagent_format as reagentFormat, sr.main_metering as reagentMainMetering, sr.reagent_unit as reagentUnit, sr.price as reagentPrice, sr.per_box as reagentPerBox,
    sr.memo as reagentMemo, sr.valid_flag as reagentValidFlag, sr.create_time as reagentCreateTime, sr.update_time as reagentUpdateTime,sr.control_products as controlProducts,sr.product_sn as reagentProductSn,sr.product_home as productHome,
    ss.name as supplierName,
    su.name as applyUserName,
    su.project as applyUserProject,
    bm2.meta_value as applyUserDepartment,
    sr.name as reagent_name, sr.cas as reagent_cas ,sr.reagent_type as reagent_type, sr.reagent_character as reagent_character,
    sr.supplier_id as reagent_supplier_id, sr.dangerous_flag as reagent_dangerous_flag,
    sr.reagent_format as reagent_format, sr.main_metering as reagent_main_metering, sr.reagent_unit as reagent_unit,
    sr.price as reagent_price, sr.per_box as reagent_per_box,sr.memo as reagent_memo, sr.valid_flag as reagent_valid_flag,
    sr.create_time as reagent_create_time, sr.update_time as reagent_update_time,sr.control_products as control_products,
    sr.product_sn as reagent_product_sn,sr.product_home as product_home,
    ss.name as supplier_name,
    su.name as apply_user_name,
    sp.project_name as apply_user_project,
    bm2.meta_value as apply_user_department,
    fir.name as firName,
    suApprove.name as approveUserName,
    bm.meta_value as productHomeName,
    ss.valid_flag  as supplierFlag,
    suApprove.name as approve_user_name,
    ss.valid_flag  as supplier_flag,
    sr.type as type
    from ope_apply as oa
    left join sys_reagent sr on oa.reagent_id = sr.id
@@ -160,25 +168,26 @@
    left join sys_user as suApprove on oa.approve_user_id = suApprove.id
    left join sys_user as sys on sys.id=oa.before_approve_user_id
    left join sys_user as fir on fir.id=oa.first_user
    left join base_meta as bm on sr.product_home = bm.id
     left join base_meta as bm2 on bm2.id = su.department
    left join sys_project sp on sp.id=su.project_id=sp.id
    where oa.id = #{id} and oa.valid_flag = 1
  </select>
  <select id="getOpeApplyList" parameterType="java.util.Map" resultMap="OpeApply">
    select oa.*,sys.name as secondUserName,
    sr.name as reagentName,sr.price as reagentPrice ,sr.cas as reagentCas, sr.reagent_type as reagentType, sr.reagent_character as reagentCharacter, sr.supplier_id as reagentSupplierId,
    sr.reagent_format as reagentFormat, sr.main_metering as reagentMainMetering, sr.reagent_unit as reagentUnit, sr.per_box as reagentPerBox,
    sr.memo as reagentMemo, sr.valid_flag as reagentValidFlag, sr.create_time as reagentCreateTime, sr.update_time as reagentUpdateTime, sr.product_sn as reagentProductSn,
    sr.dangerous_flag as reagentDangerousFlag,sr.control_products as controlProducts,sr.product_home as productHome,
    ss.name as supplierName,
    su.name as applyUserName,
    su.project as applyUserProject,
    bm2.meta_value as applyUserDepartment,
    suApprove.name as approveUserName,
    bm.meta_value as productHomeName,
    fir.name as firName,
    ss.valid_flag  as supplierFlag,
    select oa.*,sys.name as second_user_name,
    sr.name as reagent_name,sr.price as reagent_price ,sr.cas as reagent_cas, sr.reagent_type as reagent_type,
    sr.reagent_character as reagent_character, sr.supplier_id as reagent_supplier_id,
    sr.reagent_format as reagent_format, sr.main_metering as reagent_main_metering, sr.reagent_unit as reagent_unit,
    sr.per_box as reagent_per_box,sr.memo as reagent_memo, sr.valid_flag as reagent_valid_flag, sr.create_time as reagent_create_time,
    sr.update_time as reagent_update_time, sr.product_sn as reagent_product_sn,
    sr.dangerous_flag as reagent_dangerous_flag,sr.control_products as control_products,sr.product_home as product_home,
    ss.name as supplier_name,
    su.name as apply_user_name,
    sp.project_name as apply_user_project,
    bm2.meta_value as apply_user_department,
    suApprove.name as approve_user_name,
    fir.name as fir_name,
    ss.valid_flag  as supplier_flag,
    sr.type as type
    from ope_apply as oa
    left join sys_reagent sr on oa.reagent_id = sr.id
@@ -187,15 +196,14 @@
    left join sys_user as suApprove on oa.approve_user_id = suApprove.id
    left join sys_user as sys on sys.id=oa.before_approve_user_id
    left join sys_user as fir on fir.id=oa.first_user
    left join base_meta as bm on sr.product_home = bm.id
    left join base_meta as bm1 on bm1.id = sr.control_products
    left join base_meta as bm2 on bm2.id = su.department
    left join sys_project as sp on sp.id=su.project_id
    where oa.valid_flag = 1
    <if test="isShow != null and isShow ==0">
        and (ss.valid_flag = 1 or sr.type = 0)
    </if>
      <if test="controlProduct != null and controlProduct != ''">
          and bm1.meta_value like concat("%",#{controlProduct},"%")
          and sr.control_products like concat("%",#{controlProduct},"%")
      </if>
    <include refid="queryWhereSql"/>
    order by oa.create_time desc
@@ -213,39 +221,37 @@
      left join sys_user as suApprove on oa.approve_user_id = suApprove.id
      left join sys_user as sys on sys.id=oa.before_approve_user_id
      left join sys_user as fir on fir.id=oa.first_user
      left join base_meta as bm on sr.product_home = bm.id
      left join base_meta as bm1 on bm1.id = sr.control_products
      where oa.valid_flag = 1
      <if test="isShow != null and isShow ==0">
          and (ss.valid_flag = 1 or sr.type = 0)
      </if>
      <if test="controlProduct != null and controlProduct != ''">
          and bm1.meta_value like concat("%",#{controlProduct},"%")
          and sr.control_products like concat("%",#{controlProduct},"%")
      </if>
    <include refid="queryWhereSql"/>
  </select>
  <insert id="insertOpeApply" parameterType="com.nanometer.smartlab.entity.OpeApply">
    insert into ope_apply(id, apply_code, reagent_id, num, deadline, apply_user_id, objective, status, approve_user_id, memo, valid_flag, create_time, update_time)
    values (#{id}, #{applyCode}, #{reagent.id}, #{num}, #{deadline}, #{applyUserId}, #{objective}, #{status}, #{approveUserId}, #{memo}, 1, now(), now())
  <insert id="insertOpeApply" parameterType="com.nanometer.smartlab.entity.OpeApply" useGeneratedKeys = "true" keyProperty = "id">
    insert into ope_apply( apply_code, reagent_id, num, deadline, apply_user_id, project_id, status, approve_user_id, memo, valid_flag, create_time, update_time)
    values ( #{applyCode}, #{reagent.id}, #{num}, #{deadline}, #{applyUserId}, #{projectId}, #{status}, #{approveUserId}, #{memo}, 1, now(), now())
  </insert>
  <insert id="insertOpeApplyList" parameterType="java.util.List">
  <insert id="insertOpeApplyList" parameterType="java.util.List" >
      insert into ope_apply
      (id, apply_code, reagent_id, num, deadline, apply_user_id, objective, status, approve_user_id, memo, valid_flag, create_time, update_time,apply_goal,apply_price,first_user)
      (apply_code, reagent_id, num, deadline, apply_user_id, project_id, status, approve_user_id, memo, valid_flag, create_time, update_time,apply_goal,apply_price,first_user)
      values
      <foreach collection="list" item="opeApply" separator=",">
          (#{opeApply.id}, #{opeApply.applyCode}, #{opeApply.reagent.id}, #{opeApply.num}, #{opeApply.deadline},
          #{opeApply.applyUserId}, #{opeApply.objective}, #{opeApply.status}, #{opeApply.approveUserId}, #{opeApply.memo}, 1, now(), now(),#{opeApply.applyGoal},#{opeApply.reagent.price},#{opeApply.approveUserId})
      <foreach collection="opeApplyList" item="opeApply" separator=",">
          ( #{opeApply.applyCode}, #{opeApply.reagent.id}, #{opeApply.num}, #{opeApply.deadline},
          #{opeApply.applyUserId}, #{opeApply.projectId}, #{opeApply.status}, #{opeApply.approveUserId}, #{opeApply.memo}, 1, now(), now(),#{opeApply.applyGoal},#{opeApply.reagent.price},#{opeApply.approveUserId})
      </foreach>
  </insert>
    <insert id="insertList">
    <insert id="insertList" parameterType="java.util.List" useGeneratedKeys = "true" keyProperty = "id">
        insert into ope_apply
        (id, apply_code, reagent_id, num, deadline, apply_user_id, objective, status, approve_user_id, memo, valid_flag, create_time, update_time,apply_goal,apply_price,first_user)
        (apply_code, reagent_id, num, deadline, apply_user_id, project_id, status, approve_user_id, memo, valid_flag, create_time, update_time,apply_goal,apply_price,first_user)
        values
        <foreach collection="list" item="opeApply" separator=",">
            (#{opeApply.id}, #{opeApply.applyCode}, #{opeApply.reagent.id}, #{opeApply.num}, #{opeApply.deadline},
            #{opeApply.applyUserId}, #{opeApply.objective}, #{opeApply.status}, #{opeApply.approveUserId}, #{opeApply.memo}, 1, #{opeApply.createTime}, #{opeApply.updateTime},#{opeApply.applyGoal},#{opeApply.reagent.price},#{opeApply.approveUserId})
            ( #{opeApply.applyCode}, #{opeApply.reagent.id}, #{opeApply.num}, #{opeApply.deadline},
            #{opeApply.applyUserId}, #{opeApply.projectId}, #{opeApply.status}, #{opeApply.approveUserId}, #{opeApply.memo}, 1, #{opeApply.createTime}, #{opeApply.updateTime},#{opeApply.applyGoal},#{opeApply.reagent.price},#{opeApply.approveUserId})
        </foreach>
    </insert>
@@ -256,14 +262,60 @@
        update ope_apply set first_user=before_approve_user_id where id=#{id}
    </update>
  <update id="updateOpeApply" parameterType="com.nanometer.smartlab.entity.OpeApply">
    update ope_apply set apply_code=#{applyCode}, reagent_id=#{reagent.id}, num=#{num}, deadline=#{deadline}, apply_user_id=#{applyUserId}, objective=#{objective},
    status=#{status}, approve_user_id=#{approveUserId}, memo=#{memo}, update_time=now(),start_reagent_code=#{startReagentCode},end_reagent_code=#{endReagentCode},
    update ope_apply
    <set>
    <if test="applyCode!=null and applyCode!=''">
        apply_code=#{applyCode},
    </if>
      <if test="reagent!=null and reagent.id!=null">
    reagent_id=#{reagent.id},
      </if>
      <if test="num!=null and num!=''">
    num=#{num},
      </if>
      <if test="deadline!=null">
    deadline=#{deadline},
      </if>
      <if test="applyUserId!=null and applyUserId!=''">
    apply_user_id=#{applyUserId},
      </if>
      <if test="projectId!=null and projectId!=''">
    project_id=#{projectId},
      </if>
      <if test="status!=null">
    status=#{status},
      </if>
      <if test="approveUserId!=null and approveUserId!=''">
    approve_user_id=#{approveUserId},
      </if>
      <if test="memo!=null and memo!=''">
    memo=#{memo},
      </if>
    update_time=now(),
      <if test="startReagentCode!=null and startReagentCode!=''">
    start_reagent_code=#{startReagentCode},
      </if>
      <if test="endReagentCode!=null and endReagentCode!=''">
    end_reagent_code=#{endReagentCode},
      </if>
      <if test="arrivalNum!=null and arrivalNum!=''">
    arrival_num=#{arrivalNum},
      </if>
      <if test="houseId!=null and houseId!=''">
    house_id=#{houseId},
    place=#{placeId},
      </if>
      <if test="place!=null and place!=''">
    place=#{place},
      </if>
      <if test="containerId!=null and containerId!=''">
    container_id=#{containerId},
      </if>
      <if test="articleNumber!=null and articleNumber!=''">
    article_number=#{articleNumber}
      </if>
    </set>
    where id=#{id}
  </update>
  <update id="updateOpeApplyStatus" parameterType="java.util.Map" >
@@ -278,8 +330,13 @@
    </foreach>
  </update>
    <update id="updateOpeApplyStatusById" >
        update ope_apply set status=#{status},update_time=now()
        where id =#{id}
    </update>
    <update id="updateOpeApplyProject" parameterType="java.util.Map">
        update ope_apply set objective =#{newObjective} where objective=#{oldObjective}
        update ope_apply set project_id =#{newObjective} where project_id=#{oldObjective}
    </update>
@@ -304,7 +361,6 @@
        update ope_apply set before_memo=#{memo}, before_approve_user_id=#{beforeUserId},
        approve_user_id=#{userId}, update_time=now()
        where id =#{id}
    </update>
@@ -327,16 +383,16 @@
      select oa.id, oa.apply_code,
      sr.id reagent_id,
      oa.status,
      sr.product_sn reagentProductSn,
      sr.`name` reagentName,
      bm2.meta_value controlProducts,
      bm3.meta_value reagentFormat,
      sr.main_metering reagentMainMetering,
      sr.price reagentPrice,
      sr.cas reagentCas,
      oa.article_number articleNumber,
      bm4.meta_value reagentCharacter,
      bm1.meta_value productHome,
      sr.product_sn reagent_product_sn,
      sr.`name` reagent_name,
      sr.control_products,
      sr.reagent_format,
      sr.main_metering reagent_main_metering,
      sr.price reagent_price,
      sr.cas reagent_cas,
      oa.article_number article_number,
      sr.reagentCharacter,
      sr.product_home,
      sr.dangerous_flag,
      oa.num,
      oa.used,
@@ -348,12 +404,12 @@
      left JOIN sys_user su on su.id = oa.apply_user_id
   </sql>
   <sql id="getOpeApplyReserveList_queryJoins2">
      left join base_meta as bm2 on sr.control_products = bm2.id
      left join base_meta as bm3 on sr.reagent_format = bm3.id
      left join base_meta as bm4 on sr.reagent_character = bm4.id
      left join base_meta as bm1 on sr.product_home = bm1.id
   </sql>
<!--   <sql id="getOpeApplyReserveList_queryJoins2">-->
<!--      left join base_meta as bm2 on sr.control_products = bm2.id-->
<!--      left join base_meta as bm3 on sr.reagent_format = bm3.id-->
<!--      left join base_meta as bm4 on sr.reagent_character = bm4.id-->
<!--      left join base_meta as bm1 on sr.product_home = bm1.id-->
<!--   </sql>-->
   <sql id="getOpeApplyReserveList_queryWhereSql">
      <if test="reagentName != null and reagentName != ''">
@@ -393,11 +449,7 @@
        from ope_apply as oa
        LEFT JOIN sys_reagent sr ON sr.id = oa.reagent_id
        LEFT JOIN sys_user su ON su.id = oa.apply_user_id
        LEFT JOIN base_meta AS bm2 ON sr.control_products = bm2.id
        LEFT JOIN base_meta AS bm3 ON sr.reagent_format = bm3.id
        LEFT JOIN base_meta AS bm4 ON sr.reagent_character = bm4.id
        LEFT JOIN base_meta AS bm1 ON sr.product_home = bm1.id
        LEFT JOIN sys_project as project on project.project = su.project
        LEFT JOIN sys_project as project on project.id = su.project_id
        LEFT JOIN sys_user as su1 on su1.id = project.sys_user_id
        where oa.valid_flag = 1 and (
        <choose>
@@ -405,7 +457,7 @@
                oa.status = 10
            </when>
            <otherwise>
                oa.status=4 or oa.status=6
                oa.status=4 or oa.status=6 or oa.status=9
            </otherwise>
        </choose>
        )
@@ -429,7 +481,6 @@
      <include refid="getOpeApplyReserveList_queryColumns" />
      from ope_apply as oa
      <include refid="getOpeApplyReserveList_queryJoins1" />
      <include refid="getOpeApplyReserveList_queryJoins2" />
      where oa.valid_flag = 1
      <include refid="getOpeApplyReserveList_queryWhereSql" />
        GROUP BY oa.id
@@ -445,34 +496,32 @@
        oa.id,
        oa.apply_code,
        sr.id reagent_id,
        oa. STATUS,
        sr.product_sn reagentProductSn,
        sr.`name` reagentName,
        bm2.meta_value controlProducts,
        bm3.meta_value reagentFormat,
        sr.main_metering reagentMainMetering,
        sr.price reagentPrice,
        sr.cas reagentCas,
        oa.article_number articleNumber,
        bm4.meta_value reagentCharacter,
        bm1.meta_value productHome,
        oa.status,
        sr.product_sn reagent_product_sn,
        sr.`name` reagent_name,
        sr.main_metering reagent_main_metering,
        sr.price reagent_price,
        sr.cas reagent_cas,
        sr.reagent_unit,
        oa.article_number article_number,
        sr.dangerous_flag,
        sr.control_products control_products,
        sr.reagent_character,
        sr.reagent_format,
        sr.product_home,
        oa.num,
        oa.apply_user_id apply_user,
        su.name apply_user,
        oa.apply_user_id,
        oa.used,
        su.`name` apply_user_id,
        su.project,
        su1.`name` as projectManage,
        su.`name` apply_user_name,
        project.project_name as project_name,
        su1.`name` as project_manage,
        oa.arrival_time
        FROM
        ope_apply AS oa
        LEFT JOIN sys_reagent sr ON sr.id = oa.reagent_id
        LEFT JOIN sys_user su ON su.id = oa.apply_user_id
        LEFT JOIN base_meta AS bm2 ON sr.control_products = bm2.id
        LEFT JOIN base_meta AS bm3 ON sr.reagent_format = bm3.id
        LEFT JOIN base_meta AS bm4 ON sr.reagent_character = bm4.id
        LEFT JOIN base_meta AS bm1 ON sr.product_home = bm1.id
        LEFT JOIN sys_project as project on project.project = su.project
        LEFT JOIN sys_project as project on project.id = su.project_id
        LEFT JOIN sys_user as su1 on su1.id = project.sys_user_id
        where oa.valid_flag = 1 and (
        <choose>
@@ -480,7 +529,7 @@
                oa.status = 10
            </when>
            <otherwise>
                oa.status=4 or oa.status=6
                oa.status=4 or oa.status=6 or oa.status=9
            </otherwise>
        </choose>
        )
@@ -534,28 +583,27 @@
        select oa.id, oa.apply_code,
      sr.id reagent_id,
      oa.status,
      sr.product_sn reagentProductSn,
      sr.`name` reagentName,
      bm2.meta_value controlProducts,
      bm3.meta_value reagentFormat,
      sr.main_metering reagentMainMetering,
      sr.price reagentPrice,
      sr.cas reagentCas,
      oa.article_number articleNumber,
      bm4.meta_value reagentCharacter,
      bm1.meta_value productHome,
      sr.product_sn reagent_product_sn,
      sr.`name` reagent_name,
      sr.control_products,
      sr.reagent_format,
      sr.main_metering reagent_main_metering,
      sr.price reagent_price,
      sr.cas reagent_cas,
      oa.article_number article_number,
      sr.reagent_character,
      sr.product_home,
      sr.dangerous_flag,
      oa.num,
      oa.used,
      oa.arrival_num,
      su.id apply_user_id
      su.id apply_user_id,
        CONCAT(rc.code_prex,LPAD(rc.start_code,4,'0')) as start_reagent_code,
        CONCAT(rc.code_prex,LPAD(rc.end_code,4,'0')) as end_reagent_code
        from ope_apply as oa
        left JOIN sys_reagent sr on sr.id = oa.reagent_id
        left JOIN sys_user su on su.id = oa.apply_user_id
        left join base_meta as bm2 on sr.control_products = bm2.id
        left join base_meta as bm3 on sr.reagent_format = bm3.id
        left join base_meta as bm4 on sr.reagent_character = bm4.id
        left join base_meta as bm1 on sr.product_home = bm1.id
        left join ope_reagent_code  rc on rc.apply_id=oa.id
        where oa.valid_flag = 1
        and oa.id = #{0}
    </select>
@@ -566,33 +614,30 @@
        oa.apply_code,
        sr.id reagent_id,
        oa. STATUS,
        sr.product_sn reagentProductSn,
        sr.`name` reagentName,
        bm2.meta_value controlProducts,
        bm3.meta_value reagentFormat,
        sr.main_metering reagentMainMetering,
        sr.price reagentPrice,
        sr.cas reagentCas,
        oa.article_number articleNumber,
        bm4.meta_value reagentCharacter,
        bm1.meta_value productHome,
        sr.product_sn reagent_product_sn,
        sr.`name` reagent_name,
        sr.control_products,
        sr.reagent_format,
        sr.reagent_unit,
        sr.main_metering reagent_main_metering,
        sr.price reagent_price,
        sr.cas reagent_cas,
        oa.article_number article_number,
        sr.reagent_character,
        sr.product_home,
        sr.dangerous_flag,
        oa.num,
        oa.apply_user_id apply_user,
        oa.apply_user_id apply_user_id,
        oa.used,
        su.`name` apply_user_id,
        su.project,
        su1.`name` as projectManage,
        su.`name` apply_user,
        project.project_name apply_user_project,
        su1.`name` as project_manage,
        oa.arrival_time
        FROM
        ope_apply AS oa
        LEFT JOIN sys_reagent sr ON sr.id = oa.reagent_id
        LEFT JOIN sys_user su ON su.id = oa.apply_user_id
        LEFT JOIN base_meta AS bm2 ON sr.control_products = bm2.id
        LEFT JOIN base_meta AS bm3 ON sr.reagent_format = bm3.id
        LEFT JOIN base_meta AS bm4 ON sr.reagent_character = bm4.id
        LEFT JOIN base_meta AS bm1 ON sr.product_home = bm1.id
        LEFT JOIN sys_project as project on project.project = su.project
        LEFT JOIN sys_project as project on project.id = su.project_id
        LEFT JOIN sys_user as su1 on su1.id = project.sys_user_id
        where oa.id = #{id}
@@ -601,24 +646,22 @@
    <select id="getApplyControlInfo" resultType="java.util.Map">
              (SELECT sum(oa.num) sum,"易制毒" name from ope_apply oa
      LEFT JOIN sys_reagent sr on oa.reagent_id = sr.id
      LEFT JOIN base_meta bm on bm.id = sr.control_products
      where
      oa.valid_flag = 1
      and sr.valid_flag = 1
      and YEAR(oa.create_time)=YEAR(NOW())
        and oa.status in(2,3,4,6)
      and
      meta_value like "%易制毒%") UNION ALL(
        sr.control_products like "%易制毒%") UNION ALL(
         SELECT sum(oa.num) sum,"易制爆"  name from ope_apply oa
      LEFT JOIN sys_reagent sr on oa.reagent_id = sr.id
      LEFT JOIN base_meta bm on bm.id = sr.control_products
      where
      oa.valid_flag = 1
      and sr.valid_flag = 1
      and YEAR(oa.create_time)=YEAR(NOW())
        and oa.status in(2,3,4,6)
      and meta_value like "%易制爆%")UNION ALL(
      and sr.control_products like "%易制爆%")UNION ALL(
      SELECT sum(oa.num) sum,"总数"  name from ope_apply oa
      LEFT JOIN sys_reagent sr on oa.reagent_id = sr.id
@@ -639,8 +682,6 @@
        left join sys_user as suApprove on oa.approve_user_id = suApprove.id
        left join sys_user as sys on sys.id=oa.before_approve_user_id
        left join sys_user as fir on fir.id=oa.first_user
        left join base_meta as bm on sr.product_home = bm.id
        left join base_meta as bm1 on bm1.id = sr.control_products
        where oa.valid_flag = 1
        <if test="isShow != null and isShow ==0">
            and (ss.valid_flag = 1 or sr.type = 0)
@@ -665,16 +706,17 @@
    <select id="getOpeApplySupplerRequireMngList" parameterType="java.util.Map" resultMap="OpeApply">
        select oa.*,sys.name as secondUserName,
        sr.name as reagentName,sr.price as reagentPrice ,sr.cas as reagentCas, sr.reagent_type as reagentType, sr.reagent_character as reagentCharacter, sr.supplier_id as reagentSupplierId,
        sr.reagent_format as reagentFormat, sr.main_metering as reagentMainMetering, sr.reagent_unit as reagentUnit, sr.per_box as reagentPerBox,
        sr.memo as reagentMemo, sr.valid_flag as reagentValidFlag, sr.create_time as reagentCreateTime, sr.update_time as reagentUpdateTime, sr.product_sn as reagentProductSn,
        sr.dangerous_flag as reagentDangerousFlag,sr.control_products as controlProducts,sr.product_home as productHome,
        ss.name as supplierName,
        su.name as applyUserName,
        suApprove.name as approveUserName,
        bm.meta_value as productHomeName,
        fir.name as firName,
        ss.valid_flag  as supplierFlag,
        sr.name as reagent_name,sr.price as reagent_price ,sr.cas as reagent_cas, sr.reagent_type as reagent_type, sr.reagent_character as reagent_character,
        sr.supplier_id as reagentSupplierId,sr.reagent_format as reagent_format, sr.main_metering as reagent_main_metering,
        sr.reagent_unit as reagent_unit, sr.per_box as reagent_per_box,sr.memo as reagent_memo, sr.valid_flag as reagent_valid_flag,
        sr.create_time as reagent_create_time, sr.update_time as reagent_update_time, sr.product_sn as reagent_product_sn,
        sr.dangerous_flag as reagent_dangerous_flag,sr.control_products as control_products,sr.product_home as product_home,
        ss.name as supplier_name,
        su.name as applyUser_name,
        suApprove.name as approve_user_name,
        sr.product_home as apply_user_project,
        fir.name as fir_name,
        ss.valid_flag  as supplier_flag,
        sr.type as type
        from ope_apply as oa
        left join sys_reagent sr on oa.reagent_id = sr.id
@@ -683,8 +725,6 @@
        left join sys_user as suApprove on oa.approve_user_id = suApprove.id
        left join sys_user as sys on sys.id=oa.before_approve_user_id
        left join sys_user as fir on fir.id=oa.first_user
        left join base_meta as bm on sr.product_home = bm.id
        left join base_meta as bm1 on bm1.id = sr.control_products
        where oa.valid_flag = 1
        <if test="isShow != null and isShow ==0">
            and (ss.valid_flag = 1 or sr.type = 0)
@@ -725,7 +765,84 @@
        <if test="consigneeId!=null" >
            ,consignee_id = #{consigneeId}
        </if>
        <if test="arrivalNum!=null" >
            ,arrival_num = #{arrivalNum}
        </if>
        where valid_flag = 1
        and id = #{applyId}
    </update>
    <select id="getOpeApplyByOrderId" resultMap="OpeApply">
        select distinct a.id,a.apply_code,a.reagent_id,a.used,a.num,a.arrival_num,a.apply_user_id,a.status,a.project_id,a.deadline,a.approve_user_id,a.apply_price,a.create_time,a.memo,a.article_number,a.place,
                        CONCAT(c.code_prex,LPAD(c.start_code,4,'0')) as start_reagent_code,CONCAT(c.code_prex,LPAD(c.end_code,4,'0')) as end_reagent_code,
                        d.name as reagent_name, d.cas as reagent_cas, d.reagent_type as reagent_type, d.reagent_character as reagent_character,
                        d.supplier_id as reagent_supplier_id,d.product_home as product_home,d.product_sn as reagent_product_sn,
                        d.reagent_format as reagent_format, d.main_metering as reagent_main_metering, d.reagent_unit as reagent_unit,
                        d.price as reagent_price, d.per_box as reagent_per_box,d.control_products,
                        e.name as apply_user_name
        from ope_apply a
        left join ope_apply_order b on b.ope_apply_id=a.id
        left join ope_reagent_code  c on c.apply_id=a.id
        left join sys_reagent d on a.reagent_id = d.id
        left join sys_user e on a.apply_user_id = e.id
        where b.ope_order_id=#{orderId}
    </select>
    <select id="getReagentByApplyId" resultType="com.nanometer.smartlab.entity.SysReagent">
        select sa.* from sys_reagent sa
        left join ope_apply oa on oa.reagent_id=sa.id
        where oa.id=#{applyId}
    </select>
    <select id="getOpeApplyCountWithOrder" resultType="int">
        select count(1)
        from ope_apply as oa
        inner join ope_apply_order ao on ao.ope_apply_id=oa.id
        inner join ope_order oo on oo.id=ao.ope_order_id
        <where>
            oa.valid_flag = 1 and oo.valid_flag=1
            <if test="applyCode!=null and applyCode!=''">
                and oa.apply_code=#{applyCode}
            </if>
        </where>
    </select>
    <select id="getOpeApplyListWithOrder" resultMap="OpeApply">
        select oa.*,
        sr.name as reagent_name,sr.cas as reagent_cas, sr.reagent_type as reagent_type,
        sr.reagent_character as reagent_character,sr.product_sn as reagent_product_sn,sr.product_home as product_home,
        ss.name as supplier_name,
        su.name as apply_user_name,
        oo.id as order_id,oo.order_name,oo.order_code
        from ope_apply as oa
        inner join ope_apply_order ao on ao.ope_apply_id=oa.id
        inner join ope_order oo on oo.id=ao.ope_order_id
        left join sys_reagent sr on oa.reagent_id = sr.id
        left join sys_supplier as ss on sr.supplier_id = ss.id
        left join sys_user as su on oa.apply_user_id = su.id
        <where>
            oa.valid_flag = 1 and oo.valid_flag=1
            <if test="applyCode!=null and applyCode!=''">
                and oa.apply_code=#{applyCode}
            </if>
            <if test="orderCode!=null and orderCode!=''">
                and oo.order_code=#{orderCode}
            </if>
            <if test="orderName!=null and orderName!=''">
                and oo.order_name like concat('%',#{orderName},'%')
            </if>
        </where>
        order by oo.create_time desc
        <if test="first != null and pageSize != null">
            limit #{first}, #{pageSize}
        </if>
    </select>
    <select id="getArrivalNumById" resultType="int">
        select ifnull(arrival_num ,0)from ope_apply where id=#{applyId}
    </select>
</mapper>