Commit 8ab88823 authored by 竹天卫's avatar 竹天卫

计划管理 start

parents d1c44ec6 2548f57c
......@@ -3,18 +3,21 @@ package cn.wise.sc.cement.business.controller;
import cn.wise.sc.cement.business.entity.EntrustReport;
import cn.wise.sc.cement.business.model.BaseResponse;
import cn.wise.sc.cement.business.model.PageQuery;
import cn.wise.sc.cement.business.model.vo.EntrustVo;
import cn.wise.sc.cement.business.model.vo.QualityDetailVo;
import cn.wise.sc.cement.business.service.IEntrustService;
import cn.wise.sc.cement.business.util.PageUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.stream.Collectors;
......@@ -36,21 +39,27 @@ public class QualityController {
this.iEntrustService = iEntrustService;
}
@GetMapping("/{entrustId}")
@ApiOperation("获取报告详情")
public BaseResponse<com.baomidou.mybatisplus.extension.plugins.pagination.Page<EntrustReport>> getReportDetail(@PathVariable("entrustId") Integer entrustId, PageQuery pageQuery) {
List<EntrustReport> entrustReports = iEntrustService.getReportDetail(entrustId);
if (entrustReports.size() != 0) {
//过滤 id==null 和 projectType != '常规项目'
List<EntrustReport> list = entrustReports.stream()
.filter(arg -> arg.getId() != null && "质量控制".equals(arg.getProjectType()))
.collect(Collectors.toList());
Page<EntrustReport> rts = PageUtil.listConvertToPage(list, pageQuery);
return BaseResponse.okData(rts);
@ApiOperation(value = "质量检测分页列表")
@ApiImplicitParams(value = {
@ApiImplicitParam(name = "startDate", value = "开始日期", paramType = "query", dataType = "String"),
@ApiImplicitParam(name = "endDate", value = "结束日期", paramType = "query", dataType = "String"),
@ApiImplicitParam(name = "clientId", value = "委托单位id", paramType = "query", dataType = "Integer"),
@ApiImplicitParam(name = "projectName", value = "项目名称", paramType = "query", dataType = "String"),
@ApiImplicitParam(name = "projectCode", value = "项目编号", paramType = "query", dataType = "String")
})
@GetMapping("/getPage")
public BaseResponse<IPage<EntrustVo>> page(PageQuery pageQuery, String startDate, String endDate,
Integer clientId, String projectName, String projectCode) {
return iEntrustService.getQualityPage(pageQuery, startDate, endDate, clientId, projectName, projectCode);
}
return BaseResponse.errorMsg("没找到相关数据!");
@GetMapping("/{entrustId}")
@ApiOperation("获取质量详情")
public BaseResponse<QualityDetailVo> getReportDetail(@PathVariable("entrustId") Integer entrustId) {
return BaseResponse.okData(iEntrustService.getQualityDetail(entrustId));
}
}
......@@ -40,7 +40,7 @@ public class ReportController {
this.iEntrustService = iEntrustService;
}
@ApiOperation(value = "委托分页列表")
@ApiOperation(value = "报告分页列表")
@ApiImplicitParams(value = {
@ApiImplicitParam(name = "startDate", value = "开始日期", paramType = "query", dataType = "String"),
@ApiImplicitParam(name = "endDate", value = "结束日期", paramType = "query", dataType = "String"),
......
package cn.wise.sc.cement.business.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* @description: 质量检测详情
* @author: qh
* @create: 2020-09-28 14:01
**/
@Data
@ApiModel("质量检测详情实体")
public class QualityDetail implements Serializable {
private static final long serialVersionUID = 42L;
@ApiModelProperty("样品名字")
private String sampleName;
@ApiModelProperty("检测数据")
private String inputResult;
@ApiModelProperty("检测组名字")
private String teamGroupName;
@ApiModelProperty("项目编号")
private String entrustCode;
@ApiModelProperty("项目名字")
private String projectName;
@ApiModelProperty("委托人名字")
private String sendName;
@ApiModelProperty("委托人电话")
private String sendPhone;
@ApiModelProperty("样品id")
private Integer sampleId;
@ApiModelProperty("项目id")
private Integer entrustId;
@ApiModelProperty("检测组id")
private Integer teamGroupId;
@ApiModelProperty("用户id")
private Integer userId;
@ApiModelProperty("样品数量")
private Integer sampleNum;
private Integer clientId;
private String userName;
private String clientName;
}
......@@ -2,6 +2,7 @@ package cn.wise.sc.cement.business.mapper;
import cn.wise.sc.cement.business.entity.Entrust;
import cn.wise.sc.cement.business.entity.EntrustReport;
import cn.wise.sc.cement.business.entity.QualityDetail;
import cn.wise.sc.cement.business.model.vo.EntrustVo;
import cn.wise.sc.cement.business.model.vo.ProjectVo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
......@@ -38,4 +39,6 @@ public interface EntrustMapper extends BaseMapper<Entrust> {
List<EntrustReport> getReportDetail(@Param("entrustId") Integer entrustId);
List<QualityDetail> getQualityDetail(@Param("entrustId") Integer entrustId);
}
......@@ -154,7 +154,6 @@
order by e.update_time desc
</select>
<!--数据校核分页列表-->
<select id="getCheckPage" resultType="cn.wise.sc.cement.business.model.vo.EntrustVo">
select e.*, p.name as projectName, c.name as clientName, su.name as userName,
......@@ -193,6 +192,19 @@
ON sscct.entrust_id = e.id AND e.id = #{entrustId}
</select>
<select id="getQualityDetail" resultType="cn.wise.sc.cement.business.entity.QualityDetail">
SELECT s.sample_name,esscct.* FROM (SELECT sscct.*,client_id,entrust_code,project_name,sample_num,send_name,send_phone FROM entrust e
RIGHT JOIN
(SELECT sct.input_result,sample_id,entrust_id,team_group_name,team_group_id,user_id FROM sample_check sc
RIGHT JOIN
(SELECT * FROM sample_check_team) sct
ON sct.check_id = sc.id WHERE sc.entrust_id = #{entrustId}) sscct
ON e.id = sscct.entrust_id) esscct
LEFT JOIN
(SELECT name as sample_name,id FROM sample) s
ON esscct.sample_id = s.id
</select>
<sql id="checkWhere">
<where>
and e.is_delete = 1 and e.status >= 6
......
package cn.wise.sc.cement.business.model.vo;
import lombok.Data;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/**
* @description: 质量检测详情Vo
* @author: qh
* @create: 2020-09-28 14:55
**/
@Data
public class QualityDetailVo implements Serializable {
private static final long serialVersionUID = 42L;
private String projectName;
private String clientName;
private String entrustCode;
private Integer sampleNum;
private String sendName;
private String sendPhone;
List<QualityTeamGroup> qualityTeamGroups = new ArrayList<>();
@Data
public static class QualityTeamGroup {
private String teamGroupName;
private List<QualitySample> qualitySamples = new ArrayList<>();
}
@Data
public static class QualitySample {
private String sampleName;
private List<SampleOriginal> sampleOriginals = new ArrayList<>();
}
@Data
public static class SampleOriginal {
private String cementCode;
private String userName;
private String teamValues;
}
}
......@@ -79,9 +79,18 @@ public interface IEntrustService extends IService<Entrust> {
BaseResponse<String> check(CheckQuery query);
BaseResponse<IPage<EntrustVo>> getReportPage(PageQuery pageQuery, String startDate, String endDate, Integer clientId, String projectName, String projectCode);
BaseResponse<IPage<EntrustVo>> getReportPage(PageQuery pageQuery, String startDate,
String endDate, Integer clientId,
String projectName, String projectCode);
BaseResponse<Boolean> deleteById(Integer id);
List<EntrustReport> getReportDetail(Integer entrustId);
BaseResponse<IPage<EntrustVo>> getQualityPage(PageQuery pageQuery,
String startDate, String endDate,
Integer clientId, String projectName,
String projectCode);
QualityDetailVo getQualityDetail(Integer entrustId);
}
......@@ -11,9 +11,7 @@ import cn.wise.sc.cement.business.model.vo.*;
import cn.wise.sc.cement.business.service.*;
import cn.wise.sc.cement.business.util.CheckCountUtil;
import cn.wise.sc.cement.business.util.RedisUtil;
import cn.wise.sc.cement.business.wrapper.page.Query;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
......@@ -23,13 +21,13 @@ import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
/**
* <p>
......@@ -96,6 +94,8 @@ public class EntrustServiceImpl extends ServiceImpl<EntrustMapper, Entrust> impl
private SampleCheckTeamMapper sampleCheckTeamMapper;
@Resource
private EquipmentUseMapper equipmentUseMapper;
@Resource
private ClientMapper clientMapper;
/**
* 委托分页
......@@ -1716,4 +1716,148 @@ public class EntrustServiceImpl extends ServiceImpl<EntrustMapper, Entrust> impl
return list;
}
@Override
public BaseResponse<IPage<EntrustVo>> getQualityPage(PageQuery pageQuery, String startDate, String endDate, Integer clientId, String projectName, String projectCode) {
LoginUser loginUser = userService.getLoginUser();
if (loginUser == null) {
return BaseResponse.errorMsg("请登录账号");
}
Map<String, Object> params = new HashMap<>();
params.put("startDate", startDate);
params.put("endDate", endDate);
params.put("status", 8);
params.put("clientId", clientId);
params.put("projectName", projectName);
params.put("projectCode", projectCode);
params.put("projectType", "质量检测");
Integer approvalId = sysApprovalMapper.getApprovalId("委托评审");
if (approvalId == null) {
return BaseResponse.errorMsg("委托评审信息错误");
}
if (loginUser.getId() != approvalId) {
params.put("userId", loginUser.getId());
}
Page<EntrustVo> page = new Page<>(pageQuery.getPageNo(), pageQuery.getPageSize());
IPage<EntrustVo> pages = entrustMapper.getPage(page, params);
List<EntrustVo> list = pages.getRecords();
if (list != null && list.size() > 0) {
for (EntrustVo entrustVo : list) {
QueryWrapper<SampleTmp> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("entrust_id", entrustVo.getId());
List<SampleTmp> sampleTmpList = sampleTmpService.list(queryWrapper);
//检测项目名称
String sampleNames = "";
if (sampleTmpList != null && sampleTmpList.size() > 0) {
//样品名称 列表中的拼接
for (SampleTmp sampleTmp : sampleTmpList) {
sampleNames = sampleNames.equals("") ? sampleTmp.getName() : (sampleNames + "、" + sampleTmp.getName());
}
entrustVo.setSampleNames(sampleNames);
//检测项 和检测依据 列表里只显示第一个样品的
SampleTmp sampleTmp = sampleTmpList.get(0);
String teamIds = sampleTmp.getTeamIds();
String checkTeam = "";
if (teamIds != null) {
String[] teamIdS = teamIds.split("、");
for (String teamId : teamIdS) {
Team team = teamMapper.selectById(Integer.valueOf(teamId));
if (team != null) {
checkTeam = checkTeam.equals("") ? team.getName() : (checkTeam + "、" + team.getName());
}
}
}
entrustVo.setCheckTeam(checkTeam);
entrustVo.setCheckMethodNumber(sampleTmp.getMethodNumbers());
}
}
}
pages.setRecords(list);
return BaseResponse.okData(pages);
}
@Override
public QualityDetailVo getQualityDetail(Integer entrustId) {
List<QualityDetail> qualityDetails = entrustMapper.getQualityDetail(entrustId);
if (qualityDetails.size() == 0) {
return null;
}
QualityDetail firstQualityDetail = qualityDetails.get(0);
QualityDetailVo qualityDetailVo = new QualityDetailVo();
qualityDetailVo.setProjectName(firstQualityDetail.getProjectName());
qualityDetailVo.setEntrustCode(firstQualityDetail.getEntrustCode());
qualityDetailVo.setSampleNum(firstQualityDetail.getSampleNum());
qualityDetailVo.setSendPhone(firstQualityDetail.getSendPhone());
qualityDetailVo.setSendName(firstQualityDetail.getSendName());
//获取clientId和userName
String userCacheKey = "CACHE:USER";
String clientCacheKey = "CACHE:CLIENT";
//缓存 60s
if (!redisUtil.existsKey(userCacheKey)) {
List<SysUser> users = userService.list();
String value = JSON.toJSONString(users);
redisUtil.setString(userCacheKey, value, 60);
}
if (!redisUtil.existsKey(clientCacheKey)) {
List<Client> clients = clientMapper.selectList(new QueryWrapper<>());
String value = JSON.toJSONString(clients);
redisUtil.setString(clientCacheKey, value, 60);
}
List<SysUser> sysUsers = JSON.parseArray(redisUtil.getString(userCacheKey) + "", SysUser.class);
List<Client> clients = JSON.parseArray(redisUtil.getString(clientCacheKey) + "", Client.class);
//关联委托方
clients.stream()
.filter(opt -> opt.getId().intValue() == firstQualityDetail.getClientId())
.findFirst().ifPresent(opt -> qualityDetailVo.setClientName(opt.getName()));
//关联检测者名字
qualityDetails.forEach(arg -> {
sysUsers.stream()
.filter(opt -> opt.getId().intValue() == arg.getUserId())
.findFirst().ifPresent(opt -> {
arg.setUserName(opt.getName());
});
});
//为每个检测组 创建实体
qualityDetails.stream()
.map(QualityDetail::getTeamGroupName)
.collect(Collectors.toSet())
.forEach(arg -> {
//遍历每个检测组名字 创建检测组集合
QualityDetailVo.QualityTeamGroup qualityTeamGroup = new QualityDetailVo.QualityTeamGroup();
qualityTeamGroup.setTeamGroupName(arg);
qualityDetailVo.getQualityTeamGroups().add(qualityTeamGroup);
qualityDetails.stream()
//找到当前检测组下的是要样品
.filter(opt -> opt.getTeamGroupName().equals(arg))
.collect(Collectors.toList())
.stream()
.map(QualityDetail::getSampleName)
.collect(Collectors.toSet())
.forEach(opt -> {
//拿到了样品名字和检测组名字 开始创建Vo对象
QualityDetailVo.QualitySample qualitySample =
new QualityDetailVo.QualitySample();
qualitySample.setSampleName(opt);
qualityTeamGroup.getQualitySamples().add(qualitySample);
qualityDetails.forEach(param -> {
//找到检测组和样品相同的详情
if (param.getTeamGroupName().equals(arg) && param.getSampleName().equals(opt)) {
QualityDetailVo.SampleOriginal sampleOriginal = new QualityDetailVo.SampleOriginal();
sampleOriginal.setCementCode(param.getEntrustCode());
sampleOriginal.setTeamValues(param.getInputResult());
sampleOriginal.setUserName(param.getUserName());
qualitySample.getSampleOriginals().add(sampleOriginal);
}
});
});
});
return qualityDetailVo;
}
}
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