<?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.hw.mes.mapper.MesBaseMaterialInfoMapper" >
<resultMap type= "MesBaseMaterialInfo" id= "MesBaseMaterialInfoResult" >
<result property= "materialId" column= "material_id" />
<result property= "erpId" column= "erp_id" />
<result property= "materialCode" column= "material_code" />
<result property= "oldMaterialCode" column= "old_material_code" />
<result property= "materialName" column= "material_name" />
<result property= "materialCategories" column= "material_categories" />
<result property= "materialSubclass" column= "material_subclass" />
<result property= "materialTypeId" column= "material_type_id" />
<result property= "materialTypeName" column= "material_type_name" />
<result property= "batchFlag" column= "batch_flag" />
<result property= "batchAmount" column= "batch_amount" />
<result property= "materialUnitId" column= "material_unit_id" />
<result property= "materialUnit" column= "material_unit" />
<result property= "materialMatkl" column= "material_matkl" />
<result property= "materialSpec" column= "material_spec" />
<result property= "netWeight" column= "net_weight" />
<result property= "grossWeight" column= "gross_weight" />
<result property= "alwaysFlag" column= "always_flag" />
<result property= "factoryId" column= "factory_id" />
<result property= "createOrgId" column= "create_org_id" />
<result property= "useOrgId" column= "use_org_id" />
<result property= "prodlineId" column= "prodline_id" />
<result property= "materialClassfication" column= "material_classfication" />
<result property= "activeFlag" column= "active_flag" />
<result property= "deletedFlag" column= "deleted_flag" />
<result property= "remark" column= "remark" />
<result property= "createBy" column= "create_by" />
<result property= "createTime" column= "create_time" />
<result property= "updateBy" column= "update_by" />
<result property= "updateTime" column= "update_time" />
<result property= "approveDate" column= "approve_date" />
<result property= "erpModifyDate" column= "erp_modify_date" />
<result property= "safeStockAmount" column= "safe_stock_amount" />
<result property= "applyFlag" column= "apply_flag" />
<result property= "autoOutstockFlag" column= "auto_outstock_flag" />
<result property= "accessoriesFlag" column= "accessories_flag" />
<result property= "lowValueConsumableFlag" column= "low_value_consumable_flag" />
<result property= "warehouseId" column= "warehouse_id" />
<result property= "purchasePriceUnitId" column= "purchase_price_unit_id" />
<result property= "stockAmount" column= "stock_amount" />
<result property= "unitName" column= "unit_name" />
<result property= "availableAmount" column= "availableAmount" />
<result property= "isExceeded" column= "isExceeded" />
</resultMap>
<sql id= "selectMesBaseMaterialInfoVo" >
select bmi.material_id,
bmi.erp_id,
bmi.material_code,
bmi.old_material_code,
bmi.material_name,
bmi.material_categories,
bmi.material_subclass,
bmi.material_type_id,
bmt.type_name material_type_name,
bmi.batch_flag,
bmi.batch_amount,
bmi.material_unit_id,
bmi.material_unit,
bmi.material_matkl,
bmi.material_spec,
bmi.net_weight,
bmi.gross_weight,
bmi.always_flag,
bmi.factory_id,
bmi.create_org_id,
bmi.purchase_price_unit_id,
bmi.use_org_id,
bmi.material_classfication,
bmi.prodline_id,
bmi.active_flag,
bmi.deleted_flag,
bmi.apply_flag,
bmi.material_classfication,
bmi.auto_outstock_flag,
bmi.accessories_flag,
bmi.low_value_consumable_flag,
bmi.remark,
bmi.create_by,
bmi.create_time,
bmi.update_by,
bmi.update_time,
bmi.approve_date,
bmi.erp_modify_date,
bmi.safe_stock_amount,
mbui.unit_name,
IF(wst.availableAmount IS NULL, 0, wst.availableAmount) availableAmount,
IF(bmi.safe_stock_amount > IF(wst.availableAmount IS NULL, 0, wst.availableAmount) , '1', '0') isExceeded
from mes_base_material_info bmi
left join mes_base_material_type bmt on bmt.matrial_type_id = bmi.material_type_id
left join mes_base_unit_info mbui on bmi.material_unit_id = mbui.erp_id
left join (select material_id, SUM(total_amount) availableAmount
from wms_stock_total
GROUP BY material_id) wst on bmi.material_id = wst.material_id
</sql>
<select id= "selectMesBaseMaterialInfoList" parameterType= "MesBaseMaterialInfo"
resultMap="MesBaseMaterialInfoResult">
<include refid= "selectMesBaseMaterialInfoVo" />
<where >
<if test= "materialId != null " > and exists (select 1 from mes_sale_order_relate msor where msor.virtual_material_id=#{materialId} and msor.material_id=bmi.material_id)</if>
<if test= "erpId != null " > and bmi.erp_id = #{erpId}</if>
<if test= "materialCode != null and materialCode != ''" > and bmi.material_code like concat('%', #{materialCode},'%')</if>
<if test= "oldMaterialCode != null and oldMaterialCode != ''" > and bmi.old_material_code = #{oldMaterialCode}
</if>
<if test= "materialName != null and materialName != ''" > and bmi.material_name like concat('%', #{materialName},
'%')
</if>
<if test= "materialCategories != null and materialCategories != ''" > and bmi.material_categories =
#{materialCategories}
</if>
<if test= "materialSubclass != null and materialSubclass != ''" > and bmi.material_subclass =
#{materialSubclass}
</if>
<if test= "materialTypeId != null " > and bmi.material_type_id = #{materialTypeId}</if>
<if test= "batchFlag != null and batchFlag != ''" > and bmi.batch_flag = #{batchFlag}</if>
<if test= "materialUnitId != null " > and bmi.material_unit_id = #{materialUnitId}</if>
<if test= "materialUnit != null and materialUnit != ''" > and bmi.material_unit = #{materialUnit}</if>
<if test= "materialMatkl != null and materialMatkl != ''" > and bmi.material_matkl = #{materialMatkl}</if>
<if test= "materialSpec != null and materialSpec != ''" > and replace(bmi.material_spec,' ','') like concat('%', #{materialSpec},
'%')</if>
<if test= "netWeight != null " > and bmi.net_weight = #{netWeight}</if>
<if test= "grossWeight != null " > and bmi.gross_weight = #{grossWeight}</if>
<if test= "factoryId != null " > and bmi.factory_id = #{factoryId}</if>
<if test= "createOrgId != null " > and bmi.create_org_id = #{createOrgId}</if>
<if test= "useOrgId != null " > and bmi.use_org_id = #{useOrgId}</if>
<if test= "prodlineId != null and prodlineId != ''" > and bmi.prodline_id = #{prodlineId}</if>
<if test= "activeFlag != null and activeFlag != ''" > and bmi.active_flag = #{activeFlag}</if>
<if test= "deletedFlag != null and deletedFlag != ''" > and bmi.deleted_flag = #{deletedFlag}</if>
<if test= "approveDate != null " > and bmi.approve_date = #{approveDate}</if>
<if test= "erpModifyDate != null " > and bmi.erp_modify_date = #{erpModifyDate}</if>
<if test= "materialClassfication != null and materialClassfication != ''" > and bmi.material_classfication = #{materialClassfication}</if>
<if test= "autoOutstockFlag != null and autoOutstockFlag != ''" > and bmi.auto_outstock_flag = #{autoOutstockFlag}</if>
<if test= "accessoriesFlag != null and accessoriesFlag != ''" > and bmi.accessories_flag = #{accessoriesFlag}</if>
<if test= "lowValueConsumableFlag != null and lowValueConsumableFlag != ''" > and bmi.low_value_consumable_flag = #{lowValueConsumableFlag}</if>
<if test= "alwaysFlag != null and alwaysFlag != ''" > and bmi.always_flag = #{alwaysFlag}</if>
<if test= "isExceeded != null and isExceeded != ''" > and IF(bmi.safe_stock_amount > IF(wst.availableAmount IS NULL, 0, wst.availableAmount) , '1', '0') = #{isExceeded}</if>
<if test= "selectType != null and selectType !=''" > and exists (select 1 from wms_warehouse_material wwm where wwm.storage_type='1' and wwm.warehouse_id=511 and wwm.storage_id=bmi.material_id)</if>
<if test= "filterMaterialId != null " > and exists (select 1
from (select m1.material_id, m1.material_name, m2.material_id prod_id, m2.material_name prod_name
from mes_material_bom m1
left join mes_material_bom m2 on m1.parent_id = m2.material_bom_id
where m2.material_id = #{filterMaterialId}) mmb
where mmb.material_id = bmi.material_id)
</if>
</where>
</select>
<select id= "selectMesBaseMaterialInfoByMaterialId" parameterType= "Long" resultMap= "MesBaseMaterialInfoResult" >
<include refid= "selectMesBaseMaterialInfoVo" />
where bmi.material_id = #{materialId}
</select>
<insert id= "insertMesBaseMaterialInfo" parameterType= "MesBaseMaterialInfo" useGeneratedKeys= "true"
keyProperty="materialId">
insert into mes_base_material_info
<trim prefix= "(" suffix= ")" suffixOverrides= "," >
<if test= "erpId != null" > erp_id,</if>
<if test= "materialCode != null and materialCode != ''" > material_code,</if>
<if test= "oldMaterialCode != null" > old_material_code,</if>
<if test= "materialName != null and materialName != ''" > material_name,</if>
<if test= "materialCategories != null and materialCategories != ''" > material_categories,</if>
<if test= "materialSubclass != null" > material_subclass,</if>
<if test= "materialTypeId != null" > material_type_id,</if>
<if test= "batchFlag != null" > batch_flag,</if>
<if test= "materialUnitId != null" > material_unit_id,</if>
<if test= "materialUnit != null" > material_unit,</if>
<if test= "materialMatkl != null" > material_matkl,</if>
<if test= "materialSpec != null" > material_spec,</if>
<if test= "netWeight != null" > net_weight,</if>
<if test= "grossWeight != null" > gross_weight,</if>
<if test= "factoryId != null" > factory_id,</if>
<if test= "createOrgId != null" > create_org_id,</if>
<if test= "useOrgId != null" > use_org_id,</if>
<if test= "prodlineId != null" > prodline_id,</if>
<if test= "materialClassfication != null and materialClassfication != ''" > material_classfication,</if>
<if test= "activeFlag != null" > active_flag,</if>
<if test= "deletedFlag != null" > deleted_flag,</if>
<if test= "remark != null" > remark,</if>
<if test= "createBy != null" > create_by,</if>
<if test= "createTime != null" > create_time,</if>
<if test= "updateBy != null" > update_by,</if>
<if test= "updateTime != null" > update_time,</if>
<if test= "approveDate != null" > approve_date,</if>
<if test= "erpModifyDate != null" > erp_modify_date,</if>
</trim>
<trim prefix= "values (" suffix= ")" suffixOverrides= "," >
<if test= "erpId != null" > #{erpId},</if>
<if test= "materialCode != null and materialCode != ''" > #{materialCode},</if>
<if test= "oldMaterialCode != null" > #{oldMaterialCode},</if>
<if test= "materialName != null and materialName != ''" > #{materialName},</if>
<if test= "materialCategories != null and materialCategories != ''" > #{materialCategories},</if>
<if test= "materialSubclass != null" > #{materialSubclass},</if>
<if test= "materialTypeId != null" > #{materialTypeId},</if>
<if test= "batchFlag != null" > #{batchFlag},</if>
<if test= "materialUnitId != null" > #{materialUnitId},</if>
<if test= "materialUnit != null" > #{materialUnit},</if>
<if test= "materialMatkl != null" > #{materialMatkl},</if>
<if test= "materialSpec != null" > #{materialSpec},</if>
<if test= "netWeight != null" > #{netWeight},</if>
<if test= "grossWeight != null" > #{grossWeight},</if>
<if test= "factoryId != null" > #{factoryId},</if>
<if test= "createOrgId != null" > #{createOrgId},</if>
<if test= "useOrgId != null" > #{useOrgId},</if>
<if test= "prodlineId != null" > #{prodlineId},</if>
<if test= "materialClassfication != null and materialClassfication != ''" > #{materialClassfication},</if>
<if test= "activeFlag != null" > #{activeFlag},</if>
<if test= "deletedFlag != null" > #{deletedFlag},</if>
<if test= "remark != null" > #{remark},</if>
<if test= "createBy != null" > #{createBy},</if>
<if test= "createTime != null" > #{createTime},</if>
<if test= "updateBy != null" > #{updateBy},</if>
<if test= "updateTime != null" > #{updateTime},</if>
<if test= "approveDate != null" > #{approveDate},</if>
<if test= "erpModifyDate != null" > #{erpModifyDate},</if>
</trim>
</insert>
<update id= "updateMesBaseMaterialInfo" parameterType= "MesBaseMaterialInfo" >
update mes_base_material_info
<trim prefix= "SET" suffixOverrides= "," >
<if test= "erpId != null" > erp_id = #{erpId},</if>
<if test= "materialCode != null and materialCode != ''" > material_code = #{materialCode},</if>
<if test= "oldMaterialCode != null" > old_material_code = #{oldMaterialCode},</if>
<if test= "materialName != null and materialName != ''" > material_name = #{materialName},</if>
<if test= "materialCategories != null and materialCategories != ''" > material_categories =
#{materialCategories},
</if>
<if test= "materialSubclass != null" > material_subclass = #{materialSubclass},</if>
<if test= "materialTypeId != null" > material_type_id = #{materialTypeId},</if>
<if test= "batchFlag != null and batchFlag != ''" > batch_flag = #{batchFlag},</if>
<if test= "batchAmount != null" > batch_amount = #{batchAmount},</if>
<if test= "materialUnitId != null" > material_unit_id = #{materialUnitId},</if>
<if test= "materialUnit != null" > material_unit = #{materialUnit},</if>
<if test= "materialMatkl != null" > material_matkl = #{materialMatkl},</if>
<if test= "materialSpec != null" > material_spec = #{materialSpec},</if>
<if test= "netWeight != null" > net_weight = #{netWeight},</if>
<if test= "grossWeight != null" > gross_weight = #{grossWeight},</if>
<if test= "alwaysFlag != null and alwaysFlag != ''" > always_flag = #{alwaysFlag},</if>
<if test= "factoryId != null" > factory_id = #{factoryId},</if>
<if test= "createOrgId != null" > create_org_id = #{createOrgId},</if>
<if test= "useOrgId != null" > use_org_id = #{useOrgId},</if>
<if test= "prodlineId != null" > prodline_id = #{prodlineId},</if>
<if test= "activeFlag != null" > active_flag = #{activeFlag},</if>
<if test= "deletedFlag != null" > deleted_flag = #{deletedFlag},</if>
<if test= "remark != null" > remark = #{remark},</if>
<if test= "createBy != null" > create_by = #{createBy},</if>
<if test= "createTime != null" > create_time = #{createTime},</if>
<if test= "updateBy != null" > update_by = #{updateBy},</if>
<if test= "updateTime != null" > update_time = #{updateTime},</if>
<if test= "approveDate != null" > approve_date = #{approveDate},</if>
<if test= "safeStockAmount != null" > safe_stock_amount = #{safeStockAmount},</if>
<if test= "erpModifyDate != null" > erp_modify_date = #{erpModifyDate},</if>
<if test= "alwaysFlag != null" > always_flag = #{alwaysFlag},</if>
<if test= "batchAmount != null" > batch_amount = #{batchAmount},</if>
<if test= "autoOutstockFlag != null" > auto_outstock_flag = #{autoOutstockFlag},</if>
<if test= "accessoriesFlag != null" > accessories_flag = #{accessoriesFlag},</if>
<if test= "lowValueConsumableFlag != null" > low_value_consumable_flag = #{lowValueConsumableFlag},</if>
</trim>
where material_id = #{materialId}
</update>
<delete id= "deleteMesBaseMaterialInfoByMaterialId" parameterType= "Long" >
delete
from mes_base_material_info
where material_id = #{materialId}
</delete>
<delete id= "deleteMesBaseMaterialInfoByMaterialIds" parameterType= "String" >
delete from mes_base_material_info where material_id in
<foreach item= "materialId" collection= "array" open= "(" separator= "," close= ")" >
#{materialId}
</foreach>
</delete>
<!-- 新增以下 -->
<select id= "selectMesBaseMaterialInfoListByMaterialIds" parameterType= "String"
resultMap="MesBaseMaterialInfoResult">
<include refid= "selectMesBaseMaterialInfoVo" />
where bmi.material_id in
<foreach item= "materialId" collection= "array" open= "(" separator= "," close= ")" >
#{materialId}
</foreach>
</select>
<select id= "selectMaterialInfos4AllocationWarehouse" parameterType= "MesBaseMaterialInfo"
resultMap="MesBaseMaterialInfoResult">
select material_id,
erp_id,
material_code,
old_material_code,
material_name,
material_categories,
material_subclass,
material_type_id,
batch_flag,
material_unit_id,
material_unit,
material_matkl,
material_spec,
net_weight,
gross_weight,
factory_id
from mes_base_material_info mbmi
<where >
and not exists (select 1 from wms_warehouse_material wwm where mbmi.material_id = wwm.storage_id and wwm.storage_type='1' and wwm.warehouse_id=#{warehouseId})
<if test= "erpId != null " > and erp_id = #{erpId}</if>
<if test= "materialCode != null and materialCode != ''" > and material_code like concat('%', #{materialCode},'%')</if>
<if test= "oldMaterialCode != null and oldMaterialCode != ''" > and old_material_code = #{oldMaterialCode}
</if>
<if test= "materialName != null and materialName != ''" > and material_name like concat('%', #{materialName},
'%')
</if>
<if test= "materialSpec != null and materialSpec != ''" > and replace(mbmi.material_spec,' ','') like concat('%', #{materialSpec},
'%')</if>
<if test= "materialCategories != null and materialCategories != ''" > and material_categories =
#{materialCategories}
</if>
<if test= "materialSubclass != null and materialSubclass != ''" > and material_subclass =
#{materialSubclass}
</if>
<if test= "materialTypeId != null " > and material_type_id = #{materialTypeId}</if>
<if test= "batchFlag != null and batchFlag != ''" > and batch_flag = #{batchFlag}</if>
<if test= "materialUnitId != null " > and material_unit_id = #{materialUnitId}</if>
<if test= "materialUnit != null and materialUnit != ''" > and material_unit = #{materialUnit}</if>
<if test= "materialMatkl != null and materialMatkl != ''" > and material_matkl = #{materialMatkl}</if>
<if test= "netWeight != null " > and net_weight = #{netWeight}</if>
<if test= "grossWeight != null " > and gross_weight = #{grossWeight}</if>
<if test= "factoryId != null " > and factory_id = #{factoryId}</if>
<if test= "createOrgId != null " > and create_org_id = #{createOrgId}</if>
<if test= "useOrgId != null " > and use_org_id = #{useOrgId}</if>
<if test= "prodlineId != null and prodlineId != ''" > and prodline_id = #{prodlineId}</if>
<if test= "activeFlag != null and activeFlag != ''" > and active_flag = #{activeFlag}</if>
<if test= "deletedFlag != null and deletedFlag != ''" > and deleted_flag = #{deletedFlag}</if>
<if test= "approveDate != null " > and approve_date = #{approveDate}</if>
<if test= "erpModifyDate != null " > and erp_modify_date = #{erpModifyDate}</if>
</where>
</select>
<select id= "selectMesBaseMaterialInfoByErpId" parameterType= "Long" resultMap= "MesBaseMaterialInfoResult" >
select bmi.material_id,
bmi.erp_id,
bmi.material_code,
bmi.old_material_code,
bmi.material_name,
bmi.material_categories,
bmi.material_subclass,
bmi.material_type_id,
bmi.batch_flag,
bmi.batch_amount,
bmi.material_unit_id,
bmi.material_unit,
bmi.material_matkl,
bmi.material_spec,
bmi.net_weight,
bmi.gross_weight,
bmi.always_flag,
bmi.factory_id,
bmi.create_org_id,
bmi.use_org_id,
bmi.prodline_id,
bmi.approve_date,
bmi.erp_modify_date,
bmi.auto_outstock_flag
from mes_base_material_info bmi
where bmi.erp_id = #{erpId} limit 1
</select>
<select id= "selectMesBaseMaterialInfoByMaterialCode" parameterType= "String" resultMap= "MesBaseMaterialInfoResult" >
<include refid= "selectMesBaseMaterialInfoVo" />
where bmi.material_code = #{materialCode} limit 1
</select>
<select id= "selectMaterialInfoStockInfos" parameterType= "MesBaseMaterialInfo"
resultMap="MesBaseMaterialInfoResult">
select mbmi.material_id,
mbmi.material_code,
mbmi.material_name,
mbmi.material_spec,
mbmi.safe_stock_amount,
(select ifnull(sum(total_amount),0) from wms_stock_total wst where wst.material_id=mbmi.material_id) as stock_amount
from mes_base_material_info mbmi
<where >
mbmi.safe_stock_amount is not null and mbmi.safe_stock_amount > 0
<if test= "erpId != null " > and erp_id = #{erpId}</if>
</where>
</select>
</mapper>