浏览代码

printPlane-template

caozixuan 4 年之前
父节点
当前提交
7d5ffa5074

+ 61 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/PrintPlanTemplateResult.java

@@ -0,0 +1,61 @@
+package com.qmth.distributed.print.business.bean.result;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description: 印刷计划印品数据源
+ * @Author: CaoZixuan
+ * @Date: 20021-04-05
+ */
+public class PrintPlanTemplateResult {
+
+    @ApiModelProperty(value = "变量印品数据源")
+    private List<Map> variable;
+
+    @ApiModelProperty(value = "普通印品数据源")
+    private List<Map> ordinary;
+
+    @JsonIgnore
+    @ApiModelProperty(value = "变量印品JSON临时接收属性")
+    private String variableTemp;
+
+    @JsonIgnore
+    @ApiModelProperty(value = "普通印品JSON临时接收属性")
+    private String ordinaryTemp;
+
+    public List<Map> getVariable() {
+        return variable;
+    }
+
+    public void setVariable(List<Map> variable) {
+        this.variable = variable;
+    }
+
+    public List<Map> getOrdinary() {
+        return ordinary;
+    }
+
+    public void setOrdinary(List<Map> ordinary) {
+        this.ordinary = ordinary;
+    }
+
+    public String getVariableTemp() {
+        return variableTemp;
+    }
+
+    public void setVariableTemp(String variableTemp) {
+        this.variableTemp = variableTemp;
+    }
+
+    public String getOrdinaryTemp() {
+        return ordinaryTemp;
+    }
+
+    public void setOrdinaryTemp(String ordinaryTemp) {
+        this.ordinaryTemp = ordinaryTemp;
+    }
+}

+ 150 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/TemplatePrintInfoResult.java

