| | |
| | | c.project_no, |
| | | d.child_width as 'width', |
| | | d.child_height as 'height', |
| | | (d.child_width + d.child_height) * 2/ 1000 as 'perimeter', |
| | | c.quantity, |
| | | od.shape, |
| | | concat( c.process_id, '-', c.technology_number ) AS 'process_id', |
| | | c.process_id AS processId, |
| | | c.technology_number as layer, |
| | | c.layers_number as totalLayer, |
| | | d.glass_child, |
| | | od.price, |
| | | od.remarks, |
| | | round( d.area * c.quantity, 4 ) as 'area', |
| | | c.order_number, |
| | | d.icon AS markIcon, |
| | | op.project_name, |
| | | 0 as patchState, |
| | | c.rack AS rackNo, |
| | | 0 as heatLayoutId, |
| | | d.process, |
| | | o.order_id AS orderNo, |
| | | o.customer_name AS customerName, |
| | |
| | | c.project_no, |
| | | d.child_width as 'width', |
| | | d.child_height as 'height', |
| | | (d.child_width + d.child_height) * 2/ 1000 as 'perimeter', |
| | | c.patch_num as quantity, |
| | | od.shape, |
| | | concat( c.process_id, '-', c.technology_number ) AS 'process_id', |
| | | c.process_id AS 'process_ids', |
| | | c.technology_number as layer, |
| | | fc.layers_number as total_layer, |
| | | d.glass_child, |
| | | od.price, |
| | | od.remarks, |
| | | round( d.area * c.patch_num, 4 ) as 'area', |
| | | c.order_sort as order_number, |
| | | d.icon, |
| | | op.project_name, |
| | | 1 as patch_state, |
| | | a.id as rackNo, |
| | | 0 as heatLayoutId, |
| | | d.process, |
| | | o.order_id AS orderNo, |
| | | o.customer_name AS customerName, |
| | |
| | | <!--优化查询--> |
| | | <select id="computeAndOptimization"> |
| | | SELECT |
| | | c.project_no, |
| | | c.rack AS rackNo, |
| | | h.layout_id as heatLayoutId, |
| | | # h.layout_id as heatLayoutId, |
| | | h.width AS width, |
| | | h.height AS height, |
| | | (h.width + h.height) * 2 / 1000 as 'perimeter', |
| | | od.shape, |
| | | count( 1 ) AS quantity, |
| | | concat( h.process_id, '-', h.layer ) AS processId, |
| | | concat( h.process_id, '-', h.layer ) AS process_id, |
| | | c.process_id AS processId, |
| | | h.process_id as process_ids, |
| | | h.layer, |
| | | c.layers_number as totalLayer, |
| | | d.glass_child, |
| | | od.price, |
| | | od.remarks, |
| | | round( d.area * count( 1 ), 4 ) AS 'area', |
| | | c.order_number, |
| | | h.order_sort AS orderSort, |
| | |
| | | WHERE |
| | | h.project_no = #{projectNo} |
| | | GROUP BY |
| | | h.layout_id, |
| | | # h.layout_id, |
| | | h.width, |
| | | h.height, |
| | | h.process_id, |
| | |
| | | now() |
| | | ) |
| | | </insert> |
| | | <insert id="insertDynamicProject"> |
| | | INSERT INTO pp.optimize_dynamic_project ( |
| | | project_no, |
| | | optimize_state, |
| | | avg_cut_pct, |
| | | valid_cut_pct, |
| | | last_cut_pct, |
| | | raw_stock_qty, |
| | | raw_stock_area, |
| | | glass_total, |
| | | glass_total_area, |
| | | glass_thickness, |
| | | glass_type |
| | | )VALUES ( |
| | | #{projectNo}, |
| | | 1, |
| | | #{avgCutRate}, |
| | | #{validCutRate}, |
| | | #{lastCutRate}, |
| | | #{totalQuantity}, |
| | | #{totalArea}, |
| | | #{glassTotal}, |
| | | #{glassTotalArea}, |
| | | #{glassThickness}, |
| | | #{glassType} |
| | | ) |
| | | </insert> |
| | | <insert id="insertDynamicLayout" parameterType="java.util.Map"> |
| | | INSERT INTO pp.optimize_dynamic_layout ( |
| | | project_no, |
| | | stock_id, |
| | | width, |
| | | height, |
| | | realwidth, |
| | | realheight, |
| | | usage_rate, |
| | | stock_code, |
| | | up_trim, |
| | | down_trim, |
| | | left_trim, |
| | | right_trim, |
| | | count, |
| | | glass_count, |
| | | glass_area |
| | | ) VALUES ( |
| | | #{projectNo}, |
| | | #{stockId}, |
| | | #{width}, |
| | | #{height}, |
| | | #{realWidth}, |
| | | #{realHeight}, |
| | | #{usageRate}, |
| | | #{stockCode}, |
| | | #{upTrim}, |
| | | #{downTrim}, |
| | | #{leftTrim}, |
| | | #{rightTrim}, |
| | | #{quantity}, |
| | | #{glassQuantity}, |
| | | #{glassArea} |
| | | ) |
| | | </insert> |
| | | <insert id="insertDynamicDetail" parameterType="map"> |
| | | INSERT INTO pp.optimize_dynamic_detail ( |
| | | project_no, |
| | | process_id, |
| | | layer, |
| | | total_layer, |
| | | order_sort, |
| | | stock_id, |
| | | polys_id, |
| | | o_width, |
| | | o_height, |
| | | p_width, |
| | | p_height, |
| | | x_axis, |
| | | y_axis, |
| | | patch_state, |
| | | mark_icon, |
| | | isRotate, |
| | | glass_point, |
| | | glass_id, |
| | | rack_no, |
| | | is_remain |
| | | ) VALUES |
| | | <foreach collection="glassDetails" item="detail" separator=","> |
| | | ( |
| | | #{projectNo}, |
| | | #{detail.processId}, |
| | | #{detail.layer}, |
| | | #{detail.totalLayer}, |
| | | #{detail.orderSort}, |
| | | #{detail.stockSort}, |
| | | #{detail.polySort}, |
| | | #{detail.realWidth}, |
| | | #{detail.realHeight}, |
| | | #{detail.width}, |
| | | #{detail.height}, |
| | | #{detail.x}, |
| | | #{detail.y}, |
| | | #{detail.patchState}, |
| | | #{detail.markIcon}, |
| | | #{detail.isRotate}, |
| | | #{detail.glassPoint}, |
| | | #{detail.glassId}, |
| | | #{detail.rackNo}, |
| | | #{detail.isRemain} |
| | | ) |
| | | </foreach> |
| | | </insert> |
| | | <update id="updateFlowCardRack"> |
| | | UPDATE pp.flow_card |
| | | SET rack = #{rackValue} |
| | |
| | | x_axis = #{detail.x}, |
| | | y_axis = #{detail.y} |
| | | WHERE |
| | | project_no = #{processId} AND polys_id = #{detail.polySort} |
| | | project_no = #{processId} AND polys_id = #{detail.polySort} AND stock_id = #{detail.stockSort} |
| | | </update> |
| | | <update id="updateProjectOptimize"> |
| | | update pp.optimize_project as p |
| | |
| | | <delete id="deleteOffcutDetails"> |
| | | delete from pp.optimize_offcut where project_no = #{processId} |
| | | </delete> |
| | | <delete id="deleteOptimizeDynamicProject" parameterType="string"> |
| | | DELETE FROM pp.optimize_dynamic_project WHERE project_no = #{projectNo} |
| | | </delete> |
| | | |
| | | <delete id="deleteOptimizeDynamicLayout" parameterType="string"> |
| | | DELETE FROM pp.optimize_dynamic_layout WHERE project_no = #{projectNo} |
| | | </delete> |
| | | |
| | | <delete id="deleteOptimizeDynamicDetail" parameterType="string"> |
| | | DELETE FROM pp.optimize_dynamic_detail WHERE project_no = #{projectNo} |
| | | </delete> |
| | | |
| | | |
| | | <select id="selectOptimizeProject"> |
| | |
| | | opd.mark_icon as markIcon, |
| | | fc.`merge` as combine, |
| | | concat( opd.process_id, '/', opd.layer ) as flowCardSequence, |
| | | ogd.process |
| | | ogd.process, |
| | | if(opd.graph_no=100,0,1) as graphNo |
| | | from |
| | | pp.optimize_detail opd |
| | | left join pp.optimize_project op on op.project_no = opd.project_no |
| | |
| | | WHERE |
| | | project_no = #{projectNo} |
| | | </select> |
| | | <select id="optimizeTemp" resultType="java.util.Map" parameterType="java.lang.String"> |
| | | SELECT |
| | | project_no, |
| | | layer, |
| | | o_width as width, |
| | | o_height as height, |
| | | rack_no as rackNo, |
| | | COUNT(*) as quantity, |
| | | ROUND((o_width + o_height) * 2 / 1000, 2) as perimeter, |
| | | ROUND(o_width * o_height * COUNT(*) / 1000000, 4) as area |
| | | FROM |
| | | pp.`optimize_detail` |
| | | WHERE |
| | | project_no = #{projectNo} |
| | | AND process_id = '' |
| | | GROUP BY |
| | | project_no, |
| | | layer, |
| | | o_width, |
| | | o_height, |
| | | REPLACE(REPLACE(rack_no, '+', ''), '#', '') |
| | | ORDER BY |
| | | o_width, |
| | | o_height |
| | | </select> |
| | | <select id="selectTempProject" resultType="java.util.Map" parameterType="java.lang.String"> |
| | | SELECT |
| | | project_no, |
| | | o_width as width, |
| | | o_height as height, |
| | | rack_no as order_number, |
| | | layer as processCard, |
| | | COUNT(*) as quantity, |
| | | ROUND(o_width * o_height * COUNT(*) / 1000000, 4) as Area |
| | | FROM |
| | | pp.`optimize_detail` |
| | | WHERE |
| | | project_no = #{processId} |
| | | AND process_id = '' |
| | | GROUP BY |
| | | project_no, |
| | | layer, |
| | | o_width, |
| | | o_height, |
| | | rack_no |
| | | ORDER BY |
| | | o_width, |
| | | o_height |
| | | </select> |
| | | <select id="getGlassType" resultType="java.util.Map" parameterType="java.lang.String"> |
| | | SELECT |
| | | project_no AS projectNo, |
| | | glass_type AS glassType, |
| | | glass_thickness AS glassThickness, |
| | | min_cut_distance AS minCutDistance, |
| | | 1 AS optimizeMode, |
| | | 'X' AS travType, |
| | | 0 AS rackCycleQty |
| | | FROM |
| | | pp.optimize_project |
| | | WHERE |
| | | project_no = #{projectNo} |
| | | </select> |
| | | <select id="getRockNo" resultType="java.lang.String" parameterType="java.lang.Object"> |
| | | SELECT |
| | | rack_no AS rackNo |
| | | FROM |
| | | pp.optimize_detail |
| | | WHERE |
| | | glass_id = #{glassId} |
| | | |
| | | </select> |
| | | <select id="getTrimInfo" resultType="java.util.Map"> |
| | | SELECT |
| | | up_trim, |
| | | down_trim, |
| | | left_trim, |
| | | right_trim, |
| | | 0 as priority, |
| | | 1 as materialType |
| | | FROM |
| | | pp.optimize_layout |
| | | WHERE |
| | | project_no = #{projectNo} |
| | | AND |
| | | stock_id = #{stockId} |
| | | </select> |
| | | <select id="selectOptimizeDynamicProject" resultType="java.util.Map"> |
| | | select |
| | | project_no as engineerId, |
| | | project_name as engineerName, |
| | | avg_cut_pct as avgAvailability, |
| | | valid_cut_pct as validAvailability, |
| | | last_cut_pct as lastAvailability, |
| | | glass_total as glassTotal, |
| | | glass_total_area as glassTotalArea, |
| | | raw_stock_qty as planPatternTotal, |
| | | raw_stock_area as planPatternTotalArea, |
| | | glass_thickness as thickness, |
| | | glass_type as filmsId |
| | | from |
| | | pp.optimize_dynamic_project |
| | | where |
| | | project_no = #{projectNo} |
| | | </select> |
| | | <select id="selectOptimizeDynamicLayout" resultType="java.util.Map" parameterType="java.lang.String"> |
| | | select |
| | | ol.project_no as engineeringId, |
| | | op.glass_type as filmsId, |
| | | ol.realwidth as rawGlassWidth, |
| | | ol.realheight as rawGlassHeight, |
| | | op.glass_thickness as rawGlassThickness, |
| | | ol.stock_id as rawSequence, |
| | | ol.usage_rate as usageRate |
| | | from |
| | | pp.optimize_dynamic_layout ol |
| | | left join pp.optimize_dynamic_project op on ol.project_no = op.project_no |
| | | where |
| | | ol.project_no = #{projectNo} |
| | | order by |
| | | ol.stock_id |
| | | </select> |
| | | <select id="selectOptimizeDynamicDetail" resultType="java.util.Map" parameterType="java.lang.String"> |
| | | select |
| | | opd.glass_id as glassId, |
| | | opd.project_no as engineerId, |
| | | opd.process_id as flowCardId, |
| | | od.order_id as orderNumber, |
| | | opd.order_sort as productSortNumber, |
| | | IF(LOCATE('中空', ogd.process ) > 0 and LOCATE('#', pd.separation ), |
| | | REPLACE(JSON_UNQUOTE(JSON_EXTRACT(pd.separation, "$.lowE")),'#',''), |
| | | 0) as hollowCombineDirection, |
| | | opd.o_width as width, |
| | | opd.o_height as height, |
| | | op.glass_thickness as thickness, |
| | | op.glass_type as filmsId, |
| | | opd.total_layer as totalLayer, |
| | | opd.layer, |
| | | opd.stock_id as rawSequence, |
| | | opd.p_width as edgWidth, |
| | | opd.p_height as edgHeight, |
| | | opd.x_axis as xAxis, |
| | | opd.y_axis as yAxis, |
| | | if(opd.o_width!=opd.width,1,0) as rawAngle, |
| | | opd.heat_layout_id as temperingLayoutId, |
| | | opd.heat_layout_sort as temperingFeedSequence, |
| | | ohd.x_axis as xCoordinate, |
| | | ohd.y_axis as yCoordinate, |
| | | ohd.rotate_angle as angle, |
| | | IF(LOCATE('中空', ogd.process ) > 0 or LOCATE('夹层', ogd.process ) > 0, 1, 0) as isMultiple, |
| | | od.width as maxWidth, |
| | | od.height as maxHeight, |
| | | opd.mark_icon as markIcon, |
| | | fc.`merge` as combine, |
| | | concat( opd.process_id, '/', opd.layer ) as flowCardSequence, |
| | | ogd.process, |
| | | if(opd.graph_no=100,0,1) as graphNo |
| | | from |
| | | pp.optimize_dynamic_detail opd |
| | | left join pp.optimize_dynamic_project op on op.project_no = opd.project_no |
| | | left join pp.flow_card fc on opd.process_id = fc.process_id |
| | | and opd.layer = fc.technology_number |
| | | and opd.order_sort = order_number |
| | | left join sd.`order` o on fc.order_id = o.order_id |
| | | left join sd.order_detail od on fc.order_id = od.order_id |
| | | and fc.order_number = od.order_number |
| | | left join sd.order_glass_detail ogd on fc.order_id = ogd.order_id |
| | | and fc.order_number = ogd.order_number |
| | | and ogd.technology_number = fc.technology_number |
| | | left join pp.optimize_heat_detail ohd on ohd.layout_id = opd.heat_layout_id |
| | | and ohd.sort = opd.heat_layout_sort and ohd.project_no=opd.project_no |
| | | left join sd.product_detail pd on od.product_id=pd.prod_id and opd.layer=pd.glass_sort |
| | | where |
| | | opd.project_no = #{projectNo} and opd.is_remain = 0 |
| | | </select> |
| | | <select id="selectFlowCardDynamicInfoList" resultType="java.util.Map" parameterType="java.lang.String"> |
| | | select |
| | | fc.process_id as flowCardId, |
| | | ogd.child_width as width, |
| | | ogd.child_height as height, |
| | | REPLACE (JSON_UNQUOTE( JSON_EXTRACT( pd.separation, '$.thickness' )), 'mm', '' ) as thickness, |
| | | JSON_UNQUOTE(JSON_EXTRACT( pd.separation, '$.color' )) as filmsId, |
| | | fc.layers_number as totalLayer, |
| | | fc.technology_number as layer, |
| | | fc.quantity as glassTotal, |
| | | od.order_number as orderNumber, |
| | | od.product_name as productName, |
| | | o.customer_name as customerName |
| | | from |
| | | pp.flow_card fc |
| | | left join sd.`order` o on fc.order_id = o.order_id |
| | | left join sd.order_detail od on fc.order_id = od.order_id |
| | | and fc.order_number = od.order_number |
| | | left join sd.order_glass_detail ogd on fc.order_id = ogd.order_id |
| | | and fc.order_number = ogd.order_number |
| | | and ogd.technology_number = fc.technology_number |
| | | left join sd.product p on od.product_id = p.id |
| | | left join sd.product_detail pd on od.product_id = pd.prod_id |
| | | and fc.technology_number = pd.glass_sort |
| | | where |
| | | project_no =#{projectNo} |
| | | </select> |
| | | |
| | | |
| | | </mapper> |