<?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.example.erp.mapper.pp.ReportMapper">
|
<resultMap id="flowCardMap" type="com.example.erp.entity.pp.FlowCard">
|
<result column="order_id" property="orderId"/>
|
<result column="process_Id" property="processId"/>
|
<result column="quantity" property="quantity"/>
|
<result column="founder" property="founder"/>
|
<result column="create_time" property="createTime"/>
|
<result column="layout_status" property="layoutStatus"/>
|
<!--接收其他外键实体类数据-->
|
<association property="order" javaType="com.example.erp.entity.sd.Order">
|
<result column="project" property="project"/>
|
<result column="order_id" property="orderId"/>
|
<result column="customer_name" property="customerName"/>
|
<result column="batch" property="batch"/>
|
<result column="other_remarks" property="otherRemarks"/>
|
<result column="icon" property="icon"/>
|
<result column="order_type" property="orderType"/>
|
<result column="salesman" property="salesman"/>
|
<result column="processing_note" property="processingNote"/>
|
<result column="delivery_address" property="deliveryAddress"/>
|
</association>
|
<association property="orderDetail" javaType="com.example.erp.entity.sd.OrderDetail">
|
<result column="product_id" property="productId"/>
|
<result column="product_name" property="productName"/>
|
<result column="compute_gross_area" property="computeGrossArea"/>
|
<result column="processing_note" property="processingNote"/>
|
<result column="quantity" property="quantity"/>
|
<result column="compute_gross_area" property="computeGrossArea"/>
|
<result column="perimeter" property="perimeter"/>
|
<result column="order_number" property="orderNumber"/>
|
<result column="width" property="width"/>
|
<result column="height" property="height"/>
|
<result column="shape" property="shape"/>
|
<result column="weight" property="weight"/>
|
</association>
|
<association property="orderGlassDetail" javaType="com.example.erp.entity.sd.OrderGlassDetail">
|
<result column="production_id" property="productionId"/>
|
</association>
|
<association property="product" javaType="com.example.erp.entity.sd.Product">
|
<result column="total_thickness" property="totalThickness"/>
|
<result column="thickness" property="thickness"/>
|
</association>
|
|
<!--<result column="g_typeId" property="glassTypes.typeId"/>
|
<result column="g_type" property="glassTypes.type"/>-->
|
|
</resultMap>
|
|
<resultMap id="damageDetailsTableMap" type="com.example.erp.entity.pp.DamageDetails">
|
<result column="responsible_process" property="responsibleProcess"/>
|
<result column="responsible_team" property="responsibleTeam"/>
|
<result column="breakage_type" property="breakageType"/>
|
<result column="breakage_reason" property="breakageReason"/>
|
<result column="breakage_quantity" property="breakageQuantity"/>
|
<result column="area" property="area"/>
|
<result column="reporting_work_id" property="reportingWork.reportingWorkId"/>
|
<result column="reporting_work_time" property="reportingWork.reportingWorkTime"/>
|
<result column="this_process" property="reportingWork.thisProcess"/>
|
<result column="project" property="order.project"/>
|
<result column="order_id" property="order.orderId"/>
|
<result column="glass_child" property="orderGlassDetail.glassChild"/>
|
</resultMap>
|
|
|
<resultMap id="reportMap" type="com.example.erp.entity.pp.Report">
|
<result column="process_id" property="processId"/>
|
<result column="customer_name" property="customerName"/>
|
<result column="project" property="project"/>
|
<result column="order_id" property="orderId"/>
|
<result column="batch" property="batch"/>
|
<result column="shape" property="shape"/>
|
<result column="order_number" property="orderNumber"/>
|
<result column="technology_number" property="technologyNumber"/>
|
<result column="process" property="technologyFlow"/>
|
<result column="quantity" property="orderNum"/>
|
<result column="child_width" property="childWidth"/>
|
<result column="child_height" property="childHeight"/>
|
<result column="stockNum" property="stockNum"/>
|
<result column="stockArea" property="stockArea"/>
|
<result column="product_name" property="productName"/>
|
<result column="bend_radius" property="bendRadius"/>
|
</resultMap>
|
|
<resultMap id="damageReportMap" type="com.example.erp.dto.pp.DamageReportDTO">
|
<result column="order_id" property="orderId"/>
|
<result column="reporting_work_time" property="reportingWorkTime"/>
|
<result column="area" property="area"/>
|
<result column="breakage_quantity" property="breakageQuantity"/>
|
<result column="project" property="project"/>
|
<result column="process_id" property="processId"/>
|
<result column="order_number" property="orderNumber"/>
|
<result column="technology_number" property="technologyNumber"/>
|
<result column="responsible_process" property="responsibleProcess"/>
|
<result column="responsible_team" property="responsibleTeam"/>
|
<result column="responsible_equipment" property="responsibleEquipment"/>
|
<result column="breakage_type" property="breakageType"/>
|
<result column="breakage_reason" property="breakageReason"/>
|
<result column="personnel" property="personnel"/>
|
<result column="glass_child" property="glassChild"/>
|
</resultMap>
|
|
<resultMap id="teamOutputMap" type="com.example.erp.dto.pp.TeamOutputDTO">
|
<result column="reporting_work_time" property="reportingWorkTime"/>
|
<result column="this_process" property="thisProcess"/>
|
<result column="teams_groups_name" property="teamsGroupsName"/>
|
<result column="project" property="project"/>
|
<result column="process_id" property="processId"/>
|
<result column="order_number" property="orderNumber"/>
|
<result column="width" property="width"/>
|
<result column="height" property="height"/>
|
<result column="shape" property="shape"/>
|
<result column="thickness" property="thickness"/>
|
<result column="edging_type" property="edgingType"/>
|
<result column="completed_quantity" property="completedQuantity"/>
|
<result column="area" property="area"/>
|
<result column="product_name" property="productName"/>
|
</resultMap>
|
|
|
<!-- 流程卡进度-->
|
<select id="processCardProgressMp">
|
select a.product_name,
|
b.glass_child,
|
d.order_type,
|
concat(c.process_id, '/', c.technology_number) as process_id,
|
c.order_number,
|
c.technology_number,
|
c.quantity,
|
e.reportWorkQuantity,
|
e.reportWorkQuantityCount,
|
e.broken_num,
|
ifnull(f.inventory, 0) as inventory,
|
round(ifnull(f.inventory, 0) * a.area, 2) as inventoryArea,
|
ifnull(dd.quantity, 0) as shippedQuantity
|
from flow_card as c
|
left join
|
sd.order_detail as a
|
on c.order_id = a.order_id
|
and c.order_number = a.order_number
|
left join sd.order_glass_detail as b
|
on c.order_id = b.order_id
|
and b.order_number = c.order_number
|
and c.technology_number = b.technology_number
|
left join sd.`order` as d
|
on c.order_id = d.order_id
|
left join mm.finished_goods_inventory as f
|
on c.order_id = f.order_id and f.order_number = c.order_number
|
left join sd.delivery_detail as dd on dd.order_id = a.order_id and dd.order_number = a.order_number
|
left join (SELECT process_id,
|
order_number,
|
technology_number,
|
sum(a.broken_num) as broken_num,
|
concat('{',
|
GROUP_CONCAT(concat("\"", process, "\":\"", reporting_work_num, "\"")),
|
'}'
|
) as reportWorkQuantity,
|
concat('{',
|
GROUP_CONCAT(concat("\"", process, "\":\"", reporting_work_num_count, "\"")),
|
'}'
|
) as reportWorkQuantityCount
|
FROM sd.order_process_detail as a
|
where a.order_id = #{orderId}
|
GROUP BY process_id, a.order_number, a.technology_number) as e
|
on e.process_id = c.process_id
|
and e.technology_number = c.technology_number
|
and e.order_number = c.order_number
|
where a.order_id = #{orderId}
|
group by c.order_number,
|
c.technology_number,
|
c.process_id
|
order by c.process_id, c.order_number, c.technology_number
|
</select>
|
|
<select id="getProcessBreaking" resultMap="damageDetailsTableMap">
|
select rw.reporting_work_id,rw.reporting_work_time,dd.responsible_process,dd.responsible_team,
|
dd.breakage_type,dd.breakage_reason,ROUND((dd.breakage_quantity)) as breakage_quantity,
|
round(ogd.child_width*ogd.child_height*(dd.breakage_quantity)/1000000,2) as area,rw.this_process,
|
o.project,o.order_id,ogd.glass_child,rw.this_process
|
from
|
damage_details as dd
|
left join reporting_work as rw
|
on rw.reporting_work_id=dd.reporting_work_id
|
left join sd.order as o
|
on rw.order_id=o.order_id
|
left join sd.order_glass_detail as ogd
|
on ogd.order_id=o.order_id and ogd.order_number=dd.order_number
|
and ogd.technology_number and dd.technology_number
|
where date(rw.reporting_work_time)>=#{startDate} and date(rw.reporting_work_time) <= #{endDate}
|
and rw.this_worn_quantity>0 and dd.available=0
|
and reviewed_state!=2
|
and rw.this_process!=dd.responsible_process
|
GROUP BY dd.id
|
order by dd.id desc
|
limit #{offset},#{pageSize}
|
</select>
|
|
<select id="getProcessBreakingTotal">
|
select
|
CEILING(count(dd.id)/#{pageSize}) as 'pageTotal',
|
count(distinct dd.id) as 'total'
|
from
|
damage_details as dd
|
left join reporting_work as rw
|
on rw.reporting_work_id=dd.reporting_work_id
|
left join sd.order as o
|
on rw.order_id=o.order_id
|
left join sd.order_glass_detail as ogd
|
on ogd.order_id=o.order_id and ogd.order_number=dd.order_number
|
and ogd.technology_number and dd.technology_number
|
where date(rw.reporting_work_time)>=#{startDate} and date(rw.reporting_work_time) <= #{endDate}
|
and rw.this_worn_quantity>0 and dd.available=0
|
and reviewed_state!=2
|
and rw.this_process!=dd.responsible_process
|
order by dd.id desc
|
</select>
|
|
<select id="workInProgressMp">
|
select #{selectProcesses} as thisProcess,
|
fc.process_id,
|
o.customer_name,
|
o.project,
|
o.order_id,
|
o.batch,
|
od.shape,
|
ogd.order_number,
|
ogd.technology_number,
|
ogd.process,
|
od.quantity,
|
ogd.child_width,
|
ogd.child_height,
|
odpds.reporting_work_num_count + ifnull(c.patchNumSum, 0) - odpd.reporting_work_num_count -
|
odpd.broken_num as stockNum,
|
ROUND(ogd.child_width * ogd.child_height *
|
(odpds.reporting_work_num_count + ifnull(c.patchNumSum, 0) - odpd.reporting_work_num_count -
|
odpd.broken_num) / 1000000, 2) as stockArea,
|
od.product_name,
|
od.bend_radius
|
|
from sd.order_detail AS od
|
LEFT JOIN sd.order_glass_detail AS ogd
|
ON od.order_id = ogd.order_id
|
AND od.order_number = ogd.order_number
|
LEFT JOIN flow_card AS fc
|
ON fc.order_id = ogd.order_id
|
and fc.production_id = ogd.production_id
|
AND fc.order_number = ogd.order_number
|
AND fc.technology_number = ogd.technology_number
|
left join sd.order_process_detail as odpd
|
ON odpd.order_id = fc.order_id
|
AND odpd.order_number = fc.order_number
|
AND odpd.technology_number = fc.technology_number
|
and odpd.process_id = fc.process_id
|
left join sd.order_process_detail as odpds
|
ON odpds.id = odpd.id - 1
|
left join
|
(SELECT sum(rw.rework_num) as 'patchNumSum',
|
rw.process_id,
|
rw.order_sort,
|
rw.technology_number,
|
rwk.this_process
|
from rework as rw
|
LEFT JOIN
|
reporting_work as rwk
|
on rw.reporting_work_id = rwk.reporting_work_id
|
where rwk.this_process = #{selectProcesses}
|
and rw.review_status = 1
|
GROUP BY rw.process_id, rw.order_sort, rw.technology_number) as c
|
on c.process_id = fc.process_id
|
and c.order_sort = fc.order_number
|
and c.technology_number = fc.technology_number
|
left join sd.`order` as o
|
on o.order_id = od.order_id
|
where LENGTH(fc.process_id) = 14
|
and odpds.reporting_work_num_count + ifnull(c.patchNumSum, 0) - odpd.reporting_work_num_count -
|
odpd.broken_num != 0
|
and odpd.process = #{selectProcesses} and o.create_time between #{selectTime1} and #{selectTime2}
|
and position(#{orderId} in od.order_id) and position(#{inputProject} in o.project)
|
|
group by fc.process_id, fc.order_number, fc.technology_number
|
order by fc.process_id, fc.order_number, fc.technology_number
|
</select>
|
|
<!--
|
<if test="Report.processId != null and Report.processId != ''">
|
and fc.process_id regexp #{Report.processId}
|
</if>
|
<if test="Report.customerName != null and Report.customerName != ''">
|
and o.customer_name regexp #{Report.customerName}
|
</if>
|
<if test="Report.project != null and Report.project != ''">
|
and o.project regexp #{Report.project}
|
</if>
|
<if test="Report.batch != null and Report.batch != ''">
|
and o.batch regexp #{Report.batch}
|
</if>
|
<if test="Report.shape != null and Report.shape != ''">
|
and od.shape regexp #{Report.shape}
|
</if>
|
-->
|
|
<!-- <select id="getWorkInProgressTotal">-->
|
<!-- select CEILING(count(fc.id) / #{pageSize}) as 'pageTotal',-->
|
<!-- count(distinct fc.id) as 'total'-->
|
|
<!-- from sd.order_detail AS od-->
|
<!-- LEFT JOIN sd.order_glass_detail AS ogd-->
|
<!-- ON od.order_id = ogd.order_id-->
|
<!-- AND od.order_number = ogd.order_number-->
|
<!-- LEFT JOIN flow_card AS fc-->
|
<!-- ON fc.order_id = ogd.order_id-->
|
<!-- and fc.production_id = ogd.production_id-->
|
<!-- AND fc.order_number = ogd.order_number-->
|
<!-- AND fc.technology_number = ogd.technology_number-->
|
<!-- left join sd.order_process_detail as odpd-->
|
<!-- ON odpd.order_id = fc.order_id-->
|
<!-- AND odpd.order_number = fc.order_number-->
|
<!-- AND odpd.technology_number = fc.technology_number-->
|
<!-- and odpd.process_id = fc.process_id-->
|
<!-- left join sd.order_process_detail as odpds-->
|
<!-- ON odpds.id = odpd.id - 1-->
|
<!-- left join-->
|
<!-- (SELECT sum(rw.rework_num) as 'patchNumSum',-->
|
<!-- rw.process_id,-->
|
<!-- rw.order_sort,-->
|
<!-- rw.technology_number,-->
|
<!-- rwk.this_process-->
|
<!-- from rework as rw-->
|
<!-- LEFT JOIN-->
|
<!-- reporting_work as rwk-->
|
<!-- on rw.reporting_work_id = rwk.reporting_work_id-->
|
<!-- where rwk.this_process = #{selectProcesses}-->
|
<!-- and rw.review_status = 1-->
|
<!-- GROUP BY rw.process_id, rw.order_sort, rw.technology_number) as c-->
|
<!-- on c.process_id = fc.process_id-->
|
<!-- and c.order_sort = fc.order_number-->
|
<!-- and c.technology_number = fc.technology_number-->
|
<!-- left join sd.`order` as o-->
|
<!-- on o.order_id = od.order_id-->
|
<!-- where LENGTH(fc.process_id) = 14-->
|
<!-- and odpds.reporting_work_num_count + ifnull(c.patchNumSum, 0) - odpd.reporting_work_num_count - -->
|
<!-- odpd.broken_num != 0-->
|
<!-- and odpd.process = #{selectProcesses}-->
|
<!-- and o.create_time between #{selectTime1} and #{selectTime2}-->
|
<!-- and position(#{orderId} in od.order_id)-->
|
<!-- and position(#{inputProject} in o.project)-->
|
<!-- group by fc.process_id, fc.order_number, fc.technology_number-->
|
<!-- order by fc.process_id, fc.order_number, fc.technology_number-->
|
<!-- limit #{offset},#{pageSize};-->
|
<!-- </select>-->
|
|
<select id="processToBeCompletedMp">
|
select DATE(o.create_time) as create_time,
|
DATE(o.delivery_date) as delivery_date,
|
o.order_id,
|
fc.process_id,
|
o.customer_name,
|
o.project,
|
o.batch,
|
od.order_number,
|
ogd.technology_number,
|
ogd.glass_child,
|
ogd.child_width,
|
ogd.child_height,
|
od.quantity,
|
ROUND(ogd.child_width * ogd.child_height / 1000000, 2) as childArea,
|
ROUND(ogd.child_width * ogd.child_height * od.quantity / 1000000, 2) as actualArea,
|
odpd.reporting_work_num as completeNum,
|
ROUND(ogd.child_width * ogd.child_height * odpd.reporting_work_num / 1000000,
|
2) as completeArea,
|
od.quantity - odpd.reporting_work_num as incompleteNum,
|
ROUND(ogd.child_width * ogd.child_height * (od.quantity - odpd.reporting_work_num) / 1000000,
|
2) as incompleteArea,
|
od.product_name
|
|
from sd.order_detail AS od
|
LEFT JOIN sd.order_glass_detail AS ogd
|
ON od.order_id = ogd.order_id
|
AND od.order_number = ogd.order_number
|
LEFT JOIN flow_card AS fc
|
ON fc.order_id = ogd.order_id
|
and fc.production_id = ogd.production_id
|
AND fc.order_number = ogd.order_number
|
AND fc.technology_number = ogd.technology_number
|
left join sd.order_process_detail as odpd
|
ON odpd.order_id = fc.order_id
|
AND odpd.order_number = fc.order_number
|
AND odpd.technology_number = fc.technology_number
|
and odpd.process_id = fc.process_id
|
left join sd.`order` as o
|
on o.order_id = od.order_id
|
where LENGTH(fc.process_id) = 14
|
and odpd.process = #{selectProcesses}
|
and o.create_time between #{selectTime1} and #{selectTime2}
|
and position(#{orderId} in od.order_id)
|
and position(#{inputProject} in o.project)
|
and od.quantity > odpd.reporting_work_num
|
|
group by fc.process_id, fc.order_number, fc.technology_number
|
order by fc.process_id, fc.order_number, fc.technology_number
|
</select>
|
|
<select id="selectDamageReportMp" resultMap="damageReportMap">
|
SELECT
|
o.order_id,
|
o.project,
|
rw.process_id,
|
dd.order_number,
|
dd.technology_number,
|
date(rw.reporting_work_time) as reporting_work_time,
|
dd.responsible_process,
|
dd.responsible_team,
|
dd.responsible_equipment,
|
dd.breakage_type,
|
dd.breakage_reason,
|
dd.breakage_quantity,
|
round( ogd.child_width * ogd.child_height * dd.breakage_quantity / 1000000, 2 ) as area,
|
IFNULL(dd.responsible_personnel,'') as personnel,
|
ogd.glass_child
|
FROM
|
sd.ORDER AS o
|
LEFT JOIN sd.order_glass_detail AS ogd ON ogd.order_id = o.order_id
|
LEFT JOIN reporting_work AS rw ON rw.order_id = o.order_id
|
LEFT JOIN damage_details AS dd ON dd.reporting_work_id = rw.reporting_work_id
|
AND dd.order_number = ogd.order_number
|
AND dd.technology_number = ogd.technology_number
|
WHERE
|
rw.reporting_work_time between #{selectTime1} and #{selectTime2}
|
AND dd.available = 0
|
AND LENGTH( rw.process_id )= 14
|
<if test="damageReportDTO.orderId != null and damageReportDTO.orderId != ''">
|
and o.order_id regexp #{damageReportDTO.orderId}
|
</if>
|
<if test="damageReportDTO.project != null and damageReportDTO.project != ''">
|
and o.project regexp #{damageReportDTO.project}
|
</if>
|
<if test="damageReportDTO.processId != null and damageReportDTO.processId != ''">
|
and rw.process_id regexp #{damageReportDTO.processId}
|
</if>
|
<if test="damageReportDTO.orderNumber != null and damageReportDTO.orderNumber != ''">
|
and dd.order_number regexp #{damageReportDTO.orderNumber}
|
</if>
|
<if test="damageReportDTO.technologyNumber != null and damageReportDTO.technologyNumber != ''">
|
and dd.technology_number regexp #{damageReportDTO.technologyNumber}
|
</if>
|
<if test="damageReportDTO.responsibleProcess != null and damageReportDTO.responsibleProcess != ''">
|
and dd.responsible_process regexp #{damageReportDTO.responsibleProcess}
|
</if>
|
<if test="damageReportDTO.responsibleTeam != null and damageReportDTO.responsibleTeam != ''">
|
and dd.responsible_team regexp #{damageReportDTO.responsibleTeam}
|
</if>
|
<if test="damageReportDTO.responsibleEquipment != null and damageReportDTO.responsibleEquipment != ''">
|
and dd.responsible_equipment regexp #{damageReportDTO.responsibleEquipment}
|
</if>
|
<if test="damageReportDTO.breakageType != null and damageReportDTO.breakageType != ''">
|
and dd.breakage_type regexp #{damageReportDTO.breakageType}
|
</if>
|
<if test="damageReportDTO.breakageReason != null and damageReportDTO.breakageReason != ''">
|
and dd.breakage_reason regexp #{damageReportDTO.breakageReason}
|
</if>
|
GROUP BY
|
dd.id
|
limit #{offset},#{pageSize};
|
</select>
|
|
<select id="getDamageReportPageTotal">
|
SELECT
|
CEILING(count(dd.id)/#{pageSize}) as 'pageTotal',
|
count(distinct dd.id) as 'total'
|
FROM
|
sd.ORDER AS o
|
LEFT JOIN sd.order_glass_detail AS ogd ON ogd.order_id = o.order_id
|
LEFT JOIN reporting_work AS rw ON rw.order_id = o.order_id
|
LEFT JOIN damage_details AS dd ON dd.reporting_work_id = rw.reporting_work_id
|
AND dd.order_number = ogd.order_number
|
AND dd.technology_number = ogd.technology_number
|
WHERE
|
rw.reporting_work_time between #{selectTime1} and #{selectTime2}
|
AND dd.available = 0
|
AND LENGTH( rw.process_id )= 14
|
<if test="damageReportDTO.orderId != null and damageReportDTO.orderId != ''">
|
and o.order_id regexp #{damageReportDTO.orderId}
|
</if>
|
<if test="damageReportDTO.project != null and damageReportDTO.project != ''">
|
and o.project regexp #{damageReportDTO.project}
|
</if>
|
<if test="damageReportDTO.processId != null and damageReportDTO.processId != ''">
|
and rw.process_id regexp #{damageReportDTO.processId}
|
</if>
|
<if test="damageReportDTO.orderNumber != null and damageReportDTO.orderNumber != ''">
|
and dd.order_number regexp #{damageReportDTO.orderNumber}
|
</if>
|
<if test="damageReportDTO.technologyNumber != null and damageReportDTO.technologyNumber != ''">
|
and dd.technology_number regexp #{damageReportDTO.technologyNumber}
|
</if>
|
<if test="damageReportDTO.responsibleProcess != null and damageReportDTO.responsibleProcess != ''">
|
and dd.responsible_process regexp #{damageReportDTO.responsibleProcess}
|
</if>
|
<if test="damageReportDTO.responsibleTeam != null and damageReportDTO.responsibleTeam != ''">
|
and dd.responsible_team regexp #{damageReportDTO.responsibleTeam}
|
</if>
|
<if test="damageReportDTO.responsibleEquipment != null and damageReportDTO.responsibleEquipment != ''">
|
and dd.responsible_equipment regexp #{damageReportDTO.responsibleEquipment}
|
</if>
|
<if test="damageReportDTO.breakageType != null and damageReportDTO.breakageType != ''">
|
and dd.breakage_type regexp #{damageReportDTO.breakageType}
|
</if>
|
<if test="damageReportDTO.breakageReason != null and damageReportDTO.breakageReason != ''">
|
and dd.breakage_reason regexp #{damageReportDTO.breakageReason}
|
</if>
|
|
limit #{offset},#{pageSize};
|
</select>
|
|
<select id="splittingDetailsOutsideMp">
|
SELECT
|
fc.process_id processId,
|
fc.order_number orderNumber,
|
fc.technology_number as technologyNumber,
|
o.project,
|
o.batch,
|
ogd.child_width as childWidth,
|
ogd.child_height as childHeight,
|
fc.quantity,
|
round( ogd.child_width * ogd.child_height * fc.quantity / 1000000, 2 ) as area,
|
od.shape,
|
od.remarks
|
FROM
|
sd.ORDER AS o
|
LEFT JOIN sd.order_detail AS od ON od.order_id = od.order_id
|
LEFT JOIN sd.order_glass_detail AS ogd ON o.order_id = ogd.order_id
|
AND ogd.order_number = od.order_number
|
LEFT JOIN flow_card AS fc ON fc.order_id = ogd.order_id
|
AND fc.order_number
|
AND fc.technology_number = ogd.technology_number
|
WHERE
|
fc.order_id = #{orderId}
|
GROUP BY
|
fc.id
|
</select>
|
|
<select id="qualityReportMp">
|
SELECT o.order_id,
|
o.customer_name,
|
o.project,
|
fc.order_number,
|
fc.technology_number,
|
od.product_name,
|
od.quantity,
|
ifnull(MAX(opd.reporting_work_num_count),0) as quantityMax,
|
IFNULL(SUM(distinct dd.breakage_quantity), 0) as breakage_quantity,
|
IFNULL(sum(distinct pl.patch_num), 0) as patch_num,
|
ifnull(fc.received_quantity,0) as received_quantity,
|
CONCAT(ROUND(ROUND(od.quantity / MAX(opd.reporting_work_num_count), 2) * 100), '%') as finished
|
FROM sd.`order` AS o
|
LEFT JOIN sd.order_detail AS od ON od.order_id = o.order_id
|
|
LEFT JOIN flow_card AS fc ON o.order_id = fc.order_id
|
AND fc.order_number = od.order_number
|
|
LEFT JOIN damage_details AS dd ON dd.process_id = fc.process_id
|
AND dd.order_number = fc.order_number
|
AND dd.technology_number = fc.technology_number
|
and dd.available != 1
|
|
LEFT JOIN patch_log AS pl ON pl.order_id = fc.order_id
|
AND pl.process_id = fc.process_id
|
AND pl.order_sort = fc.order_number
|
AND pl.technology_number = fc.technology_number
|
|
LEFT JOIN sd.order_process_detail AS opd ON opd.order_id = fc.order_id
|
AND opd.order_number = fc.order_number
|
AND opd.technology_number = fc.technology_number
|
|
WHERE o.create_time BETWEEN #{selectTime1} and #{selectTime2}
|
|
GROUP BY o.order_id,
|
fc.order_number,
|
fc.technology_number
|
ORDER BY fc.order_number
|
</select>
|
|
<select id="yieldMp">
|
SELECT opd.process,
|
o.order_id,
|
o.customer_name,
|
o.project,
|
od.product_name,
|
ROUND(SUM(distinct opd.reporting_work_num) * od.area, 2) as finishedArea
|
,
|
ROUND(SUM(distinct opd.broken_num) * od.area, 2) as brokenArea,
|
(ROUND(SUM(distinct opd.reporting_work_num) * od.area, 2) +
|
ROUND(SUM(distinct opd.broken_num) * od.area, 2)) as area,
|
CONCAT(ROUND(ROUND(ROUND(SUM(distinct opd.reporting_work_num) * od.area, 2) /
|
(ROUND(SUM(distinct opd.reporting_work_num) * od.area, 2) +
|
ROUND(SUM(distinct opd.broken_num) * od.area, 2)), 2) * 100), '%') as finished
|
FROM sd.`order` AS o
|
LEFT JOIN sd.order_detail AS od ON od.order_id = o.order_id
|
LEFT JOIN flow_card AS fc ON fc.order_id = od.order_id
|
AND fc.order_number = fc.order_number
|
LEFT JOIN sd.order_process_detail AS opd ON opd.order_id = fc.order_id
|
AND opd.process_id = fc.process_id
|
AND opd.order_number = fc.order_number
|
AND opd.technology_number = fc.technology_number
|
WHERE opd.reporting_work_num > 0
|
and o.create_time BETWEEN #{selectTime1} and #{selectTime2}
|
AND position(#{selectProcesses} IN opd.process)
|
GROUP BY opd.process, o.order_id
|
</select>
|
|
<select id="productionScheduleMp">
|
select
|
a.order_number,
|
a.shape,
|
a.product_name,
|
b.child_width,
|
b.child_height,
|
c.quantity,
|
c.technology_number,
|
b.glass_child,
|
ifnull(e.reportWorkQuantity,0) as reportWorkQuantity,
|
ifnull(e.reportWorkQuantityCount,0) as reportWorkQuantityCount,
|
ifnull(f.inventory,0) as inventoryNum,
|
round(ifnull(f.inventory,0)*a.area,2) as inventoryArea,
|
ifnull(dd.quantity,0) as shippedQuantity,
|
ifnull(dd.area,0) as area
|
|
from
|
flow_card as c
|
left join
|
sd.order_detail as a
|
on c.order_id = a.order_id
|
and c.order_number = a.order_number
|
left join sd.order_glass_detail as b
|
on c.order_id = b.order_id
|
and b.order_number = c.order_number
|
and c.technology_number = b.technology_number
|
left join sd.`order` as d
|
on c.order_id = d.order_id
|
left join mm.finished_goods_inventory as f
|
on c.order_id = f.order_id and f.order_number = c.order_number
|
left join (
|
SELECT process_id,
|
technology_number,
|
sum(a.broken_num) as broken_num,
|
concat('{',
|
GROUP_CONCAT(concat("\"",process,"\":\"",reporting_work_num,"\"")),
|
'}'
|
) as reportWorkQuantity,
|
concat('{',
|
GROUP_CONCAT(concat("\"",process,"\":\"",reporting_work_num,"\"")),
|
'}'
|
) as reportWorkQuantityCount
|
FROM sd.order_process_detail as a
|
where a.order_id=#{orderId}
|
GROUP BY process_id,a.technology_number
|
) as e
|
on e.process_id = c.process_id
|
and e.technology_number = c.technology_number
|
left join sd.delivery_detail as dd on dd.order_id=a.order_id and dd.order_number=a.order_number
|
where a.order_id = #{orderId}
|
ORDER BY a.order_number
|
</select>
|
|
<select id="taskCompletionStatusMp">
|
select d.customer_name as customerName,
|
d.project,
|
d.batch,
|
c.order_id as orderId,
|
d.quantity,
|
d.area,
|
dd.quantity as shippedQuantity,
|
dd.area as shippedArea,
|
e.reportWorkQuantity,
|
e.reportWorkQuantityCount
|
|
from sd.`order` as d
|
left join flow_card as c on c.order_id = d.order_id
|
left join
|
sd.order_detail as a
|
on c.order_id = a.order_id
|
and c.order_number = a.order_number
|
left join sd.order_glass_detail as b
|
on c.order_id = b.order_id
|
and b.order_number = c.order_number
|
and c.technology_number = b.technology_number
|
left join mm.finished_goods_inventory as f
|
on c.order_id = f.order_id and f.order_number = c.order_number
|
left join (SELECT process_id,
|
technology_number,
|
sum(a.broken_num) as broken_num,
|
concat('{',
|
GROUP_CONCAT(concat("\"", process, "\":\"", ifnull(reporting_work_num,0), "\"")),
|
'}'
|
) as reportWorkQuantity,
|
concat('{',
|
GROUP_CONCAT(concat("\"", process, "\":\"", ifnull(reporting_work_num,0), "\"")),
|
'}'
|
) as reportWorkQuantityCount
|
FROM sd.order_process_detail as a
|
left join sd.`order` as o on o.order_id = a.order_id
|
where o.create_time BETWEEN #{selectTime1} and #{selectTime2}
|
GROUP BY process_id,a.technology_number
|
) as e
|
on e.process_id = c.process_id
|
and e.technology_number = c.technology_number
|
left join sd.delivery_detail as dd on dd.order_id = a.order_id and dd.order_number = a.order_number
|
where d.create_time BETWEEN #{selectTime1} and #{selectTime2} and reportWorkQuantity is not null
|
GROUP BY a.order_id
|
ORDER BY a.order_id
|
</select>
|
|
<select id="orderPlanDecompositionMp">
|
SELECT
|
o.order_id,
|
o.customer_name,
|
o.project,
|
o.batch,
|
o.quantity,
|
o.area,
|
date(fc.create_time) as create_time,
|
date(orw.startTime) as startTime,
|
ifnull(oopd.completionsNum,0) as completionsNum,
|
sum( DISTINCT fc.received_quantity ) AS received_quantity,
|
o.quantity-sum( DISTINCT fc.received_quantity ) AS receivedNo,
|
IF(fc.quantity=fc.received_quantity,'已清单','') as accomplish,
|
DATEDIFF(
|
MAX( rw.reporting_work_time ),
|
min( rw.reporting_work_time ))+1 AS daysDifference
|
FROM
|
sd.`order` AS o
|
LEFT JOIN flow_card AS fc ON fc.order_id = o.order_id
|
LEFT JOIN (
|
SELECT
|
a.order_id,
|
MIN( b.reporting_work_time ) AS startTime
|
FROM
|
sd.`order` AS a
|
LEFT JOIN reporting_work AS b ON a.order_id = b.order_id
|
WHERE
|
b.this_process = '切割'
|
AND a.create_time BETWEEN #{selectTime1} and #{selectTime2}
|
GROUP BY
|
a.order_id
|
) AS orw ON orw.order_id = o.order_id
|
LEFT JOIN (
|
SELECT
|
a.order_id,
|
SUM( b.reporting_work_num ) AS completionsNum
|
FROM
|
sd.`order` AS a
|
LEFT JOIN sd.order_process_detail AS b ON a.order_id = b.order_id
|
WHERE
|
b.process = '包装'
|
AND a.create_time BETWEEN #{selectTime1} and #{selectTime2}
|
GROUP BY
|
a.order_id
|
) AS oopd ON oopd.order_id = o.order_id
|
LEFT JOIN reporting_work AS rw ON rw.order_id = fc.order_id
|
AND rw.process_id = fc.process_id
|
WHERE
|
o.create_time BETWEEN #{selectTime1} and #{selectTime2}
|
AND fc.create_time IS NOT NULL
|
GROUP BY
|
o.order_id
|
</select>
|
|
<select id="rawMaterialRequisitionMp">
|
SELECT
|
fc.project_no,
|
modl.material_name,
|
modl.producer,
|
ou.width,
|
ou.height,
|
modl.date_of_manufacture,
|
SUM(distinct modl.outbound_quantity) as quantity,
|
ROUND(SUM(modl.outbound_quantity)*SUM(modl.single_piece_area),2) as area,
|
date(mo.material_requisition_date) as date
|
FROM
|
mm.material_outbound_detail AS modl
|
left join mm.material_outbound as mo on mo.material_outbound_id=modl.material_outbound_id
|
LEFT JOIN optimize_use AS ou ON modl.use_id = ou.id and ou.raw_stock_code=modl.inventory_id
|
LEFT JOIN flow_card AS fc ON ou.project_no = fc.project_no
|
where modl.use_id IS NOT NULL and mo.material_requisition_date BETWEEN #{selectTime1} and #{selectTime2}
|
GROUP BY
|
ou.width,ou.height,material_code
|
</select>
|
|
<select id="exportCrossProcessBreakingMp">
|
select rw.reporting_work_id,
|
rw.reporting_work_time,
|
dd.responsible_process,
|
dd.responsible_team,
|
dd.breakage_type,
|
dd.breakage_reason,
|
ROUND((dd.breakage_quantity)) as breakage_quantity,
|
round(ogd.child_width * ogd.child_height * (dd.breakage_quantity) / 1000000, 2) as area,
|
rw.this_process,
|
o.project,
|
o.order_id,
|
ogd.glass_child
|
from damage_details as dd
|
left join reporting_work as rw
|
on rw.reporting_work_id = dd.reporting_work_id
|
left join sd.order as o
|
on rw.order_id = o.order_id
|
left join sd.order_glass_detail as ogd
|
on ogd.order_id = o.order_id and ogd.order_number = dd.order_number
|
and ogd.technology_number and dd.technology_number
|
where date(rw.reporting_work_time) >= #{dates[0]}
|
and date(rw.reporting_work_time) <= #{dates[1]}
|
and rw.this_worn_quantity > 0
|
and dd.available = 0
|
and reviewed_state != 2
|
and rw.this_process != dd.responsible_process
|
GROUP BY dd.id
|
order by dd.id desc
|
</select>
|
|
<select id="exportDamageReportMp">
|
SELECT o.order_id,
|
o.project,
|
rw.process_id,
|
dd.order_number,
|
dd.technology_number,
|
date(rw.reporting_work_time) as reporting_work_time,
|
dd.responsible_process,
|
dd.responsible_team,
|
dd.responsible_equipment,
|
dd.breakage_type,
|
dd.breakage_reason,
|
dd.breakage_quantity,
|
round(ogd.child_width * ogd.child_height * dd.breakage_quantity / 1000000, 2) as area,
|
IFNULL(dd.responsible_personnel, '') as personnel,
|
ogd.glass_child
|
FROM sd.ORDER AS o
|
LEFT JOIN sd.order_glass_detail AS ogd ON ogd.order_id = o.order_id
|
LEFT JOIN reporting_work AS rw ON rw.order_id = o.order_id
|
LEFT JOIN damage_details AS dd ON dd.reporting_work_id = rw.reporting_work_id
|
AND dd.order_number = ogd.order_number
|
AND dd.technology_number = ogd.technology_number
|
WHERE date(rw.reporting_work_time) >= #{dates[0]}
|
and date(rw.reporting_work_time) <= #{dates[1]}
|
AND dd.available = 0
|
AND LENGTH(rw.process_id) = 14
|
GROUP BY dd.id
|
</select>
|
|
<select id="exportOrderPlanDecompositionMp">
|
SELECT
|
o.order_id,
|
o.customer_name,
|
o.project,
|
o.batch,
|
o.quantity,
|
o.area,
|
date(fc.create_time) as create_time,
|
date(orw.startTime) as startTime,
|
oopd.completionsNum,
|
sum( DISTINCT fc.received_quantity ) AS received_quantity,
|
sum( DISTINCT fc.quantity - fc.received_quantity ) AS receivedNo,
|
IF(fc.quantity=fc.received_quantity,'已清单','') as accomplish,
|
DATEDIFF(
|
MAX( rw.reporting_work_time ),
|
min( rw.reporting_work_time ))+1 AS daysDifference
|
FROM
|
sd.`order` AS o
|
LEFT JOIN flow_card AS fc ON fc.order_id = o.order_id
|
LEFT JOIN (
|
SELECT
|
a.order_id,
|
MIN( b.reporting_work_time ) AS startTime
|
FROM
|
sd.`order` AS a
|
LEFT JOIN reporting_work AS b ON a.order_id = b.order_id
|
WHERE
|
b.this_process = '切割'
|
AND date(a.create_time) >= #{dates[0]}
|
and date(a.create_time) <= #{dates[1]}
|
|
GROUP BY
|
a.order_id
|
) AS orw ON orw.order_id = o.order_id
|
LEFT JOIN (
|
SELECT
|
a.order_id,
|
SUM( b.reporting_work_num ) AS completionsNum
|
FROM
|
sd.`order` AS a
|
LEFT JOIN sd.order_process_detail AS b ON a.order_id = b.order_id
|
WHERE
|
b.process = '包装'
|
AND date(a.create_time) >= #{dates[0]}
|
and date(a.create_time) <= #{dates[1]}
|
GROUP BY
|
a.order_id
|
) AS oopd ON oopd.order_id = o.order_id
|
LEFT JOIN reporting_work AS rw ON rw.order_id = fc.order_id
|
AND rw.process_id = fc.process_id
|
WHERE
|
date(o.create_time) >= #{dates[0]}
|
and date(o.create_time) <= #{dates[1]}
|
AND fc.create_time IS NOT NULL
|
GROUP BY
|
o.order_id
|
</select>
|
|
<select id="exportProcessToBeCompletedMp">
|
select DATE(o.create_time) as create_time,
|
DATE(o.delivery_date) as delivery_date,
|
o.order_id,
|
fc.process_id,
|
o.customer_name,
|
o.project,
|
o.batch,
|
od.order_number,
|
ogd.technology_number,
|
ogd.glass_child,
|
ogd.child_width,
|
ogd.child_height,
|
od.quantity,
|
ROUND(ogd.child_width * ogd.child_height / 1000000, 2) as childArea,
|
ROUND(ogd.child_width * ogd.child_height * od.quantity / 1000000, 2) as actualArea,
|
odpd.reporting_work_num as completeNum,
|
ROUND(ogd.child_width * ogd.child_height * odpd.reporting_work_num / 1000000,
|
2) as completeArea,
|
od.quantity - odpd.reporting_work_num as incompleteNum,
|
ROUND(ogd.child_width * ogd.child_height * (od.quantity - odpd.reporting_work_num) / 1000000,
|
2) as incompleteArea,
|
od.product_name
|
|
from sd.order_detail AS od
|
LEFT JOIN sd.order_glass_detail AS ogd
|
ON od.order_id = ogd.order_id
|
AND od.order_number = ogd.order_number
|
LEFT JOIN flow_card AS fc
|
ON fc.order_id = ogd.order_id
|
and fc.production_id = ogd.production_id
|
AND fc.order_number = ogd.order_number
|
AND fc.technology_number = ogd.technology_number
|
left join sd.order_process_detail as odpd
|
ON odpd.order_id = fc.order_id
|
AND odpd.order_number = fc.order_number
|
AND odpd.technology_number = fc.technology_number
|
and odpd.process_id = fc.process_id
|
left join sd.`order` as o
|
on o.order_id = od.order_id
|
where LENGTH(fc.process_id) = 14
|
and odpd.process = #{process}
|
and date(o.create_time) >= #{date[0]}
|
and date(o.create_time) <= #{date[1]}
|
and position(ifnull(#{inputVal},'') in od.order_id)
|
and position(ifnull(#{project},'') in o.project)
|
and od.quantity > odpd.reporting_work_num
|
|
group by fc.process_id, fc.order_number, fc.technology_number
|
order by fc.process_id, fc.order_number, fc.technology_number
|
</select>
|
|
<select id="exportWorkInProgressMp">
|
select #{process} as thisProcess,
|
fc.process_id,
|
o.customer_name,
|
o.project,
|
o.order_id,
|
o.batch,
|
od.shape,
|
ogd.order_number,
|
ogd.technology_number,
|
ogd.process,
|
od.quantity,
|
ogd.child_width,
|
ogd.child_height,
|
odpds.reporting_work_num_count + ifnull(c.patchNumSum, 0) - odpd.reporting_work_num_count -
|
odpd.broken_num as stockNum,
|
ROUND(ogd.child_width * ogd.child_height *
|
(odpds.reporting_work_num_count + ifnull(c.patchNumSum, 0) - odpd.reporting_work_num_count -
|
odpd.broken_num) / 1000000, 2) as stockArea,
|
od.product_name,
|
od.bend_radius
|
|
from sd.order_detail AS od
|
LEFT JOIN sd.order_glass_detail AS ogd
|
ON od.order_id = ogd.order_id
|
AND od.order_number = ogd.order_number
|
LEFT JOIN flow_card AS fc
|
ON fc.order_id = ogd.order_id
|
and fc.production_id = ogd.production_id
|
AND fc.order_number = ogd.order_number
|
AND fc.technology_number = ogd.technology_number
|
left join sd.order_process_detail as odpd
|
ON odpd.order_id = fc.order_id
|
AND odpd.order_number = fc.order_number
|
AND odpd.technology_number = fc.technology_number
|
and odpd.process_id = fc.process_id
|
left join sd.order_process_detail as odpds
|
ON odpds.id = odpd.id - 1
|
left join
|
(SELECT sum(rw.rework_num) as 'patchNumSum',
|
rw.process_id,
|
rw.order_sort,
|
rw.technology_number,
|
rwk.this_process
|
from rework as rw
|
LEFT JOIN
|
reporting_work as rwk
|
on rw.reporting_work_id = rwk.reporting_work_id
|
where rwk.this_process = #{process}
|
and rw.review_status = 1
|
GROUP BY rw.process_id, rw.order_sort, rw.technology_number) as c
|
on c.process_id = fc.process_id
|
and c.order_sort = fc.order_number
|
and c.technology_number = fc.technology_number
|
left join sd.`order` as o
|
on o.order_id = od.order_id
|
where LENGTH(fc.process_id) = 14
|
and odpds.reporting_work_num_count + ifnull(c.patchNumSum, 0) - odpd.reporting_work_num_count -
|
odpd.broken_num != 0
|
and odpd.process = #{process} and date(o.create_time) >= #{date[0]}
|
and date(o.create_time) <= #{date[1]}
|
and position(ifnull(#{inputVal},'') in od.order_id)
|
and position(ifnull(#{project},'') in o.project)
|
|
group by fc.process_id, fc.order_number, fc.technology_number
|
order by fc.process_id, fc.order_number, fc.technology_number
|
</select>
|
|
<select id="exportTaskCompletionStatusMp">
|
select d.customer_name as customerName,
|
d.project,
|
d.batch,
|
c.order_id as orderId,
|
d.quantity,
|
d.area,
|
dd.quantity as shippedQuantity,
|
dd.area as shippedArea,
|
e.reportWorkQuantity,
|
e.reportWorkQuantityCount
|
|
from sd.`order` as d
|
left join flow_card as c on c.order_id = d.order_id
|
left join
|
sd.order_detail as a
|
on c.order_id = a.order_id
|
and c.order_number = a.order_number
|
left join sd.order_glass_detail as b
|
on c.order_id = b.order_id
|
and b.order_number = c.order_number
|
and c.technology_number = b.technology_number
|
left join mm.finished_goods_inventory as f
|
on c.order_id = f.order_id and f.order_number = c.order_number
|
left join (SELECT process_id,
|
technology_number,
|
sum(a.broken_num) as broken_num,
|
concat('{',
|
GROUP_CONCAT(concat("\"", process, "\":\"", ifnull(reporting_work_num,0), "\"")),
|
'}'
|
) as reportWorkQuantity,
|
concat('{',
|
GROUP_CONCAT(concat("\"", process, "\":\"", ifnull(reporting_work_num,0), "\"")),
|
'}'
|
) as reportWorkQuantityCount
|
FROM sd.order_process_detail as a
|
left join sd.`order` as o on o.order_id = a.order_id
|
where date(o.create_time) >= #{date[0]}
|
and date(o.create_time) <= #{date[1]}
|
GROUP BY process_id,a.technology_number
|
) as e
|
on e.process_id = c.process_id
|
and e.technology_number = c.technology_number
|
left join sd.delivery_detail as dd on dd.order_id = a.order_id and dd.order_number = a.order_number
|
where d.create_time and date(o.create_time) >= #{dates[0]}
|
and date(o.create_time) <= #{dates[1]} and reportWorkQuantity is not null
|
GROUP BY a.order_id
|
ORDER BY a.order_id
|
</select>
|
|
<select id="exportRawMaterialRequisitionMp">
|
SELECT fc.project_no,
|
modl.material_name,
|
modl.producer,
|
ou.width,
|
ou.height,
|
modl.date_of_manufacture,
|
SUM(distinct modl.outbound_quantity) as quantity,
|
ROUND(SUM(modl.outbound_quantity) * SUM(modl.single_piece_area), 2) as area,
|
date(mo.material_requisition_date) as date
|
FROM mm.material_outbound_detail AS modl
|
left join mm.material_outbound as mo on mo.material_outbound_id = modl.material_outbound_id
|
LEFT JOIN optimize_use AS ou ON modl.use_id = ou.id and ou.raw_stock_code = modl.inventory_id
|
LEFT JOIN flow_card AS fc ON ou.project_no = fc.project_no
|
where modl.use_id IS NOT NULL
|
and
|
date(mo.material_requisition_date) >= #{dates[0]}
|
and date(mo.material_requisition_date) <= #{dates[1]}
|
GROUP BY ou.width, ou.height, material_code
|
</select>
|
|
<select id="exportQualityReportSv">
|
SELECT o.order_id,
|
o.customer_name,
|
o.project,
|
fc.order_number,
|
fc.technology_number,
|
od.product_name,
|
od.quantity,
|
MAX(opd.reporting_work_num_count) as quantityMax,
|
IFNULL(SUM(distinct dd.breakage_quantity), 0) as breakage_quantity,
|
IFNULL(sum(distinct pl.patch_num), 0) as patch_num,
|
fc.received_quantity,
|
CONCAT(ROUND(ROUND(od.quantity / MAX(opd.reporting_work_num_count), 2) * 100), '%') as finished
|
FROM sd.`order` AS o
|
LEFT JOIN sd.order_detail AS od ON od.order_id = o.order_id
|
|
LEFT JOIN flow_card AS fc ON o.order_id = fc.order_id
|
AND fc.order_number = od.order_number
|
|
LEFT JOIN damage_details AS dd ON dd.process_id = fc.process_id
|
AND dd.order_number = fc.order_number
|
AND dd.technology_number = fc.technology_number
|
and dd.available != 1
|
|
LEFT JOIN patch_log AS pl ON pl.order_id = fc.order_id
|
AND pl.process_id = fc.process_id
|
AND pl.order_sort = fc.order_number
|
AND pl.technology_number = fc.technology_number
|
|
LEFT JOIN sd.order_process_detail AS opd ON opd.order_id = fc.order_id
|
AND opd.order_number = fc.order_number
|
AND opd.technology_number = fc.technology_number
|
|
WHERE
|
date(o.create_time) >= #{dates[0]}
|
and date(o.create_time) <= #{dates[1]}
|
GROUP BY o.order_id,
|
fc.order_number,
|
fc.technology_number
|
ORDER BY fc.order_number
|
</select>
|
|
<select id="exportYieldMp">
|
SELECT opd.process,
|
o.order_id,
|
o.customer_name,
|
o.project,
|
od.product_name,
|
ROUND(SUM(distinct opd.reporting_work_num) * od.area, 2) as finishedArea
|
,
|
ROUND(SUM(distinct opd.broken_num) * od.area, 2) as brokenArea,
|
(ROUND(SUM(distinct opd.reporting_work_num) * od.area, 2) +
|
ROUND(SUM(distinct opd.broken_num) * od.area, 2)) as area,
|
CONCAT(ROUND(ROUND(ROUND(SUM(distinct opd.reporting_work_num) * od.area, 2) /
|
(ROUND(SUM(distinct opd.reporting_work_num) * od.area, 2) +
|
ROUND(SUM(distinct opd.broken_num) * od.area, 2)), 2) * 100), '%') as finished
|
FROM sd.`order` AS o
|
LEFT JOIN sd.order_detail AS od ON od.order_id = o.order_id
|
LEFT JOIN flow_card AS fc ON fc.order_id = od.order_id
|
AND fc.order_number = fc.order_number
|
LEFT JOIN sd.order_process_detail AS opd ON opd.order_id = fc.order_id
|
AND opd.process_id = fc.process_id
|
AND opd.order_number = fc.order_number
|
AND opd.technology_number = fc.technology_number
|
WHERE opd.reporting_work_num > 0
|
and date(o.create_time) >= #{date[0]}
|
and date(o.create_time) <= #{date[1]}
|
AND position(#{process} IN opd.process)
|
GROUP BY opd.process, o.order_id
|
</select>
|
|
<select id="teamOutputMp" resultMap="teamOutputMap">
|
SELECT
|
rw.reporting_work_time,
|
rw.this_process,
|
rw.teams_groups_name,
|
o.project,
|
rw.process_id,
|
rwd.order_number,
|
MAX( ogd.child_width ) as width,
|
MAX( ogd.child_height ) as height,
|
od.shape,
|
sum( pd.thickness ) as thickness,
|
od.edging_type,
|
rwd.completed_quantity,
|
ROUND(MAX( ogd.child_width )*MAX( ogd.child_height )*rwd.completed_quantity/1000000,2) as area,
|
od.product_name
|
FROM
|
reporting_work AS rw
|
LEFT JOIN reporting_work_detail AS rwd ON rw.reporting_work_id = rwd.reporting_work_id
|
LEFT JOIN sd.`order` AS o ON o.order_id = rw.order_id
|
LEFT JOIN sd.order_detail AS od ON od.order_id = o.order_id
|
AND od.order_number = rwd.order_number
|
LEFT JOIN sd.order_glass_detail AS ogd ON ogd.order_id = o.order_id
|
AND ogd.order_number = rwd.order_number
|
AND ogd.technology_number = rwd.technology_number
|
AND ogd.order_number = od.order_number
|
LEFT JOIN (
|
SELECT
|
prod_id,
|
glass_sort,
|
REPLACE ( JSON_UNQUOTE( JSON_EXTRACT( separation, '$.thickness' )), 'mm', '' ) AS thickness
|
FROM
|
sd.product_detail
|
WHERE
|
detail_type = "glass"
|
) AS pd ON pd.prod_id = od.product_id
|
AND pd.glass_sort = rwd.technology_number
|
where rw.reviewed_state=1 and rw.reporting_work_time between #{selectTime1} and #{selectTime2}
|
and rw.this_process=#{selectProcesses}
|
<if test="teamOutputDTO.thisProcess != null and teamOutputDTO.thisProcess != ''">
|
and rw.this_process regexp #{teamOutputDTO.thisProcess}
|
</if>
|
<if test="teamOutputDTO.teamsGroupsName != null and teamOutputDTO.teamsGroupsName != ''">
|
and rw.teams_groups_name regexp #{teamOutputDTO.teamsGroupsName}
|
</if>
|
<if test="teamOutputDTO.project != null and teamOutputDTO.project != ''">
|
and o.project regexp #{teamOutputDTO.project}
|
</if>
|
<if test="teamOutputDTO.processId != null and teamOutputDTO.processId != ''">
|
and rw.process_id regexp #{teamOutputDTO.processId}
|
</if>
|
<if test="teamOutputDTO.thickness != null and teamOutputDTO.thickness != ''">
|
and thickness regexp #{teamOutputDTO.thickness}
|
</if>
|
<if test="teamOutputDTO.edgingType != null and teamOutputDTO.edgingType != ''">
|
and od.edging_type regexp #{teamOutputDTO.edgingType}
|
</if>
|
|
GROUP BY
|
rwd.order_number,
|
rw.this_process,
|
rw.teams_groups_name,
|
rw.process_id,
|
rw.reporting_work_id
|
ORDER BY
|
rw.this_process,
|
rw.reporting_work_time,
|
rw.teams_groups_name,
|
rw.process_id
|
limit #{offset},#{pageSize};
|
</select>
|
|
<select id="teamOutputPageTotal">
|
SELECT
|
CEILING(count(rw.reporting_work_id)/#{pageSize}) as 'pageTotal',
|
count(distinct rw.reporting_work_id) as 'total'
|
FROM
|
reporting_work AS rw
|
LEFT JOIN reporting_work_detail AS rwd ON rw.reporting_work_id = rwd.reporting_work_id
|
LEFT JOIN sd.`order` AS o ON o.order_id = rw.order_id
|
LEFT JOIN sd.order_detail AS od ON od.order_id = o.order_id
|
AND od.order_number = rwd.order_number
|
LEFT JOIN sd.order_glass_detail AS ogd ON ogd.order_id = o.order_id
|
AND ogd.order_number = rwd.order_number
|
AND ogd.technology_number = rwd.technology_number
|
AND ogd.order_number = od.order_number
|
LEFT JOIN (
|
SELECT
|
prod_id,
|
glass_sort,
|
REPLACE ( JSON_UNQUOTE( JSON_EXTRACT( separation, '$.thickness' )), 'mm', '' ) AS thickness
|
FROM
|
sd.product_detail
|
WHERE
|
detail_type = "glass"
|
) AS pd ON pd.prod_id = od.product_id
|
AND pd.glass_sort = rwd.technology_number
|
where rw.reviewed_state=1 and rw.reporting_work_time between #{selectTime1} and #{selectTime2}
|
and rw.this_process=#{selectProcesses}
|
<if test="teamOutputDTO.thisProcess != null and teamOutputDTO.thisProcess != ''">
|
and rw.this_process regexp #{teamOutputDTO.thisProcess}
|
</if>
|
<if test="teamOutputDTO.teamsGroupsName != null and teamOutputDTO.teamsGroupsName != ''">
|
and rw.teams_groups_name regexp #{teamOutputDTO.teamsGroupsName}
|
</if>
|
<if test="teamOutputDTO.project != null and teamOutputDTO.project != ''">
|
and o.project regexp #{teamOutputDTO.project}
|
</if>
|
<if test="teamOutputDTO.processId != null and teamOutputDTO.processId != ''">
|
and rw.process_id regexp #{teamOutputDTO.processId}
|
</if>
|
<if test="teamOutputDTO.thickness != null and teamOutputDTO.thickness != ''">
|
and thickness regexp #{teamOutputDTO.thickness}
|
</if>
|
<if test="teamOutputDTO.edgingType != null and teamOutputDTO.edgingType != ''">
|
and od.edging_type regexp #{teamOutputDTO.edgingType}
|
</if>
|
|
limit #{offset},#{pageSize};
|
</select>
|
</mapper>
|