diff --git a/src/main/java/com/zhgd/xmgl/modules/baotou/controller/MainProjectCompleteDetailController.java b/src/main/java/com/zhgd/xmgl/modules/baotou/controller/MainProjectCompleteDetailController.java index de6f48696..e1dce9bdc 100644 --- a/src/main/java/com/zhgd/xmgl/modules/baotou/controller/MainProjectCompleteDetailController.java +++ b/src/main/java/com/zhgd/xmgl/modules/baotou/controller/MainProjectCompleteDetailController.java @@ -1,27 +1,17 @@ package com.zhgd.xmgl.modules.baotou.controller; -import cn.afterturn.easypoi.excel.ExcelExportUtil; -import cn.afterturn.easypoi.excel.entity.TemplateExportParams; -import cn.hutool.core.date.DateUtil; -import cn.hutool.core.io.FileUtil; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gexin.fastjson.JSON; import com.zhgd.annotation.OperLog; import com.zhgd.jeecg.common.api.vo.Result; -import com.zhgd.jeecg.common.execption.OpenAlertException; -import com.zhgd.xmgl.modules.baotou.entity.PipelineWeldingRecord; import com.zhgd.xmgl.modules.baotou.entity.vo.MainProjectCompleteDetailVo; import com.zhgd.xmgl.modules.baotou.service.IMainProjectCompleteDetailService; -import com.zhgd.xmgl.util.ExcelUtils; -import com.zhgd.xmgl.util.Fileutils; -import com.zhgd.xmgl.util.MapUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; -import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.MapUtils; -import org.apache.poi.ss.usermodel.Workbook; import org.simpleframework.xml.core.Validate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -29,9 +19,6 @@ import springfox.documentation.annotations.ApiIgnore; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -83,28 +70,38 @@ public class MainProjectCompleteDetailController { /** * 添加 * - * @param mainProjectCompleteDetail1 + * @param mainProjectCompleteDetail * @return */ @OperLog(operModul = "主要工程量完成情况详情表管理", operType = "添加", operDesc = "添加主要工程量完成情况详情表信息") @ApiOperation(value = "添加主要工程量完成情况详情表信息", notes = "添加主要工程量完成情况详情表信息", httpMethod = "POST") @PostMapping(value = "/add") - public Result add(@RequestBody @Validate MainProjectCompleteDetailVo mainProjectCompleteDetail1) { - mainProjectCompleteDetail1Service.add(mainProjectCompleteDetail1); + public Result add(@RequestBody @Validate MainProjectCompleteDetailVo mainProjectCompleteDetail) { + mainProjectCompleteDetail1Service.add(mainProjectCompleteDetail); + return Result.ok(); + } + + @OperLog(operModul = "主要工程量完成情况详情表管理", operType = "添加", operDesc = "工作流添加主要工程量完成情况详情表信息") + @ApiOperation(value = "工作流添加主要工程量完成情况详情表信息", notes = "工作流添加主要工程量完成情况详情表信息", httpMethod = "POST") + @PostMapping(value = "/flow/add") + public Result add(@RequestBody @Validate Map map) { + log.info("工作流添加主要工程量完成情况详情表信息:{}", JSON.toJSONString(map)); + MainProjectCompleteDetailVo vo = new MainProjectCompleteDetailVo(); + mainProjectCompleteDetail1Service.edit(vo); return Result.ok(); } /** * 编辑 * - * @param mainProjectCompleteDetail1 + * @param mainProjectCompleteDetail * @return */ @OperLog(operModul = "主要工程量完成情况详情表管理", operType = "编辑", operDesc = "编辑主要工程量完成情况详情表信息") @ApiOperation(value = "编辑主要工程量完成情况详情表信息", notes = "编辑主要工程量完成情况详情表信息", httpMethod = "POST") @PostMapping(value = "/edit") - public Result edit(@RequestBody MainProjectCompleteDetailVo mainProjectCompleteDetail1) { - mainProjectCompleteDetail1Service.edit(mainProjectCompleteDetail1); + public Result edit(@RequestBody MainProjectCompleteDetailVo mainProjectCompleteDetail) { + mainProjectCompleteDetail1Service.edit(mainProjectCompleteDetail); return Result.ok(); } @@ -151,6 +148,7 @@ public class MainProjectCompleteDetailController { @ApiImplicitParams({ @ApiImplicitParam(name = "deviceUnitIds", value = "装置ids(多个,分割)", paramType = "body", required = true, dataType = "String"), @ApiImplicitParam(name = "mainProjectCompletePeriodId", value = "主要工程量完成情况时间段id", paramType = "body", required = true, dataType = "String"), + @ApiImplicitParam(name = "levelType", value = "时间级别:1月2周", paramType = "body", required = true, dataType = "String"), }) @PostMapping(value = "/exportXls") public void exportXls(HttpServletRequest request, HttpServletResponse response, @RequestBody HashMap param) { diff --git a/src/main/java/com/zhgd/xmgl/modules/baotou/entity/MainProjectCompleteDetail.java b/src/main/java/com/zhgd/xmgl/modules/baotou/entity/MainProjectCompleteDetail.java index a0ae68ded..8ceef9fb1 100644 --- a/src/main/java/com/zhgd/xmgl/modules/baotou/entity/MainProjectCompleteDetail.java +++ b/src/main/java/com/zhgd/xmgl/modules/baotou/entity/MainProjectCompleteDetail.java @@ -1,17 +1,15 @@ package com.zhgd.xmgl.modules.baotou.entity; -import java.io.Serializable; -import java.util.Date; import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; import com.fasterxml.jackson.annotation.JsonFormat; -import org.springframework.format.annotation.DateTimeFormat; -import org.jeecgframework.poi.excel.annotation.Excel; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; /** * @Description: 主要工程量完成情况详情表 * @author: pds @@ -65,9 +63,6 @@ public class MainProjectCompleteDetail implements Serializable { /**上报人*/ @ApiModelProperty(value="上报人") private java.lang.Integer reportingPerson ; - /**主要工程量完成情况总量id*/ - @ApiModelProperty(value="主要工程量完成情况总量id") - private java.lang.Long mainProjectCompleteTotalId ; /**时间级别:1月2周*/ @ApiModelProperty(value="时间级别:1月2周") private java.lang.Integer levelType ; diff --git a/src/main/java/com/zhgd/xmgl/modules/baotou/entity/vo/MainProjectCompleteDetailVo.java b/src/main/java/com/zhgd/xmgl/modules/baotou/entity/vo/MainProjectCompleteDetailVo.java index 4dd165c3f..c599eadaf 100644 --- a/src/main/java/com/zhgd/xmgl/modules/baotou/entity/vo/MainProjectCompleteDetailVo.java +++ b/src/main/java/com/zhgd/xmgl/modules/baotou/entity/vo/MainProjectCompleteDetailVo.java @@ -7,7 +7,6 @@ import org.jeecgframework.poi.excel.annotation.Excel; import java.util.LinkedHashMap; import java.util.List; -import java.util.Map; @Data public class MainProjectCompleteDetailVo extends MainProjectCompleteDetail { @@ -77,4 +76,11 @@ public class MainProjectCompleteDetailVo extends MainProjectCompleteDetail { private java.math.BigDecimal totalDesignQuantity; private List> overviewList; + + /**主要工程量完成情况总量id*/ + @ApiModelProperty(value="主要工程量完成情况总量id") + private java.lang.Long mainProjectCompleteTotalId ; + + @ApiModelProperty(value="装置单位名称") + private java.lang.String deviceUnitName ; } diff --git a/src/main/java/com/zhgd/xmgl/modules/baotou/mapper/xml/MainProjectCompleteDetailMapper.xml b/src/main/java/com/zhgd/xmgl/modules/baotou/mapper/xml/MainProjectCompleteDetailMapper.xml index 7e3ac6342..4cbc423a0 100644 --- a/src/main/java/com/zhgd/xmgl/modules/baotou/mapper/xml/MainProjectCompleteDetailMapper.xml +++ b/src/main/java/com/zhgd/xmgl/modules/baotou/mapper/xml/MainProjectCompleteDetailMapper.xml @@ -16,7 +16,6 @@ t.affiliated_unit, t.reporting_person, t.completed_quantity_this_week, - t.main_project_complete_total_id, n.project_sn, n.project_quantity_name, n.level, @@ -25,12 +24,10 @@ mpcp.level_type, mpcp.year, mpcp.month, - mpcp.which_week, - mpct.total_design_quantity + mpcp.which_week from main_project_complete_detail t left join main_project_complete_name n on n.id = t.main_project_complete_name_id left join main_project_complete_period mpcp on t.main_project_complete_period_id = mpcp.id - left join main_project_complete_total mpct on mpct.id = t.main_project_complete_total_id where 1=1 and mpcp.level_type = #{param.levelType} and t.device_unit_id = #{param.deviceUnitId} @@ -44,6 +41,7 @@ )t ${ew.customSqlSegment} + diff --git a/src/main/java/com/zhgd/xmgl/modules/baotou/service/impl/MainProjectCompleteDetailServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/baotou/service/impl/MainProjectCompleteDetailServiceImpl.java index f3709da7b..06e8bc133 100644 --- a/src/main/java/com/zhgd/xmgl/modules/baotou/service/impl/MainProjectCompleteDetailServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/baotou/service/impl/MainProjectCompleteDetailServiceImpl.java @@ -4,7 +4,9 @@ import cn.afterturn.easypoi.excel.ExcelExportUtil; import cn.afterturn.easypoi.excel.entity.TemplateExportParams; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.convert.Convert; import cn.hutool.core.io.FileUtil; +import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; @@ -15,16 +17,10 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.zhgd.jeecg.common.execption.OpenAlertException; import com.zhgd.jeecg.common.system.query.QueryGenerator; -import com.zhgd.xmgl.modules.baotou.entity.MainProjectCompleteDetail; -import com.zhgd.xmgl.modules.baotou.entity.MainProjectCompleteName; -import com.zhgd.xmgl.modules.baotou.entity.MainProjectCompletePeriod; -import com.zhgd.xmgl.modules.baotou.entity.MainProjectCompleteTotal; +import com.zhgd.xmgl.modules.baotou.entity.*; import com.zhgd.xmgl.modules.baotou.entity.vo.MainProjectCompleteDetailVo; import com.zhgd.xmgl.modules.baotou.mapper.MainProjectCompleteDetailMapper; -import com.zhgd.xmgl.modules.baotou.service.IMainProjectCompleteDetailService; -import com.zhgd.xmgl.modules.baotou.service.IMainProjectCompleteNameService; -import com.zhgd.xmgl.modules.baotou.service.IMainProjectCompletePeriodService; -import com.zhgd.xmgl.modules.baotou.service.IMainProjectCompleteTotalService; +import com.zhgd.xmgl.modules.baotou.service.*; import com.zhgd.xmgl.util.*; import org.apache.commons.collections.MapUtils; import org.apache.poi.ss.usermodel.Workbook; @@ -41,6 +37,8 @@ import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; +import static cn.afterturn.easypoi.excel.ExcelExportUtil.SHEET_NAME; + /** * @Description: 主要工程量完成情况详情表 * @author: pds @@ -57,6 +55,8 @@ public class MainProjectCompleteDetailServiceImpl extends ServiceImpl queryPageList(HashMap param) { @@ -114,7 +114,6 @@ public class MainProjectCompleteDetailServiceImpl extends ServiceImpl totalList = mainProjectCompleteTotalService.list(new LambdaQueryWrapper() + .eq(MainProjectCompleteTotal::getDeviceUnitId, deviceUnitId)); + Integer year = -1; + Integer month = -1; + if (period != null) { + year = period.getYear(); + month = period.getMonth(); + } + Integer finalYear = year; + Integer finalMonth = month; List list = new ArrayList<>(); for (MainProjectCompleteName name : nameList) { MainProjectCompleteDetailVo vo = new MainProjectCompleteDetailVo(); @@ -188,27 +193,27 @@ public class MainProjectCompleteDetailServiceImpl extends ServiceImpl op = alls.stream().filter(o -> Objects.equals(o.getMainProjectCompleteNameId(), vo.getMainProjectCompleteNameId()) && Objects.equals(o.getMainProjectCompletePeriodId(), period.getId())).findFirst(); if (op.isPresent()) { BeanUtil.copyProperties(op.get(), vo); - }else{ + } else { vo.setId(null); } - Optional op1 = alls.stream().filter(o -> Objects.equals(o.getMainProjectCompleteNameId(), vo.getMainProjectCompleteNameId())).findFirst(); + Optional op1 = totalList.stream().filter(o -> Objects.equals(o.getMainProjectCompleteNameId(), vo.getMainProjectCompleteNameId())).findFirst(); if (op1.isPresent()) { vo.setTotalDesignQuantity(op1.get().getTotalDesignQuantity()); } if (Objects.equals(levelType, 2)) { - vo.setCumulativeCompletedQuantityThisMonth(alls.stream().filter(o -> Objects.equals(o.getYear(), year) && Objects.equals(o.getMonth(), month)).map(MainProjectCompleteDetail::getCompletedQuantityThisWeek).reduce(BigDecimal.ZERO, BigDecimal::add)); + vo.setCumulativeCompletedQuantityThisMonth(alls.stream().filter(o -> Objects.equals(o.getYear(), finalYear) && Objects.equals(o.getMonth(), finalMonth)).map(MainProjectCompleteDetail::getCompletedQuantityThisWeek).reduce(BigDecimal.ZERO, BigDecimal::add)); } if (Objects.equals(levelType, 2)) { - vo.setCumulativeCompletedQuantityThisYear(alls.stream().filter(o -> Objects.equals(o.getYear(), year)).map(MainProjectCompleteDetail::getCompletedQuantityThisWeek).reduce(BigDecimal.ZERO, BigDecimal::add)); + vo.setCumulativeCompletedQuantityThisYear(alls.stream().filter(o -> Objects.equals(o.getYear(), finalYear)).map(MainProjectCompleteDetail::getCompletedQuantityThisWeek).reduce(BigDecimal.ZERO, BigDecimal::add)); } else { - vo.setCumulativeCompletedQuantityThisYear(alls.stream().filter(o -> Objects.equals(o.getYear(), year)).map(MainProjectCompleteDetail::getCompletedQuantityThisMonth).reduce(BigDecimal.ZERO, BigDecimal::add)); + vo.setCumulativeCompletedQuantityThisYear(alls.stream().filter(o -> Objects.equals(o.getYear(), finalYear)).map(MainProjectCompleteDetail::getCompletedQuantityThisMonth).reduce(BigDecimal.ZERO, BigDecimal::add)); } if (Objects.equals(levelType, 2)) { - vo.setCumulativeCompletedQuantity(alls.stream().filter(o -> NumberUtils.gt(o.getYear() + "", year + "") && (Objects.equals(o.getYear(), year) && NumberUtils.gt(o.getMonth() + "", month + ""))).map(MainProjectCompleteDetail::getCompletedQuantityThisWeek).reduce(BigDecimal.ZERO, BigDecimal::add)); + vo.setCumulativeCompletedQuantity(alls.stream().filter(o -> NumberUtils.gt(o.getYear() + "", finalYear + "") && (Objects.equals(o.getYear(), finalYear) && NumberUtils.gt(o.getMonth() + "", finalMonth + ""))).map(MainProjectCompleteDetail::getCompletedQuantityThisWeek).reduce(BigDecimal.ZERO, BigDecimal::add)); } else { - vo.setCumulativeCompletedQuantity(alls.stream().filter(o -> Objects.equals(o.getYear(), year)).map(MainProjectCompleteDetail::getCompletedQuantityThisMonth).reduce(BigDecimal.ZERO, BigDecimal::add)); + vo.setCumulativeCompletedQuantity(alls.stream().filter(o -> Objects.equals(o.getYear(), finalYear)).map(MainProjectCompleteDetail::getCompletedQuantityThisMonth).reduce(BigDecimal.ZERO, BigDecimal::add)); } - vo.setCumulativeArrival(alls.stream().filter(o -> Objects.equals(o.getYear(), year) && Objects.equals(o.getMonth(), month)).map(MainProjectCompleteDetail::getDeliveryThisPeriod).reduce(BigDecimal.ZERO, BigDecimal::add)); + vo.setCumulativeArrival(alls.stream().filter(o -> Objects.equals(o.getYear(), finalYear) && Objects.equals(o.getMonth(), finalMonth)).map(MainProjectCompleteDetail::getDeliveryThisPeriod).reduce(BigDecimal.ZERO, BigDecimal::add)); list.add(vo); } int pageNo = Integer.parseInt(param.getOrDefault("pageNo", 1).toString()); @@ -230,30 +235,80 @@ public class MainProjectCompleteDetailServiceImpl extends ServiceImpl param) { String deviceUnitIds = MapUtils.getString(param, "deviceUnitIds"); String mainProjectCompletePeriodId = MapUtils.getString(param, "mainProjectCompletePeriodId"); - if (StrUtil.isBlank(deviceUnitIds) || StrUtil.isBlank(mainProjectCompletePeriodId)) { - throw new OpenAlertException("deviceUnitIds和mainProjectCompletePeriodId不能为空"); + Integer levelType = MapUtils.getInteger(param, "levelType"); + if (StrUtil.isBlank(deviceUnitIds) || StrUtil.isBlank(mainProjectCompletePeriodId) || levelType == null) { + throw new OpenAlertException("deviceUnitIds和mainProjectCompletePeriodId和levelType不能为空"); } - MainProjectCompletePeriod p1 = mainProjectCompletePeriodService.getById(mainProjectCompletePeriodId); + MainProjectCompletePeriod completePeriod = mainProjectCompletePeriodService.getById(mainProjectCompletePeriodId); List periodList = mainProjectCompletePeriodService.list(new LambdaQueryWrapper() - .apply("find_in_set(id,{0})", deviceUnitIds).eq(MainProjectCompletePeriod::getYear, p1.getYear()).eq(MainProjectCompletePeriod::getMonth, p1.getMonth()).eq(MainProjectCompletePeriod::getWhichWeek, p1.getWhichWeek())); - List detailList = mainProjectCompleteDetailMapper.selectList(new LambdaQueryWrapper() - .in(MainProjectCompleteDetail::getMainProjectCompletePeriodId, periodList.stream().map(MainProjectCompletePeriod::getId).collect(Collectors.toList()))); + .eq(MainProjectCompletePeriod::getLevelType, levelType) + .eq(MainProjectCompletePeriod::getYear, completePeriod.getYear()) + .eq(MainProjectCompletePeriod::getMonth, completePeriod.getMonth()) + .eq(levelType == 2, MainProjectCompletePeriod::getWhichWeek, completePeriod.getWhichWeek()) + .in(MainProjectCompletePeriod::getDeviceUnitId, StrUtil.split(deviceUnitIds, ",")) + ); + List detailVos = baseMapper.queryAllList(param); + param.put("mainProjectCompletePeriodId", null); + List allDetailVos = baseMapper.queryAllList(param); List nameList = mainProjectCompleteNameService.list(new LambdaQueryWrapper() .eq(MainProjectCompleteName::getProjectSn, periodList.get(0).getProjectSn())); List treeNames = BeanUtil.copyToList(ListUtils.listToTree(JSONArray.parseArray(JSON.toJSONString(nameList)), "id", "parentId", "children"), MainProjectCompleteName.class); + List totalList = mainProjectCompleteTotalService.list(new LambdaQueryWrapper() + .in(MainProjectCompleteTotal::getDeviceUnitId, StrUtil.split(deviceUnitIds, ","))); + List unitList = deviceUnitService.list(new LambdaQueryWrapper() + .in(DeviceUnit::getId, StrUtil.split(deviceUnitIds, ","))); Map>> realMap = new HashMap<>(); List> sheetList = new ArrayList<>(); realMap.put(0, sheetList); try { for (MainProjectCompletePeriod period : periodList) { - Map map = new HashMap<>(); + LinkedHashMap map = new LinkedHashMap<>(); List> listMap = new ArrayList<>(); Integer i = 0; - listTree(treeNames, listMap, i); + this.setMapByListTree(treeNames, listMap, detailVos, allDetailVos, totalList, period, i, levelType); map.put("listMap", listMap); + map.put(SHEET_NAME, unitList.stream().filter(o -> Objects.equals(o.getId(), period.getDeviceUnitId())).findFirst().get().getDeviceUnitName()); + sheetList.add(map); } - - File out = FileUtil.file("C:\\Users\\Administrator\\Desktop\\mm.xlsx"); + //汇总 + int i = 0; + HashMap totalMap = new HashMap<>(); + List> totalListMap = new ArrayList<>(); + totalMap.put("listMap", totalListMap); + totalMap.put(SHEET_NAME, "汇总表"); + for (MainProjectCompleteName name : nameList) { + BigDecimal totalDesignQuantity = new BigDecimal("0"); + BigDecimal completedQuantityThisMonth = new BigDecimal("0"); + BigDecimal cumulativeCompletedQuantityThisYear = new BigDecimal("0"); + BigDecimal cumulativeCompletedQuantity = new BigDecimal("0"); + BigDecimal deliveryThisPeriod = new BigDecimal("0"); + BigDecimal cumulativeArrival = new BigDecimal("0"); + Map mp = new HashMap<>(); + mp.put("projectQuantityName", name.getProjectQuantityName()); + if (Objects.equals(name.getLevel(), 1)) { + mp.put("number", ++i); + } else { + mp.put("number", null); + } + for (Map map : sheetList) { + List> listMap = (List>) map.get("listMap"); + Map m = listMap.stream().filter(o -> Objects.equals(o.get("mainProjectCompleteNameId"), name.getId())).findFirst().get(); + totalDesignQuantity = NumberUtil.add(totalDesignQuantity, Convert.toBigDecimal(m.get("totalDesignQuantity"))); + completedQuantityThisMonth = NumberUtil.add(completedQuantityThisMonth, Convert.toBigDecimal(m.get("completedQuantityThisMonth"))); + cumulativeCompletedQuantityThisYear = NumberUtil.add(cumulativeCompletedQuantityThisYear, Convert.toBigDecimal(m.get("cumulativeCompletedQuantityThisYear"))); + cumulativeCompletedQuantity = NumberUtil.add(cumulativeCompletedQuantity, Convert.toBigDecimal(m.get("cumulativeCompletedQuantity"))); + deliveryThisPeriod = NumberUtil.add(deliveryThisPeriod, Convert.toBigDecimal(m.get("deliveryThisPeriod"))); + cumulativeArrival = NumberUtil.add(cumulativeArrival, Convert.toBigDecimal(m.get("cumulativeArrival"))); + } + mp.put("totalDesignQuantity", totalDesignQuantity); + mp.put("completedQuantityThisMonth", completedQuantityThisMonth); + mp.put("cumulativeCompletedQuantityThisYear", cumulativeCompletedQuantityThisYear); + mp.put("cumulativeCompletedQuantity", cumulativeCompletedQuantity); + mp.put("deliveryThisPeriod", deliveryThisPeriod); + mp.put("cumulativeArrival", cumulativeArrival); + } + sheetList.add(0, totalMap); + File out = FileUtil.file("C:\\Users\\GUO\\Desktop\\mm.xlsx"); // File out = Fileutils.getExportExcelTemplateFile("excel/焊接记录导出模版.xlsx"); TemplateExportParams params = new TemplateExportParams(out.getAbsolutePath()); Workbook workbook = ExcelExportUtil.exportExcelClone(realMap, params); @@ -317,55 +372,58 @@ public class MainProjectCompleteDetailServiceImpl extends ServiceImpl treeNames, List> listMap, Integer i) { - MainProjectCompleteDetailVo vo = new MainProjectCompleteDetailVo(); - String projectQuantityName = vo.getProjectQuantityName(); - Integer level = vo.getLevel(); - Long parentId = vo.getParentId(); - String ancestors = vo.getAncestors(); - List children = vo.getChildren(); - String deviceName = vo.getDeviceName(); - String affiliatedUnitName = vo.getAffiliatedUnitName(); - String reportingPersonName = vo.getReportingPersonName(); - BigDecimal cumulativeCompletedQuantityThisMonth = vo.getCumulativeCompletedQuantityThisMonth(); - BigDecimal cumulativeCompletedQuantityThisYear = vo.getCumulativeCompletedQuantityThisYear(); - BigDecimal cumulativeCompletedQuantity = vo.getCumulativeCompletedQuantity(); - BigDecimal cumulativeArrival = vo.getCumulativeArrival(); - Integer levelType = vo.getLevelType(); - Integer year = vo.getYear(); - Integer month = vo.getMonth(); - Integer whichWeek = vo.getWhichWeek(); - BigDecimal totalDesignQuantity = vo.getTotalDesignQuantity(); - Long id = vo.getId(); - Long deviceUnitId = vo.getDeviceUnitId(); - Long mainProjectCompleteNameId = vo.getMainProjectCompleteNameId(); - Long mainProjectCompletePeriodId = vo.getMainProjectCompletePeriodId(); - String projectSn = vo.getProjectSn(); - Date createDate = vo.getCreateDate(); - Date updateDate = vo.getUpdateDate(); - BigDecimal completedQuantityThisWeek = vo.getCompletedQuantityThisWeek(); - BigDecimal completedQuantityThisMonth = vo.getCompletedQuantityThisMonth(); - BigDecimal deliveryThisPeriod = vo.getDeliveryThisPeriod(); - Integer affiliatedUnit = vo.getAffiliatedUnit(); - Integer reportingPerson = vo.getReportingPerson(); - Long mainProjectCompleteTotalId = vo.getMainProjectCompleteTotalId(); - + private void setMapByListTree(List treeNames, List> listMap, List detailVos, List allDetailVos, List totalList, MainProjectCompletePeriod period, Integer i, Integer levelType) { for (MainProjectCompleteName name : treeNames) { + BigDecimal cumulativeCompletedQuantityThisYear = null; + BigDecimal cumulativeCompletedQuantity = null; + BigDecimal cumulativeArrival = null; + BigDecimal totalDesignQuantity = null; + BigDecimal completedQuantityThisMonth = null; + BigDecimal deliveryThisPeriod = null; + Integer year = period.getYear(); + Integer month = period.getMonth(); + Optional op = detailVos.stream().filter(o -> Objects.equals(o.getMainProjectCompleteNameId(), name.getId()) && Objects.equals(o.getDeviceUnitId(), period.getDeviceUnitId())).findFirst(); + if (op.isPresent()) { + MainProjectCompleteDetailVo vo = op.get(); + completedQuantityThisMonth = vo.getCompletedQuantityThisMonth(); + deliveryThisPeriod = vo.getDeliveryThisPeriod(); + } + Optional op1 = totalList.stream().filter(o -> Objects.equals(o.getMainProjectCompleteNameId(), name.getId()) && Objects.equals(o.getDeviceUnitId(), period.getDeviceUnitId())).findFirst(); + if (op1.isPresent()) { + totalDesignQuantity = op1.get().getTotalDesignQuantity(); + } +// if (Objects.equals(levelType, 2)) { +// vo.setCumulativeCompletedQuantityThisMonth(alls.stream().filter(o -> Objects.equals(o.getYear(), year) && Objects.equals(o.getMonth(), month)).map(MainProjectCompleteDetail::getCompletedQuantityThisWeek).reduce(BigDecimal.ZERO, BigDecimal::add)); +// } + if (Objects.equals(levelType, 2)) { + cumulativeCompletedQuantityThisYear = allDetailVos.stream().filter(o -> Objects.equals(o.getYear(), year)).map(MainProjectCompleteDetail::getCompletedQuantityThisWeek).reduce(BigDecimal.ZERO, BigDecimal::add); + } else { + cumulativeCompletedQuantityThisYear = allDetailVos.stream().filter(o -> Objects.equals(o.getYear(), year)).map(MainProjectCompleteDetail::getCompletedQuantityThisMonth).reduce(BigDecimal.ZERO, BigDecimal::add); + } + if (Objects.equals(levelType, 2)) { + cumulativeCompletedQuantity = allDetailVos.stream().filter(o -> NumberUtil.compare(o.getYear(), year) < 0 && (Objects.equals(o.getYear(), year) && NumberUtil.compare(o.getMonth(), month) < 0)).map(MainProjectCompleteDetail::getCompletedQuantityThisWeek).reduce(BigDecimal.ZERO, BigDecimal::add); + } else { + cumulativeCompletedQuantity = allDetailVos.stream().filter(o -> NumberUtil.compare(o.getYear(), year) < 0 && (Objects.equals(o.getYear(), year) && NumberUtil.compare(o.getMonth(), month) < 0)).map(MainProjectCompleteDetail::getCompletedQuantityThisMonth).reduce(BigDecimal.ZERO, BigDecimal::add); + } + cumulativeArrival = allDetailVos.stream().filter(o -> Objects.equals(o.getYear(), year) && Objects.equals(o.getMonth(), month)).map(MainProjectCompleteDetail::getDeliveryThisPeriod).reduce(BigDecimal.ZERO, BigDecimal::add); + Map mp = new HashMap<>(); if (Objects.equals(name.getLevel(), 1)) { mp.put("number", ++i); } else { mp.put("number", null); } - mp.put("projectQuantityName", projectQuantityName); + mp.put("projectQuantityName", name.getProjectQuantityName()); mp.put("totalDesignQuantity", totalDesignQuantity); mp.put("completedQuantityThisMonth", completedQuantityThisMonth); mp.put("cumulativeCompletedQuantityThisYear", cumulativeCompletedQuantityThisYear); mp.put("cumulativeCompletedQuantity", cumulativeCompletedQuantity); mp.put("deliveryThisPeriod", deliveryThisPeriod); mp.put("cumulativeArrival", cumulativeArrival); + mp.put("mainProjectCompleteNameId", name.getId()); + mp.put("level", name.getLevel()); listMap.add(mp); - listTree(name.getChildren(), listMap, i); + setMapByListTree(name.getChildren(), listMap, detailVos, allDetailVos, totalList, period, i, levelType); } } diff --git a/src/main/java/com/zhgd/xmgl/modules/baotou/service/impl/MainProjectCompleteTotalServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/baotou/service/impl/MainProjectCompleteTotalServiceImpl.java index 6210c8230..580f1b3ae 100644 --- a/src/main/java/com/zhgd/xmgl/modules/baotou/service/impl/MainProjectCompleteTotalServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/baotou/service/impl/MainProjectCompleteTotalServiceImpl.java @@ -1,5 +1,6 @@ package com.zhgd.xmgl.modules.baotou.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -70,7 +71,12 @@ public class MainProjectCompleteTotalServiceImpl extends ServiceImpl() + .eq(MainProjectCompleteTotal::getDeviceUnitId, mainProjectCompleteTotal.getDeviceUnitId()) + .eq(MainProjectCompleteTotal::getMainProjectCompleteNameId, mainProjectCompleteTotal.getMainProjectCompleteNameId()) + ); + if (one != null) { + mainProjectCompleteTotal.setId(one.getId()); edit(mainProjectCompleteTotal); } else { add(mainProjectCompleteTotal); diff --git a/src/main/java/com/zhgd/xmgl/security/WebSecurityConfig.java b/src/main/java/com/zhgd/xmgl/security/WebSecurityConfig.java index 9341cfa2c..926aac85d 100644 --- a/src/main/java/com/zhgd/xmgl/security/WebSecurityConfig.java +++ b/src/main/java/com/zhgd/xmgl/security/WebSecurityConfig.java @@ -80,6 +80,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { http.authorizeRequests() //请求路径允许访问 + .antMatchers("/xmgl/mainProjectCompleteDetail/flow/add").permitAll() .antMatchers("/xmgl/workerAdmission/checkParam").permitAll() .antMatchers("/xmgl/pipelineMaterialInspection/flow/add").permitAll() .antMatchers("/xmgl/pipelinePressureTestBag/flow/add").permitAll()