@@ -0,0 +1,150 @@
+package com.qmth.distributed.print.business.bean.result;
+
+import com.qmth.distributed.print.business.enums.ClassifyEnum;
+import com.qmth.distributed.print.business.enums.TemplateTypeEnum;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description: 机构下印品模板
+ * @Author: CaoZixuan
+ * @Date: 2021-04-05
+ */
+public class TemplatePrintInfoResult {
+    @ApiModelProperty(value = "关联表id")
+    private Long templateOrgId;
+
+    @ApiModelProperty(value = "关联表印品类型")
+    private TemplateTypeEnum templateOrgType;
+
+    @ApiModelProperty(value = "机构id")
+    private Long orgId;
+
+    @ApiModelProperty(value = "模板id")
+    private Long templateId;
+
+    @ApiModelProperty(value = "学校id")
+    private Long schoolId;
+
+    @ApiModelProperty(value = "模板名称")
+    private String templateName;
+
+    @ApiModelProperty(value = "模板类型")
+    private TemplateTypeEnum templateType;
+
+    @ApiModelProperty(value = "模板样式")
+    private ClassifyEnum templateClassify;
+
+    @ApiModelProperty(value = "模板附件id")
+    private Long attachmentId;
+
+    @ApiModelProperty(value = "模板可用?")
+    private Boolean enable;
+
+    @ApiModelProperty(value = "模板备注")
+    private String remark;
+
+    public Long getTemplateOrgId() {
+        return templateOrgId;
+    }
+
+    public void setTemplateOrgId(Long templateOrgId) {
+        this.templateOrgId = templateOrgId;
+    }
+
+    public TemplateTypeEnum getTemplateOrgType() {
+        return templateOrgType;
+    }
+
+    public void setTemplateOrgType(TemplateTypeEnum templateOrgType) {
+        this.templateOrgType = templateOrgType;
+    }
+
+    public Long getOrgId() {
+        return orgId;
+    }
+
+    public void setOrgId(Long orgId) {
+        this.orgId = orgId;
+    }
+
+    public Long getTemplateId() {
+        return templateId;
+    }
+
+    public void setTemplateId(Long templateId) {
+        this.templateId = templateId;
+    }
+
+    public Long getSchoolId() {
+        return schoolId;
+    }
+
+    public void setSchoolId(Long schoolId) {
+        this.schoolId = schoolId;
+    }
+
+    public String getTemplateName() {
+        return templateName;
+    }
+
+    public void setTemplateName(String templateName) {
+        this.templateName = templateName;
+    }
+
+    public TemplateTypeEnum getTemplateType() {
+        return templateType;
+    }
+
+    public void setTemplateType(TemplateTypeEnum templateType) {
+        this.templateType = templateType;
+    }
+
+    public ClassifyEnum getTemplateClassify() {
+        return templateClassify;
+    }
+
+    public void setTemplateClassify(ClassifyEnum templateClassify) {
+        this.templateClassify = templateClassify;
+    }
+
+    public Long getAttachmentId() {
+        return attachmentId;
+    }
+
+    public void setAttachmentId(Long attachmentId) {
+        this.attachmentId = attachmentId;
+    }
+
+    public Boolean getEnable() {
+        return enable;
+    }
+
+    public void setEnable(Boolean enable) {
+        this.enable = enable;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    @Override
+    public String toString() {
+        return "TemplatePrintInfoResult{" +
+                "templateOrgId=" + templateOrgId +
+                ", templateOrgType=" + templateOrgType +
+                ", orgId=" + orgId +
+                ", templateId=" + templateId +
+                ", schoolId=" + schoolId +
+                ", templateName='" + templateName + '\'' +
+                ", templateType=" + templateType +
+                ", templateClassify=" + templateClassify +
+                ", attachmentId=" + attachmentId +
+                ", enable=" + enable +
+                ", remark='" + remark + '\'' +
+                '}';
+    }
+}

+ 9 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/BasicTemplateOrgMapper.java

@@ -1,11 +1,13 @@
 package com.qmth.distributed.print.business.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qmth.distributed.print.business.bean.result.TemplatePrintInfoResult;
 import com.qmth.distributed.print.business.entity.BasicTemplateOrg;
 import com.qmth.distributed.print.business.entity.SysOrg;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -18,4 +20,11 @@ import java.util.List;
 public interface BasicTemplateOrgMapper extends BaseMapper<BasicTemplateOrg> {
 
     List<SysOrg> listByTypeAndTemplateId(@Param("type") String type, @Param("templateId") Long templateId);
+
+    /**
+     * 查询机构集合所使用的印品模板信息
+     * @param orgIds 机构集合
+     * @return 模板信息
+     */
+    List<TemplatePrintInfoResult> templateListByOrgIds(@Param("orgIds")List<Long> orgIds);
 }

+ 9 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/BasicTemplateOrgService.java

@@ -1,11 +1,13 @@
 package com.qmth.distributed.print.business.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.distributed.print.business.bean.result.TemplatePrintInfoResult;
 import com.qmth.distributed.print.business.entity.BasicTemplateOrg;
 import com.qmth.distributed.print.business.entity.SysOrg;
 import com.qmth.distributed.print.business.enums.TemplateTypeEnum;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -22,4 +24,11 @@ public interface BasicTemplateOrgService extends IService<BasicTemplateOrg> {
     void removeByRuleId(Long id);
 
     void saveBatch(TemplateTypeEnum type, Long ruleId, Long[] orgIds, Long createId);
+
+    /**
+     * 根据机构id查询所有机构集合下所使用的的模板信息
+     * @param ids 机构id集合
+     * @return 模板信息集合
+     */
+    List<TemplatePrintInfoResult> findTemplateInfoByOrgIds(List<Long> ids);
 }

+ 10 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamPrintPlanService.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.distributed.print.business.bean.result.PrintPlanBrief;
 import com.qmth.distributed.print.business.bean.result.PrintPlanResult;
+import com.qmth.distributed.print.business.bean.result.PrintPlanTemplateResult;
 import com.qmth.distributed.print.business.entity.ExamPrintPlan;
 import com.qmth.distributed.print.business.enums.PrintPlanStatusEnum;
 import org.omg.CORBA.OBJ_ADAPTER;
@@ -40,4 +41,13 @@ public interface ExamPrintPlanService extends IService<ExamPrintPlan> {
      */
     List<PrintPlanBrief> printPlanBriefQuery(String param);
 
+
+
+    /**
+     * 查询登录用户所属机构下变量印品和普通印品模板数据源
+     * @param schoolId 学校id
+     * @param userId 登录用户id
+     * @return 模板数据源
+     */
+    Map<String,Object> printPlanTemplateDatasource(Long schoolId,Long userId);
 }

+ 12 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicTemplateOrgServiceImpl.java

@@ -2,15 +2,19 @@ package com.qmth.distributed.print.business.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.distributed.print.business.bean.result.TemplatePrintInfoResult;
 import com.qmth.distributed.print.business.entity.BasicTemplateOrg;
 import com.qmth.distributed.print.business.entity.SysOrg;
 import com.qmth.distributed.print.business.mapper.BasicTemplateOrgMapper;
 import com.qmth.distributed.print.business.service.BasicTemplateOrgService;
 import com.qmth.distributed.print.business.enums.TemplateTypeEnum;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
+import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -22,6 +26,8 @@ import java.util.List;
  */
 @Service
 public class BasicTemplateOrgServiceImpl extends ServiceImpl<BasicTemplateOrgMapper, BasicTemplateOrg> implements BasicTemplateOrgService {
+    @Resource
+    private BasicTemplateOrgMapper basicTemplateOrgMapper;
 
     @Override
     public List<SysOrg> listByTypeAndTemplateId(String type, Long templateId) {
@@ -49,4 +55,10 @@ public class BasicTemplateOrgServiceImpl extends ServiceImpl<BasicTemplateOrgMap
         }
         this.saveBatch(list);
     }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public List<TemplatePrintInfoResult> findTemplateInfoByOrgIds(List<Long> ids) {
+        return basicTemplateOrgMapper.templateListByOrgIds(ids);
+    }
 }

+ 123 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamPrintPlanServiceImpl.java

@@ -7,19 +7,27 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.distributed.print.business.bean.result.PrintPlanBrief;
 import com.qmth.distributed.print.business.bean.result.PrintPlanResult;
+import com.qmth.distributed.print.business.bean.result.PrintPlanTemplateResult;
+import com.qmth.distributed.print.business.bean.result.TemplatePrintInfoResult;
 import com.qmth.distributed.print.business.entity.ExamDetail;
 import com.qmth.distributed.print.business.entity.ExamPrintPlan;
+import com.qmth.distributed.print.business.entity.SysOrg;
+import com.qmth.distributed.print.business.entity.SysUser;
+import com.qmth.distributed.print.business.enums.ClassifyEnum;
 import com.qmth.distributed.print.business.enums.PrintPlanStatusEnum;
+import com.qmth.distributed.print.business.enums.TemplateTypeEnum;
 import com.qmth.distributed.print.business.mapper.ExamPrintPlanMapper;
-import com.qmth.distributed.print.business.service.ExamDetailService;
-import com.qmth.distributed.print.business.service.ExamPrintPlanService;
+import com.qmth.distributed.print.business.service.*;
+import com.qmth.distributed.print.common.enums.ExceptionResultEnum;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -35,6 +43,12 @@ public class ExamPrintPlanServiceImpl extends ServiceImpl<ExamPrintPlanMapper, E
     private ExamPrintPlanMapper examPrintPlanMapper;
     @Resource
     private ExamDetailService examDetailService;
+    @Resource
+    private SysUserService sysUserService;
+    @Resource
+    private SysOrgService sysOrgService;
+    @Resource
+    private BasicTemplateOrgService basicTemplateOrgService;
 
     @Transactional(rollbackFor = Exception.class)
     @Override
