浏览代码

项目成本导出:折叠导汇集 展开导汇集加子集

sl 1 年之前
父节点
当前提交
9835f2aed3

+ 22 - 0
module_kzks/src/main/java/org/jeecg/modules/projectCostHuiji/controller/ProjectCostHuijiController.java

@@ -10,6 +10,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.shiro.SecurityUtils;
+import org.checkerframework.checker.units.qual.A;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.aspect.annotation.AutoLog;
 import org.jeecg.common.system.base.controller.JeecgController;
@@ -20,6 +21,7 @@ import org.jeecg.common.util.RedisUtil;
 import org.jeecg.modules.Index.util.AuthMark;
 import org.jeecg.modules.Index.util.CacheKey;
 import org.jeecg.modules.Index.util.CommonMethod;
+import org.jeecg.modules.costModelList.entity.CostModelList;
 import org.jeecg.modules.costModelProductPrice.service.IKzksCostModelProductPriceService;
 import org.jeecg.modules.mesInfoInstallationcost.service.IMesInfoInstallationcostService;
 import org.jeecg.modules.projectCost.entity.ProjectCost;
@@ -36,6 +38,9 @@ import org.jeecg.modules.projectCostHuiji.vo.ProjectCostHuijiSumVO;
 import org.jeecg.modules.projectCostYs.entity.KzksProjectCostYs;
 import org.jeecg.modules.projectCostYs.service.IKzksProjectCostYsService;
 import org.jeecg.modules.system.mapper.SysDepartMapper;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -503,4 +508,21 @@ public class ProjectCostHuijiController extends JeecgController<ProjectCostHuiji
         return Result.OK("加入失败!");
     }
 
+
+    /**
+     * 导出excel
+     * 折叠导出汇集,展开导出汇集和子集
+     *
+     * @param request
+     * @param projectCostHuiji
+     * @param isFolding  展开或者折叠  0折叠  1展开
+     */
+    //@RequiresPermissions("org.jeecg.modules:kzks_project_cost_huiji:exportXls")
+//    @ApiOperation(value = "项目成本汇集表-导出测试", notes = "项目成本汇集表-导出测试")
+    @RequestMapping(value = "/exportXlsProjectCost")
+    public ModelAndView exportXlsProjectCost(HttpServletRequest request, ProjectCostHuiji projectCostHuiji, @RequestParam(name = "isFolding", required = true) String isFolding) {
+
+        return projectCostHuijiService.exportXlsProjectCost(request, projectCostHuiji, ProjectCostHuiji.class, "项目成本表", isFolding);
+    }
+
 }

+ 24 - 0
module_kzks/src/main/java/org/jeecg/modules/projectCostHuiji/mapper/ProjectCostHuijiMapper.java

@@ -4,7 +4,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 import org.jeecg.modules.projectCost.entity.ProjectCost;
+import org.jeecg.modules.projectCost.vo.ProjectCostVO;
 import org.jeecg.modules.projectCostHuiji.entity.ProjectCostHuiji;
+import org.jeecg.modules.projectCostHuiji.vo.ProjectCostHuijiListVO;
 
 import java.util.List;
 
@@ -50,4 +52,26 @@ public interface ProjectCostHuijiMapper extends BaseMapper<ProjectCostHuiji> {
     public int updateStatus2(@Param("tasknoList") List<String> tasknoList);
 
     ProjectCostHuiji costHJSumIsStaff(@Param("huiji") ProjectCostHuiji finalProjectCostHuiji,@Param("realname") String realname);
+
+    /**
+     *   根据部门查询汇集表
+     */
+    List<ProjectCostHuijiListVO> getProjectCostHuiji();
+
+    /**
+     *   根据部门查询汇集表
+     */
+    List<ProjectCostHuijiListVO> getProjectCostHuijiByDep(@Param("departNames") List<String> departNames);
+
+    /**
+     *   根据业务员、科研任务负责人、主管设计师查询汇集表
+     */
+    List<ProjectCostHuijiListVO> getProjectCostHuijiByRealName(@Param("realName") String realName);
+
+    /**根据任务号查询项目成本的主任务及组批后的主任务*/
+    List<ProjectCostHuijiListVO> costListByTaskNoMainTwo(String taskno);
+
+    /**根据任务号查询项目成本的子任务及组批后的子任务*/
+    List<ProjectCostHuijiListVO> costListByTaskNoSubTwo(String taskno);
+
 }

+ 56 - 0
module_kzks/src/main/java/org/jeecg/modules/projectCostHuiji/mapper/xml/ProjectCostHuijiMapper.xml

