diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/cockpit/MeasureTaskController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/cockpit/MeasureTaskController.java index 0618557..262b77d 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/cockpit/MeasureTaskController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/cockpit/MeasureTaskController.java @@ -2,6 +2,8 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.cockpit.CockpitDeptOutputListResponse; +import com.casic.missiles.dto.cockpit.LabAssetsResponse; import com.casic.missiles.dto.cockpit.OrderInfoResponse; import com.casic.missiles.service.cockpit.IMeasureTaskService; import io.swagger.annotations.Api; @@ -34,4 +36,39 @@ public ReturnDTO orderInfo() { return ReturnUtil.success(measureTaskService.orderInfo()); } + + @ApiOperation("实验室资产") + @GetMapping("/lab/assets") + public ReturnDTO labAssets() { + return ReturnUtil.success(measureTaskService.labAssets()); + } + + /** + * 工作分析,使用业务管理-业务看板中部门综合分析,缺少同比、环比、本月检完样品总数 + */ + + /** + * 产值分析,使用业务管理-业务看板中部门产值分析改造成按部门分组统计,缺少同比、环比、总产值 + */ + @ApiOperation("产值分析") + @GetMapping("/output/list") + public ReturnDTO deptOutputList() { + return ReturnUtil.success(measureTaskService.deptOutputList()); + } + + /** + * 本月调度工况,中间的各实验室样品超期数量在部门综合分析中有,建议直接放到工作分析中展示 + */ +// @ApiOperation("本月调度工况-超期样品信息、合格信息") +// @GetMapping("/lab/assets") +// public ReturnDTO<> labAssets() { +// return ReturnUtil.success(measureTaskService.()); +// } +// +// @ApiOperation("本月人员综合分析-使用业务管理模块业务看板中部门产值分析") +// @GetMapping("/lab/assets") +// public ReturnDTO<> labAssets() { +// return ReturnUtil.success(measureTaskService.()); +// } + } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/cockpit/MeasureTaskController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/cockpit/MeasureTaskController.java index 0618557..262b77d 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/cockpit/MeasureTaskController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/cockpit/MeasureTaskController.java @@ -2,6 +2,8 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.cockpit.CockpitDeptOutputListResponse; +import com.casic.missiles.dto.cockpit.LabAssetsResponse; import com.casic.missiles.dto.cockpit.OrderInfoResponse; import com.casic.missiles.service.cockpit.IMeasureTaskService; import io.swagger.annotations.Api; @@ -34,4 +36,39 @@ public ReturnDTO orderInfo() { return ReturnUtil.success(measureTaskService.orderInfo()); } + + @ApiOperation("实验室资产") + @GetMapping("/lab/assets") + public ReturnDTO labAssets() { + return ReturnUtil.success(measureTaskService.labAssets()); + } + + /** + * 工作分析,使用业务管理-业务看板中部门综合分析,缺少同比、环比、本月检完样品总数 + */ + + /** + * 产值分析,使用业务管理-业务看板中部门产值分析改造成按部门分组统计,缺少同比、环比、总产值 + */ + @ApiOperation("产值分析") + @GetMapping("/output/list") + public ReturnDTO deptOutputList() { + return ReturnUtil.success(measureTaskService.deptOutputList()); + } + + /** + * 本月调度工况,中间的各实验室样品超期数量在部门综合分析中有,建议直接放到工作分析中展示 + */ +// @ApiOperation("本月调度工况-超期样品信息、合格信息") +// @GetMapping("/lab/assets") +// public ReturnDTO<> labAssets() { +// return ReturnUtil.success(measureTaskService.()); +// } +// +// @ApiOperation("本月人员综合分析-使用业务管理模块业务看板中部门产值分析") +// @GetMapping("/lab/assets") +// public ReturnDTO<> labAssets() { +// return ReturnUtil.success(measureTaskService.()); +// } + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/DateUtils.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/DateUtils.java new file mode 100644 index 0000000..0c18075 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/DateUtils.java @@ -0,0 +1,58 @@ +package com.casic.missiles.utils; + +import java.time.Duration; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; + +/** + * @Description: 日期辅助工具类 + * @Author: wangpeng + * @Date: 2023/6/14 10:25 + */ +public class DateUtils { + private static final String DATE_PATTERN = "yyyy-MM-dd"; + private static final String DATETIME_PATTERN = "yyyy-MM-dd HH:mm:ss"; + + /** + * 获取两个日期相差的天数 + * @param startDate + * @param endDate + * @return + */ + public static long subDaysByDateTime(String startDate, String endDate) { + long sub; + try { + DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(DATETIME_PATTERN); + LocalDateTime start = LocalDateTime.parse(startDate, dateTimeFormatter); + LocalDateTime end = LocalDateTime.parse(endDate, dateTimeFormatter); + sub = Duration.between(start, end).toDays(); + } catch (DateTimeParseException e) { + sub = -1; + } + return sub; + } + + /** + * 获取两个日期相差的天数 + * @param startDate + * @param endDate + * @return + */ + public static long subDaysByDate(String startDate, String endDate) { + long sub; + try { + DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(DATE_PATTERN); + LocalDate start = LocalDate.parse(startDate, dateTimeFormatter); + LocalDate end = LocalDate.parse(endDate, dateTimeFormatter); + sub = Duration.between(LocalDateTime.of(start, LocalTime.of(0,0,0)), + LocalDateTime.of(end, LocalTime.of(0,0,0))).toDays(); + } catch (DateTimeParseException e) { + sub = -1; + } + return sub; + } + +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/cockpit/MeasureTaskController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/cockpit/MeasureTaskController.java index 0618557..262b77d 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/cockpit/MeasureTaskController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/cockpit/MeasureTaskController.java @@ -2,6 +2,8 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.cockpit.CockpitDeptOutputListResponse; +import com.casic.missiles.dto.cockpit.LabAssetsResponse; import com.casic.missiles.dto.cockpit.OrderInfoResponse; import com.casic.missiles.service.cockpit.IMeasureTaskService; import io.swagger.annotations.Api; @@ -34,4 +36,39 @@ public ReturnDTO orderInfo() { return ReturnUtil.success(measureTaskService.orderInfo()); } + + @ApiOperation("实验室资产") + @GetMapping("/lab/assets") + public ReturnDTO labAssets() { + return ReturnUtil.success(measureTaskService.labAssets()); + } + + /** + * 工作分析,使用业务管理-业务看板中部门综合分析,缺少同比、环比、本月检完样品总数 + */ + + /** + * 产值分析,使用业务管理-业务看板中部门产值分析改造成按部门分组统计,缺少同比、环比、总产值 + */ + @ApiOperation("产值分析") + @GetMapping("/output/list") + public ReturnDTO deptOutputList() { + return ReturnUtil.success(measureTaskService.deptOutputList()); + } + + /** + * 本月调度工况,中间的各实验室样品超期数量在部门综合分析中有,建议直接放到工作分析中展示 + */ +// @ApiOperation("本月调度工况-超期样品信息、合格信息") +// @GetMapping("/lab/assets") +// public ReturnDTO<> labAssets() { +// return ReturnUtil.success(measureTaskService.()); +// } +// +// @ApiOperation("本月人员综合分析-使用业务管理模块业务看板中部门产值分析") +// @GetMapping("/lab/assets") +// public ReturnDTO<> labAssets() { +// return ReturnUtil.success(measureTaskService.()); +// } + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/DateUtils.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/DateUtils.java new file mode 100644 index 0000000..0c18075 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/DateUtils.java @@ -0,0 +1,58 @@ +package com.casic.missiles.utils; + +import java.time.Duration; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; + +/** + * @Description: 日期辅助工具类 + * @Author: wangpeng + * @Date: 2023/6/14 10:25 + */ +public class DateUtils { + private static final String DATE_PATTERN = "yyyy-MM-dd"; + private static final String DATETIME_PATTERN = "yyyy-MM-dd HH:mm:ss"; + + /** + * 获取两个日期相差的天数 + * @param startDate + * @param endDate + * @return + */ + public static long subDaysByDateTime(String startDate, String endDate) { + long sub; + try { + DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(DATETIME_PATTERN); + LocalDateTime start = LocalDateTime.parse(startDate, dateTimeFormatter); + LocalDateTime end = LocalDateTime.parse(endDate, dateTimeFormatter); + sub = Duration.between(start, end).toDays(); + } catch (DateTimeParseException e) { + sub = -1; + } + return sub; + } + + /** + * 获取两个日期相差的天数 + * @param startDate + * @param endDate + * @return + */ + public static long subDaysByDate(String startDate, String endDate) { + long sub; + try { + DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(DATE_PATTERN); + LocalDate start = LocalDate.parse(startDate, dateTimeFormatter); + LocalDate end = LocalDate.parse(endDate, dateTimeFormatter); + sub = Duration.between(LocalDateTime.of(start, LocalTime.of(0,0,0)), + LocalDateTime.of(end, LocalTime.of(0,0,0))).toDays(); + } catch (DateTimeParseException e) { + sub = -1; + } + return sub; + } + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java index 64da96c..3794b95 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.dto.business.labExecutive.SampleHandOutInitListResponse; +import com.casic.missiles.dto.cockpit.LabAssetsResponse; import com.casic.missiles.model.meter.MeterOrganize; import org.apache.ibatis.annotations.Param; @@ -23,4 +24,6 @@ List selectListByLabCapacity(@Param("list") List list); Long selectDeptDirectorByDeptId(@Param("deptId") Long deptId); + + List selectStaffCount(); } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/cockpit/MeasureTaskController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/cockpit/MeasureTaskController.java index 0618557..262b77d 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/cockpit/MeasureTaskController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/cockpit/MeasureTaskController.java @@ -2,6 +2,8 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.cockpit.CockpitDeptOutputListResponse; +import com.casic.missiles.dto.cockpit.LabAssetsResponse; import com.casic.missiles.dto.cockpit.OrderInfoResponse; import com.casic.missiles.service.cockpit.IMeasureTaskService; import io.swagger.annotations.Api; @@ -34,4 +36,39 @@ public ReturnDTO orderInfo() { return ReturnUtil.success(measureTaskService.orderInfo()); } + + @ApiOperation("实验室资产") + @GetMapping("/lab/assets") + public ReturnDTO labAssets() { + return ReturnUtil.success(measureTaskService.labAssets()); + } + + /** + * 工作分析,使用业务管理-业务看板中部门综合分析,缺少同比、环比、本月检完样品总数 + */ + + /** + * 产值分析,使用业务管理-业务看板中部门产值分析改造成按部门分组统计,缺少同比、环比、总产值 + */ + @ApiOperation("产值分析") + @GetMapping("/output/list") + public ReturnDTO deptOutputList() { + return ReturnUtil.success(measureTaskService.deptOutputList()); + } + + /** + * 本月调度工况,中间的各实验室样品超期数量在部门综合分析中有,建议直接放到工作分析中展示 + */ +// @ApiOperation("本月调度工况-超期样品信息、合格信息") +// @GetMapping("/lab/assets") +// public ReturnDTO<> labAssets() { +// return ReturnUtil.success(measureTaskService.()); +// } +// +// @ApiOperation("本月人员综合分析-使用业务管理模块业务看板中部门产值分析") +// @GetMapping("/lab/assets") +// public ReturnDTO<> labAssets() { +// return ReturnUtil.success(measureTaskService.()); +// } + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/DateUtils.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/DateUtils.java new file mode 100644 index 0000000..0c18075 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/DateUtils.java @@ -0,0 +1,58 @@ +package com.casic.missiles.utils; + +import java.time.Duration; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; + +/** + * @Description: 日期辅助工具类 + * @Author: wangpeng + * @Date: 2023/6/14 10:25 + */ +public class DateUtils { + private static final String DATE_PATTERN = "yyyy-MM-dd"; + private static final String DATETIME_PATTERN = "yyyy-MM-dd HH:mm:ss"; + + /** + * 获取两个日期相差的天数 + * @param startDate + * @param endDate + * @return + */ + public static long subDaysByDateTime(String startDate, String endDate) { + long sub; + try { + DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(DATETIME_PATTERN); + LocalDateTime start = LocalDateTime.parse(startDate, dateTimeFormatter); + LocalDateTime end = LocalDateTime.parse(endDate, dateTimeFormatter); + sub = Duration.between(start, end).toDays(); + } catch (DateTimeParseException e) { + sub = -1; + } + return sub; + } + + /** + * 获取两个日期相差的天数 + * @param startDate + * @param endDate + * @return + */ + public static long subDaysByDate(String startDate, String endDate) { + long sub; + try { + DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(DATE_PATTERN); + LocalDate start = LocalDate.parse(startDate, dateTimeFormatter); + LocalDate end = LocalDate.parse(endDate, dateTimeFormatter); + sub = Duration.between(LocalDateTime.of(start, LocalTime.of(0,0,0)), + LocalDateTime.of(end, LocalTime.of(0,0,0))).toDays(); + } catch (DateTimeParseException e) { + sub = -1; + } + return sub; + } + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java index 64da96c..3794b95 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.dto.business.labExecutive.SampleHandOutInitListResponse; +import com.casic.missiles.dto.cockpit.LabAssetsResponse; import com.casic.missiles.model.meter.MeterOrganize; import org.apache.ibatis.annotations.Param; @@ -23,4 +24,6 @@ List selectListByLabCapacity(@Param("list") List list); Long selectDeptDirectorByDeptId(@Param("deptId") Long deptId); + + List selectStaffCount(); } diff --git a/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml b/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml index 56398ae..1033315 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml @@ -22,4 +22,12 @@ WHERE su.DEPT_ID = #{deptId} LIMIT 1 + + diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/cockpit/MeasureTaskController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/cockpit/MeasureTaskController.java index 0618557..262b77d 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/cockpit/MeasureTaskController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/cockpit/MeasureTaskController.java @@ -2,6 +2,8 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.cockpit.CockpitDeptOutputListResponse; +import com.casic.missiles.dto.cockpit.LabAssetsResponse; import com.casic.missiles.dto.cockpit.OrderInfoResponse; import com.casic.missiles.service.cockpit.IMeasureTaskService; import io.swagger.annotations.Api; @@ -34,4 +36,39 @@ public ReturnDTO orderInfo() { return ReturnUtil.success(measureTaskService.orderInfo()); } + + @ApiOperation("实验室资产") + @GetMapping("/lab/assets") + public ReturnDTO labAssets() { + return ReturnUtil.success(measureTaskService.labAssets()); + } + + /** + * 工作分析,使用业务管理-业务看板中部门综合分析,缺少同比、环比、本月检完样品总数 + */ + + /** + * 产值分析,使用业务管理-业务看板中部门产值分析改造成按部门分组统计,缺少同比、环比、总产值 + */ + @ApiOperation("产值分析") + @GetMapping("/output/list") + public ReturnDTO deptOutputList() { + return ReturnUtil.success(measureTaskService.deptOutputList()); + } + + /** + * 本月调度工况,中间的各实验室样品超期数量在部门综合分析中有,建议直接放到工作分析中展示 + */ +// @ApiOperation("本月调度工况-超期样品信息、合格信息") +// @GetMapping("/lab/assets") +// public ReturnDTO<> labAssets() { +// return ReturnUtil.success(measureTaskService.()); +// } +// +// @ApiOperation("本月人员综合分析-使用业务管理模块业务看板中部门产值分析") +// @GetMapping("/lab/assets") +// public ReturnDTO<> labAssets() { +// return ReturnUtil.success(measureTaskService.()); +// } + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/DateUtils.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/DateUtils.java new file mode 100644 index 0000000..0c18075 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/DateUtils.java @@ -0,0 +1,58 @@ +package com.casic.missiles.utils; + +import java.time.Duration; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; + +/** + * @Description: 日期辅助工具类 + * @Author: wangpeng + * @Date: 2023/6/14 10:25 + */ +public class DateUtils { + private static final String DATE_PATTERN = "yyyy-MM-dd"; + private static final String DATETIME_PATTERN = "yyyy-MM-dd HH:mm:ss"; + + /** + * 获取两个日期相差的天数 + * @param startDate + * @param endDate + * @return + */ + public static long subDaysByDateTime(String startDate, String endDate) { + long sub; + try { + DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(DATETIME_PATTERN); + LocalDateTime start = LocalDateTime.parse(startDate, dateTimeFormatter); + LocalDateTime end = LocalDateTime.parse(endDate, dateTimeFormatter); + sub = Duration.between(start, end).toDays(); + } catch (DateTimeParseException e) { + sub = -1; + } + return sub; + } + + /** + * 获取两个日期相差的天数 + * @param startDate + * @param endDate + * @return + */ + public static long subDaysByDate(String startDate, String endDate) { + long sub; + try { + DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(DATE_PATTERN); + LocalDate start = LocalDate.parse(startDate, dateTimeFormatter); + LocalDate end = LocalDate.parse(endDate, dateTimeFormatter); + sub = Duration.between(LocalDateTime.of(start, LocalTime.of(0,0,0)), + LocalDateTime.of(end, LocalTime.of(0,0,0))).toDays(); + } catch (DateTimeParseException e) { + sub = -1; + } + return sub; + } + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java index 64da96c..3794b95 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.dto.business.labExecutive.SampleHandOutInitListResponse; +import com.casic.missiles.dto.cockpit.LabAssetsResponse; import com.casic.missiles.model.meter.MeterOrganize; import org.apache.ibatis.annotations.Param; @@ -23,4 +24,6 @@ List selectListByLabCapacity(@Param("list") List list); Long selectDeptDirectorByDeptId(@Param("deptId") Long deptId); + + List selectStaffCount(); } diff --git a/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml b/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml index 56398ae..1033315 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml @@ -22,4 +22,12 @@ WHERE su.DEPT_ID = #{deptId} LIMIT 1 + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/CockpitDeptOutputListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/CockpitDeptOutputListResponse.java new file mode 100644 index 0000000..c326491 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/CockpitDeptOutputListResponse.java @@ -0,0 +1,39 @@ +package com.casic.missiles.dto.cockpit; + +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/6/14 13:36 + */ +@ApiModel +@Data +public class CockpitDeptOutputListResponse { + @ApiModelProperty(value = "部门id", dataType = "Long") + private Long deptId; + @ApiModelProperty(value = "部门名", dataType = "String") + private String deptName; + @ApiModelProperty(value = "检定样品数量(检定完成的数量)", dataType = "Integer") + private Integer samples = 0; + @ApiModelProperty(value = "出具证书数量", dataType = "Integer") + private Integer certificates = 0; + @ApiModelProperty(value = "产值总计(单位分)", dataType = "Integer") + private Integer outPut; + + @ExcelProperty(value = "产值总计(元)", order = 10) + private String outPutYuan; + + public String getOutPutYuan() { + if(Objects.nonNull(outPut)) { + outPutYuan = BigDecimal.valueOf(outPut).divide(BigDecimal.valueOf(100), 2, BigDecimal.ROUND_HALF_UP).toPlainString(); + } + return outPutYuan; + } +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/cockpit/MeasureTaskController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/cockpit/MeasureTaskController.java index 0618557..262b77d 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/cockpit/MeasureTaskController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/cockpit/MeasureTaskController.java @@ -2,6 +2,8 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.cockpit.CockpitDeptOutputListResponse; +import com.casic.missiles.dto.cockpit.LabAssetsResponse; import com.casic.missiles.dto.cockpit.OrderInfoResponse; import com.casic.missiles.service.cockpit.IMeasureTaskService; import io.swagger.annotations.Api; @@ -34,4 +36,39 @@ public ReturnDTO orderInfo() { return ReturnUtil.success(measureTaskService.orderInfo()); } + + @ApiOperation("实验室资产") + @GetMapping("/lab/assets") + public ReturnDTO labAssets() { + return ReturnUtil.success(measureTaskService.labAssets()); + } + + /** + * 工作分析,使用业务管理-业务看板中部门综合分析,缺少同比、环比、本月检完样品总数 + */ + + /** + * 产值分析,使用业务管理-业务看板中部门产值分析改造成按部门分组统计,缺少同比、环比、总产值 + */ + @ApiOperation("产值分析") + @GetMapping("/output/list") + public ReturnDTO deptOutputList() { + return ReturnUtil.success(measureTaskService.deptOutputList()); + } + + /** + * 本月调度工况,中间的各实验室样品超期数量在部门综合分析中有,建议直接放到工作分析中展示 + */ +// @ApiOperation("本月调度工况-超期样品信息、合格信息") +// @GetMapping("/lab/assets") +// public ReturnDTO<> labAssets() { +// return ReturnUtil.success(measureTaskService.()); +// } +// +// @ApiOperation("本月人员综合分析-使用业务管理模块业务看板中部门产值分析") +// @GetMapping("/lab/assets") +// public ReturnDTO<> labAssets() { +// return ReturnUtil.success(measureTaskService.()); +// } + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/DateUtils.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/DateUtils.java new file mode 100644 index 0000000..0c18075 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/DateUtils.java @@ -0,0 +1,58 @@ +package com.casic.missiles.utils; + +import java.time.Duration; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; + +/** + * @Description: 日期辅助工具类 + * @Author: wangpeng + * @Date: 2023/6/14 10:25 + */ +public class DateUtils { + private static final String DATE_PATTERN = "yyyy-MM-dd"; + private static final String DATETIME_PATTERN = "yyyy-MM-dd HH:mm:ss"; + + /** + * 获取两个日期相差的天数 + * @param startDate + * @param endDate + * @return + */ + public static long subDaysByDateTime(String startDate, String endDate) { + long sub; + try { + DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(DATETIME_PATTERN); + LocalDateTime start = LocalDateTime.parse(startDate, dateTimeFormatter); + LocalDateTime end = LocalDateTime.parse(endDate, dateTimeFormatter); + sub = Duration.between(start, end).toDays(); + } catch (DateTimeParseException e) { + sub = -1; + } + return sub; + } + + /** + * 获取两个日期相差的天数 + * @param startDate + * @param endDate + * @return + */ + public static long subDaysByDate(String startDate, String endDate) { + long sub; + try { + DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(DATE_PATTERN); + LocalDate start = LocalDate.parse(startDate, dateTimeFormatter); + LocalDate end = LocalDate.parse(endDate, dateTimeFormatter); + sub = Duration.between(LocalDateTime.of(start, LocalTime.of(0,0,0)), + LocalDateTime.of(end, LocalTime.of(0,0,0))).toDays(); + } catch (DateTimeParseException e) { + sub = -1; + } + return sub; + } + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java index 64da96c..3794b95 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.dto.business.labExecutive.SampleHandOutInitListResponse; +import com.casic.missiles.dto.cockpit.LabAssetsResponse; import com.casic.missiles.model.meter.MeterOrganize; import org.apache.ibatis.annotations.Param; @@ -23,4 +24,6 @@ List selectListByLabCapacity(@Param("list") List list); Long selectDeptDirectorByDeptId(@Param("deptId") Long deptId); + + List selectStaffCount(); } diff --git a/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml b/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml index 56398ae..1033315 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml @@ -22,4 +22,12 @@ WHERE su.DEPT_ID = #{deptId} LIMIT 1 + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/CockpitDeptOutputListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/CockpitDeptOutputListResponse.java new file mode 100644 index 0000000..c326491 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/CockpitDeptOutputListResponse.java @@ -0,0 +1,39 @@ +package com.casic.missiles.dto.cockpit; + +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/6/14 13:36 + */ +@ApiModel +@Data +public class CockpitDeptOutputListResponse { + @ApiModelProperty(value = "部门id", dataType = "Long") + private Long deptId; + @ApiModelProperty(value = "部门名", dataType = "String") + private String deptName; + @ApiModelProperty(value = "检定样品数量(检定完成的数量)", dataType = "Integer") + private Integer samples = 0; + @ApiModelProperty(value = "出具证书数量", dataType = "Integer") + private Integer certificates = 0; + @ApiModelProperty(value = "产值总计(单位分)", dataType = "Integer") + private Integer outPut; + + @ExcelProperty(value = "产值总计(元)", order = 10) + private String outPutYuan; + + public String getOutPutYuan() { + if(Objects.nonNull(outPut)) { + outPutYuan = BigDecimal.valueOf(outPut).divide(BigDecimal.valueOf(100), 2, BigDecimal.ROUND_HALF_UP).toPlainString(); + } + return outPutYuan; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/LabAssetsResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/LabAssetsResponse.java new file mode 100644 index 0000000..888f2c7 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/LabAssetsResponse.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.cockpit; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/6/14 10:45 + */ +@ApiModel +@Data +public class LabAssetsResponse { + private Long deptId; + @ApiModelProperty(value = "实验室", dataType = "String") + private String deptName; + @ApiModelProperty(value = "装置数量", dataType = "Long") + private Long equipmentCount; + @ApiModelProperty(value = "设备数量", dataType = "Long") + private Long deviceCount; + @ApiModelProperty(value = "人数", dataType = "Long") + private Long staffCount; +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/cockpit/MeasureTaskController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/cockpit/MeasureTaskController.java index 0618557..262b77d 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/cockpit/MeasureTaskController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/cockpit/MeasureTaskController.java @@ -2,6 +2,8 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.cockpit.CockpitDeptOutputListResponse; +import com.casic.missiles.dto.cockpit.LabAssetsResponse; import com.casic.missiles.dto.cockpit.OrderInfoResponse; import com.casic.missiles.service.cockpit.IMeasureTaskService; import io.swagger.annotations.Api; @@ -34,4 +36,39 @@ public ReturnDTO orderInfo() { return ReturnUtil.success(measureTaskService.orderInfo()); } + + @ApiOperation("实验室资产") + @GetMapping("/lab/assets") + public ReturnDTO labAssets() { + return ReturnUtil.success(measureTaskService.labAssets()); + } + + /** + * 工作分析,使用业务管理-业务看板中部门综合分析,缺少同比、环比、本月检完样品总数 + */ + + /** + * 产值分析,使用业务管理-业务看板中部门产值分析改造成按部门分组统计,缺少同比、环比、总产值 + */ + @ApiOperation("产值分析") + @GetMapping("/output/list") + public ReturnDTO deptOutputList() { + return ReturnUtil.success(measureTaskService.deptOutputList()); + } + + /** + * 本月调度工况,中间的各实验室样品超期数量在部门综合分析中有,建议直接放到工作分析中展示 + */ +// @ApiOperation("本月调度工况-超期样品信息、合格信息") +// @GetMapping("/lab/assets") +// public ReturnDTO<> labAssets() { +// return ReturnUtil.success(measureTaskService.()); +// } +// +// @ApiOperation("本月人员综合分析-使用业务管理模块业务看板中部门产值分析") +// @GetMapping("/lab/assets") +// public ReturnDTO<> labAssets() { +// return ReturnUtil.success(measureTaskService.()); +// } + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/DateUtils.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/DateUtils.java new file mode 100644 index 0000000..0c18075 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/DateUtils.java @@ -0,0 +1,58 @@ +package com.casic.missiles.utils; + +import java.time.Duration; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; + +/** + * @Description: 日期辅助工具类 + * @Author: wangpeng + * @Date: 2023/6/14 10:25 + */ +public class DateUtils { + private static final String DATE_PATTERN = "yyyy-MM-dd"; + private static final String DATETIME_PATTERN = "yyyy-MM-dd HH:mm:ss"; + + /** + * 获取两个日期相差的天数 + * @param startDate + * @param endDate + * @return + */ + public static long subDaysByDateTime(String startDate, String endDate) { + long sub; + try { + DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(DATETIME_PATTERN); + LocalDateTime start = LocalDateTime.parse(startDate, dateTimeFormatter); + LocalDateTime end = LocalDateTime.parse(endDate, dateTimeFormatter); + sub = Duration.between(start, end).toDays(); + } catch (DateTimeParseException e) { + sub = -1; + } + return sub; + } + + /** + * 获取两个日期相差的天数 + * @param startDate + * @param endDate + * @return + */ + public static long subDaysByDate(String startDate, String endDate) { + long sub; + try { + DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(DATE_PATTERN); + LocalDate start = LocalDate.parse(startDate, dateTimeFormatter); + LocalDate end = LocalDate.parse(endDate, dateTimeFormatter); + sub = Duration.between(LocalDateTime.of(start, LocalTime.of(0,0,0)), + LocalDateTime.of(end, LocalTime.of(0,0,0))).toDays(); + } catch (DateTimeParseException e) { + sub = -1; + } + return sub; + } + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java index 64da96c..3794b95 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.dto.business.labExecutive.SampleHandOutInitListResponse; +import com.casic.missiles.dto.cockpit.LabAssetsResponse; import com.casic.missiles.model.meter.MeterOrganize; import org.apache.ibatis.annotations.Param; @@ -23,4 +24,6 @@ List selectListByLabCapacity(@Param("list") List list); Long selectDeptDirectorByDeptId(@Param("deptId") Long deptId); + + List selectStaffCount(); } diff --git a/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml b/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml index 56398ae..1033315 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml @@ -22,4 +22,12 @@ WHERE su.DEPT_ID = #{deptId} LIMIT 1 + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/CockpitDeptOutputListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/CockpitDeptOutputListResponse.java new file mode 100644 index 0000000..c326491 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/CockpitDeptOutputListResponse.java @@ -0,0 +1,39 @@ +package com.casic.missiles.dto.cockpit; + +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/6/14 13:36 + */ +@ApiModel +@Data +public class CockpitDeptOutputListResponse { + @ApiModelProperty(value = "部门id", dataType = "Long") + private Long deptId; + @ApiModelProperty(value = "部门名", dataType = "String") + private String deptName; + @ApiModelProperty(value = "检定样品数量(检定完成的数量)", dataType = "Integer") + private Integer samples = 0; + @ApiModelProperty(value = "出具证书数量", dataType = "Integer") + private Integer certificates = 0; + @ApiModelProperty(value = "产值总计(单位分)", dataType = "Integer") + private Integer outPut; + + @ExcelProperty(value = "产值总计(元)", order = 10) + private String outPutYuan; + + public String getOutPutYuan() { + if(Objects.nonNull(outPut)) { + outPutYuan = BigDecimal.valueOf(outPut).divide(BigDecimal.valueOf(100), 2, BigDecimal.ROUND_HALF_UP).toPlainString(); + } + return outPutYuan; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/LabAssetsResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/LabAssetsResponse.java new file mode 100644 index 0000000..888f2c7 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/LabAssetsResponse.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.cockpit; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/6/14 10:45 + */ +@ApiModel +@Data +public class LabAssetsResponse { + private Long deptId; + @ApiModelProperty(value = "实验室", dataType = "String") + private String deptName; + @ApiModelProperty(value = "装置数量", dataType = "Long") + private Long equipmentCount; + @ApiModelProperty(value = "设备数量", dataType = "Long") + private Long deviceCount; + @ApiModelProperty(value = "人数", dataType = "Long") + private Long staffCount; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/OrderInfoResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/OrderInfoResponse.java index cef1fd2..2d608bc 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/OrderInfoResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/OrderInfoResponse.java @@ -12,8 +12,8 @@ @ApiModel @Data public class OrderInfoResponse { - @ApiModelProperty(value = "接单天数", dataType = "Integer") - private Integer receiveOrderDays = 0; + @ApiModelProperty(value = "接单天数", dataType = "Long") + private Long receiveOrderDays = 0l; @ApiModelProperty(value = "接单数量", dataType = "Integer") private Integer receiveOrderAmount = 0; @ApiModelProperty(value = "成交额", dataType = "String") diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/cockpit/MeasureTaskController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/cockpit/MeasureTaskController.java index 0618557..262b77d 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/cockpit/MeasureTaskController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/cockpit/MeasureTaskController.java @@ -2,6 +2,8 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.cockpit.CockpitDeptOutputListResponse; +import com.casic.missiles.dto.cockpit.LabAssetsResponse; import com.casic.missiles.dto.cockpit.OrderInfoResponse; import com.casic.missiles.service.cockpit.IMeasureTaskService; import io.swagger.annotations.Api; @@ -34,4 +36,39 @@ public ReturnDTO orderInfo() { return ReturnUtil.success(measureTaskService.orderInfo()); } + + @ApiOperation("实验室资产") + @GetMapping("/lab/assets") + public ReturnDTO labAssets() { + return ReturnUtil.success(measureTaskService.labAssets()); + } + + /** + * 工作分析,使用业务管理-业务看板中部门综合分析,缺少同比、环比、本月检完样品总数 + */ + + /** + * 产值分析,使用业务管理-业务看板中部门产值分析改造成按部门分组统计,缺少同比、环比、总产值 + */ + @ApiOperation("产值分析") + @GetMapping("/output/list") + public ReturnDTO deptOutputList() { + return ReturnUtil.success(measureTaskService.deptOutputList()); + } + + /** + * 本月调度工况,中间的各实验室样品超期数量在部门综合分析中有,建议直接放到工作分析中展示 + */ +// @ApiOperation("本月调度工况-超期样品信息、合格信息") +// @GetMapping("/lab/assets") +// public ReturnDTO<> labAssets() { +// return ReturnUtil.success(measureTaskService.()); +// } +// +// @ApiOperation("本月人员综合分析-使用业务管理模块业务看板中部门产值分析") +// @GetMapping("/lab/assets") +// public ReturnDTO<> labAssets() { +// return ReturnUtil.success(measureTaskService.()); +// } + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/DateUtils.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/DateUtils.java new file mode 100644 index 0000000..0c18075 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/DateUtils.java @@ -0,0 +1,58 @@ +package com.casic.missiles.utils; + +import java.time.Duration; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; + +/** + * @Description: 日期辅助工具类 + * @Author: wangpeng + * @Date: 2023/6/14 10:25 + */ +public class DateUtils { + private static final String DATE_PATTERN = "yyyy-MM-dd"; + private static final String DATETIME_PATTERN = "yyyy-MM-dd HH:mm:ss"; + + /** + * 获取两个日期相差的天数 + * @param startDate + * @param endDate + * @return + */ + public static long subDaysByDateTime(String startDate, String endDate) { + long sub; + try { + DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(DATETIME_PATTERN); + LocalDateTime start = LocalDateTime.parse(startDate, dateTimeFormatter); + LocalDateTime end = LocalDateTime.parse(endDate, dateTimeFormatter); + sub = Duration.between(start, end).toDays(); + } catch (DateTimeParseException e) { + sub = -1; + } + return sub; + } + + /** + * 获取两个日期相差的天数 + * @param startDate + * @param endDate + * @return + */ + public static long subDaysByDate(String startDate, String endDate) { + long sub; + try { + DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(DATE_PATTERN); + LocalDate start = LocalDate.parse(startDate, dateTimeFormatter); + LocalDate end = LocalDate.parse(endDate, dateTimeFormatter); + sub = Duration.between(LocalDateTime.of(start, LocalTime.of(0,0,0)), + LocalDateTime.of(end, LocalTime.of(0,0,0))).toDays(); + } catch (DateTimeParseException e) { + sub = -1; + } + return sub; + } + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java index 64da96c..3794b95 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.dto.business.labExecutive.SampleHandOutInitListResponse; +import com.casic.missiles.dto.cockpit.LabAssetsResponse; import com.casic.missiles.model.meter.MeterOrganize; import org.apache.ibatis.annotations.Param; @@ -23,4 +24,6 @@ List selectListByLabCapacity(@Param("list") List list); Long selectDeptDirectorByDeptId(@Param("deptId") Long deptId); + + List selectStaffCount(); } diff --git a/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml b/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml index 56398ae..1033315 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml @@ -22,4 +22,12 @@ WHERE su.DEPT_ID = #{deptId} LIMIT 1 + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/CockpitDeptOutputListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/CockpitDeptOutputListResponse.java new file mode 100644 index 0000000..c326491 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/CockpitDeptOutputListResponse.java @@ -0,0 +1,39 @@ +package com.casic.missiles.dto.cockpit; + +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/6/14 13:36 + */ +@ApiModel +@Data +public class CockpitDeptOutputListResponse { + @ApiModelProperty(value = "部门id", dataType = "Long") + private Long deptId; + @ApiModelProperty(value = "部门名", dataType = "String") + private String deptName; + @ApiModelProperty(value = "检定样品数量(检定完成的数量)", dataType = "Integer") + private Integer samples = 0; + @ApiModelProperty(value = "出具证书数量", dataType = "Integer") + private Integer certificates = 0; + @ApiModelProperty(value = "产值总计(单位分)", dataType = "Integer") + private Integer outPut; + + @ExcelProperty(value = "产值总计(元)", order = 10) + private String outPutYuan; + + public String getOutPutYuan() { + if(Objects.nonNull(outPut)) { + outPutYuan = BigDecimal.valueOf(outPut).divide(BigDecimal.valueOf(100), 2, BigDecimal.ROUND_HALF_UP).toPlainString(); + } + return outPutYuan; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/LabAssetsResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/LabAssetsResponse.java new file mode 100644 index 0000000..888f2c7 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/LabAssetsResponse.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.cockpit; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/6/14 10:45 + */ +@ApiModel +@Data +public class LabAssetsResponse { + private Long deptId; + @ApiModelProperty(value = "实验室", dataType = "String") + private String deptName; + @ApiModelProperty(value = "装置数量", dataType = "Long") + private Long equipmentCount; + @ApiModelProperty(value = "设备数量", dataType = "Long") + private Long deviceCount; + @ApiModelProperty(value = "人数", dataType = "Long") + private Long staffCount; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/OrderInfoResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/OrderInfoResponse.java index cef1fd2..2d608bc 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/OrderInfoResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/OrderInfoResponse.java @@ -12,8 +12,8 @@ @ApiModel @Data public class OrderInfoResponse { - @ApiModelProperty(value = "接单天数", dataType = "Integer") - private Integer receiveOrderDays = 0; + @ApiModelProperty(value = "接单天数", dataType = "Long") + private Long receiveOrderDays = 0l; @ApiModelProperty(value = "接单数量", dataType = "Integer") private Integer receiveOrderAmount = 0; @ApiModelProperty(value = "成交额", dataType = "String") diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java index 1c5d2ed..8d3af37 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java @@ -24,7 +24,6 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.business.BusinessOutsourcerInfoMapper; import com.casic.missiles.model.business.BusinessOutsourcerInfo; -import com.casic.missiles.model.equipment.EquipmentFixedAssets; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.IBaseApprovalService; import com.casic.missiles.service.business.IBusinessOutsourcerInfoService; @@ -243,14 +242,14 @@ QueryWrapper wrapper = new QueryWrapper<>(); //无审批通过则返回空数据 if (CollectionUtils.isEmpty(passedList)) { - wrapper.eq("id", 12344321); - return wrapper; + //保证批量导入的可以查询到 + passedList.add("xxx"); } wrapper.like(StringUtils.isNotBlank(request.getOutsourcerNo()), "outsourcer_no", request.getOutsourcerNo()); wrapper.like(StringUtils.isNotBlank(request.getOutsourcerName()), "outsourcer_name", request.getOutsourcerName()); wrapper.like(StringUtils.isNotBlank(request.getBusinessSize()), "business_size", request.getBusinessSize()); wrapper.like(StringUtils.isNotBlank(request.getGrade()), "grade", request.getGrade()); - wrapper.in("id", passedList); + wrapper.and(QueryWrapper -> QueryWrapper.in("id", passedList).or().isNull("approval_status")); wrapper.eq("is_del", 0); wrapper.orderByDesc("create_time"); return wrapper; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/cockpit/MeasureTaskController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/cockpit/MeasureTaskController.java index 0618557..262b77d 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/cockpit/MeasureTaskController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/cockpit/MeasureTaskController.java @@ -2,6 +2,8 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.cockpit.CockpitDeptOutputListResponse; +import com.casic.missiles.dto.cockpit.LabAssetsResponse; import com.casic.missiles.dto.cockpit.OrderInfoResponse; import com.casic.missiles.service.cockpit.IMeasureTaskService; import io.swagger.annotations.Api; @@ -34,4 +36,39 @@ public ReturnDTO orderInfo() { return ReturnUtil.success(measureTaskService.orderInfo()); } + + @ApiOperation("实验室资产") + @GetMapping("/lab/assets") + public ReturnDTO labAssets() { + return ReturnUtil.success(measureTaskService.labAssets()); + } + + /** + * 工作分析,使用业务管理-业务看板中部门综合分析,缺少同比、环比、本月检完样品总数 + */ + + /** + * 产值分析,使用业务管理-业务看板中部门产值分析改造成按部门分组统计,缺少同比、环比、总产值 + */ + @ApiOperation("产值分析") + @GetMapping("/output/list") + public ReturnDTO deptOutputList() { + return ReturnUtil.success(measureTaskService.deptOutputList()); + } + + /** + * 本月调度工况,中间的各实验室样品超期数量在部门综合分析中有,建议直接放到工作分析中展示 + */ +// @ApiOperation("本月调度工况-超期样品信息、合格信息") +// @GetMapping("/lab/assets") +// public ReturnDTO<> labAssets() { +// return ReturnUtil.success(measureTaskService.()); +// } +// +// @ApiOperation("本月人员综合分析-使用业务管理模块业务看板中部门产值分析") +// @GetMapping("/lab/assets") +// public ReturnDTO<> labAssets() { +// return ReturnUtil.success(measureTaskService.()); +// } + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/DateUtils.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/DateUtils.java new file mode 100644 index 0000000..0c18075 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/DateUtils.java @@ -0,0 +1,58 @@ +package com.casic.missiles.utils; + +import java.time.Duration; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; + +/** + * @Description: 日期辅助工具类 + * @Author: wangpeng + * @Date: 2023/6/14 10:25 + */ +public class DateUtils { + private static final String DATE_PATTERN = "yyyy-MM-dd"; + private static final String DATETIME_PATTERN = "yyyy-MM-dd HH:mm:ss"; + + /** + * 获取两个日期相差的天数 + * @param startDate + * @param endDate + * @return + */ + public static long subDaysByDateTime(String startDate, String endDate) { + long sub; + try { + DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(DATETIME_PATTERN); + LocalDateTime start = LocalDateTime.parse(startDate, dateTimeFormatter); + LocalDateTime end = LocalDateTime.parse(endDate, dateTimeFormatter); + sub = Duration.between(start, end).toDays(); + } catch (DateTimeParseException e) { + sub = -1; + } + return sub; + } + + /** + * 获取两个日期相差的天数 + * @param startDate + * @param endDate + * @return + */ + public static long subDaysByDate(String startDate, String endDate) { + long sub; + try { + DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(DATE_PATTERN); + LocalDate start = LocalDate.parse(startDate, dateTimeFormatter); + LocalDate end = LocalDate.parse(endDate, dateTimeFormatter); + sub = Duration.between(LocalDateTime.of(start, LocalTime.of(0,0,0)), + LocalDateTime.of(end, LocalTime.of(0,0,0))).toDays(); + } catch (DateTimeParseException e) { + sub = -1; + } + return sub; + } + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java index 64da96c..3794b95 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.dto.business.labExecutive.SampleHandOutInitListResponse; +import com.casic.missiles.dto.cockpit.LabAssetsResponse; import com.casic.missiles.model.meter.MeterOrganize; import org.apache.ibatis.annotations.Param; @@ -23,4 +24,6 @@ List selectListByLabCapacity(@Param("list") List list); Long selectDeptDirectorByDeptId(@Param("deptId") Long deptId); + + List selectStaffCount(); } diff --git a/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml b/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml index 56398ae..1033315 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml @@ -22,4 +22,12 @@ WHERE su.DEPT_ID = #{deptId} LIMIT 1 + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/CockpitDeptOutputListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/CockpitDeptOutputListResponse.java new file mode 100644 index 0000000..c326491 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/CockpitDeptOutputListResponse.java @@ -0,0 +1,39 @@ +package com.casic.missiles.dto.cockpit; + +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/6/14 13:36 + */ +@ApiModel +@Data +public class CockpitDeptOutputListResponse { + @ApiModelProperty(value = "部门id", dataType = "Long") + private Long deptId; + @ApiModelProperty(value = "部门名", dataType = "String") + private String deptName; + @ApiModelProperty(value = "检定样品数量(检定完成的数量)", dataType = "Integer") + private Integer samples = 0; + @ApiModelProperty(value = "出具证书数量", dataType = "Integer") + private Integer certificates = 0; + @ApiModelProperty(value = "产值总计(单位分)", dataType = "Integer") + private Integer outPut; + + @ExcelProperty(value = "产值总计(元)", order = 10) + private String outPutYuan; + + public String getOutPutYuan() { + if(Objects.nonNull(outPut)) { + outPutYuan = BigDecimal.valueOf(outPut).divide(BigDecimal.valueOf(100), 2, BigDecimal.ROUND_HALF_UP).toPlainString(); + } + return outPutYuan; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/LabAssetsResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/LabAssetsResponse.java new file mode 100644 index 0000000..888f2c7 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/LabAssetsResponse.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.cockpit; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/6/14 10:45 + */ +@ApiModel +@Data +public class LabAssetsResponse { + private Long deptId; + @ApiModelProperty(value = "实验室", dataType = "String") + private String deptName; + @ApiModelProperty(value = "装置数量", dataType = "Long") + private Long equipmentCount; + @ApiModelProperty(value = "设备数量", dataType = "Long") + private Long deviceCount; + @ApiModelProperty(value = "人数", dataType = "Long") + private Long staffCount; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/OrderInfoResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/OrderInfoResponse.java index cef1fd2..2d608bc 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/OrderInfoResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/OrderInfoResponse.java @@ -12,8 +12,8 @@ @ApiModel @Data public class OrderInfoResponse { - @ApiModelProperty(value = "接单天数", dataType = "Integer") - private Integer receiveOrderDays = 0; + @ApiModelProperty(value = "接单天数", dataType = "Long") + private Long receiveOrderDays = 0l; @ApiModelProperty(value = "接单数量", dataType = "Integer") private Integer receiveOrderAmount = 0; @ApiModelProperty(value = "成交额", dataType = "String") diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java index 1c5d2ed..8d3af37 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java @@ -24,7 +24,6 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.business.BusinessOutsourcerInfoMapper; import com.casic.missiles.model.business.BusinessOutsourcerInfo; -import com.casic.missiles.model.equipment.EquipmentFixedAssets; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.IBaseApprovalService; import com.casic.missiles.service.business.IBusinessOutsourcerInfoService; @@ -243,14 +242,14 @@ QueryWrapper wrapper = new QueryWrapper<>(); //无审批通过则返回空数据 if (CollectionUtils.isEmpty(passedList)) { - wrapper.eq("id", 12344321); - return wrapper; + //保证批量导入的可以查询到 + passedList.add("xxx"); } wrapper.like(StringUtils.isNotBlank(request.getOutsourcerNo()), "outsourcer_no", request.getOutsourcerNo()); wrapper.like(StringUtils.isNotBlank(request.getOutsourcerName()), "outsourcer_name", request.getOutsourcerName()); wrapper.like(StringUtils.isNotBlank(request.getBusinessSize()), "business_size", request.getBusinessSize()); wrapper.like(StringUtils.isNotBlank(request.getGrade()), "grade", request.getGrade()); - wrapper.in("id", passedList); + wrapper.and(QueryWrapper -> QueryWrapper.in("id", passedList).or().isNull("approval_status")); wrapper.eq("is_del", 0); wrapper.orderByDesc("create_time"); return wrapper; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/cockpit/AssetMonitorServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/cockpit/AssetMonitorServiceImpl.java index 5ca5ab0..43f3c5d 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/cockpit/AssetMonitorServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/cockpit/AssetMonitorServiceImpl.java @@ -70,6 +70,7 @@ //测量设备总数 QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("asset_type", "1"); + wrapper.eq("is_del", 0); response.setDeviceCount(meterFixedAssetsMapper.selectCount(wrapper)); //标准装置总数 QueryWrapper standardEquipmentQueryWrapper = new QueryWrapper<>(); diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/cockpit/MeasureTaskController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/cockpit/MeasureTaskController.java index 0618557..262b77d 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/cockpit/MeasureTaskController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/cockpit/MeasureTaskController.java @@ -2,6 +2,8 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.cockpit.CockpitDeptOutputListResponse; +import com.casic.missiles.dto.cockpit.LabAssetsResponse; import com.casic.missiles.dto.cockpit.OrderInfoResponse; import com.casic.missiles.service.cockpit.IMeasureTaskService; import io.swagger.annotations.Api; @@ -34,4 +36,39 @@ public ReturnDTO orderInfo() { return ReturnUtil.success(measureTaskService.orderInfo()); } + + @ApiOperation("实验室资产") + @GetMapping("/lab/assets") + public ReturnDTO labAssets() { + return ReturnUtil.success(measureTaskService.labAssets()); + } + + /** + * 工作分析,使用业务管理-业务看板中部门综合分析,缺少同比、环比、本月检完样品总数 + */ + + /** + * 产值分析,使用业务管理-业务看板中部门产值分析改造成按部门分组统计,缺少同比、环比、总产值 + */ + @ApiOperation("产值分析") + @GetMapping("/output/list") + public ReturnDTO deptOutputList() { + return ReturnUtil.success(measureTaskService.deptOutputList()); + } + + /** + * 本月调度工况,中间的各实验室样品超期数量在部门综合分析中有,建议直接放到工作分析中展示 + */ +// @ApiOperation("本月调度工况-超期样品信息、合格信息") +// @GetMapping("/lab/assets") +// public ReturnDTO<> labAssets() { +// return ReturnUtil.success(measureTaskService.()); +// } +// +// @ApiOperation("本月人员综合分析-使用业务管理模块业务看板中部门产值分析") +// @GetMapping("/lab/assets") +// public ReturnDTO<> labAssets() { +// return ReturnUtil.success(measureTaskService.()); +// } + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/DateUtils.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/DateUtils.java new file mode 100644 index 0000000..0c18075 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/DateUtils.java @@ -0,0 +1,58 @@ +package com.casic.missiles.utils; + +import java.time.Duration; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; + +/** + * @Description: 日期辅助工具类 + * @Author: wangpeng + * @Date: 2023/6/14 10:25 + */ +public class DateUtils { + private static final String DATE_PATTERN = "yyyy-MM-dd"; + private static final String DATETIME_PATTERN = "yyyy-MM-dd HH:mm:ss"; + + /** + * 获取两个日期相差的天数 + * @param startDate + * @param endDate + * @return + */ + public static long subDaysByDateTime(String startDate, String endDate) { + long sub; + try { + DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(DATETIME_PATTERN); + LocalDateTime start = LocalDateTime.parse(startDate, dateTimeFormatter); + LocalDateTime end = LocalDateTime.parse(endDate, dateTimeFormatter); + sub = Duration.between(start, end).toDays(); + } catch (DateTimeParseException e) { + sub = -1; + } + return sub; + } + + /** + * 获取两个日期相差的天数 + * @param startDate + * @param endDate + * @return + */ + public static long subDaysByDate(String startDate, String endDate) { + long sub; + try { + DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(DATE_PATTERN); + LocalDate start = LocalDate.parse(startDate, dateTimeFormatter); + LocalDate end = LocalDate.parse(endDate, dateTimeFormatter); + sub = Duration.between(LocalDateTime.of(start, LocalTime.of(0,0,0)), + LocalDateTime.of(end, LocalTime.of(0,0,0))).toDays(); + } catch (DateTimeParseException e) { + sub = -1; + } + return sub; + } + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java index 64da96c..3794b95 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.dto.business.labExecutive.SampleHandOutInitListResponse; +import com.casic.missiles.dto.cockpit.LabAssetsResponse; import com.casic.missiles.model.meter.MeterOrganize; import org.apache.ibatis.annotations.Param; @@ -23,4 +24,6 @@ List selectListByLabCapacity(@Param("list") List list); Long selectDeptDirectorByDeptId(@Param("deptId") Long deptId); + + List selectStaffCount(); } diff --git a/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml b/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml index 56398ae..1033315 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml @@ -22,4 +22,12 @@ WHERE su.DEPT_ID = #{deptId} LIMIT 1 + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/CockpitDeptOutputListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/CockpitDeptOutputListResponse.java new file mode 100644 index 0000000..c326491 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/CockpitDeptOutputListResponse.java @@ -0,0 +1,39 @@ +package com.casic.missiles.dto.cockpit; + +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/6/14 13:36 + */ +@ApiModel +@Data +public class CockpitDeptOutputListResponse { + @ApiModelProperty(value = "部门id", dataType = "Long") + private Long deptId; + @ApiModelProperty(value = "部门名", dataType = "String") + private String deptName; + @ApiModelProperty(value = "检定样品数量(检定完成的数量)", dataType = "Integer") + private Integer samples = 0; + @ApiModelProperty(value = "出具证书数量", dataType = "Integer") + private Integer certificates = 0; + @ApiModelProperty(value = "产值总计(单位分)", dataType = "Integer") + private Integer outPut; + + @ExcelProperty(value = "产值总计(元)", order = 10) + private String outPutYuan; + + public String getOutPutYuan() { + if(Objects.nonNull(outPut)) { + outPutYuan = BigDecimal.valueOf(outPut).divide(BigDecimal.valueOf(100), 2, BigDecimal.ROUND_HALF_UP).toPlainString(); + } + return outPutYuan; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/LabAssetsResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/LabAssetsResponse.java new file mode 100644 index 0000000..888f2c7 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/LabAssetsResponse.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.cockpit; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/6/14 10:45 + */ +@ApiModel +@Data +public class LabAssetsResponse { + private Long deptId; + @ApiModelProperty(value = "实验室", dataType = "String") + private String deptName; + @ApiModelProperty(value = "装置数量", dataType = "Long") + private Long equipmentCount; + @ApiModelProperty(value = "设备数量", dataType = "Long") + private Long deviceCount; + @ApiModelProperty(value = "人数", dataType = "Long") + private Long staffCount; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/OrderInfoResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/OrderInfoResponse.java index cef1fd2..2d608bc 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/OrderInfoResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/OrderInfoResponse.java @@ -12,8 +12,8 @@ @ApiModel @Data public class OrderInfoResponse { - @ApiModelProperty(value = "接单天数", dataType = "Integer") - private Integer receiveOrderDays = 0; + @ApiModelProperty(value = "接单天数", dataType = "Long") + private Long receiveOrderDays = 0l; @ApiModelProperty(value = "接单数量", dataType = "Integer") private Integer receiveOrderAmount = 0; @ApiModelProperty(value = "成交额", dataType = "String") diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java index 1c5d2ed..8d3af37 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java @@ -24,7 +24,6 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.business.BusinessOutsourcerInfoMapper; import com.casic.missiles.model.business.BusinessOutsourcerInfo; -import com.casic.missiles.model.equipment.EquipmentFixedAssets; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.IBaseApprovalService; import com.casic.missiles.service.business.IBusinessOutsourcerInfoService; @@ -243,14 +242,14 @@ QueryWrapper wrapper = new QueryWrapper<>(); //无审批通过则返回空数据 if (CollectionUtils.isEmpty(passedList)) { - wrapper.eq("id", 12344321); - return wrapper; + //保证批量导入的可以查询到 + passedList.add("xxx"); } wrapper.like(StringUtils.isNotBlank(request.getOutsourcerNo()), "outsourcer_no", request.getOutsourcerNo()); wrapper.like(StringUtils.isNotBlank(request.getOutsourcerName()), "outsourcer_name", request.getOutsourcerName()); wrapper.like(StringUtils.isNotBlank(request.getBusinessSize()), "business_size", request.getBusinessSize()); wrapper.like(StringUtils.isNotBlank(request.getGrade()), "grade", request.getGrade()); - wrapper.in("id", passedList); + wrapper.and(QueryWrapper -> QueryWrapper.in("id", passedList).or().isNull("approval_status")); wrapper.eq("is_del", 0); wrapper.orderByDesc("create_time"); return wrapper; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/cockpit/AssetMonitorServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/cockpit/AssetMonitorServiceImpl.java index 5ca5ab0..43f3c5d 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/cockpit/AssetMonitorServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/cockpit/AssetMonitorServiceImpl.java @@ -70,6 +70,7 @@ //测量设备总数 QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("asset_type", "1"); + wrapper.eq("is_del", 0); response.setDeviceCount(meterFixedAssetsMapper.selectCount(wrapper)); //标准装置总数 QueryWrapper standardEquipmentQueryWrapper = new QueryWrapper<>(); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/cockpit/IMeasureTaskServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/cockpit/IMeasureTaskServiceImpl.java index 0774b3c..756c9da 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/cockpit/IMeasureTaskServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/cockpit/IMeasureTaskServiceImpl.java @@ -1,13 +1,32 @@ package com.casic.missiles.service.Impl.cockpit; +import cn.hutool.core.date.DateUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.dto.business.board.BoardBaseRequest; +import com.casic.missiles.dto.business.board.BoardDeptOutputListResponse; +import com.casic.missiles.dto.business.board.BoardDeptOutputResponse; +import com.casic.missiles.dto.cockpit.CockpitDeptOutputListResponse; +import com.casic.missiles.dto.cockpit.LabAssetsResponse; import com.casic.missiles.dto.cockpit.OrderInfoResponse; +import com.casic.missiles.enums.business.AgreementStatusEnum; +import com.casic.missiles.mapper.MeterFixedAssetsMapper; import com.casic.missiles.mapper.business.BusinessOrderMapper; +import com.casic.missiles.mapper.equipment.EquipmentStandardEquipmentMapper; +import com.casic.missiles.mapper.finance.FinanceAgreementInfoMapper; +import com.casic.missiles.mapper.meter.MeterOrganizeMapper; import com.casic.missiles.model.business.BusinessOrder; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; +import com.casic.missiles.model.equipment.EquipmentStandardEquipment; +import com.casic.missiles.service.business.IBusinessBoardService; import com.casic.missiles.service.cockpit.IMeasureTaskService; +import com.casic.missiles.service.finance.IFinanceBusinessSettlementInfoService; +import com.casic.missiles.utils.DateUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; +import java.math.BigDecimal; +import java.util.ArrayList; import java.util.List; /** @@ -19,14 +38,67 @@ public class IMeasureTaskServiceImpl implements IMeasureTaskService { @Autowired private BusinessOrderMapper orderMapper; + @Autowired + private FinanceAgreementInfoMapper agreementInfoMapper; + @Autowired + private IFinanceBusinessSettlementInfoService settlementInfoService; + @Autowired + private EquipmentStandardEquipmentMapper standardEquipmentMapper; + @Autowired + private MeterFixedAssetsMapper fixedAssetsMapper; + @Autowired + private MeterOrganizeMapper organizeMapper; + @Autowired + private IBusinessBoardService boardService; @Override public OrderInfoResponse orderInfo() { + OrderInfoResponse response = new OrderInfoResponse(); //查询已接收和检测完状态的委托单最早的日期、数量、成交额 List orders = orderMapper.selectOrderForCockpit(); if(CollectionUtils.isEmpty(orders)){ - return new OrderInfoResponse(); + return response; + } + //本年签订收入合同总金额 + Integer agreementAmount = agreementInfoMapper.selectCompleteAmount(null, AgreementStatusEnum.ALREADY_COMPLETE); + //本年业务结算总金额 + Integer settleAmount = settlementInfoService.selectCompleteAmount(null); + Integer amount = agreementAmount + settleAmount; + + BusinessOrder businessOrder = orders.get(0); + long subDay = DateUtils.subDaysByDateTime(businessOrder.getCreateTime(), DateUtil.now()); + response.setReceiveOrderDays(subDay); + response.setReceiveOrderAmount(orders.size()); + response.setAmount(BigDecimal.valueOf(amount).divide(BigDecimal.valueOf(100), 2, BigDecimal.ROUND_HALF_UP).toPlainString()); + return response; + } + + @Override + public List labAssets() { + List list = organizeMapper.selectStaffCount(); + list.forEach(response -> { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("standard_laboratory", response.getDeptId()); + wrapper.eq("is_del", 0); + response.setEquipmentCount(standardEquipmentMapper.selectCount(wrapper)); + QueryWrapper assetsWrapper = new QueryWrapper<>(); + assetsWrapper.eq("use_dept", response.getDeptId()); + assetsWrapper.eq("asset_type", "1"); + assetsWrapper.eq("is_del", 0); + response.setDeviceCount(fixedAssetsMapper.selectCount(assetsWrapper)); + }); + return list; + } + + @Override + public List deptOutputList() { + BoardBaseRequest request = new BoardBaseRequest(); + BoardDeptOutputListResponse response = boardService.deptOutputList(request); + List list = response.getList(); + if(CollectionUtils.isEmpty(list)){ + return new ArrayList<>(); } return null; + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/cockpit/MeasureTaskController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/cockpit/MeasureTaskController.java index 0618557..262b77d 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/cockpit/MeasureTaskController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/cockpit/MeasureTaskController.java @@ -2,6 +2,8 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.cockpit.CockpitDeptOutputListResponse; +import com.casic.missiles.dto.cockpit.LabAssetsResponse; import com.casic.missiles.dto.cockpit.OrderInfoResponse; import com.casic.missiles.service.cockpit.IMeasureTaskService; import io.swagger.annotations.Api; @@ -34,4 +36,39 @@ public ReturnDTO orderInfo() { return ReturnUtil.success(measureTaskService.orderInfo()); } + + @ApiOperation("实验室资产") + @GetMapping("/lab/assets") + public ReturnDTO labAssets() { + return ReturnUtil.success(measureTaskService.labAssets()); + } + + /** + * 工作分析,使用业务管理-业务看板中部门综合分析,缺少同比、环比、本月检完样品总数 + */ + + /** + * 产值分析,使用业务管理-业务看板中部门产值分析改造成按部门分组统计,缺少同比、环比、总产值 + */ + @ApiOperation("产值分析") + @GetMapping("/output/list") + public ReturnDTO deptOutputList() { + return ReturnUtil.success(measureTaskService.deptOutputList()); + } + + /** + * 本月调度工况,中间的各实验室样品超期数量在部门综合分析中有,建议直接放到工作分析中展示 + */ +// @ApiOperation("本月调度工况-超期样品信息、合格信息") +// @GetMapping("/lab/assets") +// public ReturnDTO<> labAssets() { +// return ReturnUtil.success(measureTaskService.()); +// } +// +// @ApiOperation("本月人员综合分析-使用业务管理模块业务看板中部门产值分析") +// @GetMapping("/lab/assets") +// public ReturnDTO<> labAssets() { +// return ReturnUtil.success(measureTaskService.()); +// } + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/DateUtils.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/DateUtils.java new file mode 100644 index 0000000..0c18075 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/DateUtils.java @@ -0,0 +1,58 @@ +package com.casic.missiles.utils; + +import java.time.Duration; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; + +/** + * @Description: 日期辅助工具类 + * @Author: wangpeng + * @Date: 2023/6/14 10:25 + */ +public class DateUtils { + private static final String DATE_PATTERN = "yyyy-MM-dd"; + private static final String DATETIME_PATTERN = "yyyy-MM-dd HH:mm:ss"; + + /** + * 获取两个日期相差的天数 + * @param startDate + * @param endDate + * @return + */ + public static long subDaysByDateTime(String startDate, String endDate) { + long sub; + try { + DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(DATETIME_PATTERN); + LocalDateTime start = LocalDateTime.parse(startDate, dateTimeFormatter); + LocalDateTime end = LocalDateTime.parse(endDate, dateTimeFormatter); + sub = Duration.between(start, end).toDays(); + } catch (DateTimeParseException e) { + sub = -1; + } + return sub; + } + + /** + * 获取两个日期相差的天数 + * @param startDate + * @param endDate + * @return + */ + public static long subDaysByDate(String startDate, String endDate) { + long sub; + try { + DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(DATE_PATTERN); + LocalDate start = LocalDate.parse(startDate, dateTimeFormatter); + LocalDate end = LocalDate.parse(endDate, dateTimeFormatter); + sub = Duration.between(LocalDateTime.of(start, LocalTime.of(0,0,0)), + LocalDateTime.of(end, LocalTime.of(0,0,0))).toDays(); + } catch (DateTimeParseException e) { + sub = -1; + } + return sub; + } + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java index 64da96c..3794b95 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.dto.business.labExecutive.SampleHandOutInitListResponse; +import com.casic.missiles.dto.cockpit.LabAssetsResponse; import com.casic.missiles.model.meter.MeterOrganize; import org.apache.ibatis.annotations.Param; @@ -23,4 +24,6 @@ List selectListByLabCapacity(@Param("list") List list); Long selectDeptDirectorByDeptId(@Param("deptId") Long deptId); + + List selectStaffCount(); } diff --git a/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml b/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml index 56398ae..1033315 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml @@ -22,4 +22,12 @@ WHERE su.DEPT_ID = #{deptId} LIMIT 1 + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/CockpitDeptOutputListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/CockpitDeptOutputListResponse.java new file mode 100644 index 0000000..c326491 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/CockpitDeptOutputListResponse.java @@ -0,0 +1,39 @@ +package com.casic.missiles.dto.cockpit; + +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/6/14 13:36 + */ +@ApiModel +@Data +public class CockpitDeptOutputListResponse { + @ApiModelProperty(value = "部门id", dataType = "Long") + private Long deptId; + @ApiModelProperty(value = "部门名", dataType = "String") + private String deptName; + @ApiModelProperty(value = "检定样品数量(检定完成的数量)", dataType = "Integer") + private Integer samples = 0; + @ApiModelProperty(value = "出具证书数量", dataType = "Integer") + private Integer certificates = 0; + @ApiModelProperty(value = "产值总计(单位分)", dataType = "Integer") + private Integer outPut; + + @ExcelProperty(value = "产值总计(元)", order = 10) + private String outPutYuan; + + public String getOutPutYuan() { + if(Objects.nonNull(outPut)) { + outPutYuan = BigDecimal.valueOf(outPut).divide(BigDecimal.valueOf(100), 2, BigDecimal.ROUND_HALF_UP).toPlainString(); + } + return outPutYuan; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/LabAssetsResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/LabAssetsResponse.java new file mode 100644 index 0000000..888f2c7 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/LabAssetsResponse.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.cockpit; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/6/14 10:45 + */ +@ApiModel +@Data +public class LabAssetsResponse { + private Long deptId; + @ApiModelProperty(value = "实验室", dataType = "String") + private String deptName; + @ApiModelProperty(value = "装置数量", dataType = "Long") + private Long equipmentCount; + @ApiModelProperty(value = "设备数量", dataType = "Long") + private Long deviceCount; + @ApiModelProperty(value = "人数", dataType = "Long") + private Long staffCount; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/OrderInfoResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/OrderInfoResponse.java index cef1fd2..2d608bc 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/OrderInfoResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/OrderInfoResponse.java @@ -12,8 +12,8 @@ @ApiModel @Data public class OrderInfoResponse { - @ApiModelProperty(value = "接单天数", dataType = "Integer") - private Integer receiveOrderDays = 0; + @ApiModelProperty(value = "接单天数", dataType = "Long") + private Long receiveOrderDays = 0l; @ApiModelProperty(value = "接单数量", dataType = "Integer") private Integer receiveOrderAmount = 0; @ApiModelProperty(value = "成交额", dataType = "String") diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java index 1c5d2ed..8d3af37 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java @@ -24,7 +24,6 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.business.BusinessOutsourcerInfoMapper; import com.casic.missiles.model.business.BusinessOutsourcerInfo; -import com.casic.missiles.model.equipment.EquipmentFixedAssets; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.IBaseApprovalService; import com.casic.missiles.service.business.IBusinessOutsourcerInfoService; @@ -243,14 +242,14 @@ QueryWrapper wrapper = new QueryWrapper<>(); //无审批通过则返回空数据 if (CollectionUtils.isEmpty(passedList)) { - wrapper.eq("id", 12344321); - return wrapper; + //保证批量导入的可以查询到 + passedList.add("xxx"); } wrapper.like(StringUtils.isNotBlank(request.getOutsourcerNo()), "outsourcer_no", request.getOutsourcerNo()); wrapper.like(StringUtils.isNotBlank(request.getOutsourcerName()), "outsourcer_name", request.getOutsourcerName()); wrapper.like(StringUtils.isNotBlank(request.getBusinessSize()), "business_size", request.getBusinessSize()); wrapper.like(StringUtils.isNotBlank(request.getGrade()), "grade", request.getGrade()); - wrapper.in("id", passedList); + wrapper.and(QueryWrapper -> QueryWrapper.in("id", passedList).or().isNull("approval_status")); wrapper.eq("is_del", 0); wrapper.orderByDesc("create_time"); return wrapper; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/cockpit/AssetMonitorServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/cockpit/AssetMonitorServiceImpl.java index 5ca5ab0..43f3c5d 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/cockpit/AssetMonitorServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/cockpit/AssetMonitorServiceImpl.java @@ -70,6 +70,7 @@ //测量设备总数 QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("asset_type", "1"); + wrapper.eq("is_del", 0); response.setDeviceCount(meterFixedAssetsMapper.selectCount(wrapper)); //标准装置总数 QueryWrapper standardEquipmentQueryWrapper = new QueryWrapper<>(); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/cockpit/IMeasureTaskServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/cockpit/IMeasureTaskServiceImpl.java index 0774b3c..756c9da 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/cockpit/IMeasureTaskServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/cockpit/IMeasureTaskServiceImpl.java @@ -1,13 +1,32 @@ package com.casic.missiles.service.Impl.cockpit; +import cn.hutool.core.date.DateUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.dto.business.board.BoardBaseRequest; +import com.casic.missiles.dto.business.board.BoardDeptOutputListResponse; +import com.casic.missiles.dto.business.board.BoardDeptOutputResponse; +import com.casic.missiles.dto.cockpit.CockpitDeptOutputListResponse; +import com.casic.missiles.dto.cockpit.LabAssetsResponse; import com.casic.missiles.dto.cockpit.OrderInfoResponse; +import com.casic.missiles.enums.business.AgreementStatusEnum; +import com.casic.missiles.mapper.MeterFixedAssetsMapper; import com.casic.missiles.mapper.business.BusinessOrderMapper; +import com.casic.missiles.mapper.equipment.EquipmentStandardEquipmentMapper; +import com.casic.missiles.mapper.finance.FinanceAgreementInfoMapper; +import com.casic.missiles.mapper.meter.MeterOrganizeMapper; import com.casic.missiles.model.business.BusinessOrder; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; +import com.casic.missiles.model.equipment.EquipmentStandardEquipment; +import com.casic.missiles.service.business.IBusinessBoardService; import com.casic.missiles.service.cockpit.IMeasureTaskService; +import com.casic.missiles.service.finance.IFinanceBusinessSettlementInfoService; +import com.casic.missiles.utils.DateUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; +import java.math.BigDecimal; +import java.util.ArrayList; import java.util.List; /** @@ -19,14 +38,67 @@ public class IMeasureTaskServiceImpl implements IMeasureTaskService { @Autowired private BusinessOrderMapper orderMapper; + @Autowired + private FinanceAgreementInfoMapper agreementInfoMapper; + @Autowired + private IFinanceBusinessSettlementInfoService settlementInfoService; + @Autowired + private EquipmentStandardEquipmentMapper standardEquipmentMapper; + @Autowired + private MeterFixedAssetsMapper fixedAssetsMapper; + @Autowired + private MeterOrganizeMapper organizeMapper; + @Autowired + private IBusinessBoardService boardService; @Override public OrderInfoResponse orderInfo() { + OrderInfoResponse response = new OrderInfoResponse(); //查询已接收和检测完状态的委托单最早的日期、数量、成交额 List orders = orderMapper.selectOrderForCockpit(); if(CollectionUtils.isEmpty(orders)){ - return new OrderInfoResponse(); + return response; + } + //本年签订收入合同总金额 + Integer agreementAmount = agreementInfoMapper.selectCompleteAmount(null, AgreementStatusEnum.ALREADY_COMPLETE); + //本年业务结算总金额 + Integer settleAmount = settlementInfoService.selectCompleteAmount(null); + Integer amount = agreementAmount + settleAmount; + + BusinessOrder businessOrder = orders.get(0); + long subDay = DateUtils.subDaysByDateTime(businessOrder.getCreateTime(), DateUtil.now()); + response.setReceiveOrderDays(subDay); + response.setReceiveOrderAmount(orders.size()); + response.setAmount(BigDecimal.valueOf(amount).divide(BigDecimal.valueOf(100), 2, BigDecimal.ROUND_HALF_UP).toPlainString()); + return response; + } + + @Override + public List labAssets() { + List list = organizeMapper.selectStaffCount(); + list.forEach(response -> { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("standard_laboratory", response.getDeptId()); + wrapper.eq("is_del", 0); + response.setEquipmentCount(standardEquipmentMapper.selectCount(wrapper)); + QueryWrapper assetsWrapper = new QueryWrapper<>(); + assetsWrapper.eq("use_dept", response.getDeptId()); + assetsWrapper.eq("asset_type", "1"); + assetsWrapper.eq("is_del", 0); + response.setDeviceCount(fixedAssetsMapper.selectCount(assetsWrapper)); + }); + return list; + } + + @Override + public List deptOutputList() { + BoardBaseRequest request = new BoardBaseRequest(); + BoardDeptOutputListResponse response = boardService.deptOutputList(request); + List list = response.getList(); + if(CollectionUtils.isEmpty(list)){ + return new ArrayList<>(); } return null; + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterTraceSupplierServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterTraceSupplierServiceImpl.java index 534c4d1..b513603 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterTraceSupplierServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterTraceSupplierServiceImpl.java @@ -20,7 +20,6 @@ import com.casic.missiles.enums.system.ApprovalStatusEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.meter.MeterTraceSupplierMapper; -import com.casic.missiles.model.business.BusinessOutsourcerInfo; import com.casic.missiles.model.meter.MeterTraceSupplier; import com.casic.missiles.model.meter.MeterTraceSupplierPerson; import com.casic.missiles.model.meter.MeterTraceSupplierStandardEquipment; @@ -426,13 +425,13 @@ QueryWrapper wrapper = new QueryWrapper<>(); //无审批通过则返回空数据 if (CollectionUtils.isEmpty(passedList)) { - wrapper.eq("id", 12344321); - return wrapper; + //保证批量导入的可以查询到 + passedList.add("xxx"); } wrapper.like(StringUtils.isNotBlank(request.getSupplierNo()), "supplier_no", request.getSupplierNo()); wrapper.like(StringUtils.isNotBlank(request.getSupplierName()), "supplier_name", request.getSupplierName()); wrapper.like(StringUtils.isNotBlank(request.getBusinessContent()), "business_content", request.getBusinessContent()); - wrapper.in("id", passedList); + wrapper.and(QueryWrapper -> QueryWrapper.in("id", passedList).or().isNull("approval_status")); wrapper.eq("is_del", 0); wrapper.orderByDesc("create_time"); return wrapper; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/cockpit/MeasureTaskController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/cockpit/MeasureTaskController.java index 0618557..262b77d 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/cockpit/MeasureTaskController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/cockpit/MeasureTaskController.java @@ -2,6 +2,8 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.cockpit.CockpitDeptOutputListResponse; +import com.casic.missiles.dto.cockpit.LabAssetsResponse; import com.casic.missiles.dto.cockpit.OrderInfoResponse; import com.casic.missiles.service.cockpit.IMeasureTaskService; import io.swagger.annotations.Api; @@ -34,4 +36,39 @@ public ReturnDTO orderInfo() { return ReturnUtil.success(measureTaskService.orderInfo()); } + + @ApiOperation("实验室资产") + @GetMapping("/lab/assets") + public ReturnDTO labAssets() { + return ReturnUtil.success(measureTaskService.labAssets()); + } + + /** + * 工作分析,使用业务管理-业务看板中部门综合分析,缺少同比、环比、本月检完样品总数 + */ + + /** + * 产值分析,使用业务管理-业务看板中部门产值分析改造成按部门分组统计,缺少同比、环比、总产值 + */ + @ApiOperation("产值分析") + @GetMapping("/output/list") + public ReturnDTO deptOutputList() { + return ReturnUtil.success(measureTaskService.deptOutputList()); + } + + /** + * 本月调度工况,中间的各实验室样品超期数量在部门综合分析中有,建议直接放到工作分析中展示 + */ +// @ApiOperation("本月调度工况-超期样品信息、合格信息") +// @GetMapping("/lab/assets") +// public ReturnDTO<> labAssets() { +// return ReturnUtil.success(measureTaskService.()); +// } +// +// @ApiOperation("本月人员综合分析-使用业务管理模块业务看板中部门产值分析") +// @GetMapping("/lab/assets") +// public ReturnDTO<> labAssets() { +// return ReturnUtil.success(measureTaskService.()); +// } + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/DateUtils.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/DateUtils.java new file mode 100644 index 0000000..0c18075 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/DateUtils.java @@ -0,0 +1,58 @@ +package com.casic.missiles.utils; + +import java.time.Duration; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; + +/** + * @Description: 日期辅助工具类 + * @Author: wangpeng + * @Date: 2023/6/14 10:25 + */ +public class DateUtils { + private static final String DATE_PATTERN = "yyyy-MM-dd"; + private static final String DATETIME_PATTERN = "yyyy-MM-dd HH:mm:ss"; + + /** + * 获取两个日期相差的天数 + * @param startDate + * @param endDate + * @return + */ + public static long subDaysByDateTime(String startDate, String endDate) { + long sub; + try { + DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(DATETIME_PATTERN); + LocalDateTime start = LocalDateTime.parse(startDate, dateTimeFormatter); + LocalDateTime end = LocalDateTime.parse(endDate, dateTimeFormatter); + sub = Duration.between(start, end).toDays(); + } catch (DateTimeParseException e) { + sub = -1; + } + return sub; + } + + /** + * 获取两个日期相差的天数 + * @param startDate + * @param endDate + * @return + */ + public static long subDaysByDate(String startDate, String endDate) { + long sub; + try { + DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(DATE_PATTERN); + LocalDate start = LocalDate.parse(startDate, dateTimeFormatter); + LocalDate end = LocalDate.parse(endDate, dateTimeFormatter); + sub = Duration.between(LocalDateTime.of(start, LocalTime.of(0,0,0)), + LocalDateTime.of(end, LocalTime.of(0,0,0))).toDays(); + } catch (DateTimeParseException e) { + sub = -1; + } + return sub; + } + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java index 64da96c..3794b95 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.dto.business.labExecutive.SampleHandOutInitListResponse; +import com.casic.missiles.dto.cockpit.LabAssetsResponse; import com.casic.missiles.model.meter.MeterOrganize; import org.apache.ibatis.annotations.Param; @@ -23,4 +24,6 @@ List selectListByLabCapacity(@Param("list") List list); Long selectDeptDirectorByDeptId(@Param("deptId") Long deptId); + + List selectStaffCount(); } diff --git a/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml b/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml index 56398ae..1033315 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml @@ -22,4 +22,12 @@ WHERE su.DEPT_ID = #{deptId} LIMIT 1 + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/CockpitDeptOutputListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/CockpitDeptOutputListResponse.java new file mode 100644 index 0000000..c326491 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/CockpitDeptOutputListResponse.java @@ -0,0 +1,39 @@ +package com.casic.missiles.dto.cockpit; + +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/6/14 13:36 + */ +@ApiModel +@Data +public class CockpitDeptOutputListResponse { + @ApiModelProperty(value = "部门id", dataType = "Long") + private Long deptId; + @ApiModelProperty(value = "部门名", dataType = "String") + private String deptName; + @ApiModelProperty(value = "检定样品数量(检定完成的数量)", dataType = "Integer") + private Integer samples = 0; + @ApiModelProperty(value = "出具证书数量", dataType = "Integer") + private Integer certificates = 0; + @ApiModelProperty(value = "产值总计(单位分)", dataType = "Integer") + private Integer outPut; + + @ExcelProperty(value = "产值总计(元)", order = 10) + private String outPutYuan; + + public String getOutPutYuan() { + if(Objects.nonNull(outPut)) { + outPutYuan = BigDecimal.valueOf(outPut).divide(BigDecimal.valueOf(100), 2, BigDecimal.ROUND_HALF_UP).toPlainString(); + } + return outPutYuan; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/LabAssetsResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/LabAssetsResponse.java new file mode 100644 index 0000000..888f2c7 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/LabAssetsResponse.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.cockpit; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/6/14 10:45 + */ +@ApiModel +@Data +public class LabAssetsResponse { + private Long deptId; + @ApiModelProperty(value = "实验室", dataType = "String") + private String deptName; + @ApiModelProperty(value = "装置数量", dataType = "Long") + private Long equipmentCount; + @ApiModelProperty(value = "设备数量", dataType = "Long") + private Long deviceCount; + @ApiModelProperty(value = "人数", dataType = "Long") + private Long staffCount; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/OrderInfoResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/OrderInfoResponse.java index cef1fd2..2d608bc 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/OrderInfoResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/cockpit/OrderInfoResponse.java @@ -12,8 +12,8 @@ @ApiModel @Data public class OrderInfoResponse { - @ApiModelProperty(value = "接单天数", dataType = "Integer") - private Integer receiveOrderDays = 0; + @ApiModelProperty(value = "接单天数", dataType = "Long") + private Long receiveOrderDays = 0l; @ApiModelProperty(value = "接单数量", dataType = "Integer") private Integer receiveOrderAmount = 0; @ApiModelProperty(value = "成交额", dataType = "String") diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java index 1c5d2ed..8d3af37 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java @@ -24,7 +24,6 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.business.BusinessOutsourcerInfoMapper; import com.casic.missiles.model.business.BusinessOutsourcerInfo; -import com.casic.missiles.model.equipment.EquipmentFixedAssets; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.IBaseApprovalService; import com.casic.missiles.service.business.IBusinessOutsourcerInfoService; @@ -243,14 +242,14 @@ QueryWrapper wrapper = new QueryWrapper<>(); //无审批通过则返回空数据 if (CollectionUtils.isEmpty(passedList)) { - wrapper.eq("id", 12344321); - return wrapper; + //保证批量导入的可以查询到 + passedList.add("xxx"); } wrapper.like(StringUtils.isNotBlank(request.getOutsourcerNo()), "outsourcer_no", request.getOutsourcerNo()); wrapper.like(StringUtils.isNotBlank(request.getOutsourcerName()), "outsourcer_name", request.getOutsourcerName()); wrapper.like(StringUtils.isNotBlank(request.getBusinessSize()), "business_size", request.getBusinessSize()); wrapper.like(StringUtils.isNotBlank(request.getGrade()), "grade", request.getGrade()); - wrapper.in("id", passedList); + wrapper.and(QueryWrapper -> QueryWrapper.in("id", passedList).or().isNull("approval_status")); wrapper.eq("is_del", 0); wrapper.orderByDesc("create_time"); return wrapper; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/cockpit/AssetMonitorServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/cockpit/AssetMonitorServiceImpl.java index 5ca5ab0..43f3c5d 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/cockpit/AssetMonitorServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/cockpit/AssetMonitorServiceImpl.java @@ -70,6 +70,7 @@ //测量设备总数 QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("asset_type", "1"); + wrapper.eq("is_del", 0); response.setDeviceCount(meterFixedAssetsMapper.selectCount(wrapper)); //标准装置总数 QueryWrapper standardEquipmentQueryWrapper = new QueryWrapper<>(); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/cockpit/IMeasureTaskServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/cockpit/IMeasureTaskServiceImpl.java index 0774b3c..756c9da 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/cockpit/IMeasureTaskServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/cockpit/IMeasureTaskServiceImpl.java @@ -1,13 +1,32 @@ package com.casic.missiles.service.Impl.cockpit; +import cn.hutool.core.date.DateUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.dto.business.board.BoardBaseRequest; +import com.casic.missiles.dto.business.board.BoardDeptOutputListResponse; +import com.casic.missiles.dto.business.board.BoardDeptOutputResponse; +import com.casic.missiles.dto.cockpit.CockpitDeptOutputListResponse; +import com.casic.missiles.dto.cockpit.LabAssetsResponse; import com.casic.missiles.dto.cockpit.OrderInfoResponse; +import com.casic.missiles.enums.business.AgreementStatusEnum; +import com.casic.missiles.mapper.MeterFixedAssetsMapper; import com.casic.missiles.mapper.business.BusinessOrderMapper; +import com.casic.missiles.mapper.equipment.EquipmentStandardEquipmentMapper; +import com.casic.missiles.mapper.finance.FinanceAgreementInfoMapper; +import com.casic.missiles.mapper.meter.MeterOrganizeMapper; import com.casic.missiles.model.business.BusinessOrder; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; +import com.casic.missiles.model.equipment.EquipmentStandardEquipment; +import com.casic.missiles.service.business.IBusinessBoardService; import com.casic.missiles.service.cockpit.IMeasureTaskService; +import com.casic.missiles.service.finance.IFinanceBusinessSettlementInfoService; +import com.casic.missiles.utils.DateUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; +import java.math.BigDecimal; +import java.util.ArrayList; import java.util.List; /** @@ -19,14 +38,67 @@ public class IMeasureTaskServiceImpl implements IMeasureTaskService { @Autowired private BusinessOrderMapper orderMapper; + @Autowired + private FinanceAgreementInfoMapper agreementInfoMapper; + @Autowired + private IFinanceBusinessSettlementInfoService settlementInfoService; + @Autowired + private EquipmentStandardEquipmentMapper standardEquipmentMapper; + @Autowired + private MeterFixedAssetsMapper fixedAssetsMapper; + @Autowired + private MeterOrganizeMapper organizeMapper; + @Autowired + private IBusinessBoardService boardService; @Override public OrderInfoResponse orderInfo() { + OrderInfoResponse response = new OrderInfoResponse(); //查询已接收和检测完状态的委托单最早的日期、数量、成交额 List orders = orderMapper.selectOrderForCockpit(); if(CollectionUtils.isEmpty(orders)){ - return new OrderInfoResponse(); + return response; + } + //本年签订收入合同总金额 + Integer agreementAmount = agreementInfoMapper.selectCompleteAmount(null, AgreementStatusEnum.ALREADY_COMPLETE); + //本年业务结算总金额 + Integer settleAmount = settlementInfoService.selectCompleteAmount(null); + Integer amount = agreementAmount + settleAmount; + + BusinessOrder businessOrder = orders.get(0); + long subDay = DateUtils.subDaysByDateTime(businessOrder.getCreateTime(), DateUtil.now()); + response.setReceiveOrderDays(subDay); + response.setReceiveOrderAmount(orders.size()); + response.setAmount(BigDecimal.valueOf(amount).divide(BigDecimal.valueOf(100), 2, BigDecimal.ROUND_HALF_UP).toPlainString()); + return response; + } + + @Override + public List labAssets() { + List list = organizeMapper.selectStaffCount(); + list.forEach(response -> { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("standard_laboratory", response.getDeptId()); + wrapper.eq("is_del", 0); + response.setEquipmentCount(standardEquipmentMapper.selectCount(wrapper)); + QueryWrapper assetsWrapper = new QueryWrapper<>(); + assetsWrapper.eq("use_dept", response.getDeptId()); + assetsWrapper.eq("asset_type", "1"); + assetsWrapper.eq("is_del", 0); + response.setDeviceCount(fixedAssetsMapper.selectCount(assetsWrapper)); + }); + return list; + } + + @Override + public List deptOutputList() { + BoardBaseRequest request = new BoardBaseRequest(); + BoardDeptOutputListResponse response = boardService.deptOutputList(request); + List list = response.getList(); + if(CollectionUtils.isEmpty(list)){ + return new ArrayList<>(); } return null; + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterTraceSupplierServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterTraceSupplierServiceImpl.java index 534c4d1..b513603 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterTraceSupplierServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterTraceSupplierServiceImpl.java @@ -20,7 +20,6 @@ import com.casic.missiles.enums.system.ApprovalStatusEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.meter.MeterTraceSupplierMapper; -import com.casic.missiles.model.business.BusinessOutsourcerInfo; import com.casic.missiles.model.meter.MeterTraceSupplier; import com.casic.missiles.model.meter.MeterTraceSupplierPerson; import com.casic.missiles.model.meter.MeterTraceSupplierStandardEquipment; @@ -426,13 +425,13 @@ QueryWrapper wrapper = new QueryWrapper<>(); //无审批通过则返回空数据 if (CollectionUtils.isEmpty(passedList)) { - wrapper.eq("id", 12344321); - return wrapper; + //保证批量导入的可以查询到 + passedList.add("xxx"); } wrapper.like(StringUtils.isNotBlank(request.getSupplierNo()), "supplier_no", request.getSupplierNo()); wrapper.like(StringUtils.isNotBlank(request.getSupplierName()), "supplier_name", request.getSupplierName()); wrapper.like(StringUtils.isNotBlank(request.getBusinessContent()), "business_content", request.getBusinessContent()); - wrapper.in("id", passedList); + wrapper.and(QueryWrapper -> QueryWrapper.in("id", passedList).or().isNull("approval_status")); wrapper.eq("is_del", 0); wrapper.orderByDesc("create_time"); return wrapper; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/cockpit/IMeasureTaskService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/cockpit/IMeasureTaskService.java index 737ea83..cfe07b5 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/cockpit/IMeasureTaskService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/cockpit/IMeasureTaskService.java @@ -1,7 +1,11 @@ package com.casic.missiles.service.cockpit; +import com.casic.missiles.dto.cockpit.CockpitDeptOutputListResponse; +import com.casic.missiles.dto.cockpit.LabAssetsResponse; import com.casic.missiles.dto.cockpit.OrderInfoResponse; +import java.util.List; + /** * @Description: * @Author: wangpeng @@ -10,4 +14,7 @@ public interface IMeasureTaskService { OrderInfoResponse orderInfo(); + List labAssets(); + + List deptOutputList(); }