package com.zy.asrs.wms.asrs.mapper; import com.zy.asrs.wms.asrs.entity.LocDetlField; import com.zy.asrs.wms.asrs.entity.MatField; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.SelectProvider; import org.springframework.stereotype.Repository; import java.util.List; import java.util.Map; @Mapper @Repository public interface MatFieldMapper extends BaseMapper { @SelectProvider(type = SqlProvider.class, method = "createViewSql") void createView(@Param("list") List list); class SqlProvider { public String createViewSql(Map params) { List list = (List) params.get("list"); StringBuilder sql = new StringBuilder(); sql.append(" CREATE OR REPLACE VIEW view_man_loc_detl_field AS \n"); sql.append(" SELECT detl_id "); for (MatField matField : list) { sql.append(", MAX(CASE WHEN name = '").append(matField.getName()).append("' THEN value END) AS ").append(matField.getName()); } sql.append(" FROM man_loc_detl_field "); sql.append(" GROUP BY detl_id "); return sql.toString(); } } }