|
@@ -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;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
}
|