郑永安
2023-06-19 f65443d8abeaedc9d102324565e8368e7c9d90c8
src/main/java/com/gk/firework/Mapper/mybatis/DeliveryDetailInfoMapper.xml
对比新文件
@@ -0,0 +1,342 @@
<?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.DeliveryDetailInfoMapper" >
  <resultMap id="BaseResultMap" type="com.gk.firework.Domain.DeliveryDetailInfo" >
    <!--          -->
    <id column="id" property="id" jdbcType="BIGINT" />
    <result column="deliverycode" property="deliverycode" jdbcType="VARCHAR" />
    <result column="itemcode" property="itemcode" jdbcType="VARCHAR" />
    <result column="itemname" property="itemname" jdbcType="VARCHAR" />
    <result column="directioncode" property="directioncode" jdbcType="VARCHAR" />
    <result column="createat" property="createat" jdbcType="TIMESTAMP" />
    <result column="createby" property="createby" jdbcType="VARCHAR" />
    <result column="num" property="num" jdbcType="INTEGER" />
  </resultMap>
  <sql id="Base_Column_List" >
    <!--          -->
    id, deliverycode, itemcode, itemname, directioncode, createat, createby, num
  </sql>
    <select id="selectDetailPage" resultType="java.util.Map">
      select
      dd.id,
      dd.itemcode,
      dd.itemname,
      dd.directioncode,
      case length(dd.directioncode)  when 19 then  concat(dd.num,"挂") else concat(dd.num,"挂/箱") end num,
      product.type,
      product.level,
      product.explosivecontent,
      product.specification,
      product.type,
      product.level,
      product.boxnumber,
      product.explosivecontent,
      product.specification
      from deliverydetail as dd
      left join product as product on product.directioncode = dd.itemcode and product.isdel = 0
      where dd.deliverycode = #{params.code}
      <if test="params.starttime != null and params.starttime != ''">
        and dd.createat &gt;= #{params.starttime}
      </if>
      <if test="params.endtime != null and params.endtime != ''">
        and dd.createat &lt;= #{params.endtime}
      </if>
      order by dd.createat
    </select>
  <select id="selectDetailExport" resultType="java.util.Map">
    select
      deliveryorder.ordercode,
      deliveryorder.shop,
      deliveryorder.transportcert,
      dd.id,
      dd.directioncode,
      dd.itemcode,
      dd.itemname,
      case length(dd.directioncode)  when 19 then  concat(dd.num,"件") else concat(dd.num,"件/箱") end num,
      product.type,
      product.level,
      product.explosivecontent,
      product.specification
      from deliverydetail as dd
      left join deliveryorder as deliveryorder on deliveryorder.ordercode = dd.deliverycode
      left join product as product on product.directioncode = dd.itemcode and product.isdel = 0
      where dd.deliverycode = #{code}
      order by dd.createat
  </select>
    <select id="selectEnterpriseDeliveryNumber" resultType="java.math.BigDecimal">
      SELECT
      IFNULL(SUM( deliverynum ),0)
      FROM
      (
      SELECT
      SUM( dd.num )/ p.boxnumber AS deliverynum
      FROM
      deliverydetail AS dd
      LEFT JOIN deliveryorder AS do ON do.`ordercode` = dd.deliverycode
      LEFT JOIN product AS p ON p.directioncode = dd.itemcode and p.isdel = 0
      <where>
        do.companynumber = #{enterprisenumber}
        <if test="starttime != null and starttime != ''">
          and do.createat &gt;= #{starttime}
        </if>
        <if test="endtime != null and endtime != ''">
          and do.createat &lt;= #{endtime}
        </if>
      </where>
      GROUP BY
      dd.itemcode
      ) temp
    </select>
    <select id="selectEnterpriseTypeDelivery" 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,do.companynumber,p.type,sum( dd.num ) /p.
        boxnumber num
        FROM
        deliverydetail AS dd
        LEFT JOIN
        deliveryorder AS do ON do.`ordercode` = dd.deliverycode
        LEFT JOIN product AS p ON p.directioncode = dd.itemcode
        LEFT JOIN
        enterprise AS e ON do.companynumber = e.enterprisenumber
        where
        e.
        enterprisestatus = 'ON'
        and p.isdel = 0
        and e.validflag = 1
        <if test="params.starttime != null and params.starttime != ''">
            and do.createat &gt;= #{params.starttime}
        </if>
        <if test="params.endtime != null and params.endtime != ''">
            and do.createat &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
        do.companynumber,dd.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,do.companynumber,p.type,sum(dd.num) /p.
          boxnumber num
          FROM
          deliverydetail AS dd
          LEFT JOIN
          deliveryorder AS do ON do.`ordercode` = dd.deliverycode
          LEFT JOIN product AS p ON p.directioncode = dd.itemcode
          LEFT JOIN
          enterprise AS e ON do.companynumber = e.enterprisenumber
          where
          e.
          enterprisestatus = 'ON'
          and p.isdel = 0
          and e.validflag = 1
          <if test="params.starttime != null and params.starttime != ''">
              and do.createat &gt;= #{params.starttime}
          </if>
          <if test="params.endtime != null and params.endtime != ''">
              and do.createat &lt; #{params.endtime}
          </if>
          <if test="params.province != null and params.province != ''">
              and e.province = #{params.province }
          </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
          do.companynumber,dd.itemcode
          ) as tmptmp
          group by tmptmp.type
          ) as tmptmptmp
          ) as lasttmp
  </select>
    <select id="selectCityTypeDelivery" 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,do.companynumber,p.type,sum(dd.num) /p.
        boxnumber num
        FROM
        deliverydetail AS dd
        LEFT JOIN
        deliveryorder AS do ON do.`ordercode` = dd.deliverycode
        LEFT JOIN product AS p ON p.directioncode = dd.itemcode
        LEFT JOIN
        enterprise AS e ON do.companynumber = e.enterprisenumber
        where
        e.
        enterprisestatus = 'ON'
        and p.isdel = 0
        and e.validflag = 1
        <if test="params.starttime != null and params.starttime != ''">
            and do.createat &gt;= #{params.starttime}
        </if>
        <if test="params.endtime != null and params.endtime != ''">
            and do.createat &lt; #{params.endtime}
        </if>
        <if test="params.province != null and params.province != ''">
            and e.province = #{params.province }
        </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
        do.companynumber,dd.itemcode
        ) as tmptmp
        group by tmptmp.city,tmptmp.type
        ) as tmptmptmp
        group by tmptmptmp.city
        ) as alldata
        on citys.name = alldata.city
    </select>
</mapper>