@@ -68,4 +82,111 @@ public class ExamPrintPlanServiceImpl extends ServiceImpl<ExamPrintPlanMapper, E
         }
         return printPlanBriefList;
     }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public Map<String, Object> printPlanTemplateDatasource(Long schoolId, Long userId) {
+        //1.根据userId,schoolId查出orgId(应该从requestUser 获取)
+        List<SysUser> requestUserList = sysUserService.list(new QueryWrapper<SysUser>().lambda().eq(SysUser::getId,userId).eq(SysUser::getSchoolId,schoolId));
+        if (requestUserList.size() != 1){
+            throw ExceptionResultEnum.ERROR.exception("未找到用户信息");
+        }
+        SysUser requestUser = requestUserList.get(0);
+        Long orgId = requestUser.getOrgId();
+
+        //2.根据orgId查询他的所有叶子id 并把这些id放入List<Long> ids
+        List<Long> orgIds = new ArrayList<>();
+        if ((orgId == null || orgId == 0) && (schoolId == null || schoolId == 0)){
+            // 超级管理员权限
+            orgIds = sysOrgService.list().stream().map(SysOrg::getId).collect(Collectors.toList());
+        }else if ((orgId == null || orgId == 0) && schoolId > 0){
+            // 学校管理员权限
+            orgIds = sysOrgService.list(new QueryWrapper<SysOrg>().lambda().eq(SysOrg::getSchoolId,schoolId)).stream().map(SysOrg::getId).collect(Collectors.toList());
+        }else {
+            // 普通权限
+            List<Long> ids = new ArrayList<>();
+            ids.add(orgId);
+            orgIds = this.dp(ids,schoolId,new ArrayList<>());
+            System.out.println("ordIds = " + orgIds);
+        }
+
+        //3.关联template和template_org表 查询出来orgIds所包含的所有模板并组装
+        List<TemplatePrintInfoResult> templateInfoList = basicTemplateOrgService.findTemplateInfoByOrgIds(orgIds);
+        Map<String,Object> result = new HashMap<>();
+
+        // 变量印品
+        List<Map<String,Object>> variable = new ArrayList<>();
+        List<TemplatePrintInfoResult> SIGNList = templateInfoList.stream()
+                .filter(e -> TemplateTypeEnum.VARIABLE.equals(e.getTemplateType()))
+                .filter(e -> ClassifyEnum.SIGN.equals(e.getTemplateClassify()))
+                .collect(Collectors.toList());
+        List<TemplatePrintInfoResult> PACKAGEList = templateInfoList.stream()
+                .filter(e -> TemplateTypeEnum.VARIABLE.equals(e.getTemplateType()))
+                .filter(e -> ClassifyEnum.PACKAGE.equals(e.getTemplateClassify()))
+                .collect(Collectors.toList());
+        Map<String,Object> SIGNMap = new HashMap<>();
+        List<Map<String,Object>> signTemplate = new ArrayList<>();
+        for (TemplatePrintInfoResult sign : SIGNList) {
+            Map<String,Object> signMap = new HashMap<>();
+            signMap.put("id",sign.getTemplateId());
+            signMap.put("name",sign.getTemplateName());
+            signTemplate.add(signMap);
+        }
+        SIGNMap.put("type",ClassifyEnum.SIGN);
+        SIGNMap.put("template",signTemplate);
+
+        Map<String,Object> PACKAGEMap = new HashMap<>();
+        List<Map<String,Object>> packageTemplate = new ArrayList<>();
+        for (TemplatePrintInfoResult pack : PACKAGEList) {
+            Map<String,Object> packageMap = new HashMap<>();
+            packageMap.put("id",pack.getTemplateId());
+            packageMap.put("name",pack.getTemplateName());
+            packageTemplate.add(packageMap);
+        }
+        PACKAGEMap.put("type",ClassifyEnum.PACKAGE);
+        PACKAGEMap.put("template",packageTemplate);
+        variable.add(SIGNMap);
+        variable.add(PACKAGEMap);
+
+        // 普通印品
+        List<Map<String,Object>> ordinary = new ArrayList<>();
+        List<TemplatePrintInfoResult> CHECKINList = templateInfoList.stream()
+                .filter(e -> TemplateTypeEnum.ORDINARY.equals(e.getTemplateType()))
+                .filter(e -> ClassifyEnum.CHECK_IN.equals(e.getTemplateClassify()))
+                .collect(Collectors.toList());
+        Map<String,Object> CHECKINMap = new HashMap<>();
+        List<Map<String,Object>> checkInTemplate = new ArrayList<>();
+        for (TemplatePrintInfoResult checkIn : CHECKINList) {
+            Map<String,Object> checkInMap = new HashMap<>();
+            checkInMap.put("id",checkIn.getTemplateId());
+            checkInMap.put("name",checkIn.getTemplateName());
+            checkInTemplate.add(checkInMap);
+        }
+        CHECKINMap.put("type",ClassifyEnum.CHECK_IN);
+        CHECKINMap.put("template",checkInTemplate);
+        ordinary.add(CHECKINMap);
+
+        result.put("variable",variable);
+        result.put("ordinary",ordinary);
+        return result;
+    }
+
+    /**
+     * 查找子机构
+     * @param ids 上级机构id集合
+     * @param schoolId 学校id
+     * @param resultList 已查询所有子机构id集合
+     * @return 所有子机构id集合
+     */
+    private List<Long> dp(List<Long> ids,Long schoolId,List<Long> resultList){
+        resultList.addAll(ids);
+        for (Long id : ids) {
+            List<SysOrg> childList = sysOrgService.list(new QueryWrapper<SysOrg>().lambda().eq(SysOrg::getParentId,id).eq(SysOrg::getSchoolId,schoolId));
+            if (childList.size() > 0){
+                List<Long> childIds = childList.stream().map(SysOrg::getId).collect(Collectors.toList());
+                this.dp(childIds,schoolId,resultList);
+            }
+        }
+        return resultList;
+    }
 }