@@ -121,4 +121,60 @@
             #{item}
         </foreach>
     </update>
+
+    <!-- 查询汇集表 -->
+    <select id="getProjectCostHuiji" parameterType="String" resultType="org.jeecg.modules.projectCostHuiji.vo.ProjectCostHuijiListVO">
+        select *, 1 as ji from kzks_project_cost_huiji order by id desc
+    </select>
+
+    <!-- 根据部门查询汇集表 -->
+    <select id="getProjectCostHuijiByDep" parameterType="String" resultType="org.jeecg.modules.projectCostHuiji.vo.ProjectCostHuijiListVO">
+        select *, 1 as ji from kzks_project_cost_huiji
+        where zrbm in
+        <foreach collection="departNames" index="index" item="item" open="(" separator="," close=")">
+            #{item}
+        </foreach>
+        or jycs in
+        <foreach collection="departNames" index="index" item="item" open="(" separator="," close=")">
+            #{item}
+        </foreach>
+        order by id desc
+    </select>
+
+    <!-- 根据业务员、科研任务负责人、主管设计师查询汇集表 -->
+    <select id="getProjectCostHuijiByRealName" parameterType="String" resultType="org.jeecg.modules.projectCostHuiji.vo.ProjectCostHuijiListVO">
+        select *, 1 as ji from kzks_project_cost_huiji
+        where business_man_name=#{realName} or ywfzrname=#{realName} or xhzzrname=#{realName}
+        order by id desc
+    </select>
+
+    <!--根据任务号查询项目成本的主任务及组批后的主任务 -->
+    <select id="costListByTaskNoMainTwo" resultType="org.jeecg.modules.projectCostHuiji.vo.ProjectCostHuijiListVO">
+        select c.id,c.taskno,c.taskname,c.xhname,c.jhwcsj,c.yzjdname,c.processPercent,c.cost_percent,c.yzsl,
+               c.one_income,c.one_cost,c.one_profit,c.lre,c.lrl,c.EstimationCoat,c.contractfpe,c.TaskMoney,c.zcb,
+               c.clf ,c.zyf,c.swf,c.wxf,c.sxf,c.rldlf,c.gdzczj,c.gzjlwf,c.glf,IFNULL(c.zjcb,m.value) AS zjcb,c.lbsy ,
+               c.workhour,c.zrbm,c.jycsid,c.jycs ,c.hxzxid,c. hxzxname ,c.tasktype,c.AuditPrice,c.iflag,c.Brief,
+               c.reftaskno,c.pcCode,c.bcCode,c.blCode,c.business_man_name,c.sjgs,c.scgs,c.status,c.proportion,c.ywfzrname,
+               c.clys,c.wxys,c.xhzzrname,c.zyys,c.swys,c.jjys,
+               2 as ji
+        from kzks_project_cost c
+                 left join mes_info_installationcost m on  m.taskno = #{taskno}
+        where c.taskno = #{taskno} order by status
+    </select>
+
+    <!--根据任务号查询项目成本的子任务及组批后的子任务 -->
+    <select id="costListByTaskNoSubTwo" resultType="org.jeecg.modules.projectCostHuiji.vo.ProjectCostHuijiListVO">
+        select c.id,c.taskno,c.taskname,c.xhname,c.jhwcsj,c.yzjdname,c.processPercent,c.cost_percent,c.yzsl,
+               c.one_income,c.one_cost,c.one_profit,c.lre,c.lrl,c.EstimationCoat,c.contractfpe,c.TaskMoney,c.zcb,
+               c.clf ,c.zyf,c.swf,c.wxf,c.sxf,c.rldlf,c.gdzczj,c.gzjlwf,c.glf,IFNULL(c.zjcb,m.value) AS zjcb,c.lbsy ,
+               c.workhour,c.zrbm,c.jycsid,c.jycs ,c.hxzxid,c. hxzxname ,c.tasktype,c.AuditPrice,c.iflag,c.Brief,
+               c.reftaskno,c.pcCode,c.bcCode,c.blCode,c.business_man_name,c.sjgs,c.scgs,c.status,c.proportion,c.ywfzrname,
+               c.clys,c.wxys,c.xhzzrname,
+               2 as ji
+        from kzks_project_cost c
+                 left join mes_info_installationcost m on m.taskno = c.taskno
+        where c.reftaskno = #{taskno} order by taskno ,status
+    </select>
+
+
 </mapper>

