Fancy
2025-01-14 057d4df78bcc5b34ca7c6897918946c4a9e65d18
pms-parent/pms-global/src/main/resources/mapper/PrOrderMapper.xml
@@ -12,18 +12,24 @@
            <result property="director" column="director" jdbcType="VARCHAR"/>
            <result property="dMobile" column="d_mobile" jdbcType="VARCHAR"/>
            <result property="deliveryDate" column="delivery_date" jdbcType="VARCHAR"/>
            <result property="deliveryAddress" column="delivery_address" jdbcType="VARCHAR"/>
            <result property="recipient" column="recipient" jdbcType="VARCHAR"/>
            <result property="rMobile" column="r_mobile" jdbcType="VARCHAR"/>
            <result property="status" column="status" jdbcType="TINYINT"/>
            <result property="creator" column="creator" jdbcType="VARCHAR"/>
            <result property="dt" column="dt" jdbcType="TIMESTAMP"/>
            <result property="deleted" column="deleted" jdbcType="TINYINT"/>
            <result column="deleted" property="deleted" typeHandler="com.dy.common.mybatis.BooleanTypeHandler" />
            <result property="remark" column="remark" jdbcType="VARCHAR"/>
    </resultMap>
    <resultMap id="BaseResultMap2" type="com.dy.pmsGlobal.pojoPr.PrOrder" extends="BaseResultMap">
        <collection property="items" ofType="com.dy.pmsGlobal.pojoPr.PrOrderItem" fetchType="eager" select="com.dy.pmsGlobal.daoPr.PrOrderItemMapper.selectItems" column="id" />
    </resultMap>
    <resultMap id="BaseResultMap3" type="com.dy.pmsGlobal.pojoPr.PrOrder" extends="BaseResultMap">
        <collection property="items" ofType="com.dy.pmsGlobal.pojoPr.PrOrderItem" fetchType="eager" select="com.dy.pmsGlobal.daoPr.PrOrderItemMapper.selectDistinctPro" column="id" />
    </resultMap>
    <sql id="Base_Column_List">
        id,`name`,customer_name,
        director,d_mobile,delivery_date,
        id,`name`,customer_name,project_name,
        director,d_mobile,delivery_date,delivery_address,recipient,r_mobile,
        status,creator,dt,
        deleted,remark
    </sql>
@@ -33,7 +39,9 @@
        from pr_order
        where  id = #{id,jdbcType=BIGINT} 
    </select>
    <select id="selectOrderNameById" parameterType="java.lang.Long" resultType="String">
        select name from pr_order where id=#{orderId,jdbcType=BIGINT}
    </select>
    <select id="exists" resultType="java.lang.Boolean">
        select count(1) from pr_order where name = #{name}
        <if test="id != null">
