<?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.sd.BomDataMapper">
|
|
<insert id="saveMaterialBomDataMp">
|
insert into sd.bom_base
|
(material_id, material, status, type, consume, price,unit,create_time)
|
values
|
(#{id}, #{name}, 0, #{type}, #{consume},#{price}, #{unit},now())
|
</insert>
|
|
<select id="getMaterialId">
|
select count(*) from sd.bom_base where material_id= #{id}
|
</select>
|
|
<update id="updateMaterialBomDataMp">
|
update sd.bom_base
|
set type=#{type},consume=#{consume},price=#{price},unit=#{unit},create_time=now()
|
where material_id = #{id}
|
</update>
|
|
<insert id="saveProductBOMMp">
|
insert into sd.bom_product
|
(product_id,base_id,product_layer)
|
values (#{produceId},#{tabId},#{layer})
|
</insert>
|
|
<select id="getOrderBomDataMp">
|
SELECT product_id,product_name,SUM(quantity) as quantity,
|
SUM(gross_area) as area,SUM(perimeter) as perimeter,order_id from sd.order_detail where order_id=#{orderId}
|
GROUP BY product_id
|
</select>
|
|
<select id="getBOMDetails">
|
select bp.*,bb.*,(consume*price) as materialPric,od.quantity,pdd.detail_type,
|
IFNULL(JSON_UNQUOTE(JSON_EXTRACT(pdd.separation, '$.GlueDepth')),0) as glueDepth,
|
CAST(SUBSTRING_INDEX(IFNULL(JSON_UNQUOTE(JSON_EXTRACT(pdd.separation, '$.thickness')), '0mm'), 'mm', 1) AS DECIMAL(10, 2)) AS thickness
|
from sd.bom_product as bp
|
left join sd.bom_base as bb on bb.id=bp.base_id
|
left join ( select order_id,product_id,SUM(quantity) as quantity from sd.order_detail GROUP BY order_id,product_id
|
) as od on od.product_id = bp.product_id
|
left join sd.product_detail as pdd on pdd.prod_id = bp.product_id and pdd.sort_num = bp.product_layer
|
where bp.product_id = #{productId} and od.order_id = #{orderId} ORDER BY product_layer
|
</select>
|
|
<select id="getOrderBomSumDataMp">
|
SELECT product_id,product_name,SUM(quantity) as quantity,SUM(gross_area) as area,SUM(perimeter) as perimeter
|
from sd.order_detail where order_id=#{orderId}
|
</select>
|
|
<select id="getOrderBomsumDataDatilsMp">
|
SELECT
|
od.order_id,
|
bp.product_id,
|
bb.material_id,
|
bb.material,
|
bb.`status`,
|
bb.type,
|
sum(bb.consume) as consume,
|
sum(bb.price) as price,
|
sum(bb.consume * bb.price) AS materialPrice,
|
od.quantity,
|
pdd.detail_type,
|
IFNULL( JSON_UNQUOTE( JSON_EXTRACT( pdd.separation, '$.GlueDepth' )), 0 ) AS glueDepth,
|
CAST(
|
SUBSTRING_INDEX( IFNULL( JSON_UNQUOTE( JSON_EXTRACT( pdd.separation, '$.thickness' )), '0mm' ), 'mm', 1 ) AS DECIMAL ( 10, 2 )) AS thickness
|
FROM
|
sd.bom_product AS bp
|
LEFT JOIN sd.bom_base AS bb ON bb.id = bp.base_id
|
LEFT JOIN (
|
select order_id,product_id,SUM(quantity) as quantity from sd.order_detail GROUP BY order_id,product_id
|
) as od on od.product_id = bp.product_id
|
LEFT JOIN sd.product_detail AS pdd ON pdd.prod_id = bp.product_id AND pdd.sort_num = bp.product_layer
|
WHERE od.order_id=#{orderId}
|
GROUP BY bb.material_id
|
ORDER BY bp.product_layer
|
</select>
|
|
<select id="getEditProductBOMSv">
|
SELECT
|
bp.product_layer,
|
bb.material_id,
|
bb.material,
|
JSON_UNQUOTE(
|
JSON_EXTRACT( ms.json, '$.thickness' )) AS thickness,
|
JSON_UNQUOTE(
|
JSON_EXTRACT( ms.json, '$.width' )) AS width,
|
JSON_UNQUOTE(
|
JSON_EXTRACT( ms.json, '$.height' )) AS height,
|
JSON_UNQUOTE(
|
JSON_EXTRACT( ms.json, '$.unit' )) AS unit,
|
bb.consume,
|
bb.price
|
FROM
|
bom_product AS bp
|
LEFT JOIN bom_base AS bb ON bb.id = bp.base_id
|
LEFT JOIN mm.material_store AS ms ON ms.id = bb.material_id
|
WHERE
|
bp.product_id = #{produceId}
|
</select>
|
</mapper>
|