郑永安
2023-06-19 59e91a4e9ddaf23cebb12993c774aa899ab22d16
src/main/java/com/gk/firework/Mapper/mybatis/EntryDetailInfoMapper.xml
对比新文件
@@ -0,0 +1,354 @@
<?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.gk.firework.Mapper.EntryDetailInfoMapper" >
  <resultMap id="BaseResultMap" type="com.gk.firework.Domain.EntryDetailInfo" >
    <!--          -->
    <id column="id" property="id" jdbcType="BIGINT" />
    <result column="entryorder" property="entryorder" jdbcType="VARCHAR" />
    <result column="directioncode" property="directioncode" jdbcType="VARCHAR" />
    <result column="itemcode" property="itemcode" jdbcType="VARCHAR" />
    <result column="productname" property="productname" jdbcType="VARCHAR" />
    <result column="boxcode" property="boxcode" jdbcType="VARCHAR" />
    <result column="num" property="num" jdbcType="INTEGER" />
    <result column="manufacturer" property="manufacturer" jdbcType="VARCHAR" />
    <result column="createddate" property="createddate" jdbcType="TIMESTAMP" />
    <result column="modifieddate" property="modifieddate" jdbcType="TIMESTAMP" />
    <result column="createdby" property="createdby" jdbcType="VARCHAR" />
  </resultMap>
  <sql id="Base_Column_List" >
    <!--          -->
    id, entryorder, directioncode, productname, num, boxcode, manufacturer, createddate, modifieddate, createdby
  </sql>
  <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Long" >
    <!--          -->
    select
    <include refid="Base_Column_List" />
    from entrydetail
    where id = #{id,jdbcType=BIGINT}
  </select>
    <select id="selectDetailPage" resultType="java.util.Map">
      select
      ed.id,
      ed.directioncode,
      ed.itemcode,
      ed.productname,
      case length(ed.directioncode)  when 19 then  concat(ed.num,"挂") else concat(ed.num,"挂/箱") end num,
      product.type,
      product.level,
      product.explosivecontent,
      product.specification,
      product.boxnumber
      from entrydetail as ed
      left join product as product on product.directioncode = ed.itemcode and product.isdel = 0
      where ed.entryorder = #{params.code}
      <if test="params.starttime != null and params.starttime != ''">
        and ed.createddate &gt;= #{params.starttime}
      </if>
      <if test="params.endtime != null and params.endtime != ''">
        and ed.createddate &lt;= #{params.endtime}
      </if>
      order by ed.createddate
    </select>
  <select id="getEntryNumByCondition" resultType="decimal">
    select
    sum(detail.num/product.boxnumber)
    from entrydetail as detail
    left join entryorder as entry on entry.`code` = detail.entryorder
    left join product on detail.itemcode = product.directioncode
    <where>
      entry.type = 1
      and product.isdel = 0
      and entry.entrydate &gt;= #{condition.beginDate}
      and entry.entrydate &lt;= #{condition.endDate}
      and entry.companynumber = #{condition.companyNumber}
      <if test="condition.itemCode != null">
        and product.directioncode = #{condition.itemCode}
      </if>
    </where>
  </select>
  <select id="getReturnNumByCondition" resultType="decimal">
    select
    sum(detail.num/product.boxnumber)
    from entrydetail as detail
    left join entryorder as entry on entry.`code` = detail.entryorder
    left join product on detail.itemcode = product.directioncode
    <where>
      entry.type = 2
      and product.isdel = 0
      and entry.entrydate &gt;= #{condition.beginDate}
      and entry.entrydate &lt;= #{condition.endDate}
      and entry.companynumber = #{condition.companyNumber}
      <if test="condition.itemCode != null">
        and product.directioncode = #{condition.itemCode}
      </if>
    </where>
  </select>
  <select id="selectDetailExport" resultType="java.util.Map">
    select
      entryorder.code,
      entryorder.unit,
      entryorder.transportcert,
      ed.id,
      ed.directioncode,
      ed.itemcode,
      ed.productname,
      case length(ed.directioncode)  when 19 then  concat(ed.num,"件") else concat(ed.num,"件/箱") end num,
      product.type,
      product.level,
      product.explosivecontent,
      product.specification
      from entrydetail as ed
      left join entryorder as entryorder on entryorder.code = ed.entryorder
      left join product as product on product.directioncode = ed.itemcode
      where ed.entryorder = #{code}
      and product.isdel = 0
      order by ed.createddate
  </select>
    <select id="selectEnterpriseTypeEntry" resultType="java.util.Map">
        select
        alldata.*,
        round(
        <trim suffixOverrides="+">
            <foreach collection="list" item="item" index="index">
                alldata.num_${item} +
            </foreach>
        </trim>
        ,2) totalcol
        from (
        select
        tmptmptmp.city name,
        tmptmptmp.enterprisename
        <foreach collection="list" item="item" index="index">
            ,MAX(
            CASE tmptmptmp.type
            WHEN #{item} THEN
            round(tmptmptmp.num,2)
            ELSE
            0
            END
            ) num_${item}
        </foreach>
        from (
        select
        tmptmp.city,tmptmp.enterprisename,tmptmp.type,sum(tmptmp.num) num
        from
        (
        SELECT
        e.city,e.enterprisename,eo.companynumber,p.type,sum(ed.num) /p.
        boxnumber num
        FROM
        entrydetail AS ed
        LEFT JOIN
        entryorder AS eo ON eo.`code` = ed.entryorder
        LEFT JOIN product AS p ON p.directioncode = ed.itemcode
        LEFT JOIN
        enterprise AS e ON eo.companynumber = e.enterprisenumber
        where
        e.
        enterprisestatus = 'ON'
        and p.isdel = 0
        and e.validflag = 1
        <if test="params.starttime != null and params.starttime != ''">
            and eo.createddate &gt;= #{params.starttime}
        </if>
        <if test="params.endtime != null and params.endtime != ''">
            and eo.createddate &lt; #{params.endtime}
        </if>
        <if test="params.safetysupervision != null and params.safetysupervision != ''">
            and e.safetysupervision = #{params.safetysupervision }
        </if>
        <if test="params.enterprisename != null and params.enterprisename != ''">
            and e.enterprisename like concat("%",#{params.enterprisename },"%")
        </if>
        <if test="params.province != null and params.province != ''">
            and e.province = #{params.province }
        </if>
        <if test="params.city != null and params.city != ''">
            and e.city = #{params.city }
        </if>
        <if test="params.district != null and params.district != ''">
            and e.district = #{params.district }
        </if>
        GROUP BY
        eo.companynumber,ed.itemcode
        ) as tmptmp
        group by tmptmp.companynumber,tmptmp.type
        ) as tmptmptmp
        group by tmptmptmp.enterprisename)
        as alldata
    </select>
  <select id="selectAllType" resultType="java.util.Map">
          select
          lasttmp.*
          ,
          round(
          <trim suffixOverrides="+">
              <foreach collection="list" item="item" index="index">
                  ifnull(lasttmp.num_${item},0) +
              </foreach>
          </trim>
          ,2) totalcol
          from (
          select
          '合计' name
          <foreach collection="list" item="item" index="index">
              ,MAX(
              CASE tmptmptmp.type
              WHEN #{item} THEN
              round(tmptmptmp.num,2)
              ELSE
              0
              END
              ) num_${item}
          </foreach>
          from (
          select
          tmptmp.type,sum(tmptmp.num) num
          from
          (
          SELECT
          e.city,eo.companynumber,p.type,sum(ed.num) /p.
          boxnumber num
          FROM
          entrydetail AS ed
          LEFT JOIN
          entryorder AS eo ON eo.`code` = ed.entryorder
          LEFT JOIN product AS p ON p.directioncode = ed.itemcode
          LEFT JOIN
          enterprise AS e ON eo.companynumber = e.enterprisenumber
          where
          e.
          enterprisestatus = 'ON'
          and p.isdel = 0
          and e.validflag = 1
          <if test="params.starttime != null and params.starttime != ''">
              and eo.createddate &gt;= #{params.starttime}
          </if>
          <if test="params.endtime != null and params.endtime != ''">
              and eo.createddate &lt; #{params.endtime}
          </if>
          <if test="params.safetysupervision != null and params.safetysupervision != ''">
              and e.safetysupervision = #{params.safetysupervision }
          </if>
          <if test="params.enterprisename != null and params.enterprisename != ''">
              and e.enterprisename like concat("%",#{params.enterprisename },"%")
          </if>
      <if test="params.province != null and params.province != ''">
          and e.province = #{params.province }
      </if>
      <if test="params.city != null and params.city != ''">
          and e.city = #{params.city }
      </if>
      <if test="params.district != null and params.district != ''">
          and e.district = #{params.district }
      </if>
          GROUP BY
        eo.companynumber,ed.itemcode
          ) as tmptmp
          group by tmptmp.type
          ) as tmptmptmp
          ) as lasttmp
  </select>
    <select id="selectCityTypeEntry" resultType="java.util.Map">
        select
        citys.name
        <foreach collection="list" item="item" index="index">
            ,round(ifnull(num_${item},0),2) num_${item}
        </foreach>,
        ifnull(round(
        <trim suffixOverrides="+">
            <foreach collection="list" item="item" index="index">
                alldata.num_${item} +
            </foreach>
        </trim>
        ,2),0) totalcol
        from (
        select district.name
        from district
        where parentcode =(
        select district.code
        from district as district
        where district.name = #{params.province}
        and type = 1)
        and type =2
        ) as citys
        left join (
        select
        tmptmptmp.city
        <foreach collection="list" item="item" index="index">
            ,MAX(
            CASE tmptmptmp.type
            WHEN #{item} THEN
            tmptmptmp.num
            ELSE
            0
            END
            ) num_${item}
        </foreach>
        from (
        select
        tmptmp.city,tmptmp.type,sum(tmptmp.num) num
        from
        (
        SELECT
        e.city,eo.companynumber,p.type,sum(ed.num) /p.
        boxnumber num
        FROM
        entrydetail AS ed
        LEFT JOIN
        entryorder AS eo ON eo.`code` = ed.entryorder
        LEFT JOIN product AS p ON p.directioncode = ed.itemcode
        LEFT JOIN
        enterprise AS e ON eo.companynumber = e.enterprisenumber
        where
        e.
        enterprisestatus = 'ON'
        and p.isdel = 0
        and e.validflag = 1
        <if test="params.starttime != null and params.starttime != ''">
            and eo.createddate &gt;= #{params.starttime}
        </if>
        <if test="params.endtime != null and params.endtime != ''">
            and eo.createddate &lt; #{params.endtime}
        </if>
        <if test="params.safetysupervision != null and params.safetysupervision != ''">
            and e.safetysupervision = #{params.safetysupervision }
        </if>
        <if test="params.enterprisename != null and params.enterprisename != ''">
            and e.enterprisename like concat("%",#{params.enterprisename },"%")
        </if>
        GROUP BY
        eo.companynumber,ed.itemcode
        ) as tmptmp
        group by tmptmp.city,tmptmp.type
        ) as tmptmptmp
        group by tmptmptmp.city
        ) as alldata
        on citys.name = alldata.city
    </select>
</mapper>