+ 10 - 1
module_kzks/src/main/java/org/jeecg/modules/projectCostHuiji/service/IProjectCostHuijiService.java

@@ -4,10 +4,13 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.costModelList.entity.CostModelList;
 import org.jeecg.modules.projectCost.entity.ProjectCost;
 import org.jeecg.modules.projectCostHuiji.entity.ProjectCostHuiji;
 import org.jeecg.modules.projectCostHuiji.entity.ProjectCostHuijiCompare;
+import org.springframework.web.servlet.ModelAndView;
 
+import javax.servlet.http.HttpServletRequest;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -50,4 +53,10 @@ public interface IProjectCostHuijiService extends IService<ProjectCostHuiji> {
 
     int updateStatus1(ArrayList<String> tasknoList);
 
-}
+    /**
+     * 项目成本——导出项目成本excel
+     * 折叠导出汇集,展开导出汇集和子集 0折叠  1展开
+     */
+    public ModelAndView exportXlsProjectCost(HttpServletRequest request, ProjectCostHuiji projectCostHuiji, Class<ProjectCostHuiji> clazz, String title, String isFolding);
+
+    }

+ 168 - 3
module_kzks/src/main/java/org/jeecg/modules/projectCostHuiji/service/impl/ProjectCostHuijiServiceImpl.java

@@ -4,29 +4,48 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.ObjectUtils;
+import org.apache.ibatis.annotations.Param;
+import org.apache.shiro.SecurityUtils;
 import org.checkerframework.checker.nullness.Opt;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.common.util.RedisUtil;
+import org.jeecg.modules.Index.util.AuthMark;
+import org.jeecg.modules.Index.util.CommonMethod;
+import org.jeecg.modules.costModelClPrice.vo.CostModelClPriceExportVO;
+import org.jeecg.modules.costModelList.entity.CostModelList;
 import org.jeecg.modules.costModelProductPrice.entity.KzksCostModelProductPrice;
 import org.jeecg.modules.costModelProductPrice.mapper.KzksCostModelProductPriceMapper;
+import org.jeecg.modules.costModelXmxqCl.entity.CostModelXmxqCl;
 import org.jeecg.modules.dataSourceSwitch.annotation.TargetDataSource;
 import org.jeecg.modules.dataSourceSwitch.enums.DataSourceType;
 import org.jeecg.modules.projectCost.entity.ProjectCost;
+import org.jeecg.modules.projectCost.entity.ProjectCostSumVo;
+import org.jeecg.modules.projectCost.vo.ProjectCostVO;
 import org.jeecg.modules.projectCostHuiji.entity.ProjectCostHuiji;
 import org.jeecg.modules.projectCostHuiji.entity.ProjectCostHuijiCompare;
 import org.jeecg.modules.projectCostHuiji.mapper.ProjectCostHuijiMapper;
 import org.jeecg.modules.projectCostHuiji.service.IProjectCostHuijiService;
+import org.jeecg.modules.projectCostHuiji.vo.ProjectCostHuijiListVO;
+import org.jeecg.modules.system.mapper.SysDepartMapper;
+import org.jeecg.modules.system.service.ISysUserService;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.servlet.ModelAndView;
 
+import javax.servlet.http.HttpServletRequest;
 import java.io.ByteArrayOutputStream;
 import java.io.ObjectOutputStream;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Optional;
+import java.util.*;
 
 /**
  * @Description: 项目成本汇集表
@@ -46,6 +65,16 @@ public class ProjectCostHuijiServiceImpl extends ServiceImpl<ProjectCostHuijiMap
     @SuppressWarnings("all")
     private KzksCostModelProductPriceMapper productPriceMapper;
 
+    @Autowired
+    private CommonMethod commonMethod;
+
+    @Autowired
+    private SysDepartMapper sysDepartMapper;
+
+    @Autowired
+    private RedisUtil redisUtil;
+
+
     /**
      * 分页查询
      */
@@ -146,4 +175,140 @@ public class ProjectCostHuijiServiceImpl extends ServiceImpl<ProjectCostHuijiMap
         return huijiMapper.updateStatus1(tasknoList);
     }
 
