<?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.GlassOptimizeMapper">
|
<resultMap id="wordOrderMap" type="com.example.erp.entity.sd.OrderGlassDetail">
|
|
<result column="order_id" property="orderId"/>
|
<result column="production_id" property="productionId"/>
|
<result column="splitting_status" property="splittingStatus"/>
|
<result column="founder" property="founder"/>
|
<result column="create_time" property="createTime"/>
|
<!--接收其他外键实体类数据-->
|
<result column="batch" property="order.batch"/>
|
<result column="order_type" property="order.orderType"/>
|
<result column="project" property="order.project"/>
|
<result column="area" property="order.area"/>
|
<result column="creator" property="order.creator"/>
|
<result column="customer_name" property="order.customerName"/>
|
<result column="processing_note" property="order.processingNote"/>
|
<!-- <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_area" property="computeArea"/>-->
|
<result column="quantity" property="orderDetail.quantity"/>
|
<!-- <result column="compute_gross_area" property="computeGrossArea"/>-->
|
<!-- <result column="perimeter" property="perimeter"/>-->
|
<!-- <result column="bend_radius" property="bendRadius"/>-->
|
<!-- <result column="processing_note" property="processingNote"/>-->
|
<result column="gross_area" property="orderDetail.grossArea"/>
|
|
<!-- </association>-->
|
|
</resultMap>
|
|
<resultMap id="optimizeProjectMangeMap" type="com.example.erp.entity.pp.OptimizeProjectMange">
|
<result property="id" column="id"/>
|
<result property="projectNumber" column="project Number"/>
|
<result property="projectName" column="project Name"/>
|
<result property="glassType" column="glass Type"/>
|
<result property="thickness" column="thickness"/>
|
<result property="type" column="type"/>
|
<result property="state" column="state"/>
|
<result property="temperingState" column="Tempering state"/>
|
<result property="optimizeState" column="Optimize state"/>
|
<result property="quantity" column="quantity"/>
|
<result property="area" column="area"/>
|
<result property="processCardQuantity" column="process Card Quantity"/>
|
<result property="usingQuantity" column="using Quantity"/>
|
<result property="temperedLoadingRate" column="tempered loading rate"/>
|
<result property="numberOfTemperingFurnaces" column="number of tempering furnaces"/>
|
<result property="averageCuttingRate" column="average cutting rate"/>
|
<result property="effectiveCuttingRate" column="effective cutting rate"/>
|
<result property="residueGlassCuttingRate" column="residue glass cutting rate"/>
|
<result property="processCardCollection" column="process card collection"/>
|
<result property="averageCuttingRate1" column="average cutting rate1"/>
|
<result property="notes" column="notes"/>
|
<result property="creator" column="creator"/>
|
<result property="createTime" column="create time"/>
|
<result property="modifyTime" column="modify time"/>
|
</resultMap>
|
|
<!--工程信息-->
|
<select id="projectInfoMp">
|
SELECT
|
f.order_number,
|
g.child_width as 'width',
|
g.child_height as 'height',
|
f.quantity ,
|
d.shape ,
|
op.process_cards ,
|
d.product_name ,
|
d.price,
|
op.remark ,
|
d.building_number ,
|
round(((`g`.`child_width`/ 1000 + g.child_height / 1000) * 2 * `f`.`quantity`),2) as perimeter ,
|
round((`g`.`area` * `f`.`quantity`),4) AS area,
|
f.technology_number ,
|
g.glass_child ,
|
g.icon,
|
op.project_name,
|
d.processing_note
|
FROM
|
((pp.flow_card AS f
|
LEFT JOIN sd.order_detail AS d ON (((f.order_id = d.order_id) AND (f.order_number = d.order_number))))
|
LEFT JOIN sd.order_glass_detail AS g ON (((f.order_id = g.order_id) AND (f.order_number = g.order_number) AND (f.technology_number = g.technology_number))))
|
INNER JOIN pp.optimize_project AS op ON op.project_no = f.project_no
|
WHERE
|
f.project_no = #{projectNo}
|
GROUP BY
|
f.order_id,
|
f.technology_number,
|
f.order_number;
|
</select>
|
|
<!--第一次优化查询-->
|
<select id="firstOptimization">
|
(SELECT
|
c.project_no,
|
d.child_width as 'width',
|
d.child_height as 'height',
|
c.quantity,
|
o.shape,
|
concat( c.process_id, '-', c.technology_number ) AS 'process_id',
|
c.process_id AS 'process_ids',
|
c.technology_number as layer,
|
c.layers_number as total_layer,
|
d.glass_child,
|
o.product_name,
|
o.price,
|
o.remarks,
|
o.building_number,
|
round( d.area * c.quantity, 4 ) as 'area',
|
c.order_number,
|
d.icon,
|
op.project_name,
|
0 as patch_state,
|
a.id as rackNo
|
FROM
|
pp.flow_card c
|
LEFT JOIN sd.order_detail o ON c.order_id = o.order_id
|
AND c.order_number = o.order_number
|
LEFT JOIN sd.order_glass_detail d ON c.order_id = d.order_id
|
AND c.order_number = d.order_number
|
AND c.technology_number = d.technology_number
|
INNER JOIN pp.optimize_project AS op ON op.project_no = c.project_no
|
left join
|
(select (@row_number := @row_number + 1) as id,process_id as process_id,technology_number as technology_number from (select process_id,technology_number from pp.flow_card tt where project_no =#{projectNo} group by process_id,technology_number) tt,(select @row_number := 0) as t) a
|
on a.process_id=c.process_id and a.technology_number=c.technology_number
|
WHERE
|
c.project_no IS NOT NULL
|
and c.project_no = #{projectNo}
|
ORDER BY
|
a.id,
|
c.process_id,
|
c.order_number
|
) union
|
(
|
SELECT
|
c.project_no,
|
d.child_width as 'width',
|
d.child_height as 'height',
|
c.patch_num as quantity,
|
o.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,
|
o.product_name,
|
o.price,
|
o.remarks,
|
o.building_number,
|
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
|
FROM
|
pp.patch_log c
|
LEFT JOIN sd.order_detail o ON c.order_id = o.order_id
|
AND c.order_sort = o.order_number
|
LEFT JOIN sd.order_glass_detail d ON c.order_id = d.order_id
|
AND c.order_sort = d.order_number
|
AND c.technology_number = d.technology_number
|
INNER JOIN pp.optimize_project AS op ON op.project_no = c.project_no
|
LEFT JOIN pp.flow_card fc ON c.process_id = fc.process_id and fc.technology_number=c.technology_number
|
left join
|
(select (@row_number := @row_number + 1) as id,process_id as process_id,technology_number as technology_number from (select process_id,technology_number from pp.flow_card tt where project_no =#{projectNo} group by process_id,technology_number) tt,(select @row_number := 0) as t) a
|
on a.process_id=c.process_id and a.technology_number=c.technology_number
|
WHERE
|
c.project_no IS NOT NULL
|
and c.project_no = #{projectNo}
|
ORDER BY
|
a.id,
|
c.process_id,
|
c.order_sort)
|
</select>
|
|
|
|
<select id="directOptimization">
|
(SELECT
|
c.project_no,
|
d.child_width as 'width',
|
d.child_height as 'height',
|
c.quantity,
|
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,
|
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,
|
o.processing_note AS processingNote,
|
o.project AS projectName,
|
od.product_name AS productName,
|
od.building_number AS buildingNumber
|
FROM
|
pp.flow_card c
|
LEFT JOIN sd.order_glass_detail d ON c.order_id = d.order_id
|
AND c.order_number = d.order_number
|
AND c.technology_number = d.technology_number
|
INNER JOIN pp.optimize_project AS op ON op.project_no = c.project_no
|
LEFT JOIN sd.ORDER o ON o.order_id = c.order_id
|
LEFT JOIN order_detail od ON c.order_id = od.order_id
|
WHERE
|
c.project_no IS NOT NULL
|
and c.project_no = #{projectNo}
|
ORDER BY
|
c.process_id,
|
c.order_number
|
) union
|
(
|
SELECT
|
c.project_no,
|
d.child_width as 'width',
|
d.child_height as 'height',
|
c.patch_num as quantity,
|
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,
|
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,
|
o.processing_note AS processingNote,
|
o.project AS projectName,
|
od.product_name AS productName,
|
od.building_number AS buildingNumber
|
FROM
|
pp.patch_log c
|
LEFT JOIN sd.order_glass_detail d ON c.order_id = d.order_id
|
AND c.order_sort = d.order_number
|
AND c.technology_number = d.technology_number
|
INNER JOIN pp.optimize_project AS op ON op.project_no = c.project_no
|
LEFT JOIN pp.flow_card fc ON c.process_id = fc.process_id and fc.technology_number=c.technology_number
|
LEFT JOIN sd.ORDER o ON o.order_id = c.order_id
|
LEFT JOIN order_detail od ON c.order_id = od.order_id
|
left join
|
(select (@row_number := @row_number + 1) as id,process_id as process_id,technology_number as technology_number from (select process_id,technology_number from pp.flow_card tt where project_no =#{projectNo} group by process_id,technology_number) tt,(select @row_number := 0) as t) a
|
on a.process_id=c.process_id and a.technology_number=c.technology_number
|
WHERE
|
c.project_no IS NOT NULL
|
and c.project_no = #{projectNo}
|
ORDER BY
|
a.id,
|
c.process_id,
|
c.order_sort)
|
</select>
|
|
<!--优化查询-->
|
<select id="analogComputationOptimization">
|
SELECT
|
h.project_no,
|
h.layout_id as rackNo,
|
h.width AS width,
|
h.height AS height,
|
count( 1 ) AS quantity,
|
o.shape,
|
concat( h.process_id, '-', h.layer ) AS 'process_id',
|
h.process_id as process_ids,
|
h.layer,
|
c.layers_number as total_layer,
|
d.glass_child,
|
o.product_name,
|
o.price,
|
o.remarks,
|
o.building_number,
|
round( d.area * count( 1 ), 4 ) AS 'area',
|
c.order_number,
|
d.icon,
|
o.price,
|
h.patch_state
|
from
|
pp.`optimize_heat_detail` h
|
LEFT JOIN pp.flow_card c ON h.process_id = c.process_id
|
AND h.layer = c.technology_number
|
AND h.order_sort = c.order_number
|
LEFT JOIN sd.order_detail o ON c.order_id = o.order_id
|
AND c.order_number = o.order_number
|
LEFT JOIN sd.order_glass_detail d ON c.order_id = d.order_id
|
AND c.order_number = d.order_number
|
AND c.technology_number = d.technology_number
|
WHERE
|
h.project_no = #{projectNo}
|
GROUP BY
|
h.project_no,
|
h.layout_id,
|
h.width,
|
h.height,
|
h.process_id,
|
h.layer,
|
d.area,
|
c.quantity,
|
d.child_width,
|
d.child_height,
|
o.shape,
|
d.glass_child,
|
o.product_name,
|
o.price,
|
o.remarks,
|
o.building_number,
|
c.order_number,
|
d.icon,
|
o.price
|
ORDER BY
|
LENGTH( h.layout_id ),
|
h.layout_id;
|
</select>
|
|
|
<!--优化查询-->
|
<select id="computeAndOptimization">
|
SELECT
|
c.rack AS rackNo,
|
h.layout_id as heatLayoutId,
|
h.width AS width,
|
h.height AS height,
|
count( 1 ) AS quantity,
|
concat( h.process_id, '-', h.layer ) AS processId,
|
h.process_id as process_ids,
|
h.layer,
|
c.layers_number as totalLayer,
|
round( d.area * count( 1 ), 4 ) AS 'area',
|
c.order_number,
|
h.order_sort AS orderSort,
|
d.icon AS markIcon,
|
h.patch_state AS patchState,
|
d.process,
|
o.order_id AS orderNo,
|
o.customer_name AS customerName,
|
o.processing_note AS processingNote,
|
o.project AS projectName,
|
od.product_name AS productName,
|
od.building_number AS buildingNumber
|
from
|
pp.`optimize_heat_detail` h
|
LEFT JOIN pp.flow_card c ON h.process_id = c.process_id
|
AND h.layer = c.technology_number
|
AND h.order_sort = c.order_number
|
LEFT JOIN sd.order_glass_detail d ON c.order_id = d.order_id
|
AND c.order_number = d.order_number
|
AND c.technology_number = d.technology_number
|
LEFT JOIN sd.order o on o.order_id = c.order_id
|
LEFT JOIN order_detail od on c.order_id = od.order_id
|
WHERE
|
h.project_no = #{projectNo}
|
GROUP BY
|
h.layout_id,
|
h.width,
|
h.height,
|
h.process_id,
|
h.layer,
|
d.area,
|
c.quantity,
|
d.child_width,
|
d.child_height,
|
c.order_number,
|
d.icon
|
ORDER BY
|
LENGTH( h.layout_id ),
|
h.layout_id;
|
</select>
|
|
|
|
<select id="getOptimizeDetail">
|
SELECT
|
h.project_no,
|
h.rack_no as rackNo,
|
h.o_width AS width,
|
h.o_height AS height,
|
(h.height-h.o_height)/2 as shortGrind1,
|
(h.height-h.o_height)/2 as shortGrind2,
|
(h.width-h.o_width)/2 as longGrind2,
|
(h.width-h.o_width)/2 as longGrind1,
|
count( 1 ) AS quantity,
|
o.shape,
|
concat( h.process_id, '-', h.layer ) AS 'process_id',
|
h.process_id as process_ids,
|
h.layer,
|
h.total_layer as total_layer,
|
d.glass_child,
|
o.product_name,
|
o.price,
|
o.remarks,
|
o.building_number,
|
round( d.area * count( 1 ), 4 ) AS 'area',
|
c.order_number,
|
d.icon,
|
o.price,
|
h.patch_state
|
from
|
pp.`optimize_detail` h
|
LEFT JOIN pp.flow_card c ON h.process_id = c.process_id
|
AND h.layer = c.technology_number
|
AND h.order_sort = c.order_number
|
LEFT JOIN sd.order_detail o ON c.order_id = o.order_id
|
AND c.order_number = o.order_number
|
LEFT JOIN sd.order_glass_detail d ON c.order_id = d.order_id
|
AND c.order_number = d.order_number
|
AND c.technology_number = d.technology_number
|
WHERE
|
h.project_no =#{projectNo}
|
GROUP BY
|
h.project_no,
|
h.rack_no,
|
h.width,
|
h.height,
|
h.process_id,
|
h.layer,
|
c.order_number
|
ORDER BY
|
h.rack_no;
|
</select>
|
|
<!--工程信息流程卡-->
|
<select id="getProcessCardMp">
|
SELECT
|
fc.process_id,
|
fc.order_number,
|
fc.quantity,
|
CONCAT(fc.technology_number, '/', COUNT(fc.layers_number)) AS layer,
|
so.project,
|
CONCAT(sd.child_width, ' × ', sd.child_height) AS sizes
|
FROM
|
pp.flow_card AS fc
|
INNER JOIN sd.order AS so ON fc.order_id = so.order_id
|
INNER JOIN sd.order_glass_detail AS sd ON sd.order_id = so.order_id AND fc.order_id = sd.order_id
|
AND fc.order_number = sd.order_number
|
WHERE
|
fc.project_no = #{projectNo}
|
GROUP BY
|
fc.order_id,
|
fc.technology_number,
|
fc.order_number
|
</select>
|
|
<select id="getFlowCardList">
|
SELECT *
|
FROM
|
pp.flow_card AS fc
|
WHERE
|
fc.project_no = #{projectNo}
|
|
</select>
|
|
<select id="getPatchLogList">
|
SELECT *
|
FROM
|
pp.patch_log
|
WHERE
|
project_no = #{projectNo}
|
|
</select>
|
|
<!--库存信息-->
|
<select id="materialStoreMp">
|
SELECT
|
i.material_code AS id,
|
i.producer AS producer,
|
i.available_quantity-i.plan_quantity AS available_quantity,
|
null as processingQuantity,
|
1 as materialType,
|
JSON_EXTRACT(s.json, '$.width') AS width,
|
JSON_EXTRACT(s.json, '$.height') AS height,
|
JSON_EXTRACT(s.json, '$.thickness') AS thickness,
|
JSON_EXTRACT(s.json, '$.name') AS name,
|
JSON_EXTRACT(s.json, '$.model') AS model
|
FROM mm.material_inventory as `i`
|
LEFT JOIN mm.material_store as s ON (
|
(
|
`i`.`material_code` = `s`.`id`
|
)
|
)
|
WHERE
|
(
|
(`s`.`type` = '原片')
|
AND (`i`.`optimize_state` = 1)
|
AND (`i`.`available_quantity`-i.plan_quantity > 0)
|
AND JSON_EXTRACT(s.json, '$.thickness') = #{thickness}
|
AND JSON_EXTRACT(s.json, '$.model') = #{model}
|
)
|
ORDER BY
|
`i`.`available_quantity` DESC ;
|
</select>
|
|
<!--余料信息-->
|
<select id="surplusMaterialsMp">
|
SELECT
|
i.id AS id,
|
'' AS producer,
|
i.quantity AS available_quantity,
|
null as processingQuantity,
|
0 as materialType,
|
i.width,
|
i.height,
|
i.thickness,
|
i.colour AS name,
|
i.colour
|
FROM mm.surplus_materials as i
|
WHERE
|
i.quantity>0 and i.colour=#{model} and i.thickness=#{thickness}
|
ORDER BY
|
i.quantity DESC ;
|
</select>
|
|
<!--库存余料信息-->
|
<select id="materialStoreSurplusMp">
|
(SELECT
|
i.id AS id,
|
i.producer AS producer,
|
i.available_quantity-i.plan_quantity AS available_quantity,
|
null as processingQuantity,
|
1 as materialType,
|
JSON_EXTRACT(s.json, '$.width') AS width,
|
JSON_EXTRACT(s.json, '$.height') AS height,
|
JSON_EXTRACT(s.json, '$.thickness') AS thickness,
|
JSON_EXTRACT(s.json, '$.name') AS name,
|
JSON_EXTRACT(s.json, '$.model') AS model
|
FROM mm.material_inventory as `i`
|
LEFT JOIN mm.material_store as s ON (
|
(
|
`i`.`material_code` = `s`.`id`
|
)
|
)
|
WHERE
|
(
|
(`s`.`type` = '原片')
|
AND (`i`.`optimize_state` = 1)
|
AND (`i`.`available_quantity`-i.plan_quantity > 0)
|
AND JSON_EXTRACT(s.json, '$.thickness') = #{thickness}
|
AND JSON_EXTRACT(s.json, '$.model') = #{model}
|
)
|
ORDER BY
|
`i`.`available_quantity` DESC) union
|
(SELECT
|
i.id AS id,
|
'' AS producer,
|
i.quantity AS available_quantity,
|
null as processingQuantity,
|
0 as materialType,
|
i.width,
|
i.height,
|
i.thickness,
|
i.colour AS name,
|
i.colour
|
FROM mm.surplus_materials as i
|
WHERE
|
i.quantity>0 and i.colour=#{model} and i.thickness=#{thickness}
|
ORDER BY
|
i.quantity DESC );
|
</select>
|
|
|
<select id="materialStoreOptimizeUse">
|
select ou.raw_stock_code AS id,
|
ou.use_count AS processingQuantity,
|
ou.width,
|
ou.height,
|
ou.left_trim as leftTrim,
|
ou.down_trim as downTrim,
|
ou.up_trim as upTrim,
|
ou.right_trim as rightTrim,
|
JSON_EXTRACT(ms.json, '$.thickness') AS thickness,
|
JSON_EXTRACT(ms.json, '$.name') AS name,
|
JSON_EXTRACT(ms.json, '$.model') AS model
|
from pp.optimize_use ou
|
left join mm.material_store ms on ou.raw_stock_code=ms.id where project_no=#{projectNumber} and state=1
|
</select>
|
|
<select id="selectWordOrder" resultMap="wordOrderMap">
|
select
|
o.order_id,
|
o.batch,
|
o.project,
|
o.order_type,
|
o.area as gross_area,
|
o.quantity as quantity,
|
o.creator,
|
o.customer_name,
|
o.processing_note
|
from sd.order_detail as od
|
left join `order` as o
|
on o.order_id=od.order_id
|
where o.production_order!=2 and o.order_review=2
|
|
<if test="orderGlassDetail.orderId != null and orderGlassDetail.orderId != ''">
|
and o.order_id regexp #{orderGlassDetail.orderId}
|
</if>
|
|
<if test="orderGlassDetail.order.batch != null and orderGlassDetail.order.batch != ''">
|
and o.batch regexp #{orderGlassDetail.order.batch}
|
</if>
|
<if test="orderGlassDetail.order.project != null and orderGlassDetail.order.project!= ''">
|
and o.project regexp #{orderGlassDetail.order.project}
|
</if>
|
<if test="orderGlassDetail.order.orderType != null and orderGlassDetail.order.orderType!= ''">
|
and o.order_type regexp #{orderGlassDetail.order.orderType}
|
</if>
|
<if test="orderGlassDetail.order.customerName != null and orderGlassDetail.order.customerName!= ''">
|
and o.customer_name regexp #{orderGlassDetail.order.customerName}
|
</if>
|
<if test="orderGlassDetail.order.processingNote != null and orderGlassDetail.order.processingNote!= ''">
|
and o.processing_note regexp #{orderGlassDetail.order.processingNote}
|
</if>
|
|
<if test="orderGlassDetail.createTime != ''">
|
and DATE_FORMAT((o.create_time),'%Y-%m-%d') BETWEEN #{ selectTime1 } AND #{ selectTime2 }
|
</if>
|
|
group by o.order_id
|
order by o.id desc
|
|
|
;
|
</select>
|
|
<select id="getFlowCardListMp">
|
SELECT
|
fc.process_id,
|
fc.technology_number,
|
fcss.TotalFloors,
|
COUNT( fc.order_number ) AS TotalNumber,
|
SUM( fc.quantity ) AS quantity,
|
ROUND( SUM( od.width * od.height * fc.quantity / 1000000 ), 2 ) AS area,
|
o.project,
|
ogd.glass_child,
|
od.shape,
|
CONCAT( JSON_UNQUOTE( JSON_EXTRACT( pd.separation, '$.thickness' )), JSON_UNQUOTE( JSON_EXTRACT( pd.separation, '$.color' )) ) AS glassType
|
FROM
|
pp.flow_card AS fc
|
LEFT JOIN sd.`order` AS o ON fc.order_id = o.order_id
|
LEFT JOIN sd.order_detail AS od ON od.order_id = fc.order_id
|
AND od.order_number = fc.order_number
|
LEFT JOIN sd.order_glass_detail AS ogd ON ogd.order_id = fc.order_id
|
AND ogd.order_number = fc.order_number
|
AND ogd.technology_number = fc.technology_number
|
LEFT JOIN (
|
SELECT
|
fcs.process_id,
|
fcs.order_number,
|
COUNT( DISTINCT fcs.technology_number ) AS TotalFloors
|
FROM
|
pp.flow_card AS fcs
|
GROUP BY
|
fcs.process_id,
|
fcs.order_number
|
) AS fcss ON fcss.process_id = fc.process_id
|
AND fcss.order_number = fc.order_number
|
LEFT JOIN sd.product_detail AS pd ON pd.prod_id = od.product_id
|
AND pd.glass_sort = fc.technology_number
|
WHERE
|
CONCAT( JSON_UNQUOTE( JSON_EXTRACT( pd.separation, '$.thickness' )), JSON_UNQUOTE( JSON_EXTRACT( pd.separation, '$.color' )) )= #{optionVal}
|
and ISNULL(fc.project_no) and fc.layout_status=1
|
GROUP BY
|
fc.process_id,
|
fc.technology_number
|
ORDER BY
|
fc.process_id,
|
fc.technology_number
|
</select>
|
|
<select id="getFlowCardListWhole">
|
SELECT 流程卡号 as process_id,
|
层 as technology_number,
|
总层数 as TotalFloors,
|
规格 as TotalNumber,
|
数量 as quantity,
|
形状 as shape,
|
项目 as project,
|
产品名称 as glass_child,
|
面积 as area,
|
GlassType as glassType,
|
patch_state
|
FROM pp.v_optimize_process_whole where
|
CONCAT( JSON_UNQUOTE( JSON_EXTRACT( GlassType, '$.thickness' )), JSON_UNQUOTE( JSON_EXTRACT( GlassType, '$.color' )) )= #{optionVal}
|
</select>
|
|
<select id="getFlowCardListNormal">
|
SELECT 流程卡号 as process_id,
|
层 as technology_number,
|
总层数 as TotalFloors,
|
规格 as TotalNumber,
|
数量 as quantity,
|
形状 as shape,
|
项目 as project,
|
产品名称 as glass_child,
|
面积 as area,
|
GlassType as glassType,
|
patch_state
|
FROM pp.v_optimize_process_normal where
|
CONCAT( JSON_UNQUOTE( JSON_EXTRACT( GlassType, '$.thickness' )), JSON_UNQUOTE( JSON_EXTRACT( GlassType, '$.color' )) )= #{optionVal}
|
</select>
|
|
<select id="getFlowCardListPatch">
|
SELECT 流程卡号 as process_id,
|
层 as technology_number,
|
总层数 as TotalFloors,
|
规格 as TotalNumber,
|
数量 as quantity,
|
形状 as shape,
|
项目 as project,
|
产品名称 as glass_child,
|
面积 as area,
|
GlassType as glassType,
|
patch_state
|
FROM pp.v_optimize_process_patch where
|
CONCAT( JSON_UNQUOTE( JSON_EXTRACT( GlassType, '$.thickness' )), JSON_UNQUOTE( JSON_EXTRACT( GlassType, '$.color' )) )= #{optionVal}
|
</select>
|
|
<select id="getFlowCardListModify">
|
SELECT 流程卡号 as process_id,
|
层 as technology_number,
|
总层数 as TotalFloors,
|
规格 as TotalNumber,
|
数量 as quantity,
|
形状 as shape,
|
项目 as project,
|
产品名称 as glass_child,
|
面积 as area,
|
GlassType as glassType,
|
patch_state,
|
占用 as occupyState
|
FROM pp.v_optimize_porject_modify_merg where
|
GlassType REGEXP #{type} and GlassType REGEXP #{thickness}
|
and (工程号 is null or 工程号 = #{projectNO}) order by 占用,patch_state,流程卡号
|
</select>
|
|
<!--工程管理-->
|
<select id="optimizeProjectMangeMp" resultMap="optimizeProjectMangeMap">
|
select p.`id` AS `id`,
|
p.`project_no` AS `Project Number`,
|
p.`project_name` AS `Project Name`,
|
p.`glass_type` AS `Glass Type`,
|
p.`glass_thickness` AS `Thickness`,
|
p.`type` AS `Type`,
|
p.`state` AS `State`,
|
p.`tempering_state` AS `Tempering state`,
|
p.`optimize_state` AS `Optimize state`,
|
p.`glass_total` AS `Quantity`,
|
p.`glass_total_area` AS `Area`,
|
p.`process_qty` AS `Process Card Quantity`,
|
p.`raw_stock_qty` AS `Using Quantity`,
|
concat((`p`.`load_rate` * 100), ' %') AS `Tempered loading rate`,
|
`p`.`furnaces_qty` AS `Number of tempering furnaces`,
|
concat(`p`.`avg_cut_pct`, ' %') AS `Average cutting rate`,
|
concat(`p`.`valid_cut_pct`, ' %') AS `Effective cutting rate`,
|
concat(`p`.`last_cut_pct`, ' %') AS `Residue glass cutting rate`,
|
`p`.`process_cards` AS `Process card collection`,
|
`p`.`frist_stock_qty` AS `Amount of original glass usage 1`,
|
concat(`p`.`frist_cut_pct`, ' %') AS `Average cutting rate 1`,
|
`p`.`remark` AS `Notes`,
|
`a`.`name` AS `Creator`,
|
`p`.`create_time` AS `Create time`,
|
`p`.`update_time` AS `Modify time`
|
from pp.optimize_project as p
|
left join pp.optimize_admin as a on p.creater = a.Id
|
where (`p`.`state` > 0)
|
# and (tempering_state>0 or optimize_state>0)
|
and DATE (`p`.`create_time`) BETWEEN #{startSelectTime} AND #{endSelectTime}
|
<if test="optimizeProjectMange.projectNumber != null and optimizeProjectMange.projectNumber != ''">
|
and p.project_no regexp #{optimizeProjectMange.projectNumber}
|
</if>
|
<if test="optimizeProjectMange.state!= null">
|
and p.state = #{optimizeProjectMange.state}
|
</if>
|
order by `p`.`create_time` desc, `p`.`project_no`
|
</select>
|
<!--修改工程状态-->
|
<update id="updateProjectStateMp">
|
update pp.optimize_project as p
|
set p.state = #{state}
|
where p.project_no = #{projectNumber}
|
</update>
|
|
<!--修改模拟计算工程状态-->
|
<update id="updateProjectTemperingStateMp">
|
update pp.optimize_project as p
|
set p.tempering_state = #{states}
|
where p.project_no = #{projectNumber}
|
</update>
|
|
<!--修改优化工程状态-->
|
<update id="updateProjectOptimizeStateMp">
|
update pp.optimize_project as p
|
set p.optimize_state = #{states}
|
where p.project_no = #{projectNumber}
|
</update>
|
|
<!--删除工程-->
|
<delete id="deleteProjectMp">
|
delete from pp.optimize_project
|
where project_no = #{projectNumber}
|
</delete>
|
|
<delete id="deleteOptimizeHeatDetail">
|
delete from pp.optimize_heat_detail
|
where project_no = #{projectNumber}
|
</delete>
|
|
<delete id="deleteOptimizeHeatLayout">
|
delete from pp.optimize_heat_layout
|
where project_no = #{projectNumber}
|
</delete>
|
|
<delete id="deleteOptimizeDetail">
|
delete from pp.optimize_detail
|
where project_no = #{projectNumber}
|
</delete>
|
|
<delete id="deleteOptimizeLayout">
|
delete from pp.optimize_layout
|
where project_no = #{projectNumber}
|
</delete>
|
|
<delete id="deleteOptimizeProjectFile">
|
delete from pp.optimize_project_file
|
where project_no = #{projectNumber}
|
</delete>
|
|
<update id="updateOptimizeUse">
|
update pp.optimize_use set state=0
|
where project_no = #{projectNumber}
|
</update>
|
|
<select id="selectOptimizeDetailById">
|
select * from pp.optimize_detail
|
where project_no = #{projectNumber} and process_id= #{processId} and layer= #{layer} and order_sort= #{orderSort}
|
and heat_layout_id is null limit 0,1;
|
</select>
|
|
<select id="selectOptimizeHeatDetail">
|
select * from pp.optimize_heat_detail
|
where project_no = #{projectNumber}
|
</select>
|
|
<select id="getProjectListMp">
|
SELECT
|
p.id,
|
p.project_no as projectNumber,
|
p.project_name,
|
p.glass_type,
|
p.glass_thickness,
|
p.type,
|
p.state,
|
p.glass_total as quantity,
|
p.glass_total_area,
|
p.process_qty,
|
p.process_cards,
|
p.remark,
|
a.name,
|
p.create_time,
|
p.update_time,
|
p.optimize_state
|
FROM
|
(
|
pp.optimize_project p
|
LEFT JOIN pp.optimize_admin a ON ((
|
p.creater = a.Id
|
)))
|
WHERE
|
( p.state = 1 ) and p.tempering_state=0 and optimize_state=0
|
ORDER BY
|
p.create_time DESC,
|
p.project_no
|
</select>
|
|
<!--模拟计算查询流程卡-->
|
<select id="selectProjectComputeMp">
|
select
|
流程卡号 as processId,
|
层 as technologyNumber,
|
总层数 as total_layers,
|
规格 as TotalNumber,
|
数量 as total_num,
|
项目 as project,
|
产品名称 as glass_child,
|
面积 as total_area,
|
tempering as tempering,
|
merge as merge,
|
patch_state as patch_state,
|
0 as allow_rotate,
|
0 as curtain_wall,
|
0 as priority_level,
|
1 as is_must
|
from pp.v_optimize_init_project_process_summary where project_no = #{projectNo}
|
</select>
|
|
<select id="selectProjectCount">
|
select * from pp.optimize_project where project_no=#{projectNo}
|
</select>
|
|
<!--模拟计算流程卡详情-->
|
<select id="selectComputeDetailMp1">
|
SELECT
|
d.width AS width,
|
d.height AS height,
|
f.quantity AS quantity,
|
d.building_number AS `Storey Number`,
|
d.shape AS shape,
|
round(g.area * f.quantity, 4) AS area,
|
g.icon AS `Label type`
|
FROM
|
pp.flow_card f
|
LEFT JOIN pp.optimize_project p ON f.project_no = p.project_no
|
LEFT JOIN sd.order o ON f.order_id = o.order_id
|
LEFT JOIN sd.order_detail d ON f.order_id = d.order_id AND f.order_number = d.order_number
|
LEFT JOIN sd.order_glass_detail g ON f.order_id = g.order_id AND f.order_number = g.order_number AND f.technology_number = g.technology_number
|
LEFT JOIN sd.product_detail p2 ON d.product_id = p2.prod_id AND f.technology_number = p2.glass_sort
|
LEFT JOIN pp.optimize_project j ON f.project_no = j.project_no
|
WHERE
|
p.state IN (1, 2)
|
AND f.process_id = #{processId}
|
</select>
|
|
|
<!--模拟计算流程卡详情2-->
|
<select id="selectComputeDetailMp">
|
select `f`.`order_id` AS order_id,
|
`f`.`order_number` AS order_number,
|
`d`.`width` AS maxwidth,
|
`d`.`height` AS maxheight,
|
`g`.`child_width` AS width,
|
`g`.`child_height` AS height,
|
`f`.`process_id` AS process_id,
|
sum(`f`.`quantity`) AS quantity,
|
`f`.`technology_number` AS technology_number,
|
`d`.`building_number` AS building_number,
|
`d`.`shape` AS shape,
|
sum(round((`g`.`area` * `f`.`quantity`), 4)) AS area,
|
`g`.`icon` AS icon
|
from ((
|
`pp`.`flow_card` `f`
|
left join `sd`.`order_detail` `d` on (((`f`.`order_id` = `d`.`order_id`)
|
and (`f`.`order_number` = `d`.`order_number`))))
|
left join `sd`.`order_glass_detail` `g` on (((`f`.`order_id` = `g`.`order_id`)
|
and (`f`.`order_number` = `g`.`order_number`)
|
and (`f`.`technology_number` = `g`.`technology_number`))))
|
where (`f`.`layout_status` != 0)
|
and f.process_id = #{processId}
|
and f.technology_number = #{technologyNumber}
|
group by `f`.`process_id`,
|
`f`.`technology_number`,
|
`f`.`order_id`,
|
`f`.`order_number`,
|
`d`.`width`,
|
`d`.`height`,
|
`g`.`child_width`,
|
`g`.`child_height`,
|
`f`.`quantity`,
|
`d`.`building_number`,
|
`d`.`shape`,
|
`g`.`area`,
|
`g`.`icon`
|
</select>
|
|
|
<select id="selectComputeDetailMpPatchState">
|
select `l`.`order_id` AS order_id,
|
`l`.`order_sort` AS order_number,
|
`d`.`width` AS maxwidth,
|
`d`.`height` AS maxheight,
|
`g`.`child_width` AS width,
|
`g`.`child_height` AS height,
|
`l`.`process_id` AS process_id,
|
`l`.`patch_num` AS quantity,
|
`l`.`technology_number` AS technology_number,
|
`d`.`building_number` AS building_number,
|
`d`.`shape` AS shape,
|
round((`g`.`area` * `l`.`patch_num`), 4) AS area,
|
`g`.`icon` AS icon
|
from (((
|
`pp`.`patch_log` `l`
|
left join (select `pp`.`optimize_project`.`project_no` AS `project_no`
|
from `pp`.`optimize_project`
|
where ((`optimize_project`.`state` = 1)or (`optimize_project`.`state` = 2))) `p` on ((`l`.`project_no` = `p`.`project_no`)))
|
left join `sd`.`order_detail` `d` on (((`l`.`order_id` = `d`.`order_id`)and (`l`.`order_sort` = `d`.`order_number`))))
|
left join `sd`.`order_glass_detail` `g` on (((`l`.`order_id` = `g`.`order_id`)and (`l`.`order_sort` = `g`.`order_number`)
|
and (`l`.`technology_number` = `g`.`technology_number`))))
|
where `l`.process_id = #{processId}
|
and `l`.technology_number = #{technologyNumber}
|
group by `l`.`process_id`,
|
`l`.`technology_number`,
|
`l`.`order_id`,
|
`l`.`order_sort`,
|
`d`.`width`,
|
`d`.`height`,
|
`g`.`child_width`,
|
`g`.`child_height`,
|
`l`.`patch_num`,
|
`d`.`building_number`,
|
`d`.`shape`,
|
`g`.`area`,
|
`g`.`icon`
|
</select>
|
|
<select id="getProcessCardDetailmMp">
|
select fc.order_number,
|
ogd.child_width,
|
ogd.child_height,
|
fc.quantity,
|
od.building_number,IF(od.shape!=2,'普形','异形') as shape,
|
ROUND(ogd.child_width*ogd.child_height*fc.quantity/1000000,2) as grossArea,
|
pd.separation
|
from pp.flow_card as fc
|
left join sd.order_glass_detail as ogd
|
on ogd.order_id=fc.order_id and ogd.order_number=fc.order_number
|
and ogd.technology_number=fc.technology_number
|
left join sd.order_detail as od on od.order_id=ogd.order_id and od.order_number=ogd.order_number
|
left join sd.product_detail as pd on pd.prod_id=od.product_id and pd.glass_sort=fc.technology_number
|
where fc.process_id=#{processId} and fc.technology_number=#{technologyNumber}
|
group by fc.process_id,fc.order_number,fc.technology_number
|
order by fc.order_number,fc.technology_number
|
</select>
|
|
<select id="selectGlassTypeMp">
|
SELECT
|
JSON_UNQUOTE(JSON_EXTRACT(type, '$.lowE')) AS lowE,
|
JSON_UNQUOTE(JSON_EXTRACT(type, '$.color')) AS color,
|
JSON_UNQUOTE(JSON_EXTRACT(type, '$.thickness')) AS thickness,
|
JSON_UNQUOTE(JSON_EXTRACT(type, '$.craft')) AS craft,
|
JSON_UNQUOTE(JSON_EXTRACT(type, '$.position')) AS position,
|
CONCAT(
|
JSON_UNQUOTE(JSON_EXTRACT(type, '$.thickness')),
|
JSON_UNQUOTE(JSON_EXTRACT(type, '$.color'))
|
) AS glassType
|
FROM pp.v_optimize_create_process_type
|
GROUP BY
|
thickness,
|
color
|
ORDER BY
|
CAST(REPLACE(JSON_UNQUOTE(JSON_EXTRACT(type, '$.thickness')), 'mm', '') AS UNSIGNED);
|
</select>
|
|
<select id="getProjectIdSv">
|
SELECT IFNULL(
|
(SELECT project_no
|
FROM pp.optimize_project
|
WHERE DATE(create_time) = CURDATE()
|
ORDER BY create_time DESC
|
LIMIT 1), '00') AS project_no;
|
</select>
|
|
<update id="updateFlowCardProject">
|
UPDATE pp.flow_card set project_no=#{projectId},layout_status=2
|
where process_id=#{processId} and technology_number=#{technologyNumber}
|
</update>
|
|
<update id="updatePatchLogProject">
|
UPDATE pp.patch_log set project_no=#{projectId}
|
where process_id=#{processId} and technology_number=#{technologyNumber}
|
</update>
|
|
<update id="updateFlowCardProjectReturn">
|
UPDATE pp.flow_card set project_no=null,layout_status=1
|
where process_id=#{processId} and technology_number=#{technologyNumber} and project_no=#{projectId}
|
</update>
|
|
<update id="updatePatchLogProjectReturn">
|
UPDATE pp.patch_log set project_no=null
|
where process_id=#{processId} and technology_number=#{technologyNumber} and project_no=#{projectId}
|
</update>
|
|
<select id="getSelectArea">
|
select
|
ROUND(SUM(ogd.child_width*ogd.child_height*fc.quantity)/1000000,2) as grossArea
|
from pp.flow_card as fc
|
left join sd.order_glass_detail as ogd
|
on ogd.order_id=fc.order_id and ogd.order_number=fc.order_number
|
and ogd.technology_number=fc.technology_number
|
left join sd.order_detail as od on od.order_id=ogd.order_id and od.order_number=ogd.order_number
|
left join sd.product_detail as pd on pd.prod_id=od.product_id and pd.glass_sort=fc.technology_number
|
where fc.process_id=#{processId} and fc.technology_number=#{technologyNumber}
|
group by fc.process_id,fc.technology_number
|
</select>
|
|
<select id="getSelectAreaPatchLog">
|
select
|
sum(patch_area)
|
from pp.patch_log
|
where process_id=#{processId} and technology_number=#{technologyNumber}
|
group by process_id,technology_number
|
</select>
|
|
<select id="selectPatchLogState">
|
select
|
count(*)
|
from pp.patch_log
|
where process_id=#{processId} and technology_number=#{technologyNumber} and order_sort=#{orderNumber} and project_no=#{projectNo}
|
</select>
|
|
<update id="updateProjectMp">
|
update pp.optimize_project set project_name=#{projectNmae},glass_total=#{sumQuantity},glass_total_area= #{sumArea},
|
type=#{type},process_qty=#{processIdCount},process_cards=#{processId} where project_no=#{projectId}
|
</update>
|
|
<insert id="addProjectMp">
|
insert into pp.optimize_project (project_no, project_name, order_glass_type, order_glass_thickness,glass_type, glass_thickness,
|
glass_total,glass_total_area,type,state,process_qty,process_cards)
|
values (#{projectId}, #{projectNmae}, #{glassType}, #{glassThickness}, #{glassType}, #{glassThickness},#{sumQuantity}, #{sumArea},
|
#{type},1,#{processIdCount},#{processId})
|
</insert>
|
|
|
<insert id="addSimulation" parameterType="map">
|
<foreach collection="projectdetail" item="glass">
|
INSERT INTO pp.optimize_heat_detail (
|
project_no,
|
process_id,
|
width,
|
height,
|
x_axis,
|
y_axis,
|
rotate_angle,
|
creater,
|
create_time,
|
update_time,
|
patch_state,
|
layer,
|
order_sort,
|
layout_id,
|
sort,
|
glass_id,
|
pair_width,
|
pair_height,
|
intRemark,
|
strRemark
|
) VALUES (
|
#{inputValues.project_no},
|
#{glass.process_id},
|
#{glass.width},
|
#{glass.height},
|
#{glass.x_coordinate},
|
#{glass.y_coordinate},
|
#{glass.angle},
|
#{userName},
|
NOW(),
|
NOW(),
|
0,
|
#{glass.layers_number},
|
#{glass.order_number},
|
#{glass.tempering_layout_id},
|
#{glass.tempering_feed_sequence},
|
null,
|
#{glass.width},
|
#{glass.height},
|
null,
|
null
|
);
|
</foreach>
|
</insert>
|
|
<insert id="insertOptimizeHeatDetail">
|
INSERT INTO pp.optimize_heat_detail (
|
project_no,
|
process_id,
|
width,
|
height,
|
x_axis,
|
y_axis,
|
rotate_angle,
|
creater,
|
create_time,
|
update_time,
|
patch_state,
|
layer,
|
order_sort,
|
layout_id,
|
sort,
|
glass_id,
|
pair_width,
|
pair_height,
|
intRemark,
|
strRemark
|
) VALUES (
|
#{projectId},
|
#{processId},
|
#{width},
|
#{height},
|
0,
|
0,
|
0,
|
#{username},
|
NOW(),
|
NOW(),
|
#{patchState},
|
#{technologyNumber},
|
#{orderNumber},
|
0,
|
#{index},
|
null,
|
#{width},
|
#{height},
|
null,
|
null
|
);
|
</insert>
|
|
<!--模拟计算结果保存-->
|
<insert id="addratioResult" parameterType="map">
|
<foreach collection="ratioResult" item="glass">
|
INSERT INTO pp.optimize_heat_layout (
|
project_no,
|
layout_id,
|
glass_qty,
|
glass_area,
|
layout_rate,
|
creater,
|
create_time,
|
intRemark,
|
strRemark
|
) VALUES (
|
#{inputValues.project_no},
|
#{glass.tempering_layout_id},
|
#{glass.glass_total},
|
#{glass.area},
|
#{glass.ratio},
|
1,
|
NOW(),
|
null,
|
null
|
);
|
</foreach>
|
</insert>
|
|
<!--优化小片保存-->
|
<insert id="addOptimizeDetail" parameterType="map">
|
<foreach collection="object" item="glass">
|
INSERT INTO pp.optimize_detail (
|
project_no,
|
process_id,
|
layer,
|
total_layer,
|
order_sort,
|
stock_id,
|
polys_id,
|
p_width,
|
p_height,
|
width,
|
height,
|
x_axis,
|
y_axis,
|
patch_state,
|
mark_icon,
|
isRotate,
|
glass_point,
|
rack_no
|
) VALUES (
|
#{projectId},
|
#{glass.processId},
|
#{glass.layer},
|
#{glass.totalLayer},
|
#{glass.orderSort},
|
#{glass.stockSort},
|
#{glass.polySort},
|
#{glass.realWidth},
|
#{glass.realHeight},
|
#{glass.width},
|
#{glass.height},
|
#{glass.x},
|
#{glass.y},
|
#{glass.patchState},
|
#{glass.markIcon},
|
#{glass.isRotate},
|
#{glass.glassPoint},
|
#{glass.rackNo}
|
);
|
</foreach>
|
</insert>
|
|
<!--优化结果json格式保存-->
|
<insert id="addOptimizeProjectFile" >
|
INSERT INTO pp.optimize_project_file (
|
project_no,
|
type,
|
content,
|
create_time,
|
creater
|
) VALUES (
|
#{projectId},
|
"优化结果",
|
#{object},
|
now(),
|
#{name}
|
);
|
</insert>
|
|
<!--优化原片保存-->
|
<insert id="addOptimizeLayout" parameterType="map">
|
<foreach collection="object " item="glass">
|
INSERT INTO pp.optimize_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,
|
create_time
|
) VALUES (
|
#{projectId},
|
#{glass.stockId},
|
#{glass.width},
|
#{glass.height},
|
#{glass.realWidth},
|
#{glass.realHeight},
|
#{glass.usageRate},
|
#{glass.stockCode},
|
#{glass.upTrim},
|
#{glass.downTrim},
|
#{glass.leftTrim},
|
#{glass.rightTrim},
|
#{glass.count},
|
#{glass.glassQuantity},
|
#{glass.glassArea},
|
now()
|
);
|
</foreach>
|
</insert>
|
|
<!--优化原片保存-->
|
<insert id="addOptimizeUse" parameterType="map">
|
<foreach collection="object " item="glass">
|
INSERT INTO pp.optimize_use (
|
project_no,
|
raw_stock_code,
|
type,
|
width,
|
height,
|
use_count,
|
not_use_count,
|
state,
|
left_trim,
|
down_trim,
|
right_trim,
|
up_trim,
|
creater,
|
create_time
|
) VALUES (
|
#{projectId},
|
#{glass.stockCode},
|
1,
|
#{glass.width},
|
#{glass.height},
|
#{glass.count},
|
#{glass.count},
|
1,
|
#{glass.leftTrim},
|
#{glass.downTrim},
|
#{glass.rightTrim},
|
#{glass.upTrim},
|
#{name},
|
now()
|
);
|
</foreach>
|
</insert>
|
<insert id="addOptimizeOffcut">
|
INSERT INTO pp.optimize_offcut (
|
project_no,
|
stock_id,
|
width,
|
height,
|
x_axis,
|
y_axis,
|
model,
|
thickness
|
) VALUES (
|
#{projectId},
|
#{map.stockSort},
|
#{map.width},
|
#{map.height},
|
#{map.x},
|
#{map.y},
|
#{glassType},
|
#{glassThickness}
|
|
)
|
</insert>
|
<insert id="addUpdateOffcut">
|
INSERT INTO pp.optimize_offcut (
|
project_no,
|
stock_id,
|
width,
|
height,
|
x_axis,
|
y_axis,
|
model,
|
thickness
|
) VALUES (
|
#{processId},
|
1,
|
#{detail.width},
|
#{detail.height},
|
#{detail.x},
|
#{detail.y},
|
#{glassType},
|
#{glassThickness})
|
</insert>
|
|
|
<!--模拟计算工程更新-->
|
<update id="addratioProjectResult" parameterType="map">
|
UPDATE pp.optimize_project
|
SET
|
tempering_state = 1,
|
furnaces_qty=#{resultSum[0]},
|
load_rate=#{resultSum[1]},
|
chaos_pct = #{inputValues.chaos_pct},
|
max_load_pct = #{inputValues.max_load_pct},
|
max_area=#{inputValues.max_area},
|
max_qty=#{inputValues.max_qty},
|
load_width=#{inputValues.load_width},
|
load_length=#{inputValues.load_length},
|
x_space=#{inputValues.x_space},
|
y_space=#{inputValues.y_space}
|
WHERE
|
project_no = #{inputValues.project_no}
|
|
</update>
|
|
<!--优化设置保存-->
|
<update id="optimizeParmsSave">
|
update erp_user_info.user as u
|
set u.optimize_parms = #{jsonString} where user_name=#{username}
|
</update>
|
|
<update id="updateOptimizeResult">
|
update pp.optimize_project_file as u
|
set u.content = #{jsonString}
|
where u.project_no=#{processId} and type='优化结果'
|
</update>
|
|
<update id="updateOptimizeDetail">
|
update pp.optimize_detail
|
set heat_layout_id=#{layoutId},heat_layout_sort=#{sort},glass_id=concat(process_id,'|',#{layoutId},'|',#{sort})
|
where id=#{id};
|
</update>
|
|
|
|
<select id="selectOptimizeResult">
|
SELECT content as Layouts
|
FROM pp.optimize_project_file
|
WHERE project_no=#{processId} and type='优化结果';
|
</select>
|
|
<select id="getTemperedConfiguration">
|
select JSON_EXTRACT( oc.config_detail, '$.glass_thickness' ) as glass_thickness,
|
JSON_EXTRACT( oc.config_detail, '$.glass_type' ) as glass_type,
|
JSON_EXTRACT( oc.config_detail, '$.tempering_time' ) as tempering_time,
|
JSON_EXTRACT( oc.config_detail, '$.load_width' ) as load_width,
|
JSON_EXTRACT( oc.config_detail, '$.load_length' ) as load_length,
|
JSON_EXTRACT( oc.config_detail, '$.x_space' ) as x_space,
|
JSON_EXTRACT( oc.config_detail, '$.y_space' ) as y_space
|
from pp.optimize_admin oa where config_type=1 and creater=#{username}
|
</select>
|
|
<select id="getEdgeTrimming">
|
select JSON_EXTRACT( oc.config_detail, '$.left_trim' ) as leftTrim,
|
JSON_EXTRACT( oc.config_detail, '$.up_trim' ) as upTrim,
|
JSON_EXTRACT( oc.config_detail, '$.right_trim' ) as rightTrim,
|
JSON_EXTRACT( oc.config_detail, '$.down_trim' ) as downTrim,
|
JSON_EXTRACT( oc.config_detail, '$.auto_fill_trim' ) as autoFillTrim,
|
JSON_EXTRACT( oc.config_detail, '$.quick_trim' ) as quickTrim
|
from pp.optimize_config oc where config_type=5 and creater=#{username}
|
</select>
|
|
<select id="getGrindingTrimming">
|
select JSON_EXTRACT( oc.config_detail, '$.left_edge' ) as leftEdge,
|
JSON_EXTRACT( oc.config_detail, '$.up_edge' ) as upEdge,
|
JSON_EXTRACT( oc.config_detail, '$.right_edge' ) as rightEdge,
|
JSON_EXTRACT( oc.config_detail, '$.down_edge' ) as downEdge,
|
JSON_EXTRACT( oc.config_detail, '$.auto_fill_edge' ) as autoFillEdge,
|
JSON_EXTRACT( oc.config_detail, '$.quick_edge' ) as quickEdge,
|
JSON_EXTRACT( oc.config_detail, '$.min_auto_lenght' ) as minAutoLenght
|
from pp.optimize_config oc where config_type=4 and creater=#{username}
|
</select>
|
|
|
<select id="getGrindingOptimize">
|
select
|
CAST(REPLACE(JSON_EXTRACT( oc.config_detail, '$.left_edge' ), '"', '') AS DECIMAL(10,2)) as leftGrind,
|
CAST(REPLACE(JSON_EXTRACT( oc.config_detail, '$.up_edge' ), '"', '') AS DECIMAL(10,2)) as upGrind,
|
CAST(REPLACE(JSON_EXTRACT( oc.config_detail, '$.right_edge' ), '"', '') AS DECIMAL(10,2)) as rightGrind,
|
CAST(REPLACE(JSON_EXTRACT( oc.config_detail, '$.down_edge' ), '"', '') AS DECIMAL(10,2)) as downGrind
|
from pp.optimize_config oc where config_type=4 and creater=#{username}
|
</select>
|
|
<update id="updateOptimizeConfig">
|
UPDATE pp.optimize_config set config_detail=#{json},create_time=now()
|
where config_type=#{type} and creater=#{username}
|
</update>
|
<update id="updateFlowCardRack">
|
UPDATE pp.flow_card
|
SET rack = #{rackValue}
|
WHERE process_id = #{processId} AND technology_number = #{technologyNumber}
|
</update>
|
<update id="updateNormalDetails">
|
UPDATE pp.optimize_detail
|
SET
|
x_axis = #{detail.x},
|
y_axis = #{detail.y}
|
WHERE
|
project_no = #{processId} AND polys_id = #{detail.polySort}
|
</update>
|
|
<select id="simulatedTypesettingUsingOpt">
|
SELECT
|
c.project_no,
|
d.child_width as 'width',
|
d.child_height as 'height',
|
c.quantity,
|
o.shape,
|
concat( c.process_id, '-', c.technology_number ) AS 'process_id',
|
c.technology_number,
|
d.glass_child,
|
o.product_name,
|
o.price,
|
o.remarks,
|
o.building_number,
|
round( d.area * c.quantity, 4 ) as 'area',
|
c.order_number,
|
d.icon,
|
op.project_name
|
FROM
|
pp.flow_card c
|
LEFT JOIN sd.order_detail o ON c.order_id = o.order_id
|
AND c.order_number = o.order_number
|
LEFT JOIN sd.order_glass_detail d ON c.order_id = d.order_id
|
AND c.order_number = d.order_number
|
AND c.technology_number = d.technology_number
|
INNER JOIN pp.optimize_project AS op ON op.project_no = c.project_no
|
WHERE
|
c.project_no IS NOT NULL
|
and c.process_id IN
|
<foreach item="item" index="index" collection="processId" open="(" separator="," close=")">
|
#{item}
|
</foreach>
|
and c.technology_number IN
|
<foreach item="item" index="index" collection="technologyNumber" open="(" separator="," close=")">
|
#{item}
|
</foreach>
|
ORDER BY
|
c.process_id,
|
c.order_number
|
</select>
|
|
<select id="getFlowCardListSimulated">
|
SELECT 流程卡号 as process_id,
|
层 as technology_number,
|
总层数 as TotalFloors,
|
规格 as TotalNumber,
|
数量 as quantity,
|
形状 as shape,
|
项目 as project,
|
产品名称 as glass_child,
|
面积 as area,
|
GlassType as glassType,
|
patch_state
|
FROM pp.v_optimize_process_normal where
|
CONCAT( JSON_UNQUOTE( JSON_EXTRACT( GlassType, '$.thickness' )), JSON_UNQUOTE( JSON_EXTRACT( GlassType, '$.color' )) )= #{optionVal}
|
order by deliveryDate desc
|
</select>
|
|
|
|
|
|
|
|
<!--模拟计算查询流程卡第三方-->
|
<select id="selectProjectComputeMpThirdParty">
|
select
|
process_id as processId,
|
layer as technologyNumber,
|
total_layer as total_layers,
|
filmsid as TotalNumber,
|
sum(glass_total) as total_num,
|
product_name as glass_child,
|
0 as tempering,
|
0 as allow_rotate,
|
0 as curtain_wall,
|
0 as priority_level,
|
1 as is_must
|
from pp.other_flow_card where project_no = #{projectNo} group by process_id,layer
|
</select>
|
|
<!--模拟计算流程卡详情第三方-->
|
<select id="selectComputeDetailMpThirdParty">
|
select
|
process_id as process_id,
|
width as width,
|
height as height,
|
width as maxwidth,
|
height as maxheight,
|
order_number as order_number,
|
glass_total as quantity,
|
layer as technology_number,
|
0 as patch_state
|
from pp.other_flow_card where process_id = #{processId} and layer=#{technologyNumber}
|
</select>
|
|
<!--第一次优化查询-->
|
<select id="firstOptimizationThirdParty">
|
select
|
project_no,
|
concat( process_id, '-', layer ) AS process_id,
|
width,
|
height,
|
layer,
|
glass_total as quantity,
|
product_name,
|
order_number
|
from pp.other_flow_card where project_no = #{projectNo}
|
</select>
|
|
<select id="analogComputationOptimizationThirdParty">
|
SELECT
|
h.project_no,
|
h.layout_id,
|
h.width AS width,
|
h.height AS height,
|
count( 1 ) AS quantity,
|
concat( h.process_id, '-', h.layer ) AS 'process_id',
|
h.layer,
|
c.order_number
|
from
|
pp.`optimize_heat_detail` h
|
LEFT JOIN pp.other_flow_card c ON h.process_id = c.process_id
|
AND h.layer = c.technology_number
|
AND h.order_sort = c.order_number
|
WHERE
|
h.project_no = #{projectNo}
|
GROUP BY
|
h.project_no,
|
h.layout_id,
|
h.width,
|
h.height,
|
h.process_id,
|
h.layer,
|
c.quantity,
|
c.order_number
|
ORDER BY
|
LENGTH( h.layout_id ),
|
h.layout_id;
|
</select>
|
|
<!--工程信息流程卡-->
|
<select id="getProcessCardMpThirdParty">
|
SELECT
|
fc.process_id,
|
fc.order_number,
|
fc.glass_total as quantity,
|
CONCAT(fc.layer, '/', COUNT(fc.total_layer)) AS layer,
|
CONCAT(fc.width, ' × ', fc.height) AS sizes
|
FROM
|
pp.other_flow_card AS fc
|
WHERE
|
fc.project_no = #{projectNo}
|
GROUP BY
|
fc.layer,
|
fc.order_number
|
</select>
|
<select id="getProjectByProjectNoSv" resultType="java.util.Map">
|
SELECT
|
p.id,
|
p.project_no as projectNumber,
|
p.project_name,
|
p.glass_type,
|
p.glass_thickness,
|
p.type,
|
p.state,
|
p.glass_total as quantity,
|
p.glass_total_area,
|
p.process_qty,
|
p.process_cards,
|
p.remark,
|
a.name,
|
p.create_time,
|
p.update_time,
|
p.optimize_state
|
FROM
|
(
|
pp.optimize_project p
|
LEFT JOIN pp.optimize_admin a ON ((
|
p.creater = a.Id
|
)))
|
WHERE
|
( p.state = 1 ) and p.tempering_state=0 and optimize_state=0 and p.project_no = #{projectNo}
|
ORDER BY
|
p.create_time DESC,
|
p.project_no
|
|
</select>
|
|
<delete id="deleteOptimizeDetailThirdParty">
|
delete from pp.other_flow_card
|
where project_no = #{projectNumber}
|
</delete>
|
<delete id="deleteOptimizeOffcut">
|
DELETE
|
FROM
|
pp.optimize_offcut
|
WHERE
|
project_no = #{projectNumber}
|
</delete>
|
<delete id="deleteOffcutDetails">
|
delete from pp.optimize_offcut where project_no = #{processId}
|
</delete>
|
|
|
<select id="selectOptimizeProject">
|
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_project
|
where
|
project_no = #{projectNo}
|
</select>
|
|
<select id="selectOptimizeLayout">
|
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 rawSequence
|
from
|
pp.optimize_layout ol
|
left join pp.optimize_project op on ol.project_no = op.project_no
|
where
|
ol.project_no = #{projectNo}
|
order by
|
ol.stock_id
|
</select>
|
|
|
<select id="selectOptimizeDetail">
|
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, 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
|
from
|
pp.optimize_detail opd
|
left join pp.optimize_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}
|
</select>
|
|
<select id="selectFlowCardInfoList">
|
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>
|
<select id="getGlassInfo" resultType="java.util.Map">
|
select
|
project_no,
|
glass_type,
|
glass_thickness
|
from
|
pp.optimize_project
|
where
|
project_no = #{projectId}
|
</select>
|
<select id="getOptimizeLayoutsInfo" resultType="java.util.Map">
|
SELECT
|
width,
|
height,
|
realwidth,
|
realheight,
|
stock_id AS stockId,
|
stock_code AS stockCode,
|
usage_rate AS usageRate,
|
up_trim AS upTrim,
|
down_trim AS downTrim,
|
left_trim AS leftTrim,
|
right_trim AS rightTrim,
|
count AS quantity,
|
glass_count AS glassQuantity
|
FROM
|
pp.optimize_layout
|
where
|
project_no = #{projectId}
|
</select>
|
<select id="getOptimizeDetailsInfo" resultType="java.util.Map">
|
SELECT
|
0 AS isRemain,
|
od.width AS realWidth,
|
od.height AS realHeight,
|
od.p_width AS width,
|
od.p_height AS height,
|
od.process_id AS processId,
|
od.layer,
|
od.total_layer AS totalLayer,
|
od.order_sort AS orderSort,
|
od.stock_id AS layoutId,
|
od.stock_number AS glassSort,
|
od.x_axis AS x,
|
od.y_axis AS y,
|
od.mark_icon AS markIcon,
|
od.isRotate,
|
od.glass_point AS glassPoint,
|
fc.order_id AS orderNo,
|
ogd.process,
|
o.customer_name AS customerName,
|
o.processing_note AS processingNote,
|
o.project AS projectName,
|
ord.product_name AS productName,
|
ord.building_number AS buildingNumber,
|
COALESCE(h.layout_id, 0) as heatLayoutId,
|
od.rack_no AS rackNo
|
FROM
|
pp.optimize_detail od
|
LEFT JOIN pp.flow_card fc on od.process_id = fc.process_id
|
LEFT JOIN sd.order_glass_detail ogd ON fc.order_id = ogd.order_id
|
LEFT JOIN sd.ORDER o ON o.order_id = fc.order_id
|
LEFT JOIN sd.order_detail ord ON fc.order_id = ord.order_id
|
LEFT JOIN pp.optimize_heat_detail h ON h.process_id = fc.process_id
|
WHERE
|
od.project_no = #{projectId}
|
</select>
|
<select id="getOptimizeOffsetsInfo" resultType="java.util.Map">
|
SELECT
|
1 AS isRemain,
|
0 AS isRotate,
|
width AS realWidth,
|
height AS realHeight,
|
width AS width,
|
height AS height,
|
stock_id AS stockSort,
|
x_axis AS x,
|
y_axis AS y,
|
model AS glassType,
|
thickness AS glassThickness
|
FROM
|
pp.optimize_offcut
|
WHERE
|
project_no = #{projectId}
|
</select>
|
|
|
</mapper>
|