<?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.ruoyi.production.mapper.ProductionAccountMapper">
|
|
<!-- 通用查询映射结果 -->
|
<resultMap id="BaseResultMap" type="com.ruoyi.production.pojo.ProductionAccount">
|
<id column="id" property="id" />
|
<result column="sales_ledger_id" property="salesLedgerId" />
|
<result column="sales_ledger_product_id" property="salesLedgerProductId" />
|
<result column="production_product_main_id" property="productionProductMainId" />
|
<result column="scheduling_user_id" property="schedulingUserId" />
|
<result column="scheduling_user_name" property="schedulingUserName" />
|
<result column="finished_num" property="finishedNum" />
|
<result column="work_hours" property="workHours" />
|
<result column="technology_operation_name" property="technologyOperationName" />
|
<result column="scheduling_date" property="schedulingDate" />
|
<result column="create_user" property="createUser" />
|
<result column="create_time" property="createTime" />
|
<result column="update_user" property="updateUser" />
|
<result column="update_time" property="updateTime" />
|
<result column="dept_id" property="deptId" />
|
</resultMap>
|
|
<select id="listPage" resultType="com.ruoyi.production.bean.vo.ProductionAccountVo">
|
select
|
group_concat(distinct p_parent.product_name order by p_parent.product_name separator ',') as productCategory,
|
group_concat(distinct pm.model order by pm.model separator ',') as specificationModel,
|
group_concat(distinct pm.unit order by pm.unit separator ',') as unit,
|
pa.scheduling_user_id as schedulingUserId,
|
pa.scheduling_user_name as schedulingUserName,
|
cast(sum(
|
ifnull(pa.work_hours, 0) * ifnull(pa.finished_num, 0) *
|
case
|
when substring_index(pm.model, '*', -1) regexp '^[0-9]+(\\.[0-9]+)?$'
|
then cast(substring_index(pm.model, '*', -1) as decimal(18,4))
|
else 1
|
end
|
) as decimal(18,4)) as wages,
|
cast(sum(ifnull(pa.finished_num, 0)) as decimal(18,4)) as finishedNum,
|
cast(sum(ifnull(pa.work_hours, 0)) as decimal(18,4)) as workHours,
|
group_concat(distinct pa.technology_operation_name order by pa.technology_operation_name separator ',') as process,
|
case
|
when count(distinct date(pa.scheduling_date)) = 1 then min(date(pa.scheduling_date))
|
else null
|
end as schedulingDate,
|
case
|
when count(distinct date_format(pa.scheduling_date, '%Y-%m')) = 1 then min(date_format(pa.scheduling_date, '%Y-%m'))
|
else null
|
end as schedulingMonth
|
from production_account pa
|
left join production_product_main ppm on ppm.id = pa.production_product_main_id
|
left join production_operation_task pot on ppm.production_operation_task_id = pot.id
|
left join production_order po on pot.production_order_id = po.id
|
left join production_order_routing_operation poro on pot.production_order_routing_operation_id = poro.id
|
left join product_model pm on pm.id = ifnull(poro.product_model_id, po.product_model_id)
|
left join product p on pm.product_id = p.id
|
left join product p_parent on p_parent.id = p.parent_id
|
<where>
|
<if test="c != null">
|
<if test="c.productCategory != null and c.productCategory != ''">
|
and p_parent.product_name like concat('%', #{c.productCategory}, '%')
|
</if>
|
<if test="c.specificationModel != null and c.specificationModel != ''">
|
and pm.model like concat('%', #{c.specificationModel}, '%')
|
</if>
|
<if test="c.schedulingUserId != null">
|
and pa.scheduling_user_id = #{c.schedulingUserId}
|
</if>
|
<if test="c.schedulingUserName != null and c.schedulingUserName != ''">
|
and pa.scheduling_user_name like concat('%', #{c.schedulingUserName}, '%')
|
</if>
|
<if test="c.process != null and c.process != ''">
|
and pa.technology_operation_name like concat('%', #{c.process}, '%')
|
</if>
|
<if test="c.entryDate != null">
|
and date(pa.scheduling_date) = #{c.entryDate}
|
</if>
|
<if test="c.entryDateStart != null">
|
and date(pa.scheduling_date) >= #{c.entryDateStart}
|
</if>
|
<if test="c.entryDateEnd != null">
|
and date(pa.scheduling_date) <= #{c.entryDateEnd}
|
</if>
|
</if>
|
</where>
|
group by pa.scheduling_user_id,
|
pa.scheduling_user_name
|
order by wages desc,
|
pa.scheduling_user_id asc
|
</select>
|
|
<select id="selectUserAccount" resultType="com.ruoyi.production.bean.dto.UserAccountDto">
|
select ifnull(sum(finished_num), 0) as accountBalance,
|
ifnull(sum(work_hours), 0) as account
|
from production_account
|
where scheduling_user_id = #{userId}
|
and date_format(scheduling_date, '%Y-%m') = #{date}
|
</select>
|
|
<select id="selectDailyWagesStats" resultType="java.util.Map">
|
select date_format(scheduling_date, '%m-%d') as dateStr,
|
cast(ifnull(sum(finished_num), 0) as decimal(18,2)) as numberOfCompleted,
|
cast(ifnull(sum(work_hours), 0) as decimal(18,2)) as amount,
|
cast(0 as decimal(18,2)) as passRate
|
from production_account
|
where scheduling_date >= #{startDate}
|
and scheduling_date <= #{endDate}
|
group by date_format(scheduling_date, '%m-%d')
|
order by date_format(scheduling_date, '%m-%d')
|
</select>
|
|
</mapper>
|