Browse Source

模板生成,模板保存

周壕 1 year ago
parent
commit
c68f43dbe7

+ 4 - 1
src/main/java/com/bowintek/practice/controller/TempController.java

@@ -28,6 +28,8 @@ public class TempController {
     private RoleService roleService;
     @Autowired
     private TempService tempService;
+    @Autowired
+    private AccountService accountService;
 
     @GetMapping("/getList")
     public BaseResponse<PageInfo<RoleModel>> getList(@RequestParam("page") int page, @RequestParam("rows") int rows, @RequestParam(required = false) String name, @RequestParam(required = false) Integer userTypeID) {
@@ -54,6 +56,7 @@ public class TempController {
 
     @PostMapping("/save")
     public BaseResponse<TempObjectModel> saveTemp(@RequestBody TempObjectModel data) {
-        return RespGenerstor.success(data);
+
+        return RespGenerstor.success(tempService.saveTemp(data, accountService.getLoginUserID()));
     }
 }

+ 21 - 0
src/main/java/com/bowintek/practice/mapper/cquery/TempCQuery.java

@@ -0,0 +1,21 @@
+package com.bowintek.practice.mapper.cquery;
+
+import com.bowintek.practice.model.SrTempdimension;
+import com.bowintek.practice.model.SrTempfield;
+import com.bowintek.practice.model.SrTempmeasure;
+import com.bowintek.practice.vo.system.RoleFunctionCodeModel;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.HashMap;
+import java.util.List;
+
+public interface TempCQuery {
+    List<HashMap<String,Object>> getListToHashMap(String tempName);
+    Integer batchInsertDimension(@Param("dataList") List<SrTempdimension> dataList);
+    Integer batchInsertField(@Param("dataList") List<SrTempfield> dataList);
+    Integer batchInsertMeasure(@Param("dataList") List<SrTempmeasure> dataList);
+
+    Integer deletesDimensionByTempId(@Param("tempIdList") List<String> tempIdList);
+    Integer deletesFieldByTempId(@Param("tempIdList") List<String> tempIdList);
+    Integer deletesMeasureByTempId(@Param("tempIdList") List<String> tempIdList);
+}

+ 50 - 1
src/main/java/com/bowintek/practice/services/impl/TempServiceImpl.java

@@ -3,10 +3,12 @@ package com.bowintek.practice.services.impl;
 import com.bowintek.practice.enums.DataRangeEnum;
 import com.bowintek.practice.mapper.*;
 import com.bowintek.practice.mapper.cquery.SubjectCQuery;
+import com.bowintek.practice.mapper.cquery.TempCQuery;
 import com.bowintek.practice.model.*;
 import com.bowintek.practice.services.service.TempService;
 import com.bowintek.practice.services.service.UserService;
 import com.bowintek.practice.util.DateUtils;
+import com.bowintek.practice.vo.temp.TempObjectModel;
 import com.bowintek.practice.vo.user.DataRange;
 import com.bowintek.practice.vo.user.UserInfoModel;
 import com.github.pagehelper.PageHelper;
@@ -21,6 +23,52 @@ import java.util.stream.Collectors;
 public class TempServiceImpl implements TempService {
     @Autowired
     SubjectCQuery subjectCQuery;
+    @Autowired
+    TempCQuery tempCQuery;
+    @Autowired
+    SrSaerchtempMapper srSaerchtempMapper;
+
+    @Override
+    public int saveTemp(TempObjectModel data, String userID){
+        int result = 0;
+        //保存模板主表
+        if(data.temp.getTempId().isEmpty()){
+            data.temp.setTempId(UUID.randomUUID().toString());
+            data.temp.setCreateTime(new Date());
+            data.temp.setCreatedBy(userID);
+            data.temp.setStatus(0);
+            result += srSaerchtempMapper.insert(data.temp);
+
+            data.bases.forEach(row->{
+                row.setTempFeildId(UUID.randomUUID().toString());
+                row.setTempId(data.temp.getTempId());
+            });
+            data.wheres.forEach(row->{
+                row.setTempFeildId(UUID.randomUUID().toString());
+                row.setTempId(data.temp.getTempId());
+            });
+            data.measures.forEach(row->{
+                row.setTempFeildId(UUID.randomUUID().toString());
+                row.setTempId(data.temp.getTempId());
+            });
+        }
+        else{
+            data.temp.setModifyTime(new Date());
+            data.temp.setModifyBy(userID);
+            result += srSaerchtempMapper.updateByPrimaryKey(data.temp);
+
+            tempCQuery.deletesDimensionByTempId(Arrays.asList(data.temp.getTempId()));
+            tempCQuery.deletesFieldByTempId(Arrays.asList(data.temp.getTempId()));
+            tempCQuery.deletesMeasureByTempId(Arrays.asList(data.temp.getTempId()));
+        }
+
+        //保存模板 维度、度量、查询信息
+        result += tempCQuery.batchInsertDimension(data.bases);
+        result += tempCQuery.batchInsertField(data.wheres);
+        result += tempCQuery.batchInsertMeasure(data.measures);
+
+        return result;
+    }
 
     @Override
     public List<HashMap<String, Object>> getSubjectTree(String likeName) {
@@ -57,6 +105,7 @@ public class TempServiceImpl implements TempService {
 
         return subjectTrees;
     }
+
     public List<HashMap<String, Object>> findSubjectFields(List<HashMap<String, Object>> subFields,
                                                            String subId,
                                                            List<Integer> queryTypeIds,
@@ -73,7 +122,7 @@ public class TempServiceImpl implements TempService {
             field.put("key", field.get("fieldId").toString());
             field.put("subjectName", subjectName);
 
-            field.put("subId", subId+"-"+groupName);
+            //field.put("subId", subId+"-"+groupName);
         });
         return fields;
     }

+ 2 - 0
src/main/java/com/bowintek/practice/services/service/TempService.java

@@ -1,10 +1,12 @@
 package com.bowintek.practice.services.service;
 
 import com.bowintek.practice.model.SysMenu;
+import com.bowintek.practice.vo.temp.TempObjectModel;
 
 import java.util.HashMap;
 import java.util.List;
 
 public interface TempService {
     List<HashMap<String,Object>> getSubjectTree(String likeName);
+    int saveTemp(TempObjectModel data, String userID);
 }

+ 52 - 4
src/main/resources/mapping/cquery/TempCQuery.xml

@@ -3,11 +3,59 @@
 <mapper namespace="com.bowintek.practice.mapper.cquery.TempCQuery">
     <select id="getListToHashMap" resultType="java.util.HashMap">
         select *
-        from sr_subject sub
+        from sr_saerchtemp st
         where 1=1
-        <if test="tabName!='' and tabName!=null">
-            and sub.tabName like Concat('%',#{tabName},'%')
+        <if test="tempName!='' and tempName!=null">
+            and sub.tempName like Concat('%',#{tempName},'%')
         </if>
-        order by sub.tabName
+        order by st.createTime desc
     </select>
+
+    <delete id="deletesDimensionByTempId">
+        delete from sr_tempdimension where 1=1
+        and tempId in
+        <foreach collection="tempIdList" item="tempId" index="index" open="(" close=")" separator=",">
+            #{tempId}
+        </foreach>
+    </delete>
+
+    <delete id="deletesFieldByTempId">
+        delete from sr_tempfield where 1=1
+        and tempId in
+        <foreach collection="tempIdList" item="tempId" index="index" open="(" close=")" separator=",">
+            #{tempId}
+        </foreach>
+    </delete>
+
+    <delete id="deletesMeasureByTempId">
+        delete from sr_tempmeasure where 1=1
+        and tempId in
+        <foreach collection="tempIdList" item="tempId" index="index" open="(" close=")" separator=",">
+            #{tempId}
+        </foreach>
+    </delete>
+
+    <insert id="batchInsertDimension" parameterType="java.util.List">
+        insert into sr_tempdimension(tempFeildId,tempId,fieldId,disOrder,fieldCode,fieldName,fieldAlias,dataType,displayName)
+        values
+        <foreach collection="dataList" item="item" separator=",">
+            (#{item.tempFeildId},#{item.tempId},#{item.fieldId},#{item.disOrder},#{item.fieldCode},#{item.fieldName},#{item.fieldAlias},#{item.dataType},#{item.displayName})
+        </foreach>
+    </insert>
+
+    <insert id="batchInsertField" parameterType="java.util.List">
+        insert into sr_tempfield(tempFeildId,tempId,fieldId,value1,value2,disOrder,fieldCode,fieldName,fieldAlias,dataType,operation)
+        values
+        <foreach collection="dataList" item="item" separator=",">
+            (#{item.tempFeildId},#{item.tempId},#{item.fieldId},#{item.value1},#{item.value2},#{item.disOrder},#{item.fieldCode},#{item.fieldName},#{item.fieldAlias},#{item.dataType},#{item.operation})
+        </foreach>
+    </insert>
+
+    <insert id="batchInsertMeasure" parameterType="java.util.List">
+        insert into sr_tempmeasure(tempFeildId,tempId,fieldId,functionName,disOrder,fieldCode,fieldName,fieldAlias,dataType,displayName,operation)
+        values
+        <foreach collection="dataList" item="item" separator=",">
+            (#{item.tempFeildId},#{item.tempId},#{item.fieldId},#{item.functionName},#{item.disOrder},#{item.fieldCode},#{item.fieldName},#{item.fieldAlias},#{item.dataType},#{item.displayName},#{item.operation})
+        </foreach>
+    </insert>
 </mapper>

+ 0 - 1
vue/src/views/query/index.vue

@@ -146,7 +146,6 @@ export default defineComponent({
         formState.value.bases = (base.value as any).getTagList();
         console.log("formState", formState);
 
-
         save('temp/save', formState.value).then(result => {
           console.log(result);
         });