+    /**
+     *   根据部门查询汇集表
+     */
+    List<ProjectCostHuijiListVO> getProjectCostHuiji(){
+        return huijiMapper.getProjectCostHuiji();
+    }
+
+    /**
+     *   根据部门查询汇集表
+     */
+    List<ProjectCostHuijiListVO> getProjectCostHuijiByDep(List<String> departNames){
+        return huijiMapper.getProjectCostHuijiByDep(departNames);
+    }
+
+    /**
+     *   根据业务员、科研任务负责人、主管设计师查询汇集表
+     */
+    List<ProjectCostHuijiListVO> getProjectCostHuijiByRealName(@Param("realName") String realName){
+        return huijiMapper.getProjectCostHuijiByRealName(realName);
+    }
+
+    public List<ProjectCostHuijiListVO> children1(String taskno) {
+        return huijiMapper.costListByTaskNoMainTwo(taskno); //主任务及批产的主任务
+    }
+
+    public List<ProjectCostHuijiListVO> children2(String taskno) {
+        return huijiMapper.costListByTaskNoSubTwo(taskno); //子任务及批产的子任务
+    }
+
+    /**
+     * 项目成本——导出项目成本excel
+     * 折叠导出汇集,展开导出汇集和子集 0折叠  1展开
+     */
+    public ModelAndView exportXlsProjectCost(HttpServletRequest request, ProjectCostHuiji projectCostHuiji, Class<ProjectCostHuiji> clazz, String title, String isFolding){
+        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        String role = commonMethod.getRole(sysUser.getUsername());
+
+        //查询需要导出的数据
+        List<ProjectCostHuijiListVO> projectCostHuijiListVOAll = new ArrayList<>();//父级加子集 最后导入excel中的数据
+        List<ProjectCostHuijiListVO> projectCostHuijiListVOS = new ArrayList<>();//父级数据
+//        List<ProjectCost> projectCostList = new ArrayList<>();//子集数据
+        if(role.equals(AuthMark.ADMIN) || role.equals(AuthMark.BOSS)){//管理员或者boss查询所有数据导出
+            projectCostHuijiListVOS = getProjectCostHuiji();//汇集层数据
+            if(isFolding.equals("0")){//折叠 导出汇集
+                projectCostHuijiListVOAll.addAll(projectCostHuijiListVOS);
+            }else if(isFolding.equals("1")){//展开,导出汇集+子集
+                if(projectCostHuijiListVOS.size()!=0){
+                    for(ProjectCostHuijiListVO projectCostHuijiListVO:projectCostHuijiListVOS){
+                        List<ProjectCostHuijiListVO> projectCostHuijiListVOS1 = children1(projectCostHuijiListVO.getTaskno());//主任务及批产的主任务
+                        List<ProjectCostHuijiListVO> projectCostHuijiListVOS2 = children2(projectCostHuijiListVO.getTaskno());//子任务及批产的子任务
+                        projectCostHuijiListVOAll.add(projectCostHuijiListVO);//父级数据
+                        projectCostHuijiListVOAll.addAll(projectCostHuijiListVOS1);//主任务及批产的主任务
+                        projectCostHuijiListVOAll.addAll(projectCostHuijiListVOS2);//子任务及批产的子任务
+                    }
+                }
+            }
+
+        }else if(role.equals(AuthMark.DEPT_LEADER)){//部门领导 根据部门查
+            String[] deptIds = sysUser.getDepartIds().split(",");
+            List<String> departNames = sysDepartMapper.getDepNameByIds(deptIds);
+            if(departNames.size()!=0)  projectCostHuijiListVOS = getProjectCostHuijiByDep(departNames);//汇集层数据
+            System.out.println(projectCostHuijiListVOS);
+            if(isFolding.equals("0")){//折叠 导出汇集
+                projectCostHuijiListVOAll.addAll(projectCostHuijiListVOS);
+            }else if(isFolding.equals("1")){//展开,导出汇集+子集
+                if(projectCostHuijiListVOS.size()!=0){
+                    for(ProjectCostHuijiListVO projectCostHuijiListVO:projectCostHuijiListVOS){
+                        List<ProjectCostHuijiListVO> projectCostHuijiListVOS1 = children1(projectCostHuijiListVO.getTaskno());//主任务及批产的主任务
+                        List<ProjectCostHuijiListVO> projectCostHuijiListVOS2 = children2(projectCostHuijiListVO.getTaskno());//子任务及批产的子任务
+                        projectCostHuijiListVOAll.add(projectCostHuijiListVO);//父级数据
+                        projectCostHuijiListVOAll.addAll(projectCostHuijiListVOS1);//主任务及批产的主任务
+                        projectCostHuijiListVOAll.addAll(projectCostHuijiListVOS2);//子任务及批产的子任务
+                    }
+                }
+            }
+
+        }else if(role.equals(AuthMark.STAFF)){//员工  根据业务员、科研任务负责人、主管设计师导出
+            String realName = sysUser.getRealname();
+            projectCostHuijiListVOS = getProjectCostHuijiByRealName(realName);//汇集层数据
+            System.out.println(projectCostHuijiListVOS);
+            if(isFolding.equals("0")){//折叠 导出汇集
+                projectCostHuijiListVOAll.addAll(projectCostHuijiListVOS);
+            }else if(isFolding.equals("1")){//展开,导出汇集+子集
+                if(projectCostHuijiListVOS.size()!=0){
+                    for(ProjectCostHuijiListVO projectCostHuijiListVO:projectCostHuijiListVOS){
+                        List<ProjectCostHuijiListVO> projectCostHuijiListVOS1 = children1(projectCostHuijiListVO.getTaskno());//主任务及批产的主任务
+                        List<ProjectCostHuijiListVO> projectCostHuijiListVOS2 = children2(projectCostHuijiListVO.getTaskno());//子任务及批产的子任务
+                        projectCostHuijiListVOAll.add(projectCostHuijiListVO);//父级数据
+                        projectCostHuijiListVOAll.addAll(projectCostHuijiListVOS1);//主任务及批产的主任务
+                        projectCostHuijiListVOAll.addAll(projectCostHuijiListVOS2);//子任务及批产的子任务
+                    }
+                }
+            }
+        }
+
+
+//        Object projectCostHuijiPageList = queryPageList(projectCostHuiji, 1, 10000, request).getResult();
+//        System.out.println(projectCostHuijiPageList);
+//        ProjectCostSumVo projectCostHuijiPageList1 = new ProjectCostSumVo();
+//        if(projectCostHuijiPageList != null) projectCostHuijiPageList1 = (ProjectCostSumVo) projectCostHuijiPageList;
+//        System.out.println(projectCostHuijiPageList1);
+
+        List<Map<String, Object>> list = new ArrayList<>();
+        Map<String, Object> map = new HashMap<>();
+        map.put(NormalExcelConstants.CLASS, ProjectCostHuiji.class);
+        map.put(NormalExcelConstants.PARAMS, new ExportParams("项目成本表", "导出人:" + sysUser.getRealname(), "项目成本表"));
+        map.put(NormalExcelConstants.DATA_LIST, projectCostHuijiListVOAll);
+        list.add(map);
+
+//        //汇集表
+//        Map<String, Object> map = new HashMap<>();
+//        map.put(NormalExcelConstants.CLASS, ProjectCostHuiji.class);
+//        map.put(NormalExcelConstants.PARAMS, new ExportParams("项目成本汇集表", "导出人:" + sysUser.getRealname(), "项目成本汇集表"));
+//        map.put(NormalExcelConstants.DATA_LIST, projectCostHuijiListVOS);
+//        list.add(map);
+//
+//        //子集表
+//        Map<String, Object> map2 = new HashMap<>();
+//        map2.put(NormalExcelConstants.CLASS, ProjectCost.class);
+//        map2.put(NormalExcelConstants.PARAMS, new ExportParams("项目成本子集表", "导出人:" + sysUser.getRealname(), "项目成本子集表"));
+//        map2.put(NormalExcelConstants.DATA_LIST, projectCostHuijiListVOS);
+//        list.add(map2);
+
+        //3.AutoPoi 导出Excel
+//        System.out.println("导出excel");
+        ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
+        mv.addObject(NormalExcelConstants.FILE_NAME, title);  //文件名称,但是前端会重新命名
+        mv.addObject(NormalExcelConstants.MAP_LIST, list);
+//        mv.addObject(NormalExcelConstants.CLASS, clazz); //实体类型
+//        mv.addObject(NormalExcelConstants.PARAMS,new ExportParams(title + "报表", "导出人:" + sysUser.getRealname(), title));//标题,sheet名称
+//        mv.addObject(NormalExcelConstants.DATA_LIST, listWxf); //list数据
+
+        return mv;
+
+    }
+
 }

+ 1 - 0
module_kzks/src/main/java/org/jeecg/modules/projectCostHuiji/vo/ProjectCostHuijiListVO.java

@@ -219,6 +219,7 @@ public class ProjectCostHuijiListVO implements Serializable {
     @ApiModelProperty(value = "生产工时")
     private java.math.BigDecimal scgs;
     /**用于判断是一级还是二级*/
+    @Excel(name = "层级", width = 15)
     @ApiModelProperty(value = "用于判断是一级还是二级")
     private java.lang.Integer ji;
     /**子集*/