Commit 9b5cffe2 authored by 竹天卫's avatar 竹天卫

代码冲突

parents f29f9b1c 85ada413
...@@ -122,9 +122,6 @@ ...@@ -122,9 +122,6 @@
<version>3.17</version> <version>3.17</version>
</dependency> </dependency>
<!-- https://mvnrepository.com/artifact/net.oschina.zcx7878/fastdfs-client-java --> <!-- https://mvnrepository.com/artifact/net.oschina.zcx7878/fastdfs-client-java -->
<dependency> <dependency>
<groupId>net.oschina.zcx7878</groupId> <groupId>net.oschina.zcx7878</groupId>
......
...@@ -2,7 +2,10 @@ package cn.wise.sc.cement.business.controller; ...@@ -2,7 +2,10 @@ package cn.wise.sc.cement.business.controller;
import cn.wise.sc.cement.business.model.BaseResponse; import cn.wise.sc.cement.business.model.BaseResponse;
import cn.wise.sc.cement.business.model.PageQuery; import cn.wise.sc.cement.business.model.PageQuery;
import cn.wise.sc.cement.business.model.query.CountItemDistributionQuery;
import cn.wise.sc.cement.business.model.vo.ItemDistributionVo;
import cn.wise.sc.cement.business.service.IDataStatisticsService; import cn.wise.sc.cement.business.service.IDataStatisticsService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiImplicitParams;
...@@ -12,7 +15,7 @@ import org.slf4j.LoggerFactory; ...@@ -12,7 +15,7 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.Map; import javax.servlet.http.HttpServletResponse;
/** /**
* <p> * <p>
...@@ -103,14 +106,11 @@ public class DataStatisticsController { ...@@ -103,14 +106,11 @@ public class DataStatisticsController {
} }
@ApiOperation("导出检测项分布统计")
@PostMapping("/item/download")
public BaseResponse<Page<ItemDistributionVo>> downloadItemDistribution(@RequestBody CountItemDistributionQuery query, HttpServletResponse response) {
return dataStatisticsService.countItemDistribution(query, response);
}
} }
......
...@@ -273,5 +273,6 @@ public class NormProductionController { ...@@ -273,5 +273,6 @@ public class NormProductionController {
return BaseResponse.okData(iPrecipriceService.workloadStatistics(startTime, endTime, userId)); return BaseResponse.okData(iPrecipriceService.workloadStatistics(startTime, endTime, userId));
} }
} }
...@@ -131,7 +131,6 @@ public class ReportController { ...@@ -131,7 +131,6 @@ public class ReportController {
beanParams.put("methodNames", moveFirst(rts.getMethodNames())); beanParams.put("methodNames", moveFirst(rts.getMethodNames()));
beanParams.put("equipmentNames", moveFirst(rts.getEquipmentNames())); beanParams.put("equipmentNames", moveFirst(rts.getEquipmentNames()));
//六元素导出 //六元素导出
List<SixElementReport> list = iEntrustService.getSampleSixElementCheck(entrustId); List<SixElementReport> list = iEntrustService.getSampleSixElementCheck(entrustId);
......
package cn.wise.sc.cement.business.entity;
import lombok.Data;
/**
* @description: 检测项目分布情况
* @author: qh
* @create: 2021-01-18 15:31
**/
@Data
public class ItemDistribution {
private Integer count;
private String key;
}
package cn.wise.sc.cement.business.entity;
import lombok.Data;
/**
* @description: 检测项目分布情况(按样品统计)
* @author: qh
* @create: 2021-01-19 10:28
**/
@Data
public class ItemDistributionSample {
private String name;
private Integer count;
}
...@@ -116,4 +116,7 @@ public class Sample implements Serializable { ...@@ -116,4 +116,7 @@ public class Sample implements Serializable {
@ApiModelProperty("产地") @ApiModelProperty("产地")
private String origin; private String origin;
@ApiModelProperty("样品是否来自国外 (0来自国内,1来自国外)")
private Integer isForeign;
} }
package cn.wise.sc.cement.business.mapper; package cn.wise.sc.cement.business.mapper;
import cn.wise.sc.cement.business.entity.Client; import cn.wise.sc.cement.business.entity.Client;
import cn.wise.sc.cement.business.entity.ItemDistribution;
import cn.wise.sc.cement.business.entity.ItemDistributionSample;
import cn.wise.sc.cement.business.model.vo.ClientVo; import cn.wise.sc.cement.business.model.vo.ClientVo;
import cn.wise.sc.cement.business.model.vo.DataStatisticsVo; import cn.wise.sc.cement.business.model.vo.DataStatisticsVo;
import cn.wise.sc.cement.business.model.vo.EntrustVo; import cn.wise.sc.cement.business.model.vo.EntrustVo;
...@@ -9,6 +11,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; ...@@ -9,6 +11,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -33,4 +36,13 @@ public interface DataStatisticsMapper { ...@@ -33,4 +36,13 @@ public interface DataStatisticsMapper {
IPage<DataStatisticsVo> countDistributionPage(@Param("page") Page page); IPage<DataStatisticsVo> countDistributionPage(@Param("page") Page page);
List<DataStatisticsVo> countTeamIng(); List<DataStatisticsVo> countTeamIng();
IPage<ItemDistribution> countItemDistribution(@Param("page") Page<ItemDistribution> page,
@Param("start") Date startTime,
@Param("end") Date endTime,
@Param("origins") List<String> origins,
@Param("itemId") Long itemId);
ItemDistributionSample countItemDistributionSample(@Param("start") Date startTime, @Param("end") Date endTime,
@Param("origin") String origin, @Param("teamId") Long teamId);
} }
package cn.wise.sc.cement.business.model.query;
import cn.wise.sc.cement.business.model.PageQuery;
import lombok.Data;
import java.time.Period;
import java.util.List;
/**
* @description:
* @author: qh
* @create: 2021-01-19 10:33
**/
@Data
public class CountItemDistributionQuery {
private Long itemId;
private List<String> origins;
private String startTime;
private String endTime;
private String type;
private PageQuery pageQuery;
}
package cn.wise.sc.cement.business.model.vo;
import lombok.Data;
import java.io.Serializable;
/**
* @description: 检测项分布情况Vo
* @author: qh
* @create: 2021-01-18 15:52
**/
@Data
public class ItemDistributionVo implements Serializable {
static final long serialVersionUID = 42L;
private String id;
private String itemName;
private String origin;
private Integer itemCount;
private String time;
private Integer sampleCount;
}
...@@ -7,9 +7,11 @@ import cn.wise.sc.cement.business.model.*; ...@@ -7,9 +7,11 @@ import cn.wise.sc.cement.business.model.*;
import cn.wise.sc.cement.business.model.query.*; import cn.wise.sc.cement.business.model.query.*;
import cn.wise.sc.cement.business.model.vo.*; import cn.wise.sc.cement.business.model.vo.*;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import io.swagger.models.auth.In; import io.swagger.models.auth.In;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -36,4 +38,11 @@ public interface IDataStatisticsService { ...@@ -36,4 +38,11 @@ public interface IDataStatisticsService {
BaseResponse<List<DataStatisticsVo>> countTeamIng(); BaseResponse<List<DataStatisticsVo>> countTeamIng();
/**
* 导出检查项分布统计
* @param query 请求参数
* @param response 响应
* @return 返回的统计
*/
BaseResponse<Page<ItemDistributionVo>> countItemDistribution(CountItemDistributionQuery query, HttpServletResponse response);
} }
package cn.wise.sc.cement.business.service.impl; package cn.wise.sc.cement.business.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.wise.sc.cement.business.entity.*; import cn.wise.sc.cement.business.entity.*;
import cn.wise.sc.cement.business.mapper.*; import cn.wise.sc.cement.business.mapper.*;
...@@ -10,6 +9,7 @@ import cn.wise.sc.cement.business.model.query.*; ...@@ -10,6 +9,7 @@ import cn.wise.sc.cement.business.model.query.*;
import cn.wise.sc.cement.business.model.vo.*; import cn.wise.sc.cement.business.model.vo.*;
import cn.wise.sc.cement.business.service.*; import cn.wise.sc.cement.business.service.*;
import cn.wise.sc.cement.business.util.CheckCountUtil; import cn.wise.sc.cement.business.util.CheckCountUtil;
import cn.wise.sc.cement.business.util.DateUtil;
import cn.wise.sc.cement.business.util.ExcelUtil; import cn.wise.sc.cement.business.util.ExcelUtil;
import cn.wise.sc.cement.business.util.RedisUtil; import cn.wise.sc.cement.business.util.RedisUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
...@@ -158,12 +158,13 @@ public class DataStatisticsServiceImpl implements IDataStatisticsService { ...@@ -158,12 +158,13 @@ public class DataStatisticsServiceImpl implements IDataStatisticsService {
/** /**
* 检测项数量统计-按地区 * 检测项数量统计-按地区
*
* @param startDate * @param startDate
* @param endDate * @param endDate
* @return * @return
*/ */
@Override @Override
public BaseResponse<List<DataStatisticsVo>> countTeamByOrigin(Integer cycle, String startDate, String endDate){ public BaseResponse<List<DataStatisticsVo>> countTeamByOrigin(Integer cycle, String startDate, String endDate) {
Map<String, Object> params = new HashMap<>(); Map<String, Object> params = new HashMap<>();
params.put("cycle", cycle); params.put("cycle", cycle);
params.put("startDate", startDate); params.put("startDate", startDate);
...@@ -225,22 +226,72 @@ public class DataStatisticsServiceImpl implements IDataStatisticsService { ...@@ -225,22 +226,72 @@ public class DataStatisticsServiceImpl implements IDataStatisticsService {
* 正在进行的检测项统计 * 正在进行的检测项统计
* @return * @return
*/ */
@Override
public BaseResponse<List<DataStatisticsVo>> countTeamIng(){ public BaseResponse<List<DataStatisticsVo>> countTeamIng(){
List<DataStatisticsVo> list = dataStatisticsMapper.countTeamIng(); List<DataStatisticsVo> list = dataStatisticsMapper.countTeamIng();
return BaseResponse.okData(list); return BaseResponse.okData(list);
} }
@Override
public BaseResponse<Page<ItemDistributionVo>> countItemDistribution(CountItemDistributionQuery query, HttpServletResponse response) {
String startTimeStr = query.getStartTime();
String endTimeStr = query.getEndTime();
String type = query.getType();
Long itemId = query.getItemId();
List<String> origins = query.getOrigins();
Date startTime = null;
Date endTime = null;
Page<ItemDistribution> page = new Page<>(query.getPageQuery().getPageNo(), query.getPageQuery().getPageSize());
if (StrUtil.isNotEmpty(type)) {
startTime = DateUtil.getStartTime(Integer.parseInt(type));
endTime = cn.hutool.core.date.DateUtil.date();
}
if (StrUtil.isNotEmpty(startTimeStr)) {
startTime = cn.hutool.core.date.DateUtil.parseDate(startTimeStr);
}
if (StrUtil.isNotEmpty(endTimeStr)) {
endTime = cn.hutool.core.date.DateUtil.parseDate(endTimeStr);
}
//获取检测项目城市分布统计
IPage<ItemDistribution> list = dataStatisticsMapper
.countItemDistribution(page, startTime, endTime, origins, itemId);
List<ItemDistribution> records = list.getRecords();
if (records.size() == 0) {
return BaseResponse.errorMsg("没找到数据~");
}
List<ItemDistributionVo> rtsRecords = new ArrayList<>(records.size());
//组装检查项统计和按照样品统计
for (ItemDistribution distribution : records) {
String key = distribution.getKey();
String[] split = key.split(",");
String teamId = split[0];
String origin = split[1];
//检测项按样品分布统计
ItemDistributionSample sample = dataStatisticsMapper
.countItemDistributionSample(startTime, endTime, origin, Long.parseLong(teamId));
ItemDistributionVo vo = new ItemDistributionVo();
vo.setOrigin(origin);
vo.setItemName(sample.getName());
vo.setSampleCount(sample.getCount());
vo.setItemCount(distribution.getCount());
vo.setTime(startTime + "_" + endTime);
rtsRecords.add(vo);
}
Page<ItemDistributionVo> rts = new Page<>();
rts.setRecords(rtsRecords);
rts.setCurrent(page.getCurrent());
rts.setPages(page.getPages());
rts.setTotal(page.getTotal());
rts.setSize(page.getSize());
return BaseResponse.okData(rts);
}
} }
package cn.wise.sc.cement.business.util; package cn.wise.sc.cement.business.util;
import cn.hutool.core.date.DateTime;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.temporal.WeekFields; import java.time.temporal.WeekFields;
import java.util.Date;
/** /**
* @author neo.shu * @author neo.shu
...@@ -20,4 +24,25 @@ public class DateUtil { ...@@ -20,4 +24,25 @@ public class DateUtil {
WeekFields weekFields = WeekFields.ISO; WeekFields weekFields = WeekFields.ISO;
return localDateTime.get(weekFields.weekOfWeekBasedYear()); return localDateTime.get(weekFields.weekOfWeekBasedYear());
} }
/**
* 获取开始时间
*
* @param type 类型 1:本周 2:本月 3:本年
* @return 开始时间
*/
public static Date getStartTime(Integer type) {
Date rts = null;
if (type == 1) {
rts = cn.hutool.core.date.DateUtil.beginOfWeek(cn.hutool.core.date.DateUtil.date());
} else if (type == 2) {
rts = cn.hutool.core.date.DateUtil.beginOfMonth(cn.hutool.core.date.DateUtil.date());
} else {
rts = cn.hutool.core.date.DateUtil.beginOfYear(cn.hutool.core.date.DateUtil.date());
}
return rts;
}
} }
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.wise.sc.cement.business.mapper.DataStatisticsMapper">
<select id="countTeamByTime" resultType="cn.wise.sc.cement.business.model.vo.DataStatisticsVo">
SELECT DATE_FORMAT(sd.create_time,'%Y-%m') as name, count(sd.id) as value
FROM sample_distribution sd
where sd.finish_time is not null
<if test="params.startDate != null and params.startDate != ''">
and DATE(sd.create_time) &gt;= #{params.startDate}
</if>
<if test="params.endDate != null and params.endDate != ''">
and DATE(sd.create_time) &lt;= #{params.endDate}
</if>
group by name
</select>
<select id="countTeamByOrigin" resultType="cn.wise.sc.cement.business.model.vo.DataStatisticsVo">
SELECT s.origin as name, count(sd.id) as value
FROM sample_distribution sd
left join sample s on s.id = sd.sample_id
where sd.finish_time is not null
<if test="params.startDate != null and params.startDate != ''">
and DATE(sd.create_time) &gt;= #{params.startDate}
</if>
<if test="params.endDate != null and params.endDate != ''">
and DATE(sd.create_time) &lt;= #{params.endDate}
</if>
group by s.origin
</select>
<select id="countItemDistributionSample"
resultType="cn.wise.sc.cement.business.entity.ItemDistributionSample">
SELECT COUNT(sd.team_id) as `count`,t.`name` FROM sample_distribution sd
LEFT JOIN sample s ON sd.sample_id = s.id
LEFT JOIN team t ON t.id = sd.team_id
WHERE
sd.finish_time BETWEEN #{start} AND #{end}
<if test="origin != null and origin != '' ">
AND s.origin = #{origin}
</if>
<if test="teamId != '' and teamId != null">
AND sd.team_id = #{teamId}
</if>
</select>
<select id="countItemDistribution" resultType="cn.wise.sc.cement.business.entity.ItemDistribution">
SELECT COUNT(a.sample_id) as `count`,`key` from
(SELECT sd.team_id,sd.sample_id,t.`name`,sd.finish_time,CONCAT(sd.team_id,',',s.origin,',',s.is_foreign) as
`key` FROM sample_distribution sd
LEFT JOIN sample s ON sd.sample_id = s.id
LEFT JOIN team t ON t.id = sd.team_id
WHERE (sd.finish_time between #{start} and #{end})
<if test="origins != null">
AND s.origin in
<foreach collection="origins" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="itemId != null">
AND sd.team_id = #{itemId}
</if>
) a GROUP BY a.`key`
</select>
</mapper>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment