Commit 5fb221d9 authored by 夏东伟's avatar 夏东伟

化验室接口开发

parent d69269fd
package net.vtstar.zhongtong.avi.laboratory.controller;
import com.github.pagehelper.PageInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import net.vtstar.user.search.controller.vo.SearchVo;
import net.vtstar.utils.asserts.ParamAssert;
import net.vtstar.utils.domain.Return;
import net.vtstar.zhongtong.avi.laboratory.domain.DailyItemModel;
import net.vtstar.zhongtong.avi.laboratory.domain.vo.CheckRecordVo;
import net.vtstar.zhongtong.avi.laboratory.service.DailyCheckService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
/**
* @Author: xiadongwei
* @Date: 2019/10/20 9:40
*/
@Slf4j
@RestController
@Api(description = "涂装化验室检测模块")
@RequestMapping("/api/check")
public class DailyCheckController {
@Autowired
DailyCheckService service;
@ApiOperation(value = "根据化验室类型查询检测模板, 关联查询点检项模板", notes =
"入参字段:\n{\n" +
" \"酸洗\": \"PICKLING\",\n" +
" \"电泳槽\": \"ELECTROPHORESIS\",\n" +
" \"前处理\": \"PRETREATMENT\"\n" +
"}")
@GetMapping("/getCheckByType")
public Return getCheckByType(@RequestParam String type) {
ParamAssert.notNull(type, "检测类型不能为空!");
return Return.success(service.getCheckByType(type));
}
@ApiOperation("根据模板ID新增/编辑模板检测项")
@PostMapping("/saveCheckItemModel")
public Return saveCheckItemModel(@Valid @RequestBody DailyItemModel itemModel) {
ParamAssert.notNull(itemModel, "点检项不能为空!");
service.saveCheckItemModel(itemModel);
return Return.success();
}
@ApiOperation("保存, 新增检测记录 和 点检项记录")
@PostMapping("/addCheckRecord")
public Return addCheckRecord(@Valid @RequestBody CheckRecordVo checkRecordVo) {
ParamAssert.notNull(checkRecordVo, "检测记录不可为空!");
service.addCheckRecord(checkRecordVo);
return Return.success();
}
@ApiOperation("设备点检记录(酸洗)")
@PostMapping("/getCheckRecord/pickling")
public Return getCheckRecordPickling(@RequestBody SearchVo pageFilter) {
return Return.success(new PageInfo<>(service.getCheckRecord("PICKLING", pageFilter.toJSONObject())));
}
@ApiOperation("设备点检记录(电泳槽)")
@PostMapping("/getCheckRecord/electrophoresis")
public Return getCheckRecordElectrophoresis(@RequestBody SearchVo pageFilter) {
return Return.success(new PageInfo<>(service.getCheckRecord("ELECTROPHORESIS", pageFilter.toJSONObject())));
}
@ApiOperation("设备点检记录(前处理)")
@PostMapping("/getCheckRecord/pretreatment")
public Return getCheckRecordPretreatment(@RequestBody SearchVo pageFilter) {
return Return.success(new PageInfo<>(service.getCheckRecord("PRETREATMENT", pageFilter.toJSONObject())));
}
@ApiOperation("根据检测记录ID 查询对应的检测报告")
@GetMapping("/getCheckRecordDetailsByID")
public Return getCheckRecordDetailsByID(@RequestParam("id") Long checkId) {
ParamAssert.notNull(checkId, "checkId is null");
return Return.success(service.getCheckRecordDetailsByID(checkId));
}
@ApiOperation("删除检测项模板")
@DeleteMapping("/deleteCheckItemModelById")
public Return deleteCheckItemModelById(@RequestParam("id") Long id) {
ParamAssert.notNull(id, "id is null");
service.deleteCheckItemModelById(id);
return Return.success();
}
@ApiOperation("打印")
@PostMapping("/expert")
public void expert(@RequestParam("recordId") Long recordId, HttpServletResponse response){
service.expert(recordId, response);
}
}
/*
* DailyCheckModel.java
* Copyright(C) 山东万腾科技
* All rights reserved.
*/
package net.vtstar.zhongtong.avi.laboratory.domain;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
@ApiModel(value = "涂装日常检测模板表")
@Data
@Table(name = "daily_check_model")
public class DailyCheckModel{
@Id
private Long id;
@Column(name = "type")
@ApiModelProperty(notes = "类型(酸洗/电泳槽/前处理)")
private String type;
@Column(name = "order_num")
@ApiModelProperty(notes = "序号")
private Integer orderNum;
@Column(name = "rev")
@ApiModelProperty(notes = "版本状态")
private String rev;
@Column(name = "sheet_no")
@ApiModelProperty(notes = "记录编号")
private String sheetNo;
@Column(name = "no")
@ApiModelProperty(notes = "流水号")
private String no;
@Column(name = "remarks")
@ApiModelProperty(notes = "备注")
private String remarks;
@Column(name = "create_time")
private Date createTime;
}
\ No newline at end of file
/*
* DailyCheckRecord.java
* Copyright(C) 山东万腾科技
* All rights reserved.
*/
package net.vtstar.zhongtong.avi.laboratory.domain;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import net.vtstar.user.search.Search;
import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
@ApiModel(value = "涂装日常检测记录表")
@Data
@Search(code = "DAILY_CHECK_RECORD")
@Table(name = "daily_check_record")
public class DailyCheckRecord {
@Id
@ApiModelProperty(notes = "序号")
private Long id;
@Column(name = "type")
@ApiModelProperty(notes = "类型(酸洗/电泳槽/前处理)")
private String type;
@Column(name = "rev")
@ApiModelProperty(notes = "版本状态")
private String rev;
@Column(name = "sheet_no")
@ApiModelProperty(notes = "记录编号")
private String sheetNo;
@Search
@Column(name = "no")
@ApiModelProperty(notes = "流水号")
private String no;
@Column(name = "record_info")
@ApiModelProperty(notes = "槽液调整记录")
private String recordInfo;
@Column(name = "remarks")
@ApiModelProperty(notes = "备注")
private String remarks;
@Search
@Column(name = "create_by")
@ApiModelProperty(notes = "化验员")
private String createBy;
@Search
@Column(name = "create_time")
@ApiModelProperty(notes = "化验时间")
private Date createTime;
}
\ No newline at end of file
/*
* DailyItemModel.java
* Copyright(C) 山东万腾科技
* All rights reserved.
*/
package net.vtstar.zhongtong.avi.laboratory.domain;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
@ApiModel(value = "涂装日常检测项模板表")
@Data
@Table(name = "daily_item_model")
public class DailyItemModel {
@Id
private Long id;
@Column(name = "check_model_id")
@ApiModelProperty(notes = "检测模板ID")
private Integer checkModelId;
@Column(name = "order_num")
@ApiModelProperty(notes = "序号")
private Integer orderNum;
@Column(name = "name")
@ApiModelProperty(notes = "检测项目")
private String name;
@Column(name = "range_upper")
@ApiModelProperty(notes = "控制范围(上限)")
private Integer rangeUpper;
@Column(name = "range_lower")
@ApiModelProperty(notes = "控制范围(下限)")
private Integer rangeLower;
@Column(name = "range_all")
@ApiModelProperty(notes = "控制范围")
private String rangeAll;
@Column(name = "frequency")
@ApiModelProperty(notes = "频次")
private String frequency;
@ApiModelProperty(notes = "创建时间")
private Date createTime;
@ApiModelProperty(notes = "修改时间")
private Date updateTime;
@ApiModelProperty(notes = "创建人:登录名")
private String createBy;
@ApiModelProperty(notes = "修改人:登录名")
private String updateBy;
}
\ No newline at end of file
/*
* DailyItemRecord.java
* Copyright(C) 山东万腾科技
* All rights reserved.
*/
package net.vtstar.zhongtong.avi.laboratory.domain;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
@ApiModel(value = "涂装日常检测项记录表")
@Data
@Table(name = "daily_item_record")
public class DailyItemRecord {
@Id
private Long id;
@Column(name = "check_record_id")
@ApiModelProperty(notes = "检测记录ID")
private Integer checkRecordId;
@Column(name = "order_num")
@ApiModelProperty(notes = "序号")
private Integer orderNum;
@Column(name = "name")
@ApiModelProperty(notes = "检测项目")
private String name;
@Column(name = "check_result")
@ApiModelProperty(notes = "检测结果")
private Float checkResult;
@Column(name = "range_upper")
@ApiModelProperty(notes = "控制范围(上限)")
private Float rangeUpper;
@Column(name = "range_lower")
@ApiModelProperty(notes = "控制范围(下限)")
private Float rangeLower;
@Column(name = "range_all")
@ApiModelProperty(notes = "控制范围")
private String rangeAll;
@Column(name = "frequency")
@ApiModelProperty(notes = "频次")
private String frequency;
@Column(name = "create_time")
@ApiModelProperty(notes = "取样时间")
private Date createTime;
}
\ No newline at end of file
package net.vtstar.zhongtong.avi.laboratory.domain.vo;
import lombok.Data;
import net.vtstar.zhongtong.avi.laboratory.domain.DailyCheckRecord;
import net.vtstar.zhongtong.avi.laboratory.domain.DailyItemRecord;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* @Author: xiadongwei
* @Date: 2019/10/20 16:23
*/
@Data
public class CheckRecordVo {
@NotNull(message = "点检记录ID不能为空")
private DailyCheckRecord checkRecord;
@NotNull(message = "点检项不能为空")
private List<DailyItemRecord> itemRecords;
}
package net.vtstar.zhongtong.avi.laboratory.mapper;
import net.vtstar.user.mybatis.BaseMapper;
import net.vtstar.zhongtong.avi.laboratory.domain.DailyCheckModel;
import org.apache.ibatis.annotations.Mapper;
/**
* @Author: xiadongwei
* @Date: 2019/9/20 9:31
*/
@Mapper
public interface DailyCheckModelMapper extends BaseMapper<DailyCheckModel> {
}
package net.vtstar.zhongtong.avi.laboratory.mapper;
import net.vtstar.user.mybatis.BaseMapper;
import net.vtstar.zhongtong.avi.laboratory.domain.DailyCheckRecord;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* @Author: xiadongwei
* @Date: 2019/9/20 9:31
*/
@Mapper
public interface DailyCheckRecordMapper extends BaseMapper<DailyCheckRecord> {
@Override
int insert(@Param("checkRecord") DailyCheckRecord record);
}
package net.vtstar.zhongtong.avi.laboratory.mapper;
import net.vtstar.user.mybatis.BaseMapper;
import net.vtstar.zhongtong.avi.laboratory.domain.DailyItemModel;
import org.apache.ibatis.annotations.Mapper;
/**
* @Author: xiadongwei
* @Date: 2019/9/20 9:31
*/
@Mapper
public interface DailyItemModelMapper extends BaseMapper<DailyItemModel> {
}
package net.vtstar.zhongtong.avi.laboratory.mapper;
import net.vtstar.user.mybatis.BaseMapper;
import net.vtstar.zhongtong.avi.laboratory.domain.DailyItemRecord;
import org.apache.ibatis.annotations.Mapper;
/**
* @Author: xiadongwei
* @Date: 2019/9/20 9:31
*/
@Mapper
public interface DailyItemRecordMapper extends BaseMapper<DailyItemRecord> {
}
package net.vtstar.zhongtong.avi.laboratory.service;
import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.PageHelper;
import net.vtstar.user.mybatis.provider.Operation;
import net.vtstar.user.mybatis.provider.WhereFilter;
import net.vtstar.user.search.service.SearchService;
import net.vtstar.user.util.UserUtil;
import net.vtstar.zhongtong.avi.laboratory.domain.DailyCheckModel;
import net.vtstar.zhongtong.avi.laboratory.domain.DailyCheckRecord;
import net.vtstar.zhongtong.avi.laboratory.domain.DailyItemModel;
import net.vtstar.zhongtong.avi.laboratory.domain.DailyItemRecord;
import net.vtstar.zhongtong.avi.laboratory.domain.vo.CheckRecordVo;
import net.vtstar.zhongtong.avi.laboratory.mapper.DailyCheckModelMapper;
import net.vtstar.zhongtong.avi.laboratory.mapper.DailyCheckRecordMapper;
import net.vtstar.zhongtong.avi.laboratory.mapper.DailyItemModelMapper;
import net.vtstar.zhongtong.avi.laboratory.mapper.DailyItemRecordMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.util.*;
/**
* @Author: xiadongwei
* @Date: 2019/10/20 15:52
*/
@Service
public class DailyCheckService {
@Autowired
private SearchService searchService;
@Autowired
private DailyCheckModelMapper checkModelMapper;
@Autowired
private DailyItemModelMapper itemModelMapper;
@Autowired
private DailyCheckRecordMapper checkRecordMapper;
@Autowired
private DailyItemRecordMapper itemRecordMapper;
// @Value("${project.basedir}/src/main/resources/")
private String tempFileHomePath;
/**
* 根据类型查询点检模板, 关联查询点检项模板;
* 1.根据type查询点检模板, 若点检模板不存在, 则创建该类型的点检模板;
* 2.根据点检模板ID, 查询对应点检项模板;
*/
public Map<String, Object> getCheckByType(String type) {
Map<String, Object> map = new HashMap<>();
List<DailyCheckModel> list = checkModelMapper.findList(new WhereFilter() {{
addFilter("type", Operation.EQUAL, type);
}}, DailyCheckModel.class);
if (CollectionUtils.isEmpty(list)) {
DailyCheckModel model = new DailyCheckModel();
model.setType(type);
model.setOrderNum(1);
model.setRev("A/O");
model.setSheetNo("ZT/MR-PD66-Q000-23");
model.setNo("Q000-100993-");
model.setCreateTime(new Date());
checkModelMapper.insert(model);
map.put("checkModel", model);
map.put("checkItem", new ArrayList<>());
return map;
} else {
DailyCheckModel model = list.get(0);
map.put("checkModel", model);
List<DailyItemModel> itemModelList = itemModelMapper.findList(new WhereFilter() {{
addFilter("check_model_id", Operation.EQUAL, model.getId());
}}, DailyItemModel.class);
map.put("checkItem", itemModelList);
return map;
}
}
/**
* 新增/编辑检测项模板
* @param itemModel 检测项模板
*/
public void saveCheckItemModel(DailyItemModel itemModel) {
Long itemModelId = itemModel.getId();
if (null == itemModelId) {
itemModel.setCreateBy(UserUtil.getUsername());
itemModel.setCreateTime(new Date());
itemModelMapper.insert(itemModel);
} else {
DailyItemModel oldItemModel = itemModelMapper.getById(itemModelId, DailyItemModel.class);
oldItemModel.setUpdateBy(UserUtil.getUsername());
oldItemModel.setUpdateTime(new Date());
itemModelMapper.update(oldItemModel);
}
}
/**
* 新增检测记录
* @param checkRecordVo
*/
@Transactional
public void addCheckRecord(CheckRecordVo checkRecordVo) {
DailyCheckRecord checkRecord = checkRecordVo.getCheckRecord();
int recordId = checkRecordMapper.insert(checkRecord);
List<DailyItemRecord> itemRecords = checkRecordVo.getItemRecords();
for (DailyItemRecord itemRecord : itemRecords){
itemRecord.setCheckRecordId(recordId);
}
itemRecordMapper.insertList(itemRecords);
}
/**
* 根据查询条件搜索检测记录
* @param pageFilter 条件
*/
public List<DailyCheckRecord> getCheckRecord(String type, JSONObject pageFilter) {
PageHelper.startPage(pageFilter.getIntValue("pageNum"), pageFilter.getIntValue("pageSize"));
return checkRecordMapper.findList(searchService.pageFilter2Filter(pageFilter, new WhereFilter() {{
addFilter("type", Operation.EQUAL, type);
}}), DailyCheckRecord.class);
}
/**
* 根据检测记录ID 查询对应的检测报告
* @param checkId 检测报告ID
*/
public Map<String, Object> getCheckRecordDetailsByID(Long checkId) {
Map<String, Object> map = new HashMap<>();
DailyCheckRecord recordById = checkRecordMapper.getById(checkId, DailyCheckRecord.class);
map.put("checkRecord", recordById);
List<DailyItemRecord> itemModelList = itemRecordMapper.findList(new WhereFilter() {{
addFilter("check_record_id", Operation.EQUAL, recordById.getId());
}}, DailyItemRecord.class);
map.put("itemRecords", itemModelList);
return map;
}
/**
* 删除检测项模板
*/
public void deleteCheckItemModelById(Long id) {
itemModelMapper.delById(id, DailyItemModel.class);
}
/**
* 下载/打印检测报告
*/
public void expert(Long recordId, HttpServletResponse response) {
DailyCheckRecord recordById = checkRecordMapper.getById(recordId, DailyCheckRecord.class);
List<DailyItemRecord> itemModelList = itemRecordMapper.findList(new WhereFilter() {{
addFilter("check_record_id", Operation.EQUAL, recordById.getId());
}}, DailyItemRecord.class);
String fileName = "化验室检测模板";
File file = new File(tempFileHomePath, fileName + ".xls");
}
}
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