From 2fcd97552d16718cc7997629fd637a73a5a4483f Mon Sep 17 00:00:00 2001
From: 郑永安 <zyazyz250@sina.com>
Date: 星期一, 19 六月 2023 14:44:19 +0800
Subject: [PATCH] 删除

---
 src/main/java/com/gk/firework/Mapper/mybatis/SaleOrderDetailInfoMapper.xml | 1533 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 1,533 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/gk/firework/Mapper/mybatis/SaleOrderDetailInfoMapper.xml b/src/main/java/com/gk/firework/Mapper/mybatis/SaleOrderDetailInfoMapper.xml
new file mode 100644
index 0000000..7a71a74
--- /dev/null
+++ b/src/main/java/com/gk/firework/Mapper/mybatis/SaleOrderDetailInfoMapper.xml
@@ -0,0 +1,1533 @@
+<?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.SaleOrderDetailInfoMapper">
+    <resultMap id="BaseResultMap" type="com.gk.firework.Domain.SaleOrderDetailInfo">
+        <!--          -->
+        <id column="id" property="id" jdbcType="BIGINT"/>
+        <result column="ordercode" property="ordercode" 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="createdat" property="createdat" jdbcType="TIMESTAMP"/>
+        <result column="createdby" property="createdby" jdbcType="VARCHAR"/>
+        <result column="price" property="price" jdbcType="DECIMAL"/>
+        <result column="specification" property="specification" jdbcType="VARCHAR"/>
+    </resultMap>
+
+    <resultMap id="SaleDetailVo" type="com.gk.firework.Domain.Vo.SaleDetailVo">
+        <!--          -->
+        <id column="id" property="id" jdbcType="BIGINT"/>
+        <result column="ordercode" property="ordercode" 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="createdat" property="createdat" jdbcType="TIMESTAMP"/>
+        <result column="createdby" property="createdby" jdbcType="VARCHAR"/>
+        <result column="price" property="price" jdbcType="DECIMAL"/>
+        <result column="specification" property="specification" jdbcType="VARCHAR"/>
+        <result column="returnflag" property="returnflag" jdbcType="TINYINT"/>
+        <association property="product" javaType="com.gk.firework.Domain.ProductInfo">
+            <id column="id" property="id" jdbcType="BIGINT" />
+            <result column="name" property="name" jdbcType="VARCHAR" />
+            <result column="directioncode" property="directionCode" jdbcType="VARCHAR" />
+            <result column="purchaseprice" property="purchasePrice" jdbcType="DECIMAL" />
+            <result column="saleprice" property="salePrice" jdbcType="DECIMAL" />
+            <result column="manufacturer" property="manufacturer" jdbcType="VARCHAR" />
+            <result column="specification" property="specification" jdbcType="VARCHAR" />
+            <result column="explosivecontent" property="explosiveContent" jdbcType="DECIMAL" />
+            <result column="type" property="type" jdbcType="VARCHAR" />
+            <result column="secondarytype" property="secondaryType" jdbcType="VARCHAR" />
+            <result column="level" property="level" jdbcType="VARCHAR" />
+            <result column="productdate" property="productDate" jdbcType="TIMESTAMP" />
+            <result column="boxnumber" property="boxNumber" jdbcType="INTEGER" />
+            <result column="packing" property="packing" jdbcType="VARCHAR" />
+            <result column="companynumber" property="companyNumber" jdbcType="VARCHAR" />
+        </association>
+        <association property="saleOrderInfo" javaType="com.gk.firework.Domain.SaleOrderInfo">
+            <id column="id" property="id" jdbcType="BIGINT"/>
+            <result column="code" property="code" jdbcType="VARCHAR"/>
+            <result column="createdat" property="createdat" jdbcType="TIMESTAMP"/>
+            <result column="createdby" property="createdby" jdbcType="VARCHAR"/>
+            <result column="customer" property="customer" jdbcType="BIGINT"/>
+            <result column="idcardnum" property="idcardnum" jdbcType="VARCHAR"/>
+            <result column="salesperson" property="salesperson" jdbcType="VARCHAR"/>
+            <result column="shop" property="shop" jdbcType="VARCHAR"/>
+            <result column="boxnum" property="boxnum" jdbcType="DECIMAL"/>
+            <result column="totalprice" property="totalprice" jdbcType="DECIMAL"/>
+            <result column="pay" property="pay" jdbcType="DECIMAL"/>
+            <result column="change" property="change" jdbcType="DECIMAL"/>
+            <result column="type" property="type" jdbcType="TINYINT"/>
+            <result column="returnflag" property="returnflag" jdbcType="TINYINT"/>
+        </association>
+    </resultMap>
+    <sql id="Base_Column_List">
+        <!--          -->
+        id, ordercode, itemcode, itemname, directioncode, createdat, createdby, price, specification, returnflag
+    </sql>
+    <insert id="saveBatchOrderDetailInfo">
+
+        insert
+        into saleorderdetail
+        <trim prefix="(" suffix=") values" suffixOverrides=",">
+           ordercode,
+           itemcode,
+           itemname,
+           directioncode,
+           createdat,
+           createdby,
+           price,
+           specification,
+           returnflag,
+        </trim>
+        <foreach collection="list" item="item" separator=",">
+            <trim prefix="(" suffix=")" suffixOverrides=",">
+                #{item.ordercode},
+                #{item.itemcode},
+                #{item.itemname},
+                #{item.directioncode},
+                #{item.createdat},
+                #{item.createdby},
+                #{item.price},
+                #{item.specification},
+                #{item.returnflag},
+            </trim>
+        </foreach>
+
+
+    </insert>
+
+    <select id="selectDetailByIdCardNum" resultMap="BaseResultMap">
+        select
+        detail.directioncode,
+        detail.itemname,
+        saleorder.createdat,
+        detail.price,
+        detail.specification,
+        customer.idcardnum
+        from saleorderdetail as detail
+        left join saleorder as saleorder on saleorder.`code` = detail.ordercode
+        LEFT JOIN customer as customer ON saleorder.customer = customer.id
+        <where>
+            customer.idcardnum = #{idCardNum}
+        </where>
+    </select>
+    <select id="selectDetailByIdCardNumAndDire" resultMap="BaseResultMap">
+        select
+        detail.directioncode,
+        detail.itemname,
+        saleorder.createdat,
+        detail.price,
+        detail.specification,
+        customer.idcardnum
+        from saleorderdetail as detail
+        left join saleorder as saleorder on saleorder.`code` = detail.ordercode
+        LEFT JOIN customer as customer ON saleorder.customer = customer.id
+        <where>
+            customer.idcardnum = #{idCardNum}
+            and detail.returnflag = 0
+            <if test="directionCode != null and directionCode != ''">
+                and detail.directioncode = #{directionCode}
+            </if>
+        </where>
+    </select>
+
+    <select id="selectOrderByDirectionAndCustomer" resultMap="BaseResultMap">
+        select
+        detail.id,
+        detail.ordercode,
+        detail.itemcode,
+        detail.itemname,
+        detail.directioncode,
+        detail.createdat,
+        detail.createdby,
+        detail.price,
+        detail.specification,
+        detail.returnflag
+        from saleorder as saleorder
+        left join saleorderdetail as detail on detail.ordercode = saleorder.code
+        <where>
+            detail.directioncode = #{directionCode}
+            and customer = #{customer}
+        </where>
+
+    </select>
+    <select id="selectDetailDataGridByIdCardNum" resultMap="BaseResultMap">
+        select
+        detail.directioncode,
+        detail.itemname,
+        saleorder.createdat,
+        detail.price,
+        detail.specification,
+        customer.idcardnum
+        from saleorderdetail as detail
+        left join saleorder as saleorder on saleorder.`code` = detail.ordercode
+        LEFT JOIN customer as customer ON saleorder.customer = customer.id
+        <where>
+            customer.idcardnum = #{condition.idCardNum}
+            and detail.returnflag = 0
+            <if test="condition.directionCode != null and condition.directionCode != ''">
+                and detail.directioncode = #{condition.directionCode}
+            </if>
+        </where>
+    </select>
+    <select id="selectByCustomId" resultType="com.gk.firework.Domain.Vo.SaleDetailVo">
+        select
+        detail.directioncode,
+        detail.itemname,
+        detail.createdat,
+        detail.price,
+        detail.specification,
+        detail.createdby,
+        saleorder.shop
+        from saleorderdetail as detail
+        left join saleorder as saleorder on saleorder.`code` = detail.ordercode
+        LEFT JOIN customer as customer ON saleorder.customer = customer.id
+        <where>
+            1=1
+            <if test="condition.customid != null">
+                and saleorder.customer = #{condition.customid}
+            </if>
+            <if test="condition.starttime != null">
+                and detail.createdat &gt;= #{condition.starttime}
+            </if>
+            <if test="condition.endtime != null">
+                and detail.createdat &lt;= #{condition.endtime}
+            </if>
+        </where>
+    </select>
+
+    <select id="getSaleNumByCondition" resultType="decimal">
+        select sum(num) from (
+        select
+        (count(1)/product.boxnumber)as num
+        from
+        saleorderdetail as detail
+        left join saleorder as sale on sale.`code` = detail.ordercode
+        left join product on detail.itemcode = product.directioncode and product.isdel = 0
+        <where>
+            sale.createdat &gt;= #{condition.beginDate}
+            and sale.createdat &lt;= #{condition.endDate}
+            and sale.companynumber = #{condition.companyNumber}
+            <if test="condition.itemCode != null">
+                and product.directioncode = #{condition.itemCode}
+            </if>
+        </where>
+        group by sale.companynumber,
+                 product.directioncode
+        )temp
+    </select>
+
+    <select id="getSaleDataInDays" resultType="java.util.Map">
+
+        select
+        days.day,
+        ifnull(info.salenum,0) salenum
+        from
+        <foreach collection="days" item="item" open="(" close=")" separator="union all">
+            SELECT date_sub(curdate(), interval #{item} day) as day
+        </foreach>
+        as days
+        left join (
+            select
+            date_format(detail.createdat,"%Y-%m-%d") saledate,
+            count(0) salenum
+            from
+            saleorderdetail as detail
+            <where>
+                <if test="starttime !=null">
+                   and  detail.createdat &gt; #{starttime}
+                </if>
+                <if test="endtime !=null">
+                   and  detail.createdat &lt; #{endtime}
+                </if>
+            </where>
+            group by DATE_FORMAT(detail.createdat,"%Y-%m-%d")
+        ) as info on info.saledate = days.day
+        order by days.day
+    </select>
+
+    <select id="getSaleDataAreaInDays" resultType="java.util.Map">
+        select
+        count(0) salenum,
+        e.city
+        from saleorder as saleorder
+        LEFT JOIN saleorderdetail as detail on detail.ordercode = saleorder.code
+        left join enterprise as e on e.enterprisenumber = saleorder.companynumber and e.validflag =1
+        <where>
+            e.province = #{params.province}
+            <if test="starttime !=null">
+                and  detail.createdat &gt; #{starttime}
+            </if>
+            <if test="endtime !=null">
+                and  detail.createdat &lt; #{endtime}
+            </if>
+        </where>
+        group by e.city
+
+    </select>
+    <select id="getSaleDataProductTypeInDays" resultType="java.util.Map">
+        select
+        count(0) salenum,
+        product.type producttype
+        from saleorderdetail as detail
+        left join product as product on product.directioncode = detail.itemcode and  product.isdel = 0
+        <if test="starttime !=null">
+            and  detail.createdat &gt; #{starttime}
+        </if>
+        <if test="endtime !=null">
+            and  detail.createdat &lt; #{endtime}
+        </if>
+        group by product.type
+    </select>
+    <select id="getSaleDataInYear" resultType="java.util.Map">
+        select  months.month, count(detail.month) as salenum
+        from
+        (select 1 as month union all
+        select 2 union all
+        select 3 union all
+        select 4 union all
+        select 5 union all
+        select 6 union all
+        select 7 union all
+        select 8 union all
+        select 9 union all
+        select 10 union all
+        select 11 union all
+        select 12) as months
+        left join
+        (SELECT
+            month(detail.createdat) as month
+            from saleorderdetail as detail
+            left join saleorder as so on so.code = detail.ordercode
+            left join enterprise as e on e.enterprisenumber = so.companynumber
+            where year(detail.createdat) = #{year}
+            <if test="province != null and province != ''">
+                and e.province = #{province}
+            </if>
+            <if test="city != null and city != ''">
+                and e.city = #{city}
+            </if>
+            ) as detail on months.month = detail.month
+        group by months.month
+        order by months.month
+    </select>
+    <select id="getInboundInYear" resultType="java.util.Map">
+        select months.month,
+        ifnull(detail.num,0) num
+        from (
+            select 1 as month union all
+                    select 2 union all
+                    select 3 union all
+                    select 4 union all
+                    select 5 union all
+                    select 6 union all
+                    select 7 union all
+                    select 8 union all
+                    select 9 union all
+                    select 10 union all
+                    select 11 union all
+                    select 12) as months
+         left join (
+                    select
+                    month(entryorder.entrydate) month,
+                    sum(entryorder.num) num
+                    from entryorder as entryorder
+                    left join enterprise as e on e.enterprisenumber = entryorder.companynumber
+                    where year(entryorder.entrydate) = #{year}
+                    <if test="province != null and province != ''">
+                        and e.province = #{province}
+                    </if>
+                    <if test="city != null and city != ''">
+                        and e.city = #{city}
+                    </if>
+                    group by month(entryorder.entrydate) ) as detail  on  months.month = detail.month
+        order by months.month
+
+    </select>
+    <select id="getSaleNumThisDay" resultType="java.lang.Integer">
+        select count(0)
+        from saleorderdetail as detail
+        left join saleorder as so on so.code = detail.ordercode
+        where
+        so.createdat BETWEEN CONCAT(CURDATE(),' 00:00:00') AND CONCAT(CURDATE(),' 23:59:59')
+    </select>
+    <select id="getSaleNumThisYear" resultType="java.lang.Integer">
+        select count(0)
+        from saleorderdetail as detail
+        left join saleorder as so on so.code = detail.ordercode
+        where
+        so.createdat &gt; STR_TO_DATE(CONCAT(year(now()),'-01-01 ','00:00:00'),'%Y-%m-%d %H:%i:%s')
+        and so.createdat &lt; now()
+    </select>
+    <select id="getPurchasersNum" resultType="java.lang.Integer">
+        select count(0)
+        from (
+            select so.customer
+            from saleorder as so
+            where so.createdat &gt; STR_TO_DATE(CONCAT(year(now()),'-01-01 ','00:00:00'),'%Y-%m-%d %H:%i:%s')
+            and so.createdat &lt; now()
+            group by so.customer)
+        as tmp
+    </select>
+    <select id="selectCityInAndOut" resultType="java.util.Map">
+
+        select
+        indata.name,
+        indata.innum,
+        saledata.salenum,
+        deliverydata.outnum,
+        ifnull(salesdata.sales,0)/10000 sales
+        from
+        (
+                select
+                citys.name,round(sum(if(citysale.num is null,0,num)),2) salenum
+                from (
+
+                        select *
+                        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
+                e.city,sod.itemcode ,count( 1 ) /p.boxnumber num
+                FROM
+                saleorderdetail AS sod
+                LEFT JOIN saleorder AS so ON so.`code` = sod.ordercode
+                LEFT JOIN product AS p ON p.directioncode = sod.itemcode and p.isdel = 0
+                LEFT JOIN enterprise AS e ON so.companynumber = e.enterprisenumber
+                where
+                e.enterprisestatus = 'ON'
+                and e.validflag = 1
+                <if test="params.starttime != null and params.starttime != ''">
+                    and sod.createdat &gt;= #{params.starttime}
+                </if>
+                <if test="params.endtime != null and params.endtime != ''">
+                    and sod.createdat &lt; #{params.endtime}
+                </if>
+                <if test="params.safetysupervision != null and params.safetysupervision != ''">
+                    and e.safetysupervision = #{params.safetysupervision }
+                </if>
+                GROUP BY
+                so.companynumber,sod.itemcode
+
+        ) as citysale
+        on citys.name = citysale.city
+        group by citys.name
+        )
+        as saledata
+        left join (
+
+                select
+                citys.name,round(sum(if(cityentry.entrynum is null,0,cityentry.entrynum)),2) innum
+                from (
+
+                            select *
+                            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
+                e.city,SUM( ed.num )/ p.boxnumber AS entrynum
+                FROM
+                entrydetail AS ed
+                LEFT JOIN entryorder AS eo ON eo.`code` = ed.entryorder
+                LEFT JOIN product AS p ON p.directioncode = ed.itemcode and p.isdel = 0
+                LEFT JOIN enterprise AS e ON eo.companynumber = e.enterprisenumber
+                where
+                e.enterprisestatus = 'ON'
+                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>
+                GROUP BY
+                eo.companynumber,ed.itemcode
+
+        )
+        as cityentry
+
+        on citys.name =  cityentry.city
+        group by citys.name)
+
+        as indata on indata.name = saledata.name
+
+        left join (
+
+        select
+
+        citys.name,round(ifnull(sum(citydelivery.deliverynum),0),2) as outnum
+
+        from    (
+
+            select *
+            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 e.city,sum(detail.num)/product.boxnumber as deliverynum
+         from deliverydetail as detail
+         left join deliveryorder as deliveryorder on deliveryorder.ordercode =  detail.deliverycode
+         left join product as product ON detail.itemcode = product.directioncode and product.isdel = 0
+         left join enterprise as e on e.enterprisenumber = deliveryorder.companynumber
+         where
+           e.enterprisestatus = 'ON'
+           and e.validflag = 1
+        <if test="params.starttime != null and params.starttime != ''">
+            and detail.createat &gt;= #{params.starttime}
+        </if>
+        <if test="params.endtime != null and params.endtime != ''">
+            and detail.createat &lt; #{params.endtime}
+        </if>
+        <if test="params.safetysupervision != null and params.safetysupervision != ''">
+            and e.safetysupervision = #{params.safetysupervision }
+        </if>
+        group by
+        deliveryorder.companynumber,detail.itemcode
+        ) as citydelivery on citydelivery.city = citys.name
+        group by citys.name
+        ) as deliverydata on deliverydata.name = indata.name
+
+        left join
+
+     (
+          select e.city,sum(saleorder.totalprice)  sales
+          from saleorder as saleorder
+          left join enterprise as e on e.enterprisenumber = saleorder.companynumber
+          where
+            e.enterprisestatus = 'ON'
+            and e.validflag = 1
+            <if test="params.starttime != null and params.starttime != ''">
+                and saleorder.createdat &gt;= #{params.starttime}
+            </if>
+            <if test="params.endtime != null and params.endtime != ''">
+                and saleorder.createdat &lt; #{params.endtime}
+            </if>
+            <if test="params.safetysupervision != null and params.safetysupervision != ''">
+                and e.safetysupervision = #{params.safetysupervision }
+            </if>
+            group by e.city
+        ) as salesdata on salesdata.city = indata.name
+
+
+
+	order by indata.innum desc,saledata.salenum desc
+
+    </select>
+    <select id="getGenderSale" resultType="java.util.Map">
+        select
+        genders.gender,
+        ifnull(saleinfo.sum,0) sum
+        from (
+            select '男' as gender
+            union
+            select '女'
+        )   as genders
+        left join (
+            select  case customer.gender when 1 then '男' else '女' end gender,count(0) sum
+            from saleorder as so
+            left join saleorderdetail as detail on  so.code = detail.ordercode
+            left join customer as customer on customer.id = so.customer
+            left join enterprise as e on e.enterprisenumber = so.companynumber
+            left join product as product on product.directioncode = detail.itemcode and product.isdel = 0
+            <where>
+                e.validflag = 1
+                and e.enterprisestatus = 'ON'
+                and customer.gender != 0
+                <if test="params.enterprisename != null and params.enterprisename != ''">
+                    and e.enterprisename like concat("%",#{params.enterprisename},"%")
+                </if>
+                <if test="params.productname != null and params.productname != ''">
+                    and detail.itemname like concat("%",#{params.productname},"%")
+                </if>
+                <if test="params.producttype != null and params.producttype != ''">
+                    and product.type = #{params.producttype}
+                </if>
+                <if test="params.secondarytype != null and params.secondarytype != ''">
+                    and product.secondarytype = #{params.secondarytype}
+                </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>
+                <if test="params.street!= null and params.street != ''">
+                    and e.street = #{params.street}
+                </if>
+                <if test="params.committee != null and params.committee != ''">
+                    and e.committee = #{params.committee}
+                </if>
+                <if test="params.starttime != null and params.starttime != ''">
+                    and detail.createdat &gt;= #{params.starttime}
+                </if>
+                <if test="params.endtime != null and params.endtime != ''">
+                    and detail.createdat &lt; #{params.endtime}
+                </if>
+            </where>
+            group by customer.gender)  as saleinfo on saleinfo.gender = genders.gender
+    </select>
+    <select id="getRaceSale" resultType="java.util.Map">
+        select
+        customer.nation,
+        count(0) sum
+        from saleorder as so
+        left join saleorderdetail as detail on  so.code = detail.ordercode
+        left join customer as customer on customer.id = so.customer
+        left join enterprise as e on e.enterprisenumber = so.companynumber
+        left join product as product on product.directioncode = detail.itemcode and product.isdel = 0
+        where 1 = 1
+        and e.validflag = 1
+        and e.enterprisestatus = 'ON'
+        <choose>
+            <when test="params.enterprisenumber != null and params.enterprisenumber !=''">
+                and e.enterprisenumber = #{params.enterprisenumber}
+            </when>
+            <otherwise>
+                <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>
+                <if test="params.street != null and params.street != ''">
+                    and e.street = #{params.street}
+                </if>
+                <if test="params.committee != null and params.committee != ''">
+                    and e.committee = #{params.committee}
+                </if>
+            </otherwise>
+        </choose>
+        <if test="params.enterprisename != null and params.enterprisename != ''">
+            and e.enterprisename like concat("%",#{params.enterprisename},"%")
+        </if>
+        <if test="params.productname != null and params.productname != ''">
+            and detail.itemname like concat("%",#{params.productname},"%")
+        </if>
+        <if test="params.producttype != null and params.producttype != ''">
+            and product.type = #{params.producttype}
+        </if>
+        <if test="params.secondarytype != null and params.secondarytype != ''">
+            and product.secondarytype = #{params.secondarytype}
+        </if>
+        <if test="params.provinceFilter != null and params.provinceFilter != ''">
+            and e.province = #{params.province}
+        </if>
+        <if test="params.cityFilter != null and params.cityFilter != ''">
+            and e.city = #{params.city}
+        </if>
+        <if test="params.districtFilter != null and params.districtFilter != ''">
+            and e.district = #{params.district}
+        </if>
+        <if test="params.streetFilter!= null and params.streetFilter != ''">
+            and e.street = #{params.street}
+        </if>
+        <if test="params.committeeFilter != null and params.committeeFilter != ''">
+            and e.committee = #{params.committee}
+        </if>
+        <if test="params.starttime != null and params.starttime != ''">
+            and detail.createdat &gt;= #{params.starttime}
+        </if>
+        <if test="params.endtime != null and params.endtime != ''">
+            and detail.createdat &lt; #{params.endtime}
+        </if>
+        group by customer.nation
+    </select>
+    <select id="getSaleInfoByGeneration" resultType="java.lang.Integer">
+
+        select  count(0)
+         from saleorder as so
+        left join saleorderdetail as detail on  so.code = detail.ordercode
+        left join customer as customer on customer.id = so.customer
+        left join enterprise as e on e.enterprisenumber = so.companynumber
+        left join product as product on product.directioncode = detail.itemcode and product.isdel = 0
+        where  1 = 1
+        and e.validflag = 1
+        and e.enterprisestatus = 'ON'
+        <choose>
+            <when test="params.enterprisenumber != null and params.enterprisenumber !=''">
+                and e.enterprisenumber = #{params.enterprisenumber}
+            </when>
+            <otherwise>
+                <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>
+                <if test="params.street != null and params.street != ''">
+                    and e.street = #{params.street}
+                </if>
+                <if test="params.committee != null and params.committee != ''">
+                    and e.committee = #{params.committee}
+                </if>
+            </otherwise>
+        </choose>
+        and (YEAR (now()) - YEAR (substring(customer.idcardnum, 7, 8))) &gt;= #{params.head}
+        <if test="params.tail != null and params.tail != ''">
+        and (YEAR (now()) - YEAR (substring(customer.idcardnum, 7, 8))) &lt; #{params.tail}
+        </if>
+        <if test="params.enterprisename != null and params.enterprisename != ''">
+            and e.enterprisename like concat("%",#{params.enterprisename},"%")
+        </if>
+        <if test="params.productname != null and params.productname != ''">
+            and detail.itemname like concat("%",#{params.productname},"%")
+        </if>
+        <if test="params.producttype != null and params.producttype != ''">
+            and product.type = #{params.producttype}
+        </if>
+        <if test="params.secondarytype != null and params.secondarytype != ''">
+            and product.secondarytype = #{params.secondarytype}
+        </if>
+        <if test="params.provinceFilter != null and params.provinceFilter != ''">
+            and e.province = #{params.province}
+        </if>
+        <if test="params.cityFilter != null and params.cityFilter != ''">
+            and e.city = #{params.city}
+        </if>
+        <if test="params.districtFilter != null and params.districtFilter != ''">
+            and e.district = #{params.district}
+        </if>
+        <if test="params.streetFilter!= null and params.streetFilter != ''">
+            and e.street = #{params.street}
+        </if>
+        <if test="params.committeeFilter != null and params.committeeFilter != ''">
+            and e.committee = #{params.committee}
+        </if>
+        <if test="params.starttime != null and params.starttime != ''">
+            and detail.createdat &gt;= #{params.starttime}
+        </if>
+        <if test="params.endtime != null and params.endtime != ''">
+            and detail.createdat &lt; #{params.endtime}
+        </if>
+
+
+    </select>
+    <select id="selectOneByDirectionCode" resultMap="SaleDetailVo">
+        select detail.*,so.*,product.*
+        from saleorderdetail as detail
+        left join saleorder as so on so.code = detail.ordercode
+        left join product as product on product.directioncode = detail.itemcode and product.isdel = 0
+        where detail.directioncode = #{directionCode}
+        and detail.returnflag = 0
+    </select>
+    <select id="selectOrderByDirectionReturnflag" resultType="com.gk.firework.Domain.SaleOrderDetailInfo">
+        select
+        detail.id,
+        detail.ordercode,
+        detail.itemcode,
+        detail.itemname,
+        detail.directioncode,
+        detail.createdat,
+        detail.createdby,
+        detail.price,
+        detail.specification,
+        detail.returnflag
+        from saleorder as saleorder
+        left join saleorderdetail as detail on detail.ordercode = saleorder.code
+        <where>
+            detail.directioncode = #{directionCode}
+            and detail.returnflag = #{returnflag}
+            <if test="datetime != null">
+                and saleorder.createdat &lt;#{datetime}
+            </if>
+        </where>
+        group by createdat asc
+        limit 1
+    </select>
+    <select id="selectSaleNumInfo" resultType="com.gk.firework.Domain.Vo.SaleNumVo">
+        select
+        ifnull(round(count(0)/product.boxnumber,2),0 )num,
+        detail.itemcode,
+        product.*,
+        enterprise.enterprisenumber,
+        enterprise.enterprisename
+        from saleorderdetail as detail
+        left join saleorder as saleorder on saleorder.code = detail.ordercode
+        left join product as product on product.directioncode = detail.itemcode and product.isdel = 0
+        left join enterprise as enterprise on enterprise.enterprisenumber = saleorder.companynumber
+        <where>
+            <if test="params.enterprisename != null and params.enterprisename != '' ">
+                and enterprise.enterprisename = #{params.enterprisename}
+            </if>
+            <if test="params.enterprisenumber != null and params.enterprisenumber != '' ">
+                and saleorder.companynumber = #{params.enterprisename}
+            </if>
+            <if test="params.starttime != null and params.starttime != '' ">
+                and detail.createdat &gt;= #{params.starttime}
+            </if>
+            <if test="params.endtime != null and params.endtime != '' ">
+                and detail.createdat &lt;= #{params.endtime}
+            </if>
+        </where>
+        group by detail.itemcode
+    </select>
+    <select id="selectSaleNumInfoDetail" resultType="com.gk.firework.Domain.SaleOrderDetailInfo">
+
+        select detail.*
+        from saleorderdetail as detail
+        left join saleorder as saleorder on saleorder.code= detail.ordercode
+        left join enterprise as enterprise on enterprise.enterprisenumber = saleorder.companynumber
+        <where>
+            <if test="params.enterprisename != null and params.enterprisename != '' ">
+                and enterprise.enterprisename = #{params.enterprisename}
+            </if>
+            <if test="params.enterprisenumber != null and params.enterprisenumber != '' ">
+                and saleorder.companynumber = #{params.enterprisename}
+            </if>
+            <if test="params.starttime != null and params.starttime != '' ">
+                and detail.createdat &gt;= #{params.starttime}
+            </if>
+            <if test="params.endtime != null and params.endtime != '' ">
+                and detail.createdat &lt;= #{params.endtime}
+            </if>
+            <if test="params.itemcode != null and params.itemcode != '' ">
+                and detail.itemcode = #{params.itemcode}
+            </if>
+        </where>
+        order by detail.createdat desc
+    </select>
+    <select id="selectCityInAndOutDetail" resultType="java.util.Map">
+
+        select
+        e.enterprisename,
+        round(ifnull(saledata.salenum ,0),2)   salenum,
+        round(ifnull(entrydata.entrynum,0),2)  innum,
+        round(ifnull(deliverydata.deliverynum ,0),2) outnum,
+        ifnull(saleInfo.sales/10000,0)  sales
+        from (
+            select
+            enterprisename,enterprisenumber
+            from enterprise  as e
+            where  e.validflag = 1
+            and e.enterprisestatus = 'ON'
+            and e.city = #{params.city}
+            <if test="params.safetysupervision != null and params.safetysupervision != ''">
+                and e.safetysupervision = #{params.safetysupervision }
+            </if>
+        ) as e
+        left join (
+
+
+        select
+        saledata.enterprisename,sum(saledata.num) salenum
+        from(
+
+        SELECT
+            e.enterprisename,so.companynumber ,sod.itemcode ,count( 1 ) /p.boxnumber num
+            FROM
+            saleorderdetail AS sod
+            LEFT JOIN saleorder AS so ON so.`code` = sod.ordercode
+            LEFT JOIN product AS p ON p.directioncode = sod.itemcode and p.isdel = 0
+            LEFT JOIN enterprise AS e ON so.companynumber = e.enterprisenumber
+            where
+            e.enterprisestatus = 'ON'
+            and e.validflag = 1
+            and city = #{params.city}
+            <if test="params.starttime != null and params.starttime != ''">
+                and sod.createdat &gt;= #{params.starttime}
+            </if>
+            <if test="params.endtime != null and params.endtime != ''">
+                and sod.createdat &lt; #{params.endtime}
+            </if>
+            <if test="params.safetysupervision != null and params.safetysupervision != ''">
+                and e.safetysupervision = #{params.safetysupervision }
+            </if>
+            GROUP BY
+            so.companynumber ,sod.itemcode
+            ) as saledata
+            group by saledata.companynumber
+        ) as saledata on saledata.enterprisename = e.enterprisename
+
+        left join (
+
+        select
+        entrydata.enterprisename , sum(entrydata.entrynum) entrynum
+        from (
+        select
+        e.enterprisename,eo.companynumber,ed.itemcode,SUM( ed.num )/ p.boxnumber AS entrynum
+        FROM
+        entrydetail AS ed
+        LEFT JOIN entryorder AS eo ON eo.`code` = ed.entryorder
+        LEFT JOIN product AS p ON p.directioncode = ed.itemcode and p.isdel = 0
+        LEFT JOIN enterprise AS e ON eo.companynumber = e.enterprisenumber
+        where
+        e.enterprisestatus = 'ON'
+        and e.validflag = 1
+        and city = #{params.city}
+        <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>
+        GROUP BY
+        eo.companynumber,ed.itemcode
+        ) as entrydata
+        group by entrydata.companynumber
+        ) as entrydata  on entrydata.enterprisename = e.enterprisename
+
+        left join (
+
+        select
+        deliverydata.enterprisename,sum(deliverydata.deliverynum) deliverynum
+        from (
+        select e.enterprisename,deliveryorder.companynumber,detail.itemcode,sum(detail.num)/product.boxnumber as deliverynum
+        from deliverydetail as detail
+        left join deliveryorder as deliveryorder on deliveryorder.ordercode =  detail.deliverycode
+        left join product as product ON detail.itemcode = product.directioncode and product.isdel = 0
+        left join enterprise as e on e.enterprisenumber = deliveryorder.companynumber
+        where
+        e.enterprisestatus = 'ON'
+        and e.validflag = 1
+        and e.city = #{params.city}
+        <if test="params.starttime != null and params.starttime != ''">
+            and detail.createat &gt;= #{params.starttime}
+        </if>
+        <if test="params.endtime != null and params.endtime != ''">
+            and detail.createat &lt; #{params.endtime}
+        </if>
+        <if test="params.safetysupervision != null and params.safetysupervision != ''">
+            and e.safetysupervision = #{params.safetysupervision }
+        </if>
+        group by
+        deliveryorder.companynumber,detail.itemcode
+        ) as deliverydata
+        group by deliverydata.companynumber
+        )  as  deliverydata on deliverydata.enterprisename = e.enterprisename
+
+        left join (
+
+        select e.enterprisename,sum(saleorder.totalprice)  sales
+        from saleorder as saleorder
+        left join enterprise as e on e.enterprisenumber = saleorder.companynumber
+        where
+        e.enterprisestatus = 'ON'
+        and e.validflag = 1
+        and e.city = #{params.city}
+        <if test="params.starttime != null and params.starttime != ''">
+            and saleorder.createdat &gt;= #{params.starttime}
+        </if>
+        <if test="params.endtime != null and params.endtime != ''">
+            and saleorder.createdat &lt; #{params.endtime}
+        </if>
+        <if test="params.safetysupervision != null and params.safetysupervision != ''">
+            and e.safetysupervision = #{params.safetysupervision }
+        </if>
+        group by saleorder.companynumber
+
+        )  as saleInfo on saleInfo.enterprisename = e.enterprisename
+
+
+
+    </select>
+    <select id="selectCityTypeSale" resultType="java.util.Map">
+            select
+            citys.name,
+            ifnull(allperson.num,0) personnum
+            <foreach collection="list" item="item" index="index">
+                ,round(ifnull(num_${item},0),2) num_${item}
+            </foreach>,
+            round(
+            <trim suffixOverrides="+">
+                <foreach collection="list" item="item" index="index">
+                    ifnull(alldata.num_${item},0) +
+                </foreach>
+            </trim>
+            ,2) 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,so.companynumber,p.type,count( 1 ) /p.
+                    boxnumber num
+                    FROM
+                    saleorderdetail AS sod
+                    LEFT JOIN
+                    saleorder AS so ON so.`code` = sod.ordercode
+                    LEFT JOIN product AS p ON p.directioncode = sod.itemcode
+                    LEFT JOIN
+                    enterprise AS e ON so.companynumber = e.enterprisenumber
+                    where
+                    e.
+                    enterprisestatus = 'ON'
+                    and e.validflag=1
+                    and p.isdel = 0
+                    and e.validflag = 1
+                    <if test="params.starttime != null and params.starttime != ''">
+                        and so.createdat &gt;= #{params.starttime}
+                    </if>
+                    <if test="params.endtime != null and params.endtime != ''">
+                        and so.createdat &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
+                    so.companynumber,sod.itemcode
+
+                    ) as tmptmp
+                    group by tmptmp.city,tmptmp.type
+
+                    ) as tmptmptmp
+                    group by tmptmptmp.city
+            ) as alldata
+            on citys.name = alldata.city
+            left join (
+
+                select cc.city,count(0) num
+                from (
+                select e.city,so.customer
+                from saleorder as so
+                left join enterprise AS e ON so.companynumber = e.enterprisenumber
+                where
+                e.enterprisestatus = 'ON'
+                AND e.validflag = 1
+                <if test="params.starttime != null and params.starttime != ''">
+                    and so.createdat &gt;= #{params.starttime}
+                </if>
+                <if test="params.endtime != null and params.endtime != ''">
+                    and so.createdat &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 so.customer
+                ) as cc
+                group by cc.city
+
+        ) as allperson on citys.name = allperson.city
+    </select>
+    <select id="selectEnterpriseTypeSale" resultType="java.util.Map">
+        select
+        alldata.*,
+        ifnull(allperson.personnum,0) personnum,
+        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,so.companynumber,p.type,count( 1 ) /p.
+        boxnumber num
+        FROM
+        saleorderdetail AS sod
+        LEFT JOIN
+        saleorder AS so ON so.`code` = sod.ordercode
+        LEFT JOIN product AS p ON p.directioncode = sod.itemcode
+        LEFT JOIN
+        enterprise AS e ON so.companynumber = e.enterprisenumber
+        where
+        e.enterprisestatus = 'ON'
+        and e.validflag=1
+        and p.isdel = 0
+        and e.validflag = 1
+        <if test="params.starttime != null and params.starttime != ''">
+            and so.createdat &gt;= #{params.starttime}
+        </if>
+        <if test="params.endtime != null and params.endtime != ''">
+            and so.createdat &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
+        so.companynumber,sod.itemcode
+
+        ) as tmptmp
+        group by tmptmp.companynumber,tmptmp.type
+        ) as tmptmptmp
+        group by tmptmptmp.enterprisename)
+        as alldata
+        left join (
+
+            select cc.enterprisename,count(0) personnum
+            from (
+            select e.city,e.enterprisename,so.customer
+            from saleorder as so
+            left join enterprise AS e ON so.companynumber = e.enterprisenumber
+            where
+            e.enterprisestatus = 'ON'
+            AND e.validflag = 1
+            <if test="params.starttime != null and params.starttime != ''">
+                and so.createdat &gt;= #{params.starttime}
+            </if>
+            <if test="params.endtime != null and params.endtime != ''">
+                and so.createdat &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 so.companynumber,so.customer
+            ) as cc
+            group by cc.enterprisename
+        ) as allperson
+        on allperson.enterprisename = alldata.enterprisename
+    </select>
+    <select id="selectAllType" resultType="java.util.Map">
+        select
+        lasttmp.*,
+        othertmp.personnum,
+        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,so.companynumber,p.type,count( 1 ) /p.
+        boxnumber num
+        FROM
+        saleorderdetail AS sod
+        LEFT JOIN
+        saleorder AS so ON so.`code` = sod.ordercode
+        LEFT JOIN product AS p ON p.directioncode = sod.itemcode
+        LEFT JOIN
+        enterprise AS e ON so.companynumber = e.enterprisenumber
+        where
+        e.enterprisestatus = 'ON'
+        and e.validflag=1
+        and p.isdel = 0
+        and e.validflag = 1
+        <if test="params.starttime != null and params.starttime != ''">
+            and so.createdat &gt;= #{params.starttime}
+        </if>
+        <if test="params.endtime != null and params.endtime != ''">
+            and so.createdat &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
+        so.companynumber,sod.itemcode
+
+        ) as tmptmp
+        group by tmptmp.type
+
+
+        ) as tmptmptmp
+        ) as lasttmp
+        left join
+        (
+        select  '合计' name,sum(1) personnum
+        from (
+        select
+        count(0) num
+        from saleorder  as so
+        left join enterprise AS e ON so.companynumber = e.enterprisenumber
+        WHERE
+        e.enterprisestatus = 'ON'
+        AND e.validflag = 1
+        <if test="params.starttime != null and params.starttime != ''">
+            and so.createdat &gt;= #{params.starttime}
+        </if>
+        <if test="params.endtime != null and params.endtime != ''">
+            and so.createdat &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 so.customer
+        )  as cc
+
+        ) as othertmp
+        on othertmp.name = lasttmp.name
+
+
+    </select>
+    <select id="selectDistrictTypeSale" resultType="java.util.Map">
+        select
+        citys.name,
+        ifnull(allperson.num,0) personnum
+        <foreach collection="list" item="item" index="index">
+            ,round(ifnull(num_${item},0),2) num_${item}
+        </foreach>,
+        round(
+        <trim suffixOverrides="+">
+            <foreach collection="list" item="item" index="index">
+                ifnull(alldata.num_${item},0)  +
+            </foreach>
+        </trim>
+        ,2) totalcol
+        from (
+        select district.name
+        from district
+        where parentcode =(
+        select district.code
+        from district as district
+        where district.name = #{params.city}
+        and type = 2)
+        and type =3
+        ) as citys
+
+        left join (
+        select
+        tmptmptmp.district
+        <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.district,tmptmp.type,sum(tmptmp.num) num
+        from
+        (
+        SELECT
+        e.district,so.companynumber,p.type,count( 1 ) /p.
+        boxnumber num
+        FROM
+        saleorderdetail AS sod
+        LEFT JOIN
+        saleorder AS so ON so.`code` = sod.ordercode
+        LEFT JOIN product AS p ON p.directioncode = sod.itemcode
+        LEFT JOIN
+        enterprise AS e ON so.companynumber = e.enterprisenumber
+        where
+        e.
+        enterprisestatus = 'ON'
+        and e.validflag=1
+        and p.isdel = 0
+        and e.validflag = 1
+        <if test="params.starttime != null and params.starttime != ''">
+            and so.createdat &gt;= #{params.starttime}
+        </if>
+        <if test="params.endtime != null and params.endtime != ''">
+            and so.createdat &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
+        so.companynumber,sod.itemcode
+
+        ) as tmptmp
+        group by tmptmp.district,tmptmp.type
+
+        ) as tmptmptmp
+        group by tmptmptmp.district
+        ) as alldata
+        on citys.name = alldata.district
+        left join (
+
+        select cc.district,count(0) num
+        from (
+        select e.district,so.customer
+        from saleorder as so
+        left join enterprise AS e ON so.companynumber = e.enterprisenumber
+        where
+        e.enterprisestatus = 'ON'
+        AND e.validflag = 1
+        <if test="params.starttime != null and params.starttime != ''">
+            and so.createdat &gt;= #{params.starttime}
+        </if>
+        <if test="params.endtime != null and params.endtime != ''">
+            and so.createdat &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 so.customer
+        ) as cc
+        group by cc.district
+
+        ) as allperson on citys.name = allperson.district
+    </select>
+    <select id="selectAllDistrictType" resultType="java.util.Map">
+        select
+        lasttmp.*,
+        othertmp.personnum,
+        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,so.companynumber,p.type,count( 1 ) /p.
+        boxnumber num
+        FROM
+        saleorderdetail AS sod
+        LEFT JOIN
+        saleorder AS so ON so.`code` = sod.ordercode
+        LEFT JOIN product AS p ON p.directioncode = sod.itemcode
+        LEFT JOIN
+        enterprise AS e ON so.companynumber = e.enterprisenumber
+        where
+        e.enterprisestatus = 'ON'
+        and e.validflag=1
+        and p.isdel = 0
+        and e.validflag = 1
+        <if test="params.starttime != null and params.starttime != ''">
+            and so.createdat &gt;= #{params.starttime}
+        </if>
+        <if test="params.endtime != null and params.endtime != ''">
+            and so.createdat &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
+        so.companynumber,sod.itemcode
+        ) as tmptmp
+        group by tmptmp.type
+        ) as tmptmptmp
+        ) as lasttmp
+        left join
+        (
+        select  '合计' name,sum(1) personnum
+        from (
+        select
+        e.city,
+        e.district,
+        count(0) num
+        from saleorder  as so
+        left join enterprise AS e ON so.companynumber = e.enterprisenumber
+        WHERE
+        e.enterprisestatus = 'ON'
+        AND e.validflag = 1
+        <if test="params.starttime != null and params.starttime != ''">
+            and so.createdat &gt;= #{params.starttime}
+        </if>
+        <if test="params.endtime != null and params.endtime != ''">
+            and so.createdat &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 so.customer
+        )  as cc
+        <where>
+            1=1
+            <if test="params.city != null and params.city != ''">
+                and cc.city = #{params.city }
+            </if>
+        </where>
+        GROUP BY
+        cc.city
+        ) as othertmp
+        on othertmp.name = lasttmp.name
+    </select>
+</mapper>

--
Gitblit v1.9.2