+ 23 - 0
distributed-print-business/src/main/resources/mapper/BasicTemplateOrgMapper.xml

@@ -26,4 +26,27 @@
             b.rule_id = #{templateId}
     </select>
 
+    <select id="templateListByOrgIds" resultType="com.qmth.distributed.print.business.bean.result.TemplatePrintInfoResult">
+        SELECT
+            org.id as templateOrgId,
+            org.type as templateOrgType,
+            org.org_id as orgId,
+            tmp.id as templateId,
+            tmp.school_id as schoolId,
+            tmp.name as templateName,
+            tmp.type as templateType,
+            tmp.classify as templateClassify,
+            tmp.attachment_id as attachmentId,
+            tmp.enable as enable,
+            tmp.remark as remark
+        FROM
+            basic_template_org org
+                INNER JOIN
+            basic_template tmp ON org.rule_id = tmp.id
+        WHERE (tmp.type = 'VARIABLE' OR tmp.type = 'ORDINARY') AND org.org_id IN
+        <foreach collection="orgIds" item="item" index="index" open="(" separator="," close=")">
+            #{item}
+        </foreach>
+    </select>
+
 </mapper>

+ 9 - 0
distributed-print/src/main/java/com/qmth/distributed/print/api/ExamPrintPlanController.java

@@ -55,6 +55,15 @@ public class ExamPrintPlanController {
         return ResultUtil.ok(examPrintPlanService.printPlanBriefQuery(param));
     }
 
+    @ApiOperation(value = "按类型查询模板")
+    @RequestMapping(value = "/get_template", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
+    public Result findPrintPlanPage(@ApiParam(value = "学校主键",required = true) @RequestParam String schoolId,
+                                    @ApiParam(value = "用户主键",required = true) @RequestParam String userId) {
+
+        return ResultUtil.ok(examPrintPlanService.printPlanTemplateDatasource(SystemConstant.convertIdToLong(schoolId),SystemConstant.convertIdToLong(userId)));
+    }
+
 
 }
 

+ 48 - 0
distributed-print/src/test/java/com/qmth/distributed/print/ServiceTest.java

@@ -0,0 +1,48 @@
+package com.qmth.distributed.print;
+
+import com.qmth.distributed.print.business.bean.result.TemplatePrintInfoResult;
+import com.qmth.distributed.print.business.entity.ExamPrintPlan;
+import com.qmth.distributed.print.business.mapper.BasicTemplateOrgMapper;
+import com.qmth.distributed.print.business.service.BasicTemplateOrgService;
+import com.qmth.distributed.print.business.service.ExamPrintPlanService;
+import org.junit.Test;
+import org.junit.jupiter.api.condition.DisabledOnJre;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description: service层测试
+ * @Author: CaoZixuan
+ * @Date: 2021-04-05
+ */
+@SpringBootTest
+@RunWith(SpringRunner.class)
+public class ServiceTest {
+    @Resource
+    private ExamPrintPlanService examPrintPlanService;
+    @Resource
+    private BasicTemplateOrgService basicTemplateOrgService;
+
+
+    @Test
+    public void printPlanTemplateDatasource(){
+        examPrintPlanService.printPlanTemplateDatasource(1L,2L);
+    }
+
+    @Test
+    public void mapper(){
+        List<Long> ids = new ArrayList<>();
+        ids.add(1L);
+        ids.add(9L);
+        List<TemplatePrintInfoResult> result = basicTemplateOrgService.findTemplateInfoByOrgIds(ids);
+        for (TemplatePrintInfoResult templatePrintInfoResult : result) {
+            System.out.println(templatePrintInfoResult);
+        }
+    }
+}