|  |  | 
 |  |  | package com.zy.asrs.wms.asrs.mapper; | 
 |  |  |  | 
 |  |  | 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); | 
 |  |  |  | 
 |  |  |     @SelectProvider(type = SqlProvider.class, method = "createLocDetlView") | 
 |  |  |     void createLocDetlView(); | 
 |  |  |  | 
 |  |  |     @SelectProvider(type = SqlProvider.class, method = "createTaskDetlFieldSql") | 
 |  |  |     void createTaskDetlFieldView(@Param("list") List<MatField> list); | 
 |  |  |  | 
 |  |  |     @SelectProvider(type = SqlProvider.class, method = "createViewTaskDetlSql") | 
 |  |  |     void createViewTaskDetlView(); | 
 |  |  |  | 
 |  |  |     @SelectProvider(type = SqlProvider.class, method = "createOrderDetlFieldSql") | 
 |  |  |     void createOrderDetlFieldView(@Param("list") List<MatField> list); | 
 |  |  |  | 
 |  |  |     @SelectProvider(type = SqlProvider.class, method = "createViewOrderDetlSql") | 
 |  |  |     void createViewOrderDetlView(); | 
 |  |  |  | 
 |  |  |     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(); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         public String createLocDetlView() { | 
 |  |  |             StringBuilder sql = new StringBuilder(); | 
 |  |  |  | 
 |  |  |             sql.append(" CREATE OR REPLACE VIEW view_man_loc_detl AS \n"); | 
 |  |  |             sql.append(" select * from man_loc_detl ld "); | 
 |  |  |             sql.append(" left join view_man_loc_detl_field ldf "); | 
 |  |  |             sql.append(" on ld.id = ldf.detl_id "); | 
 |  |  |  | 
 |  |  |             return sql.toString(); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         public String createTaskDetlFieldSql(Map<String, Object> params) { | 
 |  |  |             List<MatField> list = (List<MatField>) params.get("list"); | 
 |  |  |             StringBuilder sql = new StringBuilder(); | 
 |  |  |  | 
 |  |  |             sql.append(" CREATE OR REPLACE VIEW view_man_task_detl_field AS \n"); | 
 |  |  |             sql.append(" SELECT detl_id as _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_task_detl_field "); | 
 |  |  |             sql.append(" GROUP BY _detl_id "); | 
 |  |  |  | 
 |  |  |             return sql.toString(); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         public String createViewTaskDetlSql() { | 
 |  |  |             StringBuilder sql = new StringBuilder(); | 
 |  |  |  | 
 |  |  |             sql.append(" CREATE OR REPLACE VIEW view_man_task_detl AS \n"); | 
 |  |  |             sql.append(" select * from man_task_detl td "); | 
 |  |  |             sql.append(" left join view_man_task_detl_field tdf "); | 
 |  |  |             sql.append(" on td.id = tdf._detl_id "); | 
 |  |  |  | 
 |  |  |             return sql.toString(); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         public String createOrderDetlFieldSql(Map<String, Object> params) { | 
 |  |  |             List<MatField> list = (List<MatField>) params.get("list"); | 
 |  |  |             StringBuilder sql = new StringBuilder(); | 
 |  |  |  | 
 |  |  |             sql.append(" CREATE OR REPLACE VIEW view_man_order_detl_field AS \n"); | 
 |  |  |             sql.append(" SELECT detl_id as _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_order_detl_field "); | 
 |  |  |             sql.append(" GROUP BY _detl_id "); | 
 |  |  |  | 
 |  |  |             return sql.toString(); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         public String createViewOrderDetlSql() { | 
 |  |  |             StringBuilder sql = new StringBuilder(); | 
 |  |  |  | 
 |  |  |             sql.append(" CREATE OR REPLACE VIEW view_man_order_detl AS \n"); | 
 |  |  |             sql.append(" select * from man_order_detl od "); | 
 |  |  |             sql.append(" left join view_man_order_detl_field odf "); | 
 |  |  |             sql.append(" on od.id = odf._detl_id "); | 
 |  |  |  | 
 |  |  |             return sql.toString(); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | } | 
 |  |  | package com.zy.asrs.wms.asrs.mapper;
 | 
 |  |  | 
 | 
 |  |  | 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);
 | 
 |  |  | 
 | 
 |  |  |     @SelectProvider(type = SqlProvider.class, method = "createLocDetlView")
 | 
 |  |  |     void createLocDetlView();
 | 
 |  |  | 
 | 
 |  |  |     @SelectProvider(type = SqlProvider.class, method = "createTaskDetlFieldSql")
 | 
 |  |  |     void createTaskDetlFieldView(@Param("list") List<MatField> list);
 | 
 |  |  | 
 | 
 |  |  |     @SelectProvider(type = SqlProvider.class, method = "createViewTaskDetlSql")
 | 
 |  |  |     void createViewTaskDetlView();
 | 
 |  |  | 
 | 
 |  |  |     @SelectProvider(type = SqlProvider.class, method = "createOrderDetlFieldSql")
 | 
 |  |  |     void createOrderDetlFieldView(@Param("list") List<MatField> list);
 | 
 |  |  | 
 | 
 |  |  |     @SelectProvider(type = SqlProvider.class, method = "createViewOrderDetlSql")
 | 
 |  |  |     void createViewOrderDetlView();
 | 
 |  |  | 
 | 
 |  |  |     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();
 | 
 |  |  |         }
 | 
 |  |  | 
 | 
 |  |  |         public String createLocDetlView() {
 | 
 |  |  |             StringBuilder sql = new StringBuilder();
 | 
 |  |  | 
 | 
 |  |  |             sql.append(" CREATE OR REPLACE VIEW view_man_loc_detl AS \n");
 | 
 |  |  |             sql.append(" select * from man_loc_detl ld ");
 | 
 |  |  |             sql.append(" left join view_man_loc_detl_field ldf ");
 | 
 |  |  |             sql.append(" on ld.id = ldf.detl_id ");
 | 
 |  |  | 
 | 
 |  |  |             return sql.toString();
 | 
 |  |  |         }
 | 
 |  |  | 
 | 
 |  |  |         public String createTaskDetlFieldSql(Map<String, Object> params) {
 | 
 |  |  |             List<MatField> list = (List<MatField>) params.get("list");
 | 
 |  |  |             StringBuilder sql = new StringBuilder();
 | 
 |  |  | 
 | 
 |  |  |             sql.append(" CREATE OR REPLACE VIEW view_man_task_detl_field AS \n");
 | 
 |  |  |             sql.append(" SELECT detl_id as _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_task_detl_field ");
 | 
 |  |  |             sql.append(" GROUP BY _detl_id ");
 | 
 |  |  | 
 | 
 |  |  |             return sql.toString();
 | 
 |  |  |         }
 | 
 |  |  | 
 | 
 |  |  |         public String createViewTaskDetlSql() {
 | 
 |  |  |             StringBuilder sql = new StringBuilder();
 | 
 |  |  | 
 | 
 |  |  |             sql.append(" CREATE OR REPLACE VIEW view_man_task_detl AS \n");
 | 
 |  |  |             sql.append(" select * from man_task_detl td ");
 | 
 |  |  |             sql.append(" left join view_man_task_detl_field tdf ");
 | 
 |  |  |             sql.append(" on td.id = tdf._detl_id ");
 | 
 |  |  | 
 | 
 |  |  |             return sql.toString();
 | 
 |  |  |         }
 | 
 |  |  | 
 | 
 |  |  |         public String createOrderDetlFieldSql(Map<String, Object> params) {
 | 
 |  |  |             List<MatField> list = (List<MatField>) params.get("list");
 | 
 |  |  |             StringBuilder sql = new StringBuilder();
 | 
 |  |  | 
 | 
 |  |  |             sql.append(" CREATE OR REPLACE VIEW view_man_order_detl_field AS \n");
 | 
 |  |  |             sql.append(" SELECT detl_id as _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_order_detl_field ");
 | 
 |  |  |             sql.append(" GROUP BY _detl_id ");
 | 
 |  |  | 
 | 
 |  |  |             return sql.toString();
 | 
 |  |  |         }
 | 
 |  |  | 
 | 
 |  |  |         public String createViewOrderDetlSql() {
 | 
 |  |  |             StringBuilder sql = new StringBuilder();
 | 
 |  |  | 
 | 
 |  |  |             sql.append(" CREATE OR REPLACE VIEW view_man_order_detl AS \n");
 | 
 |  |  |             sql.append(" select * from man_order_detl od ");
 | 
 |  |  |             sql.append(" left join view_man_order_detl_field odf ");
 | 
 |  |  |             sql.append(" on od.id = odf._detl_id ");
 | 
 |  |  | 
 | 
 |  |  |             return sql.toString();
 | 
 |  |  |         }
 | 
 |  |  |     }
 | 
 |  |  | 
 | 
 |  |  | }
 |