123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234 |
- package com.jeeplus.modules.sg.project.web;
- import com.jeeplus.common.json.AjaxJson;
- import com.jeeplus.common.utils.DateUtils;
- import com.jeeplus.common.utils.StringUtils;
- import com.jeeplus.core.web.BaseController;
- import com.jeeplus.modules.sg.overheadline.entity.JkxlDetailFee;
- import com.jeeplus.modules.sg.overheadline.service.OverheadLineService;
- import com.jeeplus.modules.sg.project.entity.WbsItem;
- import com.jeeplus.modules.sg.project.entity.WbsProject;
- import com.jeeplus.modules.sg.project.entity.WbsSelection;
- import com.jeeplus.modules.sg.project.service.ProjectService;
- import com.jeeplus.modules.sg.project.util.ExportUtil;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Controller;
- import org.springframework.ui.Model;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.ResponseBody;
- import org.springframework.web.multipart.MultipartFile;
- import org.springframework.web.servlet.mvc.support.RedirectAttributes;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import java.io.IOException;
- import java.text.SimpleDateFormat;
- import java.util.*;
- @Controller
- @RequestMapping("${adminPath}/project/tem")
- public class ProjectTemController extends BaseController {
- @Autowired
- private HttpServletRequest request;
- @Autowired
- private ProjectService projectService;
- @Autowired
- private OverheadLineService overheadLineService;
- @RequestMapping("/index")
- public String toIndex(){
- return "/modules/sg/project/managementtem";
- }
- @RequestMapping(value = {"list", ""})
- public String list(WbsSelection wbsSelection, HttpServletRequest request, HttpServletResponse response, Model model) {
- List<WbsProject> list = projectService.findList(wbsSelection);
- model.addAttribute("list",list);
- return "modules/sg/project/management";
- }
- @RequestMapping("/form")
- public String form(WbsProject wbsProject, Model model) {
- WbsProject wbsProject1 = projectService.get(wbsProject.getId());
- List<WbsProject> list = new ArrayList<>();
- list.add(wbsProject1);
- model.addAttribute("list", list);
- String view = "updateItemForm";
- String tabId = request.getParameter("tabId");
- if("1".equals(tabId)){
- view = "lookItemForm";
- }
- return "modules/sg/project/"+view;
- }
- //项目保存
- @ResponseBody
- @RequestMapping("/save")
- public AjaxJson save(WbsProject wbsProject, Model model, RedirectAttributes redirectAttributes){
- AjaxJson j = new AjaxJson();
- //数据验证
- String errMsg = beanValidator(wbsProject);
- if (StringUtils.isNotBlank(errMsg)){
- j.setSuccess(false);
- j.setMsg(errMsg);
- return j;
- }
- //新增或编辑表单保存
- projectService.save(wbsProject);//保存
- j.setSuccess(true);
- addMessage(redirectAttributes, "保存成功");
- return j;
- }
- /**
- *数据导入
- */
- @RequestMapping("/import")
- public String importFile(MultipartFile file, RedirectAttributes redirectAttributes, HttpServletRequest request, Model model)throws Exception {
- String projectName = request.getParameter("projectName"); //项目名称
- String itemName = request.getParameter("itemName"); //项目名称
- String projectId = request.getParameter("projectId"); //工程ID
- String type = request.getParameter("type"); //工程类型
- String id = getId();
- try {
- WbsProject wbsProject = new WbsProject();
- wbsProject.setProjectName(projectName);
- projectService.save(wbsProject);
- // 保存数据到数据库
- if(type.equals("1")) {
- overheadLineService.saveJk(file,itemName, id, projectId, type);
- }
- if (type.equals("2")) {
- overheadLineService.saveDl(file,itemName, id, projectId, type);
- }
- } catch (RuntimeException e) {
- addMessage(redirectAttributes, "导入失败,"+e.getMessage());
- return "redirect:/a/project/list";
- } catch (Exception e){
- addMessage(redirectAttributes, "导入失败");
- return "redirect:/a/project/list";
- }
- addMessage(redirectAttributes, "导入成功");
- return "redirect:/a/jkxl/list?id="+id+"&type="+type;
- }
- //导出
- @RequestMapping("/export")
- public String toList(HttpServletRequest request,Model model,HttpServletResponse response) throws IOException {
- String id = request.getParameter("id");
- WbsProject wbsProject = projectService.get(id);
- String fileName = wbsProject.getProjectName()+ DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
- List<WbsItem> wbsItems = wbsProject.getWbsItems();
- String[] sts = new String[wbsItems.size()+1];
- sts[0] = "合计";
- for (int i=0;i<wbsItems.size();i++){
- sts[i+1] = wbsItems.get(i).getItemName();
- }
- List<JkxlDetailFee> list = new ArrayList<>();
- for(WbsItem wbsItem :wbsItems){
- List<JkxlDetailFee> jkxlDetailFees = overheadLineService.findList(wbsItem.getId(),wbsItem.getType());
- list.addAll(jkxlDetailFees);
- }
- //集合去重合并
- List<JkxlDetailFee> list1 = getNewList(list);
- //加序号
- for (int i=0;i<list1.size();i++){
- list1.get(i).setIndex(i+1);
- }
- ExportUtil exportUtil = new ExportUtil(null, JkxlDetailFee.class,sts);
- //写合计
- exportUtil.setDataList(list1,0);
- //分别写入项目
- for(int j=0;j<wbsItems.size();j++){
- List<JkxlDetailFee> jkxlDetailFees = overheadLineService.findList(wbsItems.get(j).getId(),wbsItems.get(j).getType());
- exportUtil.setDataList(jkxlDetailFees,j+1);
- }
- exportUtil.write(response,fileName).dispose();
- return "redirect:/a/project/list";
- }
- /**
- * 数据去重合并
- * @param list
- * @return
- */
- private List<JkxlDetailFee> getNewList(List<JkxlDetailFee> list) {
- List<JkxlDetailFee> list1 = new ArrayList<>();
- for(JkxlDetailFee jkxlDetailFee: list){
- String wbsCode = jkxlDetailFee.getWbsCode();
- if(!list1.contains(jkxlDetailFee)){
- list1.add(jkxlDetailFee);
- }else {
- for(JkxlDetailFee jkxlDetailFee1 : list1){
- if(jkxlDetailFee1.getWbsCode().equals(wbsCode)){
- double azFee = jkxlDetailFee1.getAzFee()!=null? jkxlDetailFee1.getAzFee():0.00;
- double azFee1 = jkxlDetailFee.getAzFee()!=null? jkxlDetailFee.getAzFee():0.00;
- double qtFee = jkxlDetailFee1.getQtFee()!=null? jkxlDetailFee1.getQtFee():0.00;
- double qtFee1 = jkxlDetailFee.getQtFee()!=null? jkxlDetailFee.getQtFee():0.00;
- double totalFee = jkxlDetailFee1.getTotalFee()!=null? jkxlDetailFee1.getTotalFee():0.00;
- double totalFee1 = jkxlDetailFee.getTotalFee()!=null? jkxlDetailFee.getTotalFee():0.00;
- double jsFee = jkxlDetailFee1.getJsFee()!=null? jkxlDetailFee1.getJsFee():0.00;
- double jsFee1 = jkxlDetailFee.getJsFee()!=null? jkxlDetailFee.getJsFee():0.00;
- double cFee = jkxlDetailFee1.getcFee()!=null? jkxlDetailFee1.getcFee():0.00;
- double cFee1 = jkxlDetailFee.getcFee()!=null? jkxlDetailFee.getcFee():0.00;
- jkxlDetailFee1.setAzFee(azFee+azFee1);
- jkxlDetailFee1.setQtFee(qtFee+qtFee1);
- jkxlDetailFee1.setTotalFee(totalFee+totalFee1);
- jkxlDetailFee1.setJsFee(jsFee+jsFee1);
- jkxlDetailFee1.setcFee(cFee+cFee1);
- }
- }
- }
- }
- //按照wbs码排序
- Collections.sort(list1, new Comparator<JkxlDetailFee>() {
- @Override
- public int compare(JkxlDetailFee o1, JkxlDetailFee o2) {
- return o1.getWbsCode().compareTo(o2.getWbsCode());
- }
- });
- return list1;
- }
- //项目删除
- @ResponseBody
- @RequestMapping(value = "delete")
- public AjaxJson delete(WbsProject wbsProject) {
- AjaxJson j = new AjaxJson();
- projectService.delete(wbsProject);
- j.setMsg("删除项目成功");
- return j;
- }
- @RequestMapping(value = "tolist")
- public String toList(){
- return "redirect:/a/project/list";
- }
- /**
- * 创建项目ID
- */
- public String getId() {
- SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddHHmmss");
- String newDate=sdf.format(new Date());
- String result="";
- Random random=new Random();
- for(int i=0;i<3;i++){
- result+=random.nextInt(10);
- }
- return newDate+result;
- }
- }
|