inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderController.java
@@ -23,6 +23,8 @@ import lombok.AllArgsConstructor; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.List; @@ -179,4 +181,12 @@ public Result<?> labelPrinting(String ids) { return Result.success(insOrderService.labelPrinting(ids)); } @ValueClassify("è´¹ç¨ç»è®¡") @ApiOperation(value = "è´¹ç¨ç»è®¡å¯¼åº") @PostMapping("/export") public void export(@RequestBody Map<String, Object> data,HttpServletResponse response) throws Exception { CostStatisticsDto costStatisticsDto = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), CostStatisticsDto.class); insOrderService.export(costStatisticsDto,response); } } inspect-server/src/main/java/com/yuanchu/mom/dto/CostStatisticsDto.java
@@ -1,5 +1,7 @@ package com.yuanchu.mom.dto; import com.alibaba.excel.annotation.ExcelIgnore; import com.alibaba.excel.annotation.ExcelProperty; import com.baomidou.mybatisplus.annotation.TableField; import com.fasterxml.jackson.annotation.JsonFormat; import com.yuanchu.mom.annotation.ValueTableShow; @@ -14,39 +16,58 @@ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @ValueTableShow(value = 1, name = "ä¸åæ¶é´") @ExcelProperty(value ={"ä¸å¤©ç§ææ£æµä¸å¿æ ·åç»è®°è¡¨","ZTT/QR-30-01-01","æ¥æ"}) private LocalDateTime createTime; @ValueTableShow(value = 2, name = "å§æç¼å·") @ExcelProperty(value ={"ä¸å¤©ç§ææ£æµä¸å¿æ ·åç»è®°è¡¨","ZTT/QR-30-01-01","æ£éªç¼å·"}) private String entrustCode; @ValueTableShow(value = 3, name = "æ ·ååç§°") @ExcelProperty(value ={"ä¸å¤©ç§ææ£æµä¸å¿æ ·åç»è®°è¡¨","æ ·ååç§°"}) private String sample; @ValueTableShow(value = 4, name = "è§æ ¼åå·") @ExcelProperty(value ={"ä¸å¤©ç§ææ£æµä¸å¿æ ·åç»è®°è¡¨","è§æ ¼åå·"}) private String model; @ValueTableShow(value = 5, name = "æ ·åæ°é") @ExcelProperty(value ={"ä¸å¤©ç§ææ£æµä¸å¿æ ·åç»è®°è¡¨","æ ·åæ°é"}) private Integer num; @ValueTableShow(value = 6, name = "æ»ä»·") @ExcelProperty(value ={"ä¸å¤©ç§ææ£æµä¸å¿æ ·åç»è®°è¡¨","æ»ä»·"}) private BigDecimal price; @ValueTableShow(value = 7, name = "è¯éªé¡¹ç®") @ExcelProperty(value ={"ä¸å¤©ç§ææ£æµä¸å¿æ ·åç»è®°è¡¨","è¯éªé¡¹ç®"}) private String inspectionItem; @ValueTableShow(value = 8, name = "å§æåä½") @ExcelProperty(value ={"ä¸å¤©ç§ææ£æµä¸å¿æ ·åç»è®°è¡¨","å§æåä½"}) private String company; @ValueTableShow(value = 9, name = "å§æäºº") @ExcelProperty(value ={"ä¸å¤©ç§ææ£æµä¸å¿æ ·åç»è®°è¡¨","å§æäºº"}) private String name; @ExcelProperty(value ={"ä¸å¤©ç§ææ£æµä¸å¿æ ·åç»è®°è¡¨","ç产åä½"}) private String production; @ExcelProperty(value ={"ä¸å¤©ç§ææ£æµä¸å¿æ ·åç»è®°è¡¨","å·¥ç¨åç§°"}) private String engineering; @ExcelIgnore private Integer createUser; @ExcelIgnore private Integer insSampleId; @ExcelIgnore private Double cost;//å·¥æ¶ @TableField(exist = false,select = false) @ExcelIgnore private String dates; inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderService.java
@@ -6,6 +6,9 @@ import com.yuanchu.mom.dto.*; import com.yuanchu.mom.pojo.InsOrder; import javax.servlet.ServletException; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.List; import java.util.Map; @@ -41,4 +44,6 @@ int updateStatus(Integer id); List<SampleProductDto3> labelPrinting(String ids); void export(CostStatisticsDto costStatisticsDto,HttpServletResponse response)throws IOException, ServletException; } inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java
@@ -2,6 +2,10 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.write.metadata.WriteSheet; import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; @@ -25,6 +29,10 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.servlet.ServletException; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.net.URLEncoder; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; @@ -84,13 +92,13 @@ Integer roleId = user.getRoleId(); //è·åå½å人æå±å®éªå®¤id String departLimsId = user.getDepartLimsId(); String laboratory=null; if (ObjectUtils.isNotEmpty(departLimsId) && !departLimsId.equals("")){ String laboratory = null; if (ObjectUtils.isNotEmpty(departLimsId) && !departLimsId.equals("")) { String[] split = departLimsId.split(","); //æ¥è¯¢å¯¹åºæ¶æåç§°(éä¿¡å®éªå®¤,çµåå®éªå®¤,æ£æµå) String departLims=baseMapper.seldepLimsId(Integer.parseInt(split[split.length - 1])); if (departLims.contains("å®éªå®¤")){ laboratory=departLims; //æ¥è¯¢å¯¹åºæ¶æåç§°(éä¿¡å®éªå®¤,çµåå®éªå®¤,æ£æµå) String departLims = baseMapper.seldepLimsId(Integer.parseInt(split[split.length - 1])); if (departLims.contains("å®éªå®¤")) { laboratory = departLims; } } //夿æ¯å¦æ¯å ¨é¨æé @@ -108,7 +116,7 @@ } } } map.put("body", insOrderMapper.selectInsOrderPage(page, QueryWrappers.queryWrappers(sampleOrderDto),laboratory)); map.put("body", insOrderMapper.selectInsOrderPage(page, QueryWrappers.queryWrappers(sampleOrderDto), laboratory)); return map; } @@ -336,6 +344,8 @@ //夿ç循ç¯é¡¹ç®çæ·»å 忏©åè¯éªé¡¹ç®çæ·»å else if (product.getInspectionItem().equals("ç循ç¯") || product.getInspectionItem().equals("温åè¯éª")) { List<InsProduct> insProductess = new ArrayList<>(); product.setId(null); product.setInsSampleId(sampleId); insProductess.add(product); List<InsProduct> insProductes = new ArrayList<>(); List<InsProduct> insProducts = new ArrayList<>(); @@ -363,8 +373,6 @@ insProduct.setInspectionItemType("0"); insProduct.setInspectionValueType("1"); insProducts.add(insProduct); insProductes.add(insProduct); insProductess.add(insProduct); } //çå¾ªç¯ææå¤æ¬¡å¾ªç¯æ¬¡æ° if (product.getInspectionItem().equals("ç循ç¯")) { @@ -379,20 +387,19 @@ insProductess.add(insProduct1); } } if (count > 1) { //循ç¯è¶ è¿1次 for (int j = 2; j <= count; j++) { for (InsProduct insProduct : insProductes) { InsProduct insProduct1 = new InsProduct(); BeanUtils.copyProperties(insProduct, insProduct1); insProduct1.setInspectionItem(j + "");//å¾ªç¯æ¬¡æ° insProductess.add(insProduct1); } if (count > 1) { //循ç¯è¶ è¿1次 for (int j = 2; j <= count; j++) { for (InsProduct insProduct : insProductes) { InsProduct insProduct1 = new InsProduct(); BeanUtils.copyProperties(insProduct, insProduct1); insProduct1.setInspectionItem(j + "");//å¾ªç¯æ¬¡æ° insProductess.add(insProduct1); } } } insProductService.saveBatch(insProductess); } else { } else { if (!is) { switch (type) { case 1: @@ -473,7 +480,21 @@ map.put("head", PrintChina.printChina(CostStatisticsDto.class)); Map<String, Integer> map1 = getLook.selectPowerByMethodAndUserId("costStatistics"); if (map1.get("look") == 1) costStatisticsDto.setCreateUser(map1.get("userId")); map.put("body",insOrderMapper.selectCostStatistics(page, QueryWrappers.queryWrappers(costStatisticsDto).ge("create_time", split[0]).le("create_time", split[1] + " 23:59:59"))); IPage<CostStatisticsDto> dtoIPage = insOrderMapper.selectCostStatistics(page, QueryWrappers.queryWrappers(costStatisticsDto).ge("create_time", split[0]).le("create_time", split[1] + " 23:59:59")); List<CostStatisticsDto> collect = dtoIPage.getRecords().stream().map(dto -> { Set<String> uniqueTags = new HashSet<>(); if (dto.getInspectionItem().contains(",")) { for (String s : dto.getInspectionItem().split(",")) { uniqueTags.add(s.split("@")[0]); } } else { uniqueTags.add(dto.getInspectionItem().split("@")[0]); } dto.setInspectionItem(uniqueTags.toString()); return dto; }).collect(Collectors.toList()); dtoIPage.setRecords(collect); map.put("body", dtoIPage); return map; } @@ -486,7 +507,7 @@ List<CostStatisticsDto> costStatisticsDtos = insOrderMapper.selectCostStatistics2(QueryWrappers.queryWrappers(costStatisticsDto).ge("create_time", split[0]).le("create_time", split[1] + " 23:59:59")); double totalPrice = costStatisticsDtos.stream() .filter(dto -> dto.getPrice() != null) // è¿æ»¤æä»·æ ¼ä¸º null ç对象 .mapToDouble(value -> value.getPrice().doubleValue()*value.getNum()) .mapToDouble(value -> value.getPrice().doubleValue() * value.getNum()) .sum(); map.put("total", totalPrice); return map; @@ -527,6 +548,45 @@ }).collect(Collectors.toList()); return sampleProductDto3s; } @Override public void export(CostStatisticsDto costStatisticsDto,HttpServletResponse response) throws IOException { //æ¥è¯¢å¯¼åºçè´¹ç¨ç»è®¡æ°æ® String dates = costStatisticsDto.getDates(); String[] split = dates.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(","); costStatisticsDto.setDates(null); List<CostStatisticsDto> costStatisticsDtos = insOrderMapper.selectCostStatistics2(QueryWrappers.queryWrappers(costStatisticsDto).ge("create_time", split[0]).le("create_time", split[1] + " 23:59:59")); costStatisticsDtos = costStatisticsDtos.stream().map(dto -> { Set<String> uniqueTags = new HashSet<>(); if (dto.getInspectionItem().contains(",")) { for (String s : dto.getInspectionItem().split(",")) { uniqueTags.add(s.split("@")[0]); } } else { uniqueTags.add(dto.getInspectionItem().split("@")[0]); } dto.setInspectionItem(uniqueTags.toString()); return dto; }).collect(Collectors.toList()); response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding("UTF-8"); // è¿éURLEncoder.encodeå¯ä»¥é²æ¢ä¸æä¹±ç å½ç¶åeasyexcel没æå ³ç³» String fileName = URLEncoder.encode("æ ·åè´¹ç¨ç»è®¡å¯¼åº", "UTF-8"); response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx"); try { // æ°å»ºExcelWriter ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build(); WriteSheet mainSheet = EasyExcel.writerSheet( "æ ·åè´¹ç¨ç»è®¡å¯¼åº").head(CostStatisticsDto.class).build(); excelWriter.write(costStatisticsDtos, mainSheet); // å ³éæµ excelWriter.finish(); } catch (IOException e) { throw new RuntimeException("导åºå¤±è´¥"); } } } inspect-server/src/main/resources/mapper/InsOrderMapper.xml
@@ -206,7 +206,7 @@ GROUP_CONCAT(b.inspection_item2 SEPARATOR ',') inspection_item from (select * , GROUP_CONCAT(CONCAT(inspection_item,'',inspection_item_subclass) SEPARATOR ',')inspection_item2 from ins_product where state = 1 and template_id IS NOT NULL GROUP BY ins_sample_id,man_hour_group) b GROUP GROUP_CONCAT(CONCAT(inspection_item,'@',inspection_item_subclass) SEPARATOR ',')inspection_item2 from ins_product where state = 1 and template_id IS NOT NULL GROUP BY ins_sample_id,man_hour_group) b GROUP BY b.ins_sample_id) c ON c.ins_sample_id = isa.id where (i.state = 1 or i.state = 3 or i.state = 4) and c.ins_sample_id IS not NULL)A GROUP BY @@ -390,6 +390,8 @@ A.inspection_item, A.company, A.`name`, production, engineering, COUNT(1) num, SUM(A.price) price, SUM(A.cost) cost @@ -407,7 +409,9 @@ cus.company, u.`name`, i.create_user, c.ins_sample_id c.ins_sample_id, production, engineering FROM ins_order i LEFT JOIN ins_sample isa ON isa.ins_order_id = i.id @@ -428,7 +432,9 @@ A.model, A.inspection_item, A.company, A.`name` A.`name`, production, engineering ORDER BY A.id, A.entrust_code, @@ -437,7 +443,9 @@ A.model, A.inspection_item, A.company, A.`name`) B A.`name`, production, engineering) B <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''"> ${ew.customSqlSegment} </if> performance-server/src/main/java/com/yuanchu/mom/controller/AuxiliaryWorkingHoursDayController.java
@@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yuanchu.mom.annotation.ValueClassify; import com.yuanchu.mom.dto.AuxiliaryWorkingHoursDayDto; import com.yuanchu.mom.dto.HoursDay; import com.yuanchu.mom.pojo.AuxiliaryWorkingHours; import com.yuanchu.mom.pojo.AuxiliaryWorkingHoursDay; import com.yuanchu.mom.service.AuxiliaryWorkingHoursDayService; @@ -20,6 +21,7 @@ import javax.annotation.Resource; import java.time.LocalDateTime; import java.util.List; import java.util.Map; /** @@ -72,15 +74,15 @@ @ValueClassify("å·¥æ¶ç®¡ç") @ApiOperation(value = "æ¹åå·¥æ¶ç»è®¡çè¾ å©å·¥æ¶") @PostMapping("/approve") public Result approve(@RequestBody AuxiliaryWorkingHoursDay auxiliaryWorkingHoursDay) { return Result.success(auxiliaryWorkingHoursDayService.checkOrApprove(auxiliaryWorkingHoursDay)); public Result approve(@RequestBody HoursDay hoursDay ) { return Result.success(auxiliaryWorkingHoursDayService.checkOrApprove(hoursDay)); } @ValueClassify("å·¥æ¶ç®¡ç") @ApiOperation(value = "å®¡æ ¸å·¥æ¶ç»è®¡çè¾ å©å·¥æ¶") @PostMapping("/check") public Result check(@RequestBody AuxiliaryWorkingHoursDay auxiliaryWorkingHoursDay ) { return Result.success(auxiliaryWorkingHoursDayService.checkOrApprove(auxiliaryWorkingHoursDay)); public Result check(@RequestBody HoursDay hoursDay ) { return Result.success(auxiliaryWorkingHoursDayService.checkOrApprove(hoursDay)); } @ValueClassify("å·¥æ¶ç®¡ç") performance-server/src/main/java/com/yuanchu/mom/dto/AuxiliaryOriginalHoursDto.java
@@ -5,6 +5,7 @@ import com.yuanchu.mom.annotation.ValueTableShow; import com.yuanchu.mom.pojo.AuxiliaryCorrectionHours; import io.swagger.annotations.ApiModelProperty; import lombok.Builder; import lombok.Data; import java.text.DecimalFormat; performance-server/src/main/java/com/yuanchu/mom/dto/HoursDay.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,12 @@ package com.yuanchu.mom.dto; import com.yuanchu.mom.pojo.AuxiliaryWorkingHoursDay; import lombok.Data; import java.util.List; @Data public class HoursDay { private List<AuxiliaryWorkingHoursDay> auxiliaryWorkingHoursDays; } performance-server/src/main/java/com/yuanchu/mom/service/AuxiliaryWorkingHoursDayService.java
@@ -2,11 +2,13 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yuanchu.mom.dto.AuxiliaryWorkingHoursDayDto; import com.yuanchu.mom.dto.HoursDay; import com.yuanchu.mom.pojo.AuxiliaryWorkingHours; import com.yuanchu.mom.pojo.AuxiliaryWorkingHoursDay; import com.baomidou.mybatisplus.extension.service.IService; import java.time.LocalDateTime; import java.util.List; import java.util.Map; /** @@ -25,7 +27,7 @@ AuxiliaryWorkingHoursDay selectAuxiliaryWorkingHoursByNumber(String number); int checkOrApprove(AuxiliaryWorkingHoursDay auxiliaryWorkingHoursDay); boolean checkOrApprove(HoursDay hoursDay); int updateAuxiliaryWorkingHoursDay(AuxiliaryWorkingHoursDay auxiliaryWorkingHoursDay); performance-server/src/main/java/com/yuanchu/mom/service/impl/AuxiliaryOriginalHoursServiceImpl.java
@@ -19,6 +19,7 @@ import com.yuanchu.mom.pojo.User; import com.yuanchu.mom.service.AuxiliaryOriginalHoursService; import com.yuanchu.mom.utils.QueryWrappers; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -26,10 +27,7 @@ import java.io.IOException; import java.net.URLEncoder; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.*; import java.util.stream.Collectors; @Service @@ -110,19 +108,95 @@ originalHoursDtoIPage.setSize(page.getSize()); originalHoursDtoIPage.setCurrent(page.getCurrent()); List<AuxiliaryOriginalHoursDto> auxiliaryOriginalHoursDtos = new ArrayList<>(); Map<String, AuxiliaryOriginalHoursDto> data1 = new HashMap<>(); Map<String, AuxiliaryOriginalHoursDto> data2 = new HashMap<>(); //产éå·¥æ¶ List<Map<String, Object>> maps = auxiliaryOutputWorkingHoursMapper.totalHours(auxiliaryOriginalHoursLookDto.getMonth(), ids); if (ObjectUtils.isNotEmpty(maps)) { auxiliaryOriginalHoursDtos.addAll(getData(maps, "产éå·¥æ¶").values()); data1 = getData(maps, "产éå·¥æ¶"); auxiliaryOriginalHoursDtos.addAll(data1.values()); } //è¾ å©å·¥æ¶ List<Map<String, Object>> maps1 = auxiliaryWorkingHoursDayMapper.totalHours(auxiliaryOriginalHoursLookDto.getMonth(), ids); if (ObjectUtils.isNotEmpty(maps1)) { auxiliaryOriginalHoursDtos.addAll(getData(maps1, "è¾ å©å·¥æ¶").values()); data2 = getData(maps1, "è¾ å©å·¥æ¶"); auxiliaryOriginalHoursDtos.addAll(data2.values()); } //å çå·¥æ¶ //æ»å·¥æ¶ List<Map<String, Object>> maps2 = auxiliaryOriginalHoursMapper.totalHours(auxiliaryOriginalHoursLookDto.getMonth(), ids); //æ»å·¥æ¶=产éå·¥æ¶+è¾ å©å·¥æ¶+å çå·¥æ¶ Map<String, AuxiliaryOriginalHoursDto> data4 = new HashMap<String, AuxiliaryOriginalHoursDto>(); Map<String, AuxiliaryOriginalHoursDto> data3 = data1; if (data1.size()>0) { if (data2.size() > 0) { for (Map.Entry<String, AuxiliaryOriginalHoursDto> entry : data2.entrySet()) { String key = entry.getKey(); AuxiliaryOriginalHoursDto value = entry.getValue(); if (data3.containsKey(key)) { for (Map.Entry<String, AuxiliaryOriginalHoursDto> dtoEntry : data3.entrySet()) { if (dtoEntry.getKey().equals(key)) { AuxiliaryOriginalHoursDto auxiliaryOriginalHoursDto = new AuxiliaryOriginalHoursDto(); AuxiliaryOriginalHoursDto hoursDto = data3.get(key); BeanUtils.copyProperties(hoursDto, auxiliaryOriginalHoursDto); auxiliaryOriginalHoursDto.setType("æ»å·¥æ¶"); auxiliaryOriginalHoursDto.setOneHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getOneHours()) ? auxiliaryOriginalHoursDto.getOneHours() : 0) + (ObjectUtils.isNotEmpty(value.getOneHours()) ? value.getOneHours() : 0)); auxiliaryOriginalHoursDto.setTwoHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwoHours()) ? auxiliaryOriginalHoursDto.getTwoHours() : 0) + (ObjectUtils.isNotEmpty(value.getTwoHours()) ? value.getTwoHours() : 0)); auxiliaryOriginalHoursDto.setThreeHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getThreeHours()) ? auxiliaryOriginalHoursDto.getThreeHours() : 0) + (ObjectUtils.isNotEmpty(value.getThreeHours()) ? value.getThreeHours() : 0)); auxiliaryOriginalHoursDto.setFourHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getFourHours()) ? auxiliaryOriginalHoursDto.getFourHours() : 0) + (ObjectUtils.isNotEmpty(value.getFourHours()) ? value.getFourHours() : 0)); auxiliaryOriginalHoursDto.setFiveHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getFiveHours()) ? auxiliaryOriginalHoursDto.getFiveHours() : 0) + (ObjectUtils.isNotEmpty(value.getFiveHours()) ? value.getFiveHours() : 0)); auxiliaryOriginalHoursDto.setSixHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getSixHours()) ? auxiliaryOriginalHoursDto.getSixHours() : 0) + (ObjectUtils.isNotEmpty(value.getSixHours()) ? value.getSixHours() : 0)); auxiliaryOriginalHoursDto.setSevenHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getSevenHours()) ? auxiliaryOriginalHoursDto.getSevenHours() : 0) + (ObjectUtils.isNotEmpty(value.getSevenHours()) ? value.getSevenHours() : 0)); auxiliaryOriginalHoursDto.setEightHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getEightHours()) ? auxiliaryOriginalHoursDto.getEightHours() : 0) + (ObjectUtils.isNotEmpty(value.getEightHours()) ? value.getEightHours() : 0)); auxiliaryOriginalHoursDto.setNineHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getNineHours()) ? auxiliaryOriginalHoursDto.getNineHours() : 0) + (ObjectUtils.isNotEmpty(value.getNineHours()) ? value.getNineHours() : 0)); auxiliaryOriginalHoursDto.setTenHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTenHours()) ? auxiliaryOriginalHoursDto.getTenHours() : 0) + (ObjectUtils.isNotEmpty(value.getTenHours()) ? value.getTenHours() : 0)); auxiliaryOriginalHoursDto.setElevenHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getElevenHours()) ? auxiliaryOriginalHoursDto.getElevenHours() : 0) + (ObjectUtils.isNotEmpty(value.getElevenHours()) ? value.getElevenHours() : 0)); auxiliaryOriginalHoursDto.setTwelveHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwelveHours()) ? auxiliaryOriginalHoursDto.getTwelveHours() : 0) + (ObjectUtils.isNotEmpty(value.getTwelveHours()) ? value.getTwelveHours() : 0)); auxiliaryOriginalHoursDto.setThirteenHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getThirteenHours()) ? auxiliaryOriginalHoursDto.getThirteenHours() : 0) + (ObjectUtils.isNotEmpty(value.getThirteenHours()) ? value.getThirteenHours() : 0)); auxiliaryOriginalHoursDto.setFourteenHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getFourteenHours()) ? auxiliaryOriginalHoursDto.getFourteenHours() : 0) + (ObjectUtils.isNotEmpty(value.getFourteenHours()) ? value.getFourteenHours() : 0)); auxiliaryOriginalHoursDto.setFifteenHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getFifteenHours()) ? auxiliaryOriginalHoursDto.getFifteenHours() : 0) + (ObjectUtils.isNotEmpty(value.getFifteenHours()) ? value.getFifteenHours() : 0)); auxiliaryOriginalHoursDto.setSixteenHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getSixteenHours()) ? auxiliaryOriginalHoursDto.getSixteenHours() : 0) + (ObjectUtils.isNotEmpty(value.getSixteenHours()) ? value.getSixteenHours() : 0)); auxiliaryOriginalHoursDto.setSeventeenHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getSeventeenHours()) ? auxiliaryOriginalHoursDto.getSeventeenHours() : 0) + (ObjectUtils.isNotEmpty(value.getSeventeenHours()) ? value.getSeventeenHours() : 0)); auxiliaryOriginalHoursDto.setEighteenHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getEighteenHours()) ? auxiliaryOriginalHoursDto.getEighteenHours() : 0) + (ObjectUtils.isNotEmpty(value.getEighteenHours()) ? value.getEighteenHours() : 0)); auxiliaryOriginalHoursDto.setNineteenHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getNineteenHours()) ? auxiliaryOriginalHoursDto.getNineteenHours() : 0) + (ObjectUtils.isNotEmpty(value.getNineteenHours()) ? value.getNineteenHours() : 0)); auxiliaryOriginalHoursDto.setTwelveHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwelveHours()) ? auxiliaryOriginalHoursDto.getTwelveHours() : 0) + (ObjectUtils.isNotEmpty(value.getTwelveHours()) ? value.getTwelveHours() : 0)); auxiliaryOriginalHoursDto.setTwentyOneHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentyOneHours()) ? auxiliaryOriginalHoursDto.getTwentyOneHours() : 0) + (ObjectUtils.isNotEmpty(value.getTwentyOneHours()) ? value.getTwentyOneHours() : 0)); auxiliaryOriginalHoursDto.setTwentyTwoHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentyTwoHours()) ? auxiliaryOriginalHoursDto.getTwentyTwoHours() : 0) + (ObjectUtils.isNotEmpty(value.getTwentyTwoHours()) ? value.getTwentyTwoHours() : 0)); auxiliaryOriginalHoursDto.setTwentyThreeHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentyThreeHours()) ? auxiliaryOriginalHoursDto.getTwentyThreeHours() : 0) + (ObjectUtils.isNotEmpty(value.getTwentyThreeHours()) ? value.getTwentyThreeHours() : 0)); auxiliaryOriginalHoursDto.setTwentyFourHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentyFourHours()) ? auxiliaryOriginalHoursDto.getTwentyFourHours() : 0) + (ObjectUtils.isNotEmpty(value.getTwentyFourHours()) ? value.getTwentyFourHours() : 0)); auxiliaryOriginalHoursDto.setTwentyFiveHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentyFiveHours()) ? auxiliaryOriginalHoursDto.getTwentyFiveHours() : 0) + (ObjectUtils.isNotEmpty(value.getTwentyFiveHours()) ? value.getTwentyFiveHours() : 0)); auxiliaryOriginalHoursDto.setTwentySixHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentySixHours()) ? auxiliaryOriginalHoursDto.getTwentySixHours() : 0) + (ObjectUtils.isNotEmpty(value.getTwentySixHours()) ? value.getTwentySixHours() : 0)); auxiliaryOriginalHoursDto.setTwentySevenHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentySevenHours()) ? auxiliaryOriginalHoursDto.getTwentySevenHours() : 0) + (ObjectUtils.isNotEmpty(value.getTwentySevenHours()) ? value.getTwentySevenHours() : 0)); auxiliaryOriginalHoursDto.setTwentyEightHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentyEightHours()) ? auxiliaryOriginalHoursDto.getTwentyEightHours() : 0) + (ObjectUtils.isNotEmpty(value.getTwentyEightHours()) ? value.getTwentyEightHours() : 0)); auxiliaryOriginalHoursDto.setTwentyNineHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentyNineHours()) ? auxiliaryOriginalHoursDto.getTwentyNineHours() : 0) + (ObjectUtils.isNotEmpty(value.getTwentyNineHours()) ? value.getTwentyNineHours() : 0)); auxiliaryOriginalHoursDto.setThirtyHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getThirtyHours()) ? auxiliaryOriginalHoursDto.getThirtyHours() : 0) + (ObjectUtils.isNotEmpty(value.getThirtyHours()) ? value.getThirtyHours() : 0)); auxiliaryOriginalHoursDto.setThirtyOneHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getThirtyOneHours()) ? auxiliaryOriginalHoursDto.getThirtyOneHours() : 0) + (ObjectUtils.isNotEmpty(value.getThirtyOneHours()) ? value.getThirtyOneHours() : 0)); auxiliaryOriginalHoursDto.setTotal((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTotal()) ? auxiliaryOriginalHoursDto.getTotal() : 0) + (ObjectUtils.isNotEmpty(value.getTotal()) ? value.getTotal() : 0)); data4.put(key, auxiliaryOriginalHoursDto); } else { AuxiliaryOriginalHoursDto hoursDto = data3.get(dtoEntry.getKey()); AuxiliaryOriginalHoursDto dto = new AuxiliaryOriginalHoursDto(); BeanUtils.copyProperties(hoursDto, dto); dto.setType("æ»å·¥æ¶"); data4.put(dtoEntry.getKey(), dto); } } } else { value.setType("æ»å·¥æ¶"); data4.put(key, value); } } } else { for (Map.Entry<String, AuxiliaryOriginalHoursDto> entry : data3.entrySet()) { AuxiliaryOriginalHoursDto dto = entry.getValue(); AuxiliaryOriginalHoursDto originalHoursDto = new AuxiliaryOriginalHoursDto(); BeanUtils.copyProperties(dto, originalHoursDto); originalHoursDto.setType("æ»å·¥æ¶"); data4.put(entry.getKey(), originalHoursDto); } } auxiliaryOriginalHoursDtos.addAll(data4.values()); } /*List<Map<String, Object>> maps2 = auxiliaryOriginalHoursMapper.totalHours(auxiliaryOriginalHoursLookDto.getMonth(), ids); if (ObjectUtils.isNotEmpty(maps2)) { //产éå·¥æ¶+è¾ å©å·¥æ¶é½ä¸ä¸ºç©º auxiliaryOriginalHoursDtos.addAll(getData(maps2, "æ»å·¥æ¶").values()); @@ -132,8 +206,37 @@ auxiliaryOriginalHoursDtos.addAll(getData(maps1, "æ»å·¥æ¶").values()); } else if (ObjectUtils.isNotEmpty(maps)) { auxiliaryOriginalHoursDtos.addAll(getData(maps, "æ»å·¥æ¶").values()); }*/ auxiliaryOriginalHoursDtos = auxiliaryOriginalHoursDtos.stream().sorted(Comparator.comparing(AuxiliaryOriginalHoursDto::getName)).collect(Collectors.toList()); // æ£æ¥æ¯ä¸ªäººçå·¥æ¶ç±»åï¼è¡¥å ¨ç¼ºå°çå·¥æ¶ Map<String, Set<String>> workHoursMap = new HashMap<>(); String[] requiredHours = {"产éå·¥æ¶", "è¾ å©å·¥æ¶", "å çå·¥æ¶", "æ»å·¥æ¶"}; for (AuxiliaryOriginalHoursDto dto : auxiliaryOriginalHoursDtos) { workHoursMap.computeIfAbsent(dto.getName(), k -> new HashSet<>()).add(dto.getType()); } originalHoursDtoIPage.setRecords(auxiliaryOriginalHoursDtos); List<AuxiliaryOriginalHoursDto> result = auxiliaryOriginalHoursDtos; for (String name1 : workHoursMap.keySet()) { Set<String> workTypes = workHoursMap.get(name1); for (String requiredHour : requiredHours) { if (!workTypes.contains(requiredHour)) { AuxiliaryOriginalHoursDto auxiliaryOriginalHoursDto = new AuxiliaryOriginalHoursDto(); auxiliaryOriginalHoursDto.setName(name1); auxiliaryOriginalHoursDto.setAuxiliaryCorrectionHours(null); auxiliaryOriginalHoursDto.setType(requiredHour); auxiliaryOriginalHoursDto.setMonth(auxiliaryOriginalHoursLookDto.getMonth()); result.add(auxiliaryOriginalHoursDto); } } } List<String> order = Arrays.asList("产éå·¥æ¶", "è¾ å©å·¥æ¶", "å çå·¥æ¶", "æ»å·¥æ¶"); Comparator<AuxiliaryOriginalHoursDto> comparator = Comparator.comparingInt(dto -> { String type = dto.getType(); return order.indexOf(type) == -1 ? order.size() : order.indexOf(type); }); result = result.stream().sorted(Comparator.comparing(AuxiliaryOriginalHoursDto::getName).thenComparing(comparator)).collect(Collectors.toList()); originalHoursDtoIPage.setRecords(result); originalHoursDtoIPage.setTotal(result.size()); map.put("body", originalHoursDtoIPage); return map; } @@ -192,7 +295,6 @@ .eq(AuxiliaryCorrectionHours::getType, auxiliaryOriginalHoursDto.getType()) .eq(AuxiliaryCorrectionHours::getMonth, auxiliaryOriginalHoursDto.getMonth())); auxiliaryOriginalHoursDto.setAuxiliaryCorrectionHours(auxiliaryCorrectionHours); dtoMap.put(name, auxiliaryOriginalHoursDto); } AuxiliaryCorrectionHours auxiliaryCorrectionHours = auxiliaryOriginalHoursDto.getAuxiliaryCorrectionHours(); switch (objectMap.get("month").toString().substring(8, 10)) { @@ -479,6 +581,8 @@ ); DecimalFormat df = new DecimalFormat("#.####"); // 设å®åä½å°æ° auxiliaryOriginalHoursDto.setTotal(Double.parseDouble(df.format(auxiliaryOriginalHoursDto.getTotal()))); dtoMap.put(name, auxiliaryOriginalHoursDto); } return dtoMap; } performance-server/src/main/java/com/yuanchu/mom/service/impl/AuxiliaryOutputWorkingHoursServiceImpl.java
@@ -213,7 +213,7 @@ map.put("产éå·¥æ¶æ±æ»", sumOutputWorkTime); if (ObjectUtils.isNotEmpty(auxiliaryWorkingHoursDays)) { for (AuxiliaryWorkingHoursDay auxiliaryWorkingHoursDay : auxiliaryWorkingHoursDays) { sumApprovedWorkingHour += auxiliaryWorkingHoursDay.getNonproductiveTime(); sumApprovedWorkingHour += auxiliaryWorkingHoursDay.getReviewerNonproductiveTime();//夿 ¸å·¥æ¶ } } map.put("è¾ å©å·¥æ¶æ±æ»", sumApprovedWorkingHour); performance-server/src/main/java/com/yuanchu/mom/service/impl/AuxiliaryWorkingHoursDayServiceImpl.java
@@ -7,6 +7,7 @@ import com.yuanchu.mom.common.GetLook; import com.yuanchu.mom.common.PrintChina; import com.yuanchu.mom.dto.AuxiliaryWorkingHoursDayDto; import com.yuanchu.mom.dto.HoursDay; import com.yuanchu.mom.exception.ErrorException; import com.yuanchu.mom.mapper.*; import com.yuanchu.mom.pojo.*; @@ -87,8 +88,8 @@ ids.addAll(users.stream().map(User::getId).distinct().collect(Collectors.toList())); } } if (ids.size()==0){ ids=null; if (ids.size() == 0) { ids = null; } if (ObjectUtils.isNotEmpty(dates) && ObjectUtils.isNotEmpty(week)) { String[] split = dates.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(","); @@ -98,7 +99,7 @@ .ge("date_time", split[0]).le("date_time", split[1] + " 23:59:59") .ge("week", weeks[0]).le("week", weeks[1]), ids); for (AuxiliaryWorkingHoursDayDto record : auxiliaryWorkingHoursDayDtoIPage.getRecords()) { record.setDateTime(record.getDateTime().substring(0,10)); record.setDateTime(record.getDateTime().substring(0, 10)); } map.put("body", auxiliaryWorkingHoursDayDtoIPage); } else if (ObjectUtils.isNotEmpty(dates) && ObjectUtils.isEmpty(week)) { @@ -107,22 +108,22 @@ QueryWrappers.queryWrappers(auxiliaryWorkingHoursDayDto) .ge("date_time", split[0]).le("date_time", split[1] + " 23:59:59"), ids); for (AuxiliaryWorkingHoursDayDto record : auxiliaryWorkingHoursDayDtoIPage.getRecords()) { record.setDateTime(record.getDateTime().substring(0,10)); record.setDateTime(record.getDateTime().substring(0, 10)); } map.put("body",auxiliaryWorkingHoursDayDtoIPage ); map.put("body", auxiliaryWorkingHoursDayDtoIPage); } else if (ObjectUtils.isEmpty(dates) && ObjectUtils.isNotEmpty(week)) { String[] weeks = week.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(","); IPage<AuxiliaryWorkingHoursDayDto> auxiliaryWorkingHoursDayDtoIPage = auxiliaryWorkingHoursDayMapper.selectAuxiliaryWorkingHoursDay(page, QueryWrappers.queryWrappers(auxiliaryWorkingHoursDayDto) .ge("week", weeks[0]).le("week", weeks[1]), ids); for (AuxiliaryWorkingHoursDayDto record : auxiliaryWorkingHoursDayDtoIPage.getRecords()) { record.setDateTime(record.getDateTime().substring(0,10)); record.setDateTime(record.getDateTime().substring(0, 10)); } map.put("body", auxiliaryWorkingHoursDayDtoIPage); } else { IPage<AuxiliaryWorkingHoursDayDto> auxiliaryWorkingHoursDayDtoIPage = auxiliaryWorkingHoursDayMapper.selectAuxiliaryWorkingHoursDay(page, QueryWrappers.queryWrappers(auxiliaryWorkingHoursDayDto), ids); for (AuxiliaryWorkingHoursDayDto record : auxiliaryWorkingHoursDayDtoIPage.getRecords()) { record.setDateTime(record.getDateTime().substring(0,10)); record.setDateTime(record.getDateTime().substring(0, 10)); } map.put("body", auxiliaryWorkingHoursDayDtoIPage); } @@ -153,12 +154,20 @@ //å®¡æ ¸/æ¹å @Override public int checkOrApprove(AuxiliaryWorkingHoursDay auxiliaryWorkingHoursDay) { if (auxiliaryWorkingHoursDay.getState().equals("å·²å®¡æ ¸")) { Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId"); auxiliaryWorkingHoursDay.setReviewer(userMapper.selectById(userId).getName()); public boolean checkOrApprove(HoursDay hoursDay) { List<AuxiliaryWorkingHoursDay> auxiliaryWorkingHoursDays = hoursDay.getAuxiliaryWorkingHoursDays(); for (AuxiliaryWorkingHoursDay auxiliaryWorkingHoursDay : auxiliaryWorkingHoursDays) { if (auxiliaryWorkingHoursDay.getState().equals("å·²å®¡æ ¸")) { Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId"); auxiliaryWorkingHoursDay.setReviewer(userMapper.selectById(userId).getName()); } if (auxiliaryWorkingHoursDay.getReviewerNumber() == null) { auxiliaryWorkingHoursDay.setReviewerNumber(auxiliaryWorkingHoursDay.getAmount());//夿 ¸æ°é auxiliaryWorkingHoursDay.setReviewerNonproductiveTime(auxiliaryWorkingHoursDay.getNonproductiveTime());//夿 ¸å·¥æ¶ } } return auxiliaryWorkingHoursDayMapper.updateById(auxiliaryWorkingHoursDay); return updateBatchById(auxiliaryWorkingHoursDays); } //ç¼è¾ performance-server/src/main/resources/mapper/AuxiliaryOriginalHoursMapper.xml
@@ -2,7 +2,7 @@ <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <mapper namespace="com.yuanchu.mom.mapper.AuxiliaryOriginalHoursMapper"> <select id="totalHours" resultType="java.util.Map"> select E.name, E.month, E.total select E.name, E.month, E.total manHours from (select C.name, C.month, C.manHours + D.manHours as total from (select A.name, A.month,