From 2c4ea94474ce8f9eb48b71fb9960a7da45320282 Mon Sep 17 00:00:00 2001 From: k94314517 <8417338+k94314517@user.noreply.gitee.com> Date: 星期二, 06 五月 2025 13:58:46 +0800 Subject: [PATCH] 代码初始化 --- server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/GeneralDataVO.java | 6 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/HiddenDangerCompanyVO.java | 22 + server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/InParkUserDataVO.java | 35 ++ server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/InoutRecordServiceImpl.java | 379 +++++++++++++++++++++++++++++++ server/visits/dmvisit_service/src/main/java/com/doumee/dao/admin/response/PCWorkPlatformDataVO.java | 3 server/system_service/src/main/java/com/doumee/core/annotation/excel/ExcelExporter.java | 70 +++++ server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformCloudController.java | 1 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java | 28 +- server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java | 9 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/InoutRecordCloudController.java | 39 +++ server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/InoutRecordMapper.java | 3 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java | 32 ++ server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarsServiceImpl.java | 15 + server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/InParkDataDTO.java | 26 ++ server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java | 39 ++ server/visits/dmvisit_service/src/main/java/com/doumee/service/business/InoutRecordService.java | 12 + 16 files changed, 696 insertions(+), 23 deletions(-) diff --git a/server/system_service/src/main/java/com/doumee/core/annotation/excel/ExcelExporter.java b/server/system_service/src/main/java/com/doumee/core/annotation/excel/ExcelExporter.java index 670f20c..0b02a91 100644 --- a/server/system_service/src/main/java/com/doumee/core/annotation/excel/ExcelExporter.java +++ b/server/system_service/src/main/java/com/doumee/core/annotation/excel/ExcelExporter.java @@ -2,6 +2,7 @@ import com.doumee.core.constants.ResponseStatus; import com.doumee.core.exception.BusinessException; +import com.doumee.core.utils.Constants; import lombok.AllArgsConstructor; import lombok.Data; import org.apache.poi.ss.usermodel.*; @@ -359,7 +360,7 @@ /** * 閰嶇疆鍗曞厓鏍艰竟妗� */ - private void configCellBorder (CellStyle style) { + private static void configCellBorder(CellStyle style) { style.setBorderTop(BorderStyle.THIN); style.setBorderRight(BorderStyle.THIN); style.setBorderBottom(BorderStyle.THIN); @@ -428,4 +429,71 @@ private Field field; } + /** + * 瀵煎嚭鍒版寚瀹氳緭鍑烘祦 + * @param os 杈撳嚭娴� + */ + public static void exportList (List<List<String>> dataList ,String sheetName, OutputStream os) { + SXSSFWorkbook sxssfWorkbook; + try { + sxssfWorkbook = new SXSSFWorkbook(); + Sheet sheet = sxssfWorkbook.createSheet(sheetName); + // 鍒涘缓鍒楀ご + sheet.createFreezePane(0, 1); + Row header = sheet.createRow(0); + CellStyle hstyle = configHeaderCellStatic(sxssfWorkbook); + for (int i = 0; i < dataList.size(); i++) { + Cell cell = header.createCell(i); + cell.setCellValue(dataList.get(i).get(Constants.ZERO)); + // 鍒楀璁剧疆 + sheet.setColumnWidth(i, dataList.get(i).get(Constants.ZERO).length() * 2 * 256); + // 璁剧疆鍒楀ご鍗曞厓鏍� + cell.setCellStyle(hstyle); + } + + //鎬昏鏁� + Integer rowSize = dataList.get(Constants.ZERO).size(); + //鎬诲垪鏁� + Integer columnSize = dataList.size(); + for (int i = 1; i < rowSize; i++) { + Row row = sheet.createRow(i); + for (int j = 0; j < columnSize; j++) { + Cell cell = row.createCell(j); + cell.setCellValue(dataList.get(j).get(i)); + } + } + sxssfWorkbook.write(os); + os.close(); + } catch (Exception e) { + throw new BusinessException(ResponseStatus.EXPORT_EXCEL_ERROR, e); + } finally { + if (os != null) { + try { + os.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } + + private static CellStyle configHeaderCellStatic (SXSSFWorkbook workbook) { + CellStyle style = workbook.createCellStyle(); + style.setAlignment(HorizontalAlignment.CENTER); + style.setVerticalAlignment(VerticalAlignment.CENTER); + // 璁剧疆鑳屾櫙 + style.setFillPattern(FillPatternType.SOLID_FOREGROUND); + style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex()); + // 瀛椾綋 + Font font = workbook.createFont(); + font.setFontHeightInPoints((short) 12); + style.setFont(font); + // 璁剧疆杈规 + configCellBorder(style); + return style; + } + + + + } diff --git a/server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java b/server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java index 4e27a08..cc3026f 100644 --- a/server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java +++ b/server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java @@ -3602,4 +3602,13 @@ gc.setTime(date); return gc.get(2) + 1; } + + public static int getNowDayNum(){ + // 鑾峰彇Calendar瀹炰緥 + Calendar calendar = Calendar.getInstance(); + return calendar.get(Calendar.DAY_OF_MONTH); + } + + + } \ No newline at end of file diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/InoutRecordCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/InoutRecordCloudController.java index 4cd362a..91bb15c 100644 --- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/InoutRecordCloudController.java +++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/InoutRecordCloudController.java @@ -5,7 +5,10 @@ import com.doumee.core.annotation.excel.ExcelExporter; import com.doumee.core.annotation.pr.PreventRepeat; import com.doumee.core.utils.Constants; +import com.doumee.dao.business.dto.InParkDataDTO; import com.doumee.dao.business.model.InoutRecord; +import com.doumee.dao.business.vo.GeneralDataVO; +import com.doumee.dao.business.vo.InParkUserDataVO; import com.doumee.service.business.InoutRecordService; import com.doumee.service.business.third.model.ApiResponse; import com.doumee.service.business.third.model.PageData; @@ -88,4 +91,40 @@ public ApiResponse findById(@PathVariable Integer id) { return ApiResponse.success(inoutRecordService.findById(id)); } + + @ApiOperation("鍩虹鏁版嵁") + @PostMapping("/getInParkUserData") +// @CloudRequiredPermission("business:inoutrecord:query") + public ApiResponse<InParkUserDataVO> getInParkUserData (@RequestBody InParkDataDTO inParkDataDTO) { + return ApiResponse.success(inoutRecordService.getInParkUserData(inParkDataDTO)); + } + + + @ApiOperation("鍗犳瘮鏁版嵁") + @PostMapping("/getRataList") +// @CloudRequiredPermission("business:inoutrecord:query") + public ApiResponse<List<GeneralDataVO>> getRataList (@RequestBody InParkDataDTO inParkDataDTO) { + return ApiResponse.success(inoutRecordService.getRataList(inParkDataDTO)); + } + + + @ApiOperation("鎶ヨ〃鏁版嵁") + @PostMapping("/getReportList") +// @CloudRequiredPermission("business:inoutrecord:query") + public ApiResponse<List<List<String>>> getReportList (@RequestBody InParkDataDTO inParkDataDTO) { + return ApiResponse.success(inoutRecordService.getReportList(inParkDataDTO)); + } + + + + @ApiOperation("鍏ュ洯鏁版嵁鍒嗘瀽-瀵煎嚭Excel") + @PostMapping("/reportExportExcel") +// @CloudRequiredPermission("business:inoutrecord:query") + public void reportExportExcel (@RequestBody InParkDataDTO inParkDataDTO, HttpServletResponse response) { + inoutRecordService.excel(inParkDataDTO,response); + } + + + + } diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformCloudController.java index 7553e6a..61a0fe9 100644 --- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformCloudController.java +++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformCloudController.java @@ -251,7 +251,6 @@ public ApiResponse restoreWork (@RequestBody JobOperateDTO jobOperateDTO, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) { jobOperateDTO.setLoginUserInfo(getLoginUser(token)); PlatformJob platformJob = platformJobService.restoreWork(jobOperateDTO); - platformJobService.cancelInPark(platformJob); return ApiResponse.success("鎿嶄綔鎴愬姛"); } diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/admin/response/PCWorkPlatformDataVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/admin/response/PCWorkPlatformDataVO.java index 24a1925..c0a2647 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/admin/response/PCWorkPlatformDataVO.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/admin/response/PCWorkPlatformDataVO.java @@ -40,6 +40,9 @@ @ApiModelProperty(value = "鍦ㄥ洯闀挎湡鐩稿叧鏂逛汉鏁�") private Long inParkLwUserNum; + @ApiModelProperty(value = "鍦ㄥ洯璐ц繍杞﹁締鍙告満浜烘暟") + private Long inParkDriverUserNum; + @ApiModelProperty(value = "鐩稿叧鏂瑰叆鍥汉娆�") private Integer lwUserInNum; diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/InoutRecordMapper.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/InoutRecordMapper.java index cf59378..a738b73 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/InoutRecordMapper.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/InoutRecordMapper.java @@ -2,11 +2,12 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.doumee.dao.business.model.InoutRecord; +import com.github.yulichang.base.MPJBaseMapper; /** * @author 姹熻箘韫� * @date 2025/04/28 16:19 */ -public interface InoutRecordMapper extends BaseMapper<InoutRecord> { +public interface InoutRecordMapper extends MPJBaseMapper<InoutRecord> { } diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/InParkDataDTO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/InParkDataDTO.java new file mode 100644 index 0000000..5e24c04 --- /dev/null +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/InParkDataDTO.java @@ -0,0 +1,26 @@ +package com.doumee.dao.business.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Created by IntelliJ IDEA. + * + * @Author : Rk + * @create 2024/5/20 14:54 + */ +@Data +public class InParkDataDTO { + + @ApiModelProperty(value = "鏌ヨ绫诲瀷锛�0杞﹁締 1浜哄憳") + private Integer type; + + @ApiModelProperty(value = "浜鸿溅绫诲瀷锛�0=浜烘/杞︽;1=浜哄憳/杞﹁締") + private Integer isGroupBy; + + @ApiModelProperty(value = "鏌ヨ鏃ユ湡 骞翠唤鍏� yyyy 鏈堜唤鍏� yyyy-MM") + private String dateStr; + + + +} diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/GeneralDataVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/GeneralDataVO.java index f56e68e..222beb8 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/GeneralDataVO.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/GeneralDataVO.java @@ -12,9 +12,15 @@ @Data public class GeneralDataVO{ + @ApiModelProperty(value = "涓氬姟涓婚敭",hidden = true) + private Integer id; + @ApiModelProperty(value = "鍚嶇О") private String name; + @ApiModelProperty(value = "鍒嗙被") + private String categoryName; + @ApiModelProperty(value = "鏁伴噺") private Integer total ; diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/HiddenDangerCompanyVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/HiddenDangerCompanyVO.java new file mode 100644 index 0000000..c7253b7 --- /dev/null +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/HiddenDangerCompanyVO.java @@ -0,0 +1,22 @@ +package com.doumee.dao.business.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class HiddenDangerCompanyVO { + + @ApiModelProperty(value = "涓氬姟涓婚敭",hidden = true) + private Integer id; + + @ApiModelProperty(value = "鍒嗙被") + private String categoryName; + + public HiddenDangerCompanyVO(String categoryName, int id) { + this.categoryName = categoryName; + this.id = id; + } + +} diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/InParkUserDataVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/InParkUserDataVO.java new file mode 100644 index 0000000..a910424 --- /dev/null +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/InParkUserDataVO.java @@ -0,0 +1,35 @@ +package com.doumee.dao.business.vo; + +import java.util.List; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +@Data +public class InParkUserDataVO { + + @ApiModelProperty(value = "浠婃棩鎬绘暟") + private Integer todayTotal; + + @ApiModelProperty(value = "鏄ㄦ棩鎬绘暟") + private Integer yesterdayTotal; + + @ApiModelProperty(value = "鏈懆鎬绘暟") + private Integer weekTotal; + + @ApiModelProperty(value = "鏈湀鎬绘暟") + private Integer monthTotal; + + @ApiModelProperty(value = "鏈勾鎬绘暟") + private Integer yearTotal; + + @ApiModelProperty(value = "鍒嗙被鍗犳瘮 - 鎵囧舰鍥�") + List<GeneralDataVO> rataList; + + @ApiModelProperty(value = "鏈勾绱缁熻") + List<GeneralDataVO> cumulativeDataList; + + @ApiModelProperty(value = "骞村害鍏ュ洯缁熻鎺掑簭") + List<GeneralDataVO> yearSortList; + +} diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/InoutRecordService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/InoutRecordService.java index bd6301b..916bfe0 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/InoutRecordService.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/InoutRecordService.java @@ -1,9 +1,13 @@ package com.doumee.service.business; +import com.doumee.dao.business.dto.InParkDataDTO; import com.doumee.dao.business.model.InoutRecord; +import com.doumee.dao.business.vo.GeneralDataVO; +import com.doumee.dao.business.vo.InParkUserDataVO; import com.doumee.service.business.third.model.PageData; import com.doumee.service.business.third.model.PageWrap; +import javax.servlet.http.HttpServletResponse; import java.util.List; /** @@ -95,4 +99,12 @@ * @return long */ long count(InoutRecord inoutRecord); + + InParkUserDataVO getInParkUserData(InParkDataDTO inParkDataDTO); + + List<GeneralDataVO> getRataList(InParkDataDTO inParkDataDTO); + + List<List<String>> getReportList(InParkDataDTO inParkDataDTO); + + void excel(InParkDataDTO inParkDataDTO, HttpServletResponse response); } diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarsServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarsServiceImpl.java index 5fed85e..cc6c81d 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarsServiceImpl.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarsServiceImpl.java @@ -355,11 +355,26 @@ @Override public List<Cars> findList(Cars cars) { + if(Objects.nonNull(cars) + && Constants.equalsInteger(Constants.ZERO,cars.getType())){ + return this.getGwCar(); + } QueryWrapper<Cars> wrapper = new QueryWrapper<>(cars); wrapper.lambda().eq(Cars::getIsdeleted,Constants.ZERO); return carsMapper.selectList(wrapper); } + public List<Cars> getGwCar(){ + List<Cars> list = carsMapper.selectJoinList(Cars.class, + new MPJLambdaWrapper<Cars>().selectAll(Cars.class) + .leftJoin(Category.class,Category::getId,Cars::getCateId) + .eq(Category::getBizType,Constants.FOUR) + .eq(Cars::getIsdeleted,Constants.ZERO) + ); + return list; + } + + @Override public PageData<Cars> findPage(PageWrap<Cars> pageWrap) { IPage<Cars> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java index 903d114..3f52538 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java @@ -10,6 +10,7 @@ import com.doumee.core.exception.BusinessException; import com.doumee.dao.business.dao.*; import com.doumee.dao.business.vo.GeneralDataVO; +import com.doumee.dao.business.vo.HiddenDangerCompanyVO; import com.doumee.dao.business.vo.HiddenDangerDataVO; import com.doumee.service.business.third.model.LoginUserInfo; import com.doumee.service.business.third.model.PageData; @@ -793,33 +794,30 @@ @Override public HiddenDangerDataVO hiddenDangerData(HiddenDanger hiddenDanger){ HiddenDangerDataVO hiddenDangerDataVO = new HiddenDangerDataVO(); - List<HiddenDanger> hiddenDangerYearList = hiddenDangerMapper.selectJoinList(HiddenDanger.class, + List<HiddenDanger> hiddenDangerAllList = hiddenDangerMapper.selectJoinList(HiddenDanger.class, new MPJLambdaWrapper<HiddenDanger>() .selectAll(HiddenDanger.class) .selectAs(HiddenDangerParam::getCompanyId, HiddenDanger::getAreaCompanyId) .leftJoin(HiddenDangerParam.class,HiddenDangerParam::getId,HiddenDanger::getAreaId) //闅愭偅鍖哄煙 .eq(HiddenDanger::getIsdeleted,Constants.ZERO) .eq(Objects.nonNull(hiddenDanger.getStatus()),HiddenDanger::getStatus,hiddenDanger.getStatus()) - .apply(" ( DATE_FORMAT(CREATE_DATE, '%Y') = DATE_FORMAT(now(), '%Y') ) ") + .apply(" ( DATE_FORMAT(t.CREATE_DATE, '%Y') = DATE_FORMAT(now(), '%Y') ) ") .ge(Objects.nonNull(hiddenDanger.getQueryStartTime()), HiddenDanger::getCreateDate,hiddenDanger.getQueryStartTime()) .le(Objects.nonNull(hiddenDanger.getQueryEndTime()),HiddenDanger::getCreateDate,hiddenDanger.getQueryEndTime()) ); List<GeneralDataVO> yearDataList = new ArrayList<>(); - if(CollectionUtils.isEmpty(hiddenDangerYearList)){ + if(CollectionUtils.isEmpty(hiddenDangerAllList)){ return hiddenDangerDataVO; } for (int i = 1; i <=12 ; i++) { GeneralDataVO generalDataVO = new GeneralDataVO(); generalDataVO.setName(Integer.toString(i)); - generalDataVO.setTotal(hiddenDangerYearList.stream().filter(j->Constants.equalsInteger(Integer.valueOf(generalDataVO.getName()),Integer.valueOf(DateUtil.formatDate(j.getCreateDate(),"MM")))).collect(Collectors.toList()).size()); + generalDataVO.setTotal(hiddenDangerAllList.stream().filter(j->Constants.equalsInteger(Integer.valueOf(generalDataVO.getName()),Integer.valueOf(DateUtil.formatDate(j.getCreateDate(),"MM")))).collect(Collectors.toList()).size()); + generalDataVO.setName(generalDataVO.getName()+"鏈�"); yearDataList.add(generalDataVO); } hiddenDangerDataVO.setYearList(yearDataList); - List<HiddenDanger> hiddenDangerAllList = hiddenDangerYearList.stream().filter(i->DateUtil.formatDate(i.getCreateDate(),"yyyy-MM-dd").equals(DateUtil.formatDate(new Date(),"yyyy-MM-dd"))).collect(Collectors.toList()); - if(CollectionUtils.isEmpty(hiddenDangerAllList)){ - return hiddenDangerDataVO; - } hiddenDangerDataVO.setTotal(hiddenDangerAllList.size()); @@ -859,22 +857,26 @@ } //鍏ㄩ儴闅愭偅鍖哄煙閮ㄩ棬鏁版嵁 List<Integer> companyIdList = hiddenDangerAllList.stream().map(i->i.getAreaCompanyId()).collect(Collectors.toList()); - if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(companyIdList)){ + List<HiddenDangerCompanyVO> hiddenDangerCompanyVOList = hiddenDangerAllList.stream().map(i->new HiddenDangerCompanyVO(i.getAreaName(),i.getAreaCompanyId())).collect(Collectors.toList()); + if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(hiddenDangerCompanyVOList)){ List<GeneralDataVO> companyGeneralDataList = new ArrayList<>(); - Set<Integer> companyIdSetList = new HashSet<>(companyIdList); + Set<HiddenDangerCompanyVO> companyIdSetList = new HashSet<>(hiddenDangerCompanyVOList); List<Company> companyList = companyMapper.selectList(new QueryWrapper<Company>() .lambda().eq(Company::getIsdeleted,Constants.ZERO)); - for (Integer companyId:companyIdSetList) { - if(Objects.isNull(companyId)){ + for (HiddenDangerCompanyVO hiddenDangerCompanyVO:companyIdSetList) { + if(Objects.isNull(hiddenDangerCompanyVO) + || Objects.isNull(hiddenDangerCompanyVO.getId()) + || StringUtils.isBlank(hiddenDangerCompanyVO.getCategoryName())){ continue; } - Optional<Company> optionalCompany = companyList.stream().filter(i->Constants.equalsInteger(i.getId(),companyId)).findAny(); + Optional<Company> optionalCompany = companyList.stream().filter(i->Constants.equalsInteger(i.getId(),hiddenDangerCompanyVO.getId())).findAny(); if(optionalCompany.isPresent()){ GeneralDataVO generalDataVO = new GeneralDataVO(); Company company = optionalCompany.get(); Integer total = hiddenDangerAllList.stream().filter(i->Constants.equalsInteger(i.getAreaCompanyId(),company.getId())).collect(Collectors.toList()).size(); generalDataVO.setName(company.getName()); generalDataVO.setTotal(total); + generalDataVO.setCategoryName(hiddenDangerCompanyVO.getCategoryName()); companyGeneralDataList.add(generalDataVO); } } diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/InoutRecordServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/InoutRecordServiceImpl.java index 6179758..d173f98 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/InoutRecordServiceImpl.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/InoutRecordServiceImpl.java @@ -1,8 +1,18 @@ package com.doumee.service.business.impl; +import com.doumee.core.annotation.excel.ExcelExporter; +import com.doumee.core.constants.ResponseStatus; +import com.doumee.core.exception.BusinessException; +import com.doumee.core.utils.Constants; +import com.doumee.core.utils.DateUtil; import com.doumee.core.utils.Utils; +import com.doumee.dao.business.CategoryMapper; import com.doumee.dao.business.InoutRecordMapper; +import com.doumee.dao.business.dto.InParkDataDTO; +import com.doumee.dao.business.model.Category; import com.doumee.dao.business.model.InoutRecord; +import com.doumee.dao.business.vo.GeneralDataVO; +import com.doumee.dao.business.vo.InParkUserDataVO; import com.doumee.service.business.InoutRecordService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; @@ -10,11 +20,26 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.doumee.service.business.third.model.PageData; import com.doumee.service.business.third.model.PageWrap; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import io.swagger.annotations.ApiModelProperty; +import io.swagger.models.auth.In; +import org.apache.commons.lang.StringUtils; +import org.checkerframework.checker.units.qual.C; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; -import java.util.List; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.math.BigDecimal; +import java.net.URLEncoder; +import java.nio.charset.Charset; +import java.text.DecimalFormat; +import java.time.*; +import java.time.format.DateTimeFormatter; +import java.time.temporal.TemporalAdjusters; +import java.util.*; +import java.util.stream.Collectors; /** * 鍑哄叆鍦轰汉娆¤溅娆℃瘡鏃ョ粺璁¤〃Service瀹炵幇 @@ -26,6 +51,9 @@ @Autowired private InoutRecordMapper inoutRecordMapper; + + @Autowired + private CategoryMapper categoryMapper; @Override public Integer create(InoutRecord inoutRecord) { @@ -172,4 +200,353 @@ QueryWrapper<InoutRecord> wrapper = new QueryWrapper<>(inoutRecord); return inoutRecordMapper.selectCount(wrapper); } + + + //浜哄憳鍒嗙被 鍗曠嫭澶勭悊浜哄憳鏁版嵁 0鍔冲姟璁垮 1鏅�氳瀹� 2鍐呴儴鍛樺伐 3杞﹁締淇℃伅 4鐩稿叧鏂逛汉鍛� 5璐ц繍鍙告満 + private static String[] userTypeList = new String[]{"","鏅�氳瀹�","鍐呴儴浜哄憳","","鐩稿叧鏂逛汉鍛�","璐ц繍鍙告満"}; + + + /** + * 鏌ヨ鍩虹鏁版嵁 + * @return + */ + @Override + public InParkUserDataVO getInParkUserData(InParkDataDTO inParkDataDTO){ + if(Objects.isNull(inParkDataDTO) + || Objects.isNull(inParkDataDTO.getType()) + || Objects.isNull(inParkDataDTO.getIsGroupBy()) + || (Objects.nonNull(inParkDataDTO.getType())&& !(Constants.equalsInteger(inParkDataDTO.getType(),Constants.ZERO) || Constants.equalsInteger(inParkDataDTO.getType(),Constants.ONE) )) + || (Objects.nonNull(inParkDataDTO.getIsGroupBy())&& !(Constants.equalsInteger(inParkDataDTO.getIsGroupBy(),Constants.ZERO) || Constants.equalsInteger(inParkDataDTO.getIsGroupBy(),Constants.ONE) )) + ){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + //鏌ヨ鏈懆鐨勫紑濮嬫棩鏈熷拰缁撴潫鏃ユ湡 + Long weekStart = LocalDate.now().with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY)).atStartOfDay(ZoneOffset.UTC).toInstant().toEpochMilli(); + InParkUserDataVO inParkUserDataVO = new InParkUserDataVO(); + List<InoutRecord> yearList = inoutRecordMapper.selectJoinList(InoutRecord.class,new MPJLambdaWrapper<InoutRecord>() + .selectAll(InoutRecord.class) + .eq(InoutRecord::getIsdeleted,Constants.ZERO) + .isNotNull(Constants.equalsInteger(inParkDataDTO.getType(),Constants.ZERO),InoutRecord::getCarCode) + .isNotNull(Constants.equalsInteger(inParkDataDTO.getType(),Constants.ONE),InoutRecord::getMemberPhone) + .apply(" ( DATE_FORMAT(CREATE_DATE, '%Y') = DATE_FORMAT(now(), '%Y') ) ") + ); + List<InoutRecord> monthList = yearList.stream().filter(i->DateUtil.formatDate(i.getCreateDate(),"yyyy-MM").equals(DateUtil.formatDate(new Date(),"yyyy-MM"))).collect(Collectors.toList()); + List<InoutRecord> weekList = yearList.stream().filter(i->i.getCreateDate().getTime()>=weekStart).collect(Collectors.toList()); + List<InoutRecord> todayList = weekList.stream().filter(i-> DateUtil.formatDate(i.getCreateDate(),"yyyy-MM-dd").equals(DateUtil.formatDate(new Date(),"yyyy-MM-dd"))).collect(Collectors.toList()); + List<InoutRecord> yesterdayList = yearList.stream().filter(i-> DateUtil.formatDate(i.getCreateDate(),"yyyy-MM-dd").equals(DateUtil.getBeforDay(new Date(),1))).collect(Collectors.toList()); + + if(Constants.equalsInteger(inParkDataDTO.getIsGroupBy(),Constants.ZERO)){ + inParkUserDataVO.setYearTotal(yearList.size()); + inParkUserDataVO.setMonthTotal(monthList.size()); + inParkUserDataVO.setTodayTotal(todayList.size()); + inParkUserDataVO.setWeekTotal(weekList.size()); + inParkUserDataVO.setYesterdayTotal(yesterdayList.size()); + }else{ + yearList = this.getListByType(yearList,inParkDataDTO.getType()); + monthList = this.getListByType(monthList,inParkDataDTO.getType()); + weekList = this.getListByType(weekList,inParkDataDTO.getType()); + todayList = this.getListByType(todayList,inParkDataDTO.getType()); + yesterdayList = this.getListByType(yesterdayList,inParkDataDTO.getType()); + inParkUserDataVO.setYearTotal(yearList.size()); + inParkUserDataVO.setMonthTotal(monthList.size()); + inParkUserDataVO.setTodayTotal(todayList.size()); + inParkUserDataVO.setWeekTotal(weekList.size()); + inParkUserDataVO.setYesterdayTotal(yesterdayList.size()); + } + //澶勭悊骞村害鎶樼嚎鍥炬暟鎹� + List<GeneralDataVO> cumulativeDataList = new ArrayList<>(); + for (int i = 1; i <=12 ; i++) { + GeneralDataVO generalDataVO = new GeneralDataVO(); + generalDataVO.setName(Integer.toString(i)); + generalDataVO.setTotal(yearList.stream().filter(j->Constants.equalsInteger(Integer.valueOf(generalDataVO.getName()),Integer.valueOf(DateUtil.formatDate(j.getCreateDate(),"MM")))).collect(Collectors.toList()).size()); + generalDataVO.setName(generalDataVO.getName()+"鏈�"); + cumulativeDataList.add(generalDataVO); + } + inParkUserDataVO.setCumulativeDataList(cumulativeDataList); + //澶勭悊鍒嗙被鏁版嵁 + List<GeneralDataVO> yearSortList = new ArrayList<>(); + if(Constants.equalsInteger(inParkDataDTO.getType(),Constants.ONE)){ + for (int i = 0; i < userTypeList.length; i++) { + if(StringUtils.isBlank(userTypeList[i])){ + continue; + } + GeneralDataVO generalDataVO = new GeneralDataVO(); + generalDataVO.setName(userTypeList[i]); + int index = i; + generalDataVO.setTotal(yearList.stream().filter(j->Constants.equalsInteger(j.getType(), index)).collect(Collectors.toList()).size()); + yearSortList.add(generalDataVO); + } + }else{ + List<String> categoryNameList = yearList.stream().filter(i-> StringUtils.isNotBlank(i.getCategoryName())).map(i->i.getCategoryName()).collect(Collectors.toList()); + if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(categoryNameList)){ + Set<String> setList = new HashSet<>(categoryNameList); + for (String categoryName:setList) { + GeneralDataVO generalDataVO = new GeneralDataVO(); + generalDataVO.setName(categoryName); + generalDataVO.setTotal(yearList.stream().filter(j->StringUtils.isNotBlank(j.getCategoryName())&&j.getCategoryName().equals(categoryName)).collect(Collectors.toList()).size()); + yearSortList.add(generalDataVO); + } + } + } + if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(yearSortList)){ + Collections.sort(yearSortList, new Comparator<GeneralDataVO>() { + @Override + public int compare(GeneralDataVO o1, GeneralDataVO o2) { + // 杩斿洖鍊间负int绫诲瀷锛屽ぇ浜�0琛ㄧず姝e簭锛屽皬浜�0琛ㄧず閫嗗簭 + return o2.getTotal() - o1.getTotal(); + } + }); + inParkUserDataVO.setYearSortList(yearSortList); + } + return inParkUserDataVO; + } + + + /** + * 鏌ヨ鍗犳瘮鏁版嵁 + * @return + */ + @Override + public List<GeneralDataVO> getRataList(InParkDataDTO inParkDataDTO){ + if(Objects.isNull(inParkDataDTO) + || Objects.isNull(inParkDataDTO.getType()) + || Objects.isNull(inParkDataDTO.getIsGroupBy()) + || StringUtils.isBlank(inParkDataDTO.getDateStr()) + || (Objects.nonNull(inParkDataDTO.getType())&& !(Constants.equalsInteger(inParkDataDTO.getType(),Constants.ZERO) || Constants.equalsInteger(inParkDataDTO.getType(),Constants.ONE) )) + || (Objects.nonNull(inParkDataDTO.getIsGroupBy())&& !(Constants.equalsInteger(inParkDataDTO.getIsGroupBy(),Constants.ZERO) || Constants.equalsInteger(inParkDataDTO.getIsGroupBy(),Constants.ONE) )) + || !( Constants.equalsInteger(inParkDataDTO.getDateStr().length(),4) || Constants.equalsInteger(inParkDataDTO.getDateStr().length(),7) ) + ){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + List<GeneralDataVO> rataList = new ArrayList<>(); + List<InoutRecord> yearList = inoutRecordMapper.selectJoinList(InoutRecord.class,new MPJLambdaWrapper<InoutRecord>() + .selectAll(InoutRecord.class) + .eq(InoutRecord::getIsdeleted,Constants.ZERO) + .isNotNull(Constants.equalsInteger(inParkDataDTO.getType(),Constants.ZERO),InoutRecord::getCarCode) + .isNotNull(Constants.equalsInteger(inParkDataDTO.getType(),Constants.ONE),InoutRecord::getMemberPhone) + .apply(Constants.equalsInteger(inParkDataDTO.getDateStr().length(),4)," ( DATE_FORMAT(CREATE_DATE, '%Y') = '"+inParkDataDTO.getDateStr()+"' ) ") + .apply(Constants.equalsInteger(inParkDataDTO.getDateStr().length(),7)," ( DATE_FORMAT(CREATE_DATE, '%Y-%m') = '"+inParkDataDTO.getDateStr()+"' ) ") + ); + if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isEmpty(yearList)){ + return rataList; + } + if(Constants.equalsInteger(inParkDataDTO.getIsGroupBy(),Constants.ONE)){ + yearList = this.getListByType(yearList,inParkDataDTO.getType()); + } + + if(Constants.equalsInteger(inParkDataDTO.getType(),Constants.ONE)){ + for (int i = 0; i < userTypeList.length; i++) { + if(StringUtils.isBlank(userTypeList[i])){ + continue; + } + GeneralDataVO generalDataVO = new GeneralDataVO(); + generalDataVO.setName(userTypeList[i]); + int index = i; + generalDataVO.setTotal(yearList.stream().filter(j->Constants.equalsInteger(j.getType(), index)).collect(Collectors.toList()).size()); + generalDataVO.setRata(new BigDecimal(generalDataVO.getTotal().toString()).divide(new BigDecimal(yearList.size()+""),2,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))); + rataList.add(generalDataVO); + } + }else{ + List<String> categoryNameList = yearList.stream().filter(i-> StringUtils.isNotBlank(i.getCategoryParentName())).map(i->i.getCategoryParentName()).collect(Collectors.toList()); + if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(categoryNameList)){ + Set<String> setList = new HashSet<>(categoryNameList); + for (String categoryName:setList) { + GeneralDataVO generalDataVO = new GeneralDataVO(); + generalDataVO.setName(categoryName); + generalDataVO.setTotal(yearList.stream().filter(j->StringUtils.isNotBlank(j.getCategoryParentName())&&j.getCategoryName().equals(categoryName)).collect(Collectors.toList()).size()); + generalDataVO.setRata(new BigDecimal(generalDataVO.getTotal().toString()).divide(new BigDecimal(yearList.size()+""),2,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))); + rataList.add(generalDataVO); + } + } + } + return rataList; + } + + @Override + public List<List<String>> getReportList(InParkDataDTO inParkDataDTO){ + if(Objects.isNull(inParkDataDTO) + || Objects.isNull(inParkDataDTO.getType()) + || Objects.isNull(inParkDataDTO.getIsGroupBy()) + || StringUtils.isBlank(inParkDataDTO.getDateStr()) + || (Objects.nonNull(inParkDataDTO.getType())&& !(Constants.equalsInteger(inParkDataDTO.getType(),Constants.ZERO) || Constants.equalsInteger(inParkDataDTO.getType(),Constants.ONE) )) + || (Objects.nonNull(inParkDataDTO.getIsGroupBy())&& !(Constants.equalsInteger(inParkDataDTO.getIsGroupBy(),Constants.ZERO) || Constants.equalsInteger(inParkDataDTO.getIsGroupBy(),Constants.ONE) )) + || !( Constants.equalsInteger(inParkDataDTO.getDateStr().length(),4) || Constants.equalsInteger(inParkDataDTO.getDateStr().length(),7) ) + ){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + List<InoutRecord> allList = inoutRecordMapper.selectJoinList(InoutRecord.class,new MPJLambdaWrapper<InoutRecord>() + .selectAll(InoutRecord.class) + .eq(InoutRecord::getIsdeleted,Constants.ZERO) + .isNotNull(Constants.equalsInteger(inParkDataDTO.getType(),Constants.ZERO),InoutRecord::getCarCode) + .isNotNull(Constants.equalsInteger(inParkDataDTO.getType(),Constants.ONE),InoutRecord::getMemberPhone) + .apply(Constants.equalsInteger(inParkDataDTO.getDateStr().length(),4)," ( DATE_FORMAT(CREATE_DATE, '%Y') = '"+inParkDataDTO.getDateStr()+"' ) ") + .apply(Constants.equalsInteger(inParkDataDTO.getDateStr().length(),7)," ( DATE_FORMAT(CREATE_DATE, '%Y-%m') = '"+inParkDataDTO.getDateStr()+"' ) ") + ); + List<List<String>> resultList = new ArrayList<>(); + if(CollectionUtils.isEmpty(allList)){ + return resultList; + } + if(Constants.equalsInteger(inParkDataDTO.getIsGroupBy(),Constants.ONE)){ + allList = this.getListByType(allList,inParkDataDTO.getType()); + } + + List<String> dateList = new ArrayList<>(); + //骞翠唤 + if(Constants.equalsInteger(inParkDataDTO.getDateStr().length(),4)){ + Integer maxMonth = 12; + if(Constants.equalsInteger(DateUtil.getNowYearNum(),Integer.valueOf(inParkDataDTO.getDateStr()))){ + maxMonth = DateUtil.getNowMonthNum(); + } + for (int i = 1; i <= maxMonth; i++) { + dateList.add(DateUtil.getNowYearNum()+"-"+ StringUtils.leftPad(i+"",2,"0")); + } + }else { + //鏃ユ湡 + Integer year = Integer.valueOf(inParkDataDTO.getDateStr().substring(0,4)); + Integer month = Integer.valueOf(inParkDataDTO.getDateStr().substring(5,6)); + Integer today = DateUtil.getNowDayNum(); + YearMonth yearMonth = YearMonth.of(year, month); + // 鑾峰彇璇ユ湀鐨勬渶鍚庝竴澶� + LocalDate lastDayDate = yearMonth.atEndOfMonth(); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + Integer lastDay = Integer.valueOf(lastDayDate.format(formatter)); + if(Constants.equalsInteger(year,DateUtil.getNowYearNum()) && Constants.equalsInteger(month,DateUtil.getNowMonthNum())){ + if(today < lastDay){ + lastDay = today; + } + } + for (int i = 1; i <= lastDay; i++) { + dateList.add(year + "-" + StringUtils.leftPad(month.toString(),2,"0") + "-" + StringUtils.leftPad(lastDay.toString(),2,"0")); + } + } + return this.dealResultData(allList,dateList,inParkDataDTO.getType(),inParkDataDTO.getDateStr()); + } + + + public List<List<String>> dealResultData(List<InoutRecord> allList,List<String> dataList ,Integer type,String dateStr){ + List<List<String>> resultList = new ArrayList<>(); + List<String> totalString = new ArrayList<>(); + totalString.add("鏃ユ湡"); + if(Constants.equalsInteger(type,Constants.ZERO)){ + List<String> categoryNameList = allList.stream().filter(j-> StringUtils.isNotBlank(j.getCategoryName())).map(j->j.getCategoryName()).collect(Collectors.toList()); + if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isEmpty(categoryNameList)){ + return resultList; + } + Set<String> setList = new HashSet<>(categoryNameList); + for (String categoryName:setList) { + totalString.add(categoryName); + } + totalString.add("鍚堣"); + resultList.add(totalString); + Integer total = 0; + for (String str:dataList) { + for (String categoryName:setList) { + List<String> dataChildList = new ArrayList<>(); + dataChildList.add(str); + if(Constants.equalsInteger(dateStr.length(),4)){ + Integer childNum = allList.stream().filter(i->categoryName.equals(i.getCategoryName()) + && DateUtil.formatDate(i.getCreateDate(),"yyyy-MM").equals(str)).collect(Collectors.toList()).size(); + dataChildList.add( + Integer.toString(childNum) + ); + total = total + childNum; + }else if(Constants.equalsInteger(dateStr.length(),7)){ + Integer childNum = allList.stream().filter(i->categoryName.equals(i.getCategoryName()) + &&DateUtil.formatDate(i.getCreateDate(),"yyyy-MM-dd").equals(str)).collect(Collectors.toList()).size(); + dataChildList.add( + Integer.toString(childNum) + ); + total = total + childNum; + } + dataChildList.add(Integer.toString(total)); + resultList.add(dataChildList); + } + } + }else{ + for (int j = 0; j < userTypeList.length; j++) { + if(StringUtils.isBlank(userTypeList[j])){ + continue; + } + totalString.add(userTypeList[j]); + totalString.add("鍚堣"); + resultList.add(totalString); + } + Integer total = 0; + for (String str:dataList) { + for (String typeName:userTypeList) { + List<String> dataChildList = new ArrayList<>(); + dataChildList.add(str); + if(Constants.equalsInteger(dateStr.length(),4)){ + Integer childNum = allList.stream().filter(i->typeName.equals(i.getCategoryName()) + && DateUtil.formatDate(i.getCreateDate(),"yyyy-MM").equals(str)).collect(Collectors.toList()).size(); + dataChildList.add( + Integer.toString(childNum) + ); + total = total + childNum; + }else if(Constants.equalsInteger(dateStr.length(),7)){ + Integer childNum = allList.stream().filter(i->typeName.equals(i.getCategoryName()) + &&DateUtil.formatDate(i.getCreateDate(),"yyyy-MM-dd").equals(str)).collect(Collectors.toList()).size(); + dataChildList.add( + Integer.toString(childNum) + ); + total = total + childNum; + } + dataChildList.add(Integer.toString(total)); + resultList.add(dataChildList); + } + } + } + return resultList; + } + + + + + + + public List<InoutRecord> getListByType(List<InoutRecord> list,Integer type){ + return Constants.equalsInteger(type,Constants.ONE)?this.getDataByMemberPhoneSize(list):this.getDataByCarCodeSize(list); + } + + + public List<InoutRecord> getDataByMemberPhoneSize(List<InoutRecord> list){ + Map<String, InoutRecord> uniqueByMemberPhone = list.stream() + .collect(Collectors.toMap( + InoutRecord::getMemberPhone, + person -> person, + (existing, replacement) -> existing + )); + + List<InoutRecord> uniqueList = new ArrayList<>(uniqueByMemberPhone.values()); + return uniqueList; + } + + public List<InoutRecord> getDataByCarCodeSize(List<InoutRecord> list){ + Map<String, InoutRecord> uniqueByCarCode = list.stream() + .collect(Collectors.toMap( + InoutRecord::getCarCode, + person -> person, + (existing, replacement) -> existing + )); + + List<InoutRecord> uniqueList = new ArrayList<>(uniqueByCarCode.values()); + return uniqueList; + } + + + @Override + public void excel(InParkDataDTO inParkDataDTO, HttpServletResponse response){ + List<List<String>> data = this.getReportList(inParkDataDTO); + try { + String fileName = Constants.equalsInteger(inParkDataDTO.getType(),Constants.ZERO)?"鍏ュ洯杞﹁締缁熻琛╛":"鍏ュ洯浜哄憳缁熻琛╛"+System.currentTimeMillis(); + String encodeFileName = URLEncoder.encode(fileName, Charset.forName("UTF-8").toString()) + ".xlsx"; + response.setHeader("Content-Disposition","attachment;filename=" + encodeFileName); + response.setContentType("application/octet-stream"); + response.setHeader("eva-opera-type", "download"); + response.setHeader("eva-download-filename", encodeFileName); + ExcelExporter.exportList(data, fileName, response.getOutputStream()); + } catch (IOException e) { + throw new BusinessException(ResponseStatus.EXPORT_EXCEL_ERROR, e); + } + } } diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java index dbd6259..b3b083b 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java @@ -2472,5 +2472,37 @@ } + @Override + @Transactional(rollbackFor = {Exception.class,BusinessException.class}) + public PlatformJob restoreWork(JobOperateDTO jobOperateDTO){ + if(Objects.isNull(jobOperateDTO) + || Objects.isNull(jobOperateDTO.getJobId())){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + PlatformJob platformJob = platformJobMapper.selectById(jobOperateDTO.getJobId()); + if(Objects.isNull(platformJob)||Constants.equalsInteger(platformJob.getIsdeleted(),Constants.ONE)){ + throw new BusinessException(ResponseStatus.DATA_EMPTY); + } + if(!Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.EXCEPTION.getKey())){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧�,涓氬姟鐘舵�佸凡娴佽浆锛�"); + } + Platform platform = platformJoinMapper.selectById(platformJob.getPlatformId()); + if(Objects.isNull(platform)){ + throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌鏈堝彴淇℃伅"); + } + PlatformJob oldPlatformJob = new PlatformJob(); + BeanUtils.copyProperties(platformJob,oldPlatformJob); + if(Objects.isNull(platformJob.getStartDate())){ + platformJob.setStartDate(new Date()); + } + platformJob.setStatus(Constants.PlatformJobStatus.WORKING.getKey()); + platformJob.setEditDate(new Date()); + platformJobMapper.updateById(platformJob); + + //瀛樺偍鎿嶄綔鏃ュ織 + savePlatformLog(Constants.PlatformJobLogType.WORKING.getKey(),oldPlatformJob,platformJob, + Constants.PlatformJobLogType.WORKING.getInfo().replace("{data}",platform.getName())); + return platformJob; + } } diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java index 53983ed..8cf3245 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java @@ -128,6 +128,8 @@ @Autowired private InoutDayCountMapper inoutDayCountMapper; @Autowired + private InoutRecordMapper inoutRecordMapper; + @Autowired private CarEventMapper carEventMapper; @Autowired @@ -1809,10 +1811,14 @@ .apply(" DATE(TIME_INFO) = CURDATE() ") .last(" limit 1 ") ); - + //浠婃棩鍦ㄥ洯浜烘暟 pcWorkPlatformDataVO.setTodayInParkUserNum( - retentionList.stream().filter(i->!Constants.equalsInteger(i.getType(),Constants.THREE)).count() + inoutRecordMapper.selectCount(new QueryWrapper<InoutRecord>().lambda() + .isNotNull(InoutRecord::getMemberPhone) + .isNull(InoutRecord::getCarCode) + .apply( " DATE(TIME_INFO) = CURDATE() " )) + //retentionList.stream().filter(i->!Constants.equalsInteger(i.getType(),Constants.THREE)).count() ); pcWorkPlatformDataVO.setTodayInUserNum(Constants.ZERO); @@ -1820,8 +1826,13 @@ //鍦ㄥ洯闀挎湡鐩稿叧鏂逛汉鏁� pcWorkPlatformDataVO.setInParkLwUserNum( - retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.TWO) - && Constants.equalsInteger(i.getCompanyType(),Constants.ZERO)).count() + inoutRecordMapper.selectCount(new QueryWrapper<InoutRecord>().lambda() + .eq(InoutRecord::getMemberType,Constants.TWO) + .isNotNull(InoutRecord::getMemberPhone) + .isNull(InoutRecord::getCarCode) + .apply( " DATE(TIME_INFO) = CURDATE() " )) +// retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.TWO) +// && Constants.equalsInteger(i.getCompanyType(),Constants.ZERO)).count() ); pcWorkPlatformDataVO.setLwUserInNum(Constants.ZERO); pcWorkPlatformDataVO.setLwUserOutNum(Constants.ZERO); @@ -1829,14 +1840,30 @@ //鍦ㄥ洯璁垮鏁伴噺 pcWorkPlatformDataVO.setInParkVisitUserNum( - retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)&&Objects.isNull(i.getCompanyType())).count() + inoutRecordMapper.selectCount(new QueryWrapper<InoutRecord>().lambda() + .eq(InoutRecord::getMemberType,Constants.ZERO) + .isNotNull(InoutRecord::getMemberPhone) + .isNull(InoutRecord::getCarCode) + .apply( " DATE(TIME_INFO) = CURDATE() " )) + //retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)&&Objects.isNull(i.getCompanyType())).count() ); pcWorkPlatformDataVO.setVisitUserNum(Constants.ZERO); pcWorkPlatformDataVO.setSignLevelNum(Constants.ZERO); + //鍦ㄥ洯璐ц繍杞﹁締鍙告満 + pcWorkPlatformDataVO.setInParkDriverUserNum(inoutRecordMapper.selectCount(new QueryWrapper<InoutRecord>().lambda() + .eq(InoutRecord::getMemberType,Constants.THREE) + .isNotNull(InoutRecord::getMemberPhone) + .isNull(InoutRecord::getCarCode) + .apply( " DATE(TIME_INFO) = CURDATE() " ))); + //鍦ㄥ洯杞﹁締 pcWorkPlatformDataVO.setTodayInParkCarNum( - retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.THREE)).count() + inoutRecordMapper.selectCount(new QueryWrapper<InoutRecord>().lambda() + .isNotNull(InoutRecord::getCarCode) + .isNull(InoutRecord::getMemberPhone) + .apply( " DATE(TIME_INFO) = CURDATE() " )) + //retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.THREE)).count() ); pcWorkPlatformDataVO.setTodayInCarNum(Constants.ZERO); pcWorkPlatformDataVO.setTodayOutCarNum(Constants.ZERO); -- Gitblit v1.9.3