#
Junjie
2024-07-31 27d2e58cd0fbd6b7551299abbc86d83aa54033ae
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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<MatField> {
 
    @SelectProvider(type = SqlProvider.class, method = "createViewSql")
    void createView(@Param("list") List<MatField> list);
 
    class SqlProvider {
        public String createViewSql(Map<String, Object> params) {
            List<MatField> list = (List<MatField>) 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();
        }
    }
 
}