@@ -46,27 +54,27 @@
        <include refid="Base_Column_List" />
        from pr_order p
        where p.deleted!=1
        <trim prefix="and " suffixOverrides="and">
        <trim prefix="and" suffixOverrides="and">
            <if test="name != null and name != ''">
                and  name like concat('%', #{name}, '%')
                  name like concat('%', #{name}, '%') and
            </if>
            <if test="customerName != null and customerName != ''">
                and customer_name like concat('%', #{customerName}, '%')
                 customer_name like concat('%', #{customerName}, '%') and
            </if>
            <if test="projectName != null and projectName != ''">
                and project_name like concat('%', #{projectName}, '%')
                 project_name like concat('%', #{projectName}, '%') and
            </if>
            <if test="director != null and director != ''">
                and director like concat('%', #{director}, '%')
                 director like concat('%', #{director}, '%') and
            </if>
            <if test="startDate != null">
                and delivery_date <![CDATA[ > ]]> #{startDate,jdbcType=VARCHAR}
            <if test="startDate != null and startDate != ''">
                 delivery_date <![CDATA[ > ]]> #{startDate,jdbcType=VARCHAR} and
            </if>
            <if test="endDate != null">
                and delivery_date <![CDATA[ < ]]> #{endDate,jdbcType=VARCHAR}
            <if test="endDate != null and endDate != ''">
                 delivery_date <![CDATA[ < ]]> #{endDate,jdbcType=VARCHAR} and
            </if>
            <if test="status != null">
                and status = #{status,jdbcType=TINYINT}
                 status = #{status,jdbcType=TINYINT} and
            </if>
        </trim>
        order by id desc
@@ -81,59 +89,77 @@
        select count(1)
        from pr_order p
        where p.deleted!=1
        <trim prefix="and " suffixOverrides="and">
        <trim prefix="and" suffixOverrides="and">
            <if test="name != null and name != ''">
                and  name like concat('%', #{name}, '%')
                 name like concat('%', #{name}, '%') and
            </if>
            <if test="customerName != null and customerName != ''">
                and customer_name like concat('%', #{customerName}, '%')
                 customer_name like concat('%', #{customerName}, '%') and
            </if>
            <if test="projectName != null and projectName != ''">
                and project_name like concat('%', #{projectName}, '%')
                 project_name like concat('%', #{projectName}, '%') and
            </if>
            <if test="director != null and director != ''">
                and director like concat('%', #{director}, '%')
                 director like concat('%', #{director}, '%') and
            </if>
            <if test="startDate != null">
                and delivery_date <![CDATA[ > ]]> #{startDate,jdbcType=VARCHAR}
            <if test="startDate != null and startDate != ''">
                 delivery_date <![CDATA[ > ]]> #{startDate,jdbcType=VARCHAR} and
            </if>
            <if test="endDate != null">
                and delivery_date <![CDATA[ < ]]> #{endDate,jdbcType=VARCHAR}
            <if test="endDate != null and endDate != ''">
                 delivery_date <![CDATA[ < ]]> #{endDate,jdbcType=VARCHAR} and
            </if>
            <if test="status != null">
                and status = #{status,jdbcType=TINYINT}
                 status = #{status,jdbcType=TINYINT} and
            </if>
        </trim>
    </select>
    <!--下拉菜单订单-->
    <select id="selectAll" resultType="com.dy.pmsGlobal.pojoPr.PrOrder">
        select
        <include refid="Base_Column_List" />
        from pr_order p
        where p.deleted!=1
        <trim prefix="and " suffixOverrides="and">
        <trim prefix="and" suffixOverrides="and">
            <if test="name != null and name != ''">
                and name like concat('%', #{name}, '%')
                 name like concat('%', #{name}, '%') and
            </if>
            <if test="customerName != null and customerName != ''">
                and customer_name like concat('%', #{customerName}, '%')
                 customer_name like concat('%', #{customerName}, '%') and
            </if>
            <if test="projectName != null and projectName != ''">
                and project_name like concat('%', #{projectName}, '%')
                 project_name like concat('%', #{projectName}, '%') and
            </if>
            <if test="director != null and director != ''">
                and director like concat('%', #{director}, '%')
                 director like concat('%', #{director}, '%') and
            </if>
            <if test="startDate != null">
                and delivery_date <![CDATA[ > ]]> #{startDate,jdbcType=VARCHAR}
            <if test="startDate != null and startDate != ''">
                 delivery_date <![CDATA[ > ]]> #{startDate,jdbcType=VARCHAR} and
            </if>
            <if test="endDate != null">
                and delivery_date <![CDATA[ < ]]> #{endDate,jdbcType=VARCHAR}
            <if test="endDate != null and endDate != ''">
                 delivery_date <![CDATA[ < ]]> #{endDate,jdbcType=VARCHAR} and
            </if>
            <if test="status != null">
                and status = #{status,jdbcType=TINYINT}
                 status = #{status,jdbcType=TINYINT} and
            </if>
        </trim>
        order by id desc
    </select>
    <select id="queryStatisticOrder" resultType="cn.hutool.json.JSONObject">
        SELECT
            count(1) AS total,
            SUM(CASE WHEN delivery_date >= DATE_SUB(CURDATE(), INTERVAL 1 YEAR) THEN 1 ELSE 0 END) AS year_total,
            SUM(CASE WHEN complete = 'complete' THEN 1 ELSE 0 END) AS complete,
            SUM(CASE WHEN complete = 'uncomplete' THEN 1 ELSE 0 END) AS uncomplete
        FROM(
                SELECT po.id,po.delivery_date, CASE WHEN po.`status`= -1 OR poi.complete ='complete' THEN 'complete' ELSE 'uncomplete' END AS complete FROM
                    (SELECT id,`name`, `status`,delivery_date FROM pr_order WHERE deleted = 0) po
                        LEFT JOIN (
                        SELECT pr.order_id ,CASE WHEN COUNT(pr.order_id) - SUM(pr.flag) = 0 THEN 'complete' ELSE 'uncomplete' END AS complete
                        FROM
                            (SELECT item.order_id,item.pro_id,CASE WHEN item.complete_number - item.number >= 0 THEN 1  ELSE 0 END AS flag FROM
                                (SELECT order_id,pro_id, SUM(number) number,SUM(IFNULL(complete_number,0)) complete_number FROM pr_order_item GROUP BY order_id,pro_id) item
                            ) pr GROUP BY pr.order_id) poi
                        ON po.id = poi.order_id) statistic
    </select>
    <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
        delete from pr_order
@@ -147,58 +173,73 @@
        insert into pr_order
        <trim prefix="(" suffix=")" suffixOverrides=",">
                <if test="id != null">id,</if>
                <if test="name != null">name,</if>
                <if test="customerName != null">customer_name,</if>
                <if test="projectName != null">project_name,</if>
                <if test="director != null">director,</if>
                <if test="dMobile != null">d_mobile,</if>
                <if test="deliveryDate != null">delivery_date,</if>
                <if test="name != null and name !=''">name,</if>
                <if test="customerName!= null and customerName !=''">customer_name,</if>
                <if test="projectName!= null and projectName !=''">project_name,</if>
                <if test="director != null and director !=''">director,</if>
                <if test="dMobile != null and dMobile !=''">d_mobile,</if>
                <if test="deliveryDate!= null and deliveryDate !=''">delivery_date,</if>
                <if test="deliveryAddress!= null and deliveryAddress !=''">delivery_date,</if>
                <if test="recipient!= null and recipient !=''">recipient,</if>
                <if test="rMobile!= null and rMobile !=''">r_mobile,</if>
                <if test="status != null">status,</if>
                <if test="creator != null">creator,</if>
                <if test="creator != null and creator !=''">creator,</if>
                <if test="dt != null">dt,</if>
                <if test="deleted != null">deleted,</if>
                <if test="remark != null">remark,</if>
                <if test="remark != null and remark !=''">remark,</if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
                <if test="id != null">#{id,jdbcType=BIGINT},</if>
                <if test="name != null">#{name,jdbcType=VARCHAR},</if>
                <if test="customerName != null">#{customerName,jdbcType=VARCHAR},</if>
                <if test="projectName != null">#{projectName,jdbcType=VARCHAR},</if>
                <if test="director != null">#{director,jdbcType=VARCHAR},</if>
                <if test="dMobile != null">#{dMobile,jdbcType=VARCHAR},</if>
                <if test="deliveryDate != null">#{deliveryDate,jdbcType=VARCHAR},</if>
                <if test="name != null and name !=''">#{name,jdbcType=VARCHAR},</if>
                <if test="customerName!= null and customerName !=''">#{customerName,jdbcType=VARCHAR},</if>
                <if test="projectName!= null and projectName !=''">#{projectName,jdbcType=VARCHAR},</if>
                <if test="director != null and director !=''">#{director,jdbcType=VARCHAR},</if>
                <if test="dMobile != null and dMobile !=''">#{dMobile,jdbcType=VARCHAR},</if>
                <if test="deliveryDate!= null and deliveryDate !=''">#{deliveryDate,jdbcType=VARCHAR},</if>
                <if test="deliveryAddress!= null and deliveryAddress !=''">#{deliveryAddress,jdbcType=VARCHAR},</if>
                <if test="recipient!= null and recipient !=''">#{recipient,jdbcType=VARCHAR},</if>
                <if test="rMobile!= null and rMobile !=''">#{rMobile,jdbcType=VARCHAR},</if>
                <if test="status != null">#{status,jdbcType=TINYINT},</if>
                <if test="creator != null">#{creator,jdbcType=VARCHAR},</if>
                <if test="creator != null and creator !=''">#{creator,jdbcType=VARCHAR},</if>
                <if test="dt != null">#{dt,jdbcType=TIMESTAMP},</if>
                <if test="deleted != null">#{deleted,jdbcType=TINYINT},</if>
                <if test="remark != null">#{remark,jdbcType=VARCHAR},</if>
                <if test="remark != null and remark !=''">#{remark,jdbcType=VARCHAR},</if>
        </trim>
    </insert>
    <update id="updateByPrimaryKeySelective" parameterType="com.dy.pmsGlobal.pojoPr.PrOrder">
        update pr_order
        <set>
                <if test="name != null">
                <if test="name != null and name !=''">
                    name = #{name,jdbcType=VARCHAR},
                </if>
                <if test="customerName != null">
                <if test="customerName!= null and customerName !=''">
                    customer_name = #{customerName,jdbcType=VARCHAR},
                </if>
                <if test="projectName != null">
                <if test="projectName!= null and projectName !=''">
                    project_name = #{projectName,jdbcType=VARCHAR},
                </if>
                <if test="director != null">
                <if test="director != null and director !=''">
                    director = #{director,jdbcType=VARCHAR},
                </if>
                <if test="dMobile != null">
                <if test="dMobile != null and dMobile !=''">
                    d_mobile = #{dMobile,jdbcType=VARCHAR},
                </if>
                <if test="deliveryDate != null">
                <if test="deliveryDate!= null and deliveryDate !=''">
                    delivery_date = #{deliveryDate,jdbcType=VARCHAR},
                </if>
                <if test="deliveryAddress!= null and deliveryAddress !=''">
                    delivery_date = #{deliveryAddress,jdbcType=VARCHAR},
                </if>
                <if test="recipient!= null and recipient !=''">
                    recipient = #{recipient,jdbcType=VARCHAR},
                </if>
                <if test="rMobile!= null and rMobile !=''">
                    r_mobile = #{rMobile,jdbcType=VARCHAR},
                </if>
                <if test="status != null">
                    status = #{status,jdbcType=TINYINT},
                </if>
                <if test="creator != null">
                <if test="creator != null and creator !=''">
                    creator = #{creator,jdbcType=VARCHAR},
                </if>
                <if test="dt != null">
@@ -207,7 +248,7 @@
                <if test="deleted != null">
                    deleted = #{deleted,jdbcType=TINYINT},
                </if>
                <if test="remark != null">
                <if test="remark != null and remark !=''">
                    remark = #{remark,jdbcType=VARCHAR},
                </if>
        </set>