<?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.MesSaleOrderMapper" >
<resultMap type= "MesSaleOrder" id= "MesSaleOrderResult" >
<result property= "saleOrderId" column= "sale_order_id" />
<result property= "erpId" column= "erp_id" />
<result property= "fentryId" column= "fentry_id" />
<result property= "saleorderCode" column= "saleorder_code" />
<result property= "saleorderLinenumber" column= "saleorder_linenumber" />
<result property= "documentStatus" column= "document_status" />
<result property= "factoryId" column= "factory_id" />
<result property= "prodlineId" column= "prodline_id" />
<result property= "materialId" column= "material_id" />
<result property= "materialCode" column= "material_code" />
<result property= "materialName" column= "material_name" />
<result property= "matkl" column= "matkl" />
<result property= "orderAmount" column= "order_amount" />
<result property= "completeAmount" column= "complete_amount" />
<result property= "releaseQty" column= "release_qty" />
<result property= "transferInAmount" column= "transfer_in_amount" />
<result property= "transferOutAmount" column= "transfer_out_amount" />
<result property= "isRelease" column= "is_release" />
<result property= "approveDate" column= "approve_date" />
<result property= "erpModifyDate" column= "erp_modify_date" />
<result property= "planDeliveryDate" column= "plan_delivery_date" />
<result property= "beginDate" column= "begin_date" />
<result property= "endDate" column= "end_date" />
<result property= "completeDate" column= "complete_date" />
<result property= "saleOrderClassfication" column= "sale_order_classfication" />
<result property= "isFlag" column= "is_flag" />
<result property= "tondBase" column= "tond_base" />
<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= "materialModel" column= "material_model" />
<result property= "materialSpec" column= "material_spec" />
<result property= "erpMaterialId" column= "erp_material_id" />
<result property= "projectName" column= "project_name" />
</resultMap>
<sql id= "selectMesSaleOrderVo" >
select sale_order_id,
erp_id,
fentry_id,
saleorder_code,
saleorder_linenumber,
document_status,
factory_id,
prodline_id,
material_id,
material_code,
material_name,
material_model,
matkl,
sale_order_classfication,
order_amount,
complete_amount,
release_qty,
is_release,
approve_date,
erp_modify_date,
plan_delivery_date,
begin_date,
end_date,
complete_date,
is_flag,
remark,
create_by,
create_time,
update_by,
update_time
from mes_sale_order
</sql>
<select id= "selectMesSaleOrderList" parameterType= "MesSaleOrder" resultMap= "MesSaleOrderResult" >
<include refid= "selectMesSaleOrderVo" />
<where >
<if test= "erpId != null " > and erp_id = #{erpId}</if>
<if test= "fentryId != null " > and fentry_id = #{fentryId}</if>
<if test= "saleorderCode != null and saleorderCode != ''" > and saleorder_code = #{saleorderCode}</if>
<if test= "saleorderLinenumber != null and saleorderLinenumber != ''" > and saleorder_linenumber =
#{saleorderLinenumber}
</if>
<if test= "documentStatus != null and documentStatus != ''" > and document_status = #{documentStatus}</if>
<if test= "factoryId != null " > and factory_id = #{factoryId}</if>
<if test= "prodlineId != null " > and prodline_id = #{prodlineId}</if>
<if test= "materialId != null " > and material_id = #{materialId}</if>
<if test= "materialCode != null and materialCode != ''" > and material_code = #{materialCode}</if>
<if test= "materialName != null and materialName != ''" > and material_name like concat('%', #{materialName},
'%')
</if>
<if test= "matkl != null and matkl != ''" > and matkl = #{matkl}</if>
<if test= "orderAmount != null " > and order_amount = #{orderAmount}</if>
<if test= "completeAmount != null " > and complete_amount = #{completeAmount}</if>
<if test= "releaseQty != null " > and release_qty = #{releaseQty}</if>
<if test= "isRelease != null and isRelease != ''" > and is_release = #{isRelease}</if>
<if test= "approveDate != null " > and approve_date = #{approveDate}</if>
<if test= "erpModifyDate != null " > and erp_modify_date = #{erpModifyDate}</if>
<if test= "planDeliveryDate != null " > and plan_delivery_date = #{planDeliveryDate}</if>
<if test= "beginDate != null " > and begin_date = #{beginDate}</if>
<if test= "endDate != null " > and end_date = #{endDate}</if>
<if test= "completeDate != null " > and complete_date = #{completeDate}</if>
<if test= "isFlag != null and isFlag != ''" > and is_flag = #{isFlag}</if>
</where>
</select>
<select id= "selectMesSaleOrderBySaleOrderId" parameterType= "Long" resultMap= "MesSaleOrderResult" >
<include refid= "selectMesSaleOrderVo" />
where sale_order_id = #{saleOrderId}
</select>
<insert id= "insertMesSaleOrder" parameterType= "MesSaleOrder" useGeneratedKeys= "true" keyProperty= "saleOrderId" >
insert into mes_sale_order
<trim prefix= "(" suffix= ")" suffixOverrides= "," >
<if test= "erpId != null" > erp_id,</if>
<if test= "fentryId != null" > fentry_id,</if>
<if test= "saleorderCode != null" > saleorder_code,</if>
<if test= "saleorderLinenumber != null" > saleorder_linenumber,</if>
<if test= "documentStatus != null" > document_status,</if>
<if test= "factoryId != null" > factory_id,</if>
<if test= "prodlineId != null" > prodline_id,</if>
<if test= "materialId != null" > material_id,</if>
<if test= "materialCode != null" > material_code,</if>
<if test= "materialName != null" > material_name,</if>
<if test= "matkl != null" > matkl,</if>
<if test= "orderAmount != null" > order_amount,</if>
<if test= "completeAmount != null" > complete_amount,</if>
<if test= "releaseQty != null" > release_qty,</if>
<if test= "saleOrderClassfication != null" > sale_order_classfication,</if>
<if test= "isRelease != null" > is_release,</if>
<if test= "approveDate != null" > approve_date,</if>
<if test= "erpModifyDate != null" > erp_modify_date,</if>
<if test= "planDeliveryDate != null" > plan_delivery_date,</if>
<if test= "beginDate != null" > begin_date,</if>
<if test= "endDate != null" > end_date,</if>
<if test= "completeDate != null" > complete_date,</if>
<if test= "isFlag != null and isFlag != ''" > is_flag,</if>
<if test= "tondBase != null and tondBase != ''" > tond_base,</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>
</trim>
<trim prefix= "values (" suffix= ")" suffixOverrides= "," >
<if test= "erpId != null" > #{erpId},</if>
<if test= "fentryId != null" > #{fentryId},</if>
<if test= "saleorderCode != null" > #{saleorderCode},</if>
<if test= "saleorderLinenumber != null" > #{saleorderLinenumber},</if>
<if test= "documentStatus != null" > #{documentStatus},</if>
<if test= "factoryId != null" > #{factoryId},</if>
<if test= "prodlineId != null" > #{prodlineId},</if>
<if test= "materialId != null" > #{materialId},</if>
<if test= "materialCode != null" > #{materialCode},</if>
<if test= "materialName != null" > #{materialName},</if>
<if test= "matkl != null" > #{matkl},</if>
<if test= "orderAmount != null" > #{orderAmount},</if>
<if test= "completeAmount != null" > #{completeAmount},</if>
<if test= "releaseQty != null" > #{releaseQty},</if>
<if test= "saleOrderClassfication != null" > #{saleOrderClassfication},</if>
<if test= "isRelease != null" > #{isRelease},</if>
<if test= "approveDate != null" > #{approveDate},</if>
<if test= "erpModifyDate != null" > #{erpModifyDate},</if>
<if test= "planDeliveryDate != null" > #{planDeliveryDate},</if>
<if test= "beginDate != null" > #{beginDate},</if>
<if test= "endDate != null" > #{endDate},</if>
<if test= "completeDate != null" > #{completeDate},</if>
<if test= "isFlag != null and isFlag != ''" > #{isFlag},</if>
<if test= "tondBase != null and tondBase != ''" > #{tondBase},</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>
</trim>
</insert>
<update id= "updateMesSaleOrder" parameterType= "MesSaleOrder" >
update mes_sale_order
<trim prefix= "SET" suffixOverrides= "," >
<if test= "erpId != null" > erp_id = #{erpId},</if>
<if test= "fentryId != null" > fentry_id = #{fentryId},</if>
<if test= "saleorderCode != null" > saleorder_code = #{saleorderCode},</if>
<if test= "saleorderLinenumber != null" > saleorder_linenumber = #{saleorderLinenumber},</if>
<if test= "documentStatus != null" > document_status = #{documentStatus},</if>
<if test= "factoryId != null" > factory_id = #{factoryId},</if>
<if test= "prodlineId != null" > prodline_id = #{prodlineId},</if>
<if test= "materialId != null" > material_id = #{materialId},</if>
<if test= "materialCode != null" > material_code = #{materialCode},</if>
<if test= "materialName != null" > material_name = #{materialName},</if>
<if test= "matkl != null" > matkl = #{matkl},</if>
<if test= "orderAmount != null" > order_amount = #{orderAmount},</if>
<if test= "completeAmount != null" > complete_amount = #{completeAmount},</if>
<if test= "releaseQty != null" > release_qty = #{releaseQty},</if>
<if test= "transferInAmount != null" > transfer_in_amount = #{transferInAmount},</if>
<if test= "transferOutAmount != null" > transfer_out_amount = #{transferOutAmount},</if>
<if test= "isRelease != null" > is_release = #{isRelease},</if>
<if test= "approveDate != null" > approve_date = #{approveDate},</if>
<if test= "erpModifyDate != null" > erp_modify_date = #{erpModifyDate},</if>
<if test= "planDeliveryDate != null" > plan_delivery_date = #{planDeliveryDate},</if>
<if test= "beginDate != null" > begin_date = #{beginDate},</if>
<if test= "endDate != null" > end_date = #{endDate},</if>
<if test= "completeDate != null" > complete_date = #{completeDate},</if>
<if test= "isFlag != null and isFlag != ''" > is_flag = #{isFlag},</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>
</trim>
where sale_order_id = #{saleOrderId}
</update>
<delete id= "deleteMesSaleOrderBySaleOrderId" parameterType= "Long" >
delete
from mes_sale_order
where sale_order_id = #{saleOrderId}
</delete>
<delete id= "deleteMesSaleOrderBySaleOrderIds" parameterType= "String" >
delete from mes_sale_order where sale_order_id in
<foreach item= "saleOrderId" collection= "array" open= "(" separator= "," close= ")" >
#{saleOrderId}
</foreach>
</delete>
<select id= "selectMesSaleOrderJoinMaterialList" parameterType= "MesSaleOrder" resultMap= "MesSaleOrderResult" >
select mso.sale_order_id,
mso.saleorder_code,
mso.document_status,
mso.material_id as erp_material_id,
mbmi.material_id,
mbmi.material_code,
mbmi.material_name,
mbmi.material_spec,
mso.order_amount,
mso.complete_amount,
mso.release_qty,
mso.transfer_in_amount,
mso.transfer_out_amount,
mso.is_release,
mso.plan_delivery_date,
mso.approve_date,
mso.erp_modify_date,
mso.begin_date,
mso.end_date,
mso.complete_date,
mso.sale_order_classfication,
mso.create_time,
mpi.project_name
from mes_sale_order mso left join mes_base_material_info mbmi on
((mso.material_id = mbmi.erp_id and (mso.sale_order_classfication='1' or mso.sale_order_classfication='3')) or (mso.material_id = mbmi.material_id and mso.sale_order_classfication='2'))
left join mes_project_info mpi on mso.tond_base=mpi.erp_id
<where >
<if test= "saleorderCode != null and saleorderCode != ''" > and mso.saleorder_code like concat('%', #{saleorderCode},
'%')</if>
<if test= "materialCode != null and materialCode != ''" > and mbmi.material_code like concat('%', #{materialCode},
'%')</if>
<if test= "materialName != null and materialName != ''" > and mbmi.material_name like concat('%', #{materialName},
'%')
</if>
<if test= "materialSpec != null and materialSpec != '' " > and replace(mbmi.material_spec,' ','') like concat('%', #{materialSpec},
'%')</if>
<if test= "projectName != null and projectName != ''" > and mpi.project_name like concat('%', #{projectName},
'%')
</if>
<if test= "isRelease != null and isRelease != ''" > and mso.is_release = #{isRelease}</if>
<if test= "saleOrderId != null" > and mso.sale_order_id = #{saleOrderId}</if>
<if test= "saleOrderClassfication != null and saleOrderClassfication != ''" > and mso.sale_order_classfication = #{saleOrderClassfication}</if>
<if test= "relateFlag != null and relateFlag != ''" > and exists (select 1 from mes_sale_order_relate msor where mso.sale_order_id = msor.relate_sale_order_id and msor.sale_order_id=#{virtualSaleOrderId})</if>
<if test= "selectFlag != null and selectFlag != ''" > and not exists (select 1 from mes_sale_order_relate msor where mso.sale_order_id = msor.relate_sale_order_id)</if>
<if test= "parentIds != null and parentIds != ''" > and exists (select 1 from mes_material_bom mmb where mmb.erp_material_id=mso.material_id and mmb.material_bom_id in (${parentIds}))</if>
<if test= 'overtimeFlag != null and overtimeFlag != "" and overtimeFlag == "1"' > and mso.is_release in ('0','1','2') and mso.plan_delivery_date is not null and mso.plan_delivery_date < now() </if>
<if test= 'overtimeFlag != null and overtimeFlag != "" and overtimeFlag == "0"' > and mso.plan_delivery_date is not null and mso.plan_delivery_date >= now() </if>
</where>
order by mso.create_time desc
</select>
</mapper>