Compare commits

...

64 Commits

Author SHA1 Message Date
27111d6f87 优化数据表导出
成型过程检验添加过程抽检批次
成型先行工检不添加过程抽检批次
2022-05-18 10:31:59 +08:00
22587804c5 修改批次为过程抽检批次 2022-05-18 09:05:23 +08:00
5bd5146105 优化数据表导出 格式化上传时间和批次 2022-05-17 11:46:47 +08:00
68f56278a5 格式化检验数据创建时间 2022-05-17 11:03:34 +08:00
9e2a28914e 格式化检验数据创建时间 2022-05-17 10:31:06 +08:00
289dbe69d6 检验数据添加上传时间和批次 2022-05-17 10:14:31 +08:00
2105a7640d 更新数据库配置 2022-04-27 15:56:21 +08:00
642052ebd3 添加检验数据增加约束条件 2022-04-26 14:08:37 +08:00
36c9e0d386 完善日志信息 2022-04-26 13:54:22 +08:00
c49ed5cea5 更新注释 2022-03-29 11:58:33 +08:00
6f0dc85929 导出检验数据格式化 2022-03-28 17:59:39 +08:00
bb0299c323 导出空白检验规格模板 2022-03-28 16:58:17 +08:00
b8f3bab4c1 导出检验规格,优化错误提示信息 2022-03-22 09:13:28 +08:00
6c806ce639 导出检验规格,切换线上文件存储目录 2022-03-22 09:02:13 +08:00
18b3ef6318 导出检验规格,表头添加最大值(管理值)、最小值(管理值) 2022-03-22 09:01:05 +08:00
b284577437 导出检验规格 2022-03-21 18:02:52 +08:00
5f2e367acc 导入检验规格 2022-03-21 16:58:37 +08:00
f053a7011c 再次兼容一下赵玉松"不是同一批次的产品也可以有相同的批次号"的需求!!! 2022-03-18 14:25:07 +08:00
72a1c46c21 兼容一下赵玉松"他的测量值和测量图片不能放在一个表单请求里,得给他两个接口,一个传数值,一个传图片"的需求!!! 2022-03-17 20:53:21 +08:00
1e6c1143da 导出Excel表格 2022-03-17 14:07:35 +08:00
3dd86a12bf 导出Excel表格 2022-03-17 11:54:36 +08:00
6e62f0de5a 导出Excel表格 2022-03-17 11:42:19 +08:00
c452fbc650 导出Excel表格 2022-03-17 11:02:42 +08:00
58b235d078 添加工艺项目 2022-03-16 14:00:57 +08:00
31d41e971c 添加工艺项目 2022-03-16 12:53:49 +08:00
a8486953bc 添加工艺项目相关类 2022-03-15 21:07:00 +08:00
9c77ac0ccf 完善输入参数是否可空 2022-03-12 15:34:26 +08:00
a995d08f6f 格式化代码 2022-03-12 15:07:20 +08:00
7690f14c0d 为测量数据添加高低指标后缀 2022-03-12 14:43:52 +08:00
f11ae30b77 完善查询测量数据 2022-03-12 13:52:15 +08:00
b757013382 重构 2022-03-11 17:33:03 +08:00
1ddf362e05 重构 2022-03-11 17:30:56 +08:00
ae243ec0a2 完善 查询检验数据 2022-03-11 17:23:34 +08:00
89e75ebc62 完善 添加检验数据 2022-03-11 17:07:22 +08:00
e86b8716d5 完善 添加检验数据 2022-03-11 17:03:37 +08:00
9f33ffdd1f 优化请求格式 2022-03-11 16:30:05 +08:00
e78392efdc 优化请求格式 2022-03-11 16:23:10 +08:00
12ea3d9293 添加controller 2022-03-11 16:07:31 +08:00
c72df130a1 优化注释 2022-03-11 15:37:06 +08:00
34d9d84456 优化null传参 2022-03-11 14:58:46 +08:00
2e7a107e93 优化查询质检数据 2022-03-11 14:09:37 +08:00
28481a3a4a 优化查询质检规格 2022-03-11 13:58:14 +08:00
dbe430c3b1 优化查询检验项目 2022-03-11 13:52:27 +08:00
15338c123b 更新注释 2022-03-11 11:58:38 +08:00
3a6b7aaec4 查询质检项 2022-03-11 11:55:54 +08:00
1fa0f9cffb 查询质检项 2022-03-11 10:28:36 +08:00
9dd6f697a6 完善更新SQL 2022-03-11 09:28:04 +08:00
8bfcc19fe7 更新质检规格 2022-03-11 09:11:06 +08:00
fc748f6f94 更新质检项名称 2022-03-11 08:58:20 +08:00
c2b9050fd6 添加质检规格 2022-03-10 21:18:49 +08:00
5f43e1b56e 添加质检数据 2022-03-10 20:50:21 +08:00
4ec6479321 添加质检项 2022-03-10 20:09:26 +08:00
f0aea24726 完善service 2022-03-10 19:33:25 +08:00
c4a2d5fda0 添加service 2022-03-10 19:24:42 +08:00
1ce56cbc88 完善Qo 2022-03-10 19:07:52 +08:00
88fe4a48f9 添加Qo 2022-03-10 17:43:05 +08:00
2b986e074d 添加Dao 2022-03-10 17:11:37 +08:00
c222bd7605 添加实体类 2022-03-10 16:19:17 +08:00
d6cda043fb 2022-03-10 11:53:03 +08:00
b74dd02f87 添加删除图片接口 2022-03-09 10:40:08 +08:00
49130281bb 可以添加多张测量图片 2022-03-08 17:05:53 +08:00
c698abfa11 测量数据倒序排列 2022-03-07 20:19:32 +08:00
3fcc427813 . 2022-03-03 15:43:28 +08:00
8182257f4e . 2022-03-03 15:42:30 +08:00
99 changed files with 3664 additions and 2132 deletions

View File

@ -0,0 +1,50 @@
package com.xkrs.controller;
import com.xkrs.model.qo.CraftItemQoDelete;
import com.xkrs.model.qo.CraftItemQoInsert;
import com.xkrs.model.qo.CraftItemQoUpdate;
import com.xkrs.service.CraftItemService;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@RestController
public class CraftItemController {
@Resource
private CraftItemService craftItemService;
/**
* 添加工艺项目
*/
@PostMapping("/insertCraftItem")
public String insertCraftItem(@RequestBody CraftItemQoInsert insertQo) {
return craftItemService.insertCraftItem(insertQo);
}
/**
* 删除工艺项目
*/
@PostMapping("/deleteCraftItem")
public String deleteCraftItem(@RequestBody CraftItemQoDelete deleteQo) {
return craftItemService.deleteCraftItem(deleteQo);
}
/**
* 更新工艺项目名称
*/
@PostMapping("/updateCraftItem")
public String updateCraftItem(@RequestBody CraftItemQoUpdate updateQo) {
return craftItemService.updateCraftItem(updateQo);
}
/**
* 查询工艺项目
*/
@GetMapping("/queryCraftItem")
public String queryCraftItem(@RequestParam(required = false, value = "no") String no, @RequestParam(required = false, value = "name") String name) {
return craftItemService.queryCraftItem(no, name);
}
}

View File

@ -1,95 +0,0 @@
package com.xkrs.controller;
import com.xkrs.dao.DataDictDao;
import com.xkrs.encapsulation.PromptMessageEnum;
import com.xkrs.model.entity.DataDict;
import com.xkrs.model.qo.DataDictQo;
import com.xkrs.model.qo.DataDictUpdateQo;
import com.xkrs.service.DataDictService;
import com.xkrs.util.DataDictQuery;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.transaction.Transactional;
import java.util.List;
import java.util.Locale;
import java.util.Optional;
import static com.xkrs.encapsulation.OutputEncapsulation.outputEncapsulationObject;
/**
* @Author: XinYi Song
* @Date: 2022/1/19 10:54
*/
@RestController
public class DataDictController {
@Resource
private DataDictService dataDictService;
@Resource
private DataDictDao dataDictDao;
@Resource
private DataDictQuery dataDictQuery;
/**
* 添加字典变量数据
*
* @param dataDictQo
* @return
*/
@PostMapping("/insertDataDict")
public String insertDataDict(@RequestBody DataDictQo dataDictQo) {
return dataDictService.insertDataDict(dataDictQo);
}
/**
* 动态多条件查询字典信息
*
* @param inspectionItemName
* @param inspectionItemCode
* @return
*/
@GetMapping("/selectDataDict")
public String selectDataDict(@RequestParam("inspectionItemName") String inspectionItemName,
@RequestParam("inspectionItemCode") String inspectionItemCode) {
Locale locale = LocaleContextHolder.getLocale();
List<DataDict> dataDict = dataDictQuery.selectDataDict(inspectionItemName, inspectionItemCode);
if (dataDict == null || dataDict.size() == 0) {
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE, "暂时还没有该型号类型的字典信息!", locale);
}
return outputEncapsulationObject(PromptMessageEnum.SUCCESS, dataDict, locale);
}
/**
* 根据id查询字典信息用于数据回显方便进行修改操作
*
* @param id
* @return
*/
@GetMapping("/selectDataDictById")
public String selectDataDictById(@RequestParam("id") Integer id) {
Locale locale = LocaleContextHolder.getLocale();
Optional<DataDict> byId = dataDictDao.findById(id);
if (byId.isEmpty()) {
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE, "暂时还没有该型号类型的字典信息!", locale);
}
return outputEncapsulationObject(PromptMessageEnum.SUCCESS, byId.get(), locale);
}
/**
* 根据id修改字典信息
*
* @param dataDictUpdateQo
* @return
*/
@PostMapping("/updateDict")
@Transactional(rollbackOn = Exception.class)
public String updateDict(@RequestBody DataDictUpdateQo dataDictUpdateQo) {
Locale locale = LocaleContextHolder.getLocale();
dataDictDao.updateDict(dataDictUpdateQo.getId(), dataDictUpdateQo.getInspectionItemName());
return outputEncapsulationObject(PromptMessageEnum.SUCCESS, "修改成功!", locale);
}
}

View File

@ -1,85 +0,0 @@
package com.xkrs.controller;
import com.xkrs.dao.DataSourceDao;
import com.xkrs.encapsulation.PromptMessageEnum;
import com.xkrs.model.entity.DataSource;
import com.xkrs.model.qo.DataSourceQo;
import com.xkrs.service.DataSourceService;
import com.xkrs.util.DataSourceQuery;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
import java.util.Locale;
import static com.xkrs.encapsulation.OutputEncapsulation.outputEncapsulationObject;
/**
* @Author: XinYi Song
* @Date: 2022/1/19 17:05
*/
@RestController
public class DataSourceController {
@Resource
private DataSourceService dataSourceService;
@Resource
private DataSourceQuery dataSourceQuery;
@Resource
private DataSourceDao dataSourceDao;
/**
* 添加测量数据
*
* @param dataSourceQo
* @return
*/
@PostMapping("/insertDataSource")
public String insertDataSource(@RequestBody DataSourceQo dataSourceQo) {
return dataSourceService.insertDataSource(dataSourceQo);
}
/**
* 查询某一产品的测量信息
*
* @param lotNo 批次号
* @param machineNo 机器号
* @param materialNo 物料号
* @param modelNo 模具号
* @param machineTypeNo 机种号
* @param craftItemName 工艺项目名称
* @return
*/
@GetMapping("/selectDataSource")
public String selectDataSource(@RequestParam(required = false, value = "lotNo") String lotNo,
@RequestParam(required = false, value = "machineNo") String machineNo,
@RequestParam(required = false, value = "materialNo") String materialNo,
@RequestParam(required = false, value = "modelNo") String modelNo,
@RequestParam(required = false, value = "machineTypeNo") String machineTypeNo,
@RequestParam(required = false, value = "craftItemName") String craftItemName) {
Locale locale = LocaleContextHolder.getLocale();
List<DataSource> dataSources = dataSourceQuery.selectDataSource(lotNo, machineNo, materialNo, modelNo, machineTypeNo, craftItemName);
if (dataSources == null || dataSources.size() == 0) {
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE, "暂时没有该产品的测量信息!", locale);
}
return outputEncapsulationObject(PromptMessageEnum.SUCCESS, dataSources, locale);
}
/**
* 查询全部的测量信息
*
* @return
*/
@GetMapping("/selectAllSource")
public String selectAllSource() {
Locale locale = LocaleContextHolder.getLocale();
List<DataSource> dataSources = dataSourceDao.findAll();
if (dataSources.size() == 0) {
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE, "暂时没有该产品的测量信息!", locale);
}
return outputEncapsulationObject(PromptMessageEnum.SUCCESS, dataSources, locale);
}
}

View File

@ -1,24 +1,6 @@
package com.xkrs.controller; package com.xkrs.controller;
import com.xkrs.dao.FileDao;
import com.xkrs.encapsulation.PromptMessageEnum;
import com.xkrs.model.qo.FileQo;
import com.xkrs.service.FileService;
import com.xkrs.util.ExcelUploadUtil;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.transaction.Transactional;
import java.io.IOException;
import java.util.Locale;
import static com.xkrs.encapsulation.OutputEncapsulation.outputEncapsulationObject;
/** /**
* @Author: XinYi Song * @Author: XinYi Song
@ -27,56 +9,56 @@ import static com.xkrs.encapsulation.OutputEncapsulation.outputEncapsulationObje
@RestController @RestController
public class FileController { public class FileController {
@Resource // @Resource
private FileService fileService; // private FileService fileService;
//
@Resource // @Resource
private FileDao fileDao; // private FileDao fileDao;
//
/** // /**
* 上传模板信息 // * 上传模板信息
* // *
* @param fileQo // * @param fileQo
* @param fileExcel // * @param fileExcel
* @return // * @return
* @throws IOException // * @throws IOException
*/ // */
@PostMapping("/insertFileExcel") // @PostMapping("/insertFileExcel")
public String insertFileExcel(FileQo fileQo, @RequestParam("fileExcel") MultipartFile fileExcel) throws IOException { // public String insertFileExcel(FileQo fileQo, @RequestParam("fileExcel") MultipartFile fileExcel) throws IOException {
return fileService.insertFileExcel(fileQo, fileExcel); // return fileService.insertFileExcel(fileQo, fileExcel);
} // }
//
/** // /**
* 修改上传的模板信息 // * 修改上传的模板信息
* // *
* @param fileQo // * @param fileQo
* @param fileExcel // * @param fileExcel
* @return // * @return
* @throws IOException // * @throws IOException
*/ // */
@PostMapping("/updateFileUploadPath") // @PostMapping("/updateFileUploadPath")
@Transactional(rollbackOn = Exception.class) // @Transactional(rollbackOn = Exception.class)
public String updateFileUploadPath(FileQo fileQo, @RequestParam("fileExcel") MultipartFile fileExcel) throws IOException { // public String updateFileUploadPath(FileQo fileQo, @RequestParam("fileExcel") MultipartFile fileExcel) throws IOException {
String lotNo = fileQo.getLotNo(); // String lotNo = fileQo.getLotNo();
String machineNo = fileQo.getMachineNo(); // String machineNo = fileQo.getMachineNo();
String materialNo = fileQo.getMaterialNo(); // String materialNo = fileQo.getMaterialNo();
String modelNo = fileQo.getModelNo(); // String modelNo = fileQo.getModelNo();
String machineTypeNo = fileQo.getMachineTypeNo(); // String machineTypeNo = fileQo.getMachineTypeNo();
String craftItemName = fileQo.getCraftItemName(); // String craftItemName = fileQo.getCraftItemName();
Locale locale = LocaleContextHolder.getLocale(); // Locale locale = LocaleContextHolder.getLocale();
String file = ExcelUploadUtil.memoryFile(fileExcel, 1); // String file = ExcelUploadUtil.memoryFile(fileExcel, 1);
fileDao.updateFileUploadPath(lotNo, machineNo, materialNo, modelNo, machineTypeNo, craftItemName, file); // fileDao.updateFileUploadPath(lotNo, machineNo, materialNo, modelNo, machineTypeNo, craftItemName, file);
return outputEncapsulationObject(PromptMessageEnum.SUCCESS, "修改成功!", locale); // return outputEncapsulationObject(PromptMessageEnum.SUCCESS, "修改成功!", locale);
} // }
//
/** // /**
* 导出excel // * 导出excel
* // *
* @param fileQo // * @param fileQo
* @return // * @return
*/ // */
@PostMapping("/exportExcel") // @PostMapping("/exportExcel")
public String exportExcel(@RequestBody FileQo fileQo) throws IOException, InvalidFormatException { // public String exportExcel(@RequestBody FileQo fileQo) throws IOException, InvalidFormatException {
return fileService.exportExcel(fileQo); // return fileService.exportExcel(fileQo);
} // }
} }

View File

@ -1,60 +0,0 @@
package com.xkrs.controller;
import com.xkrs.encapsulation.PromptMessageEnum;
import com.xkrs.model.entity.PictureEntity;
import com.xkrs.model.qo.PictureQo;
import com.xkrs.service.PictureService;
import com.xkrs.util.PictureQuery;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.io.IOException;
import java.util.List;
import java.util.Locale;
import static com.xkrs.encapsulation.OutputEncapsulation.outputEncapsulationObject;
/**
* @Author: XinYi Song
* @Date: 2022/1/20 16:01
*/
@RestController
public class PictureController {
@Resource
private PictureService pictureService;
@Resource
private PictureQuery pictureQuery;
/**
* 上传图片
*/
@PostMapping("/insertPicture")
public String insertPicture(PictureQo pictureQo, @RequestParam("filePicture") MultipartFile filePicture) throws IOException {
return pictureService.insertPicture(pictureQo, filePicture);
}
/**
* 查询图片
*/
@GetMapping("/selectPicture")
public String selectPicture(@RequestParam(required = false, value = "lotNo") String lotNo,
@RequestParam(required = false, value = "machineNo") String machineNo,
@RequestParam(required = false, value = "materialNo") String materialNo,
@RequestParam(required = false, value = "modelNo") String modelNo,
@RequestParam(required = false, value = "machineTypeNo") String machineTypeNo,
@RequestParam(required = false, value = "craftItemName") String craftItemName) {
Locale locale = LocaleContextHolder.getLocale();
List<PictureEntity> pictureEntities = pictureQuery.selectPicture(lotNo, machineNo, materialNo, modelNo, machineTypeNo,craftItemName);
if (pictureEntities.isEmpty()) {
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE, "暂时没有该图片!", locale);
}
return outputEncapsulationObject(PromptMessageEnum.SUCCESS, pictureEntities, locale);
}
}

View File

@ -0,0 +1,50 @@
package com.xkrs.controller;
import com.xkrs.model.qo.QcItemQoDelete;
import com.xkrs.model.qo.QcItemQoInsert;
import com.xkrs.model.qo.QcItemQoUpdate;
import com.xkrs.service.QcItemService;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@RestController
public class QcItemController {
@Resource
private QcItemService qcItemService;
/**
* 添加检验项目
*/
@PostMapping("/insertQcItem")
public String insertQcItem(@RequestBody QcItemQoInsert insertQo) {
return qcItemService.insertQcItem(insertQo);
}
/**
* 删除检验项目
*/
@PostMapping("/deleteQcItem")
public String deleteQcItem(@RequestBody QcItemQoDelete deleteQo) {
return qcItemService.deleteQcItem(deleteQo);
}
/**
* 更新检验项目名称
*/
@PostMapping("/updateQcItem")
public String updateQcItem(@RequestBody QcItemQoUpdate updateQo) {
return qcItemService.updateQcItem(updateQo);
}
/**
* 查询检验项目
*/
@GetMapping("/queryQcItem")
public String queryQcItem(@RequestParam(required = false, value = "no") String no, @RequestParam(required = false, value = "name") String name) {
return qcItemService.queryQcItem(no, name);
}
}

View File

@ -0,0 +1,66 @@
package com.xkrs.controller;
import com.xkrs.model.qo.ExportSourceExcelQo;
import com.xkrs.model.qo.QcSourceQoDelete;
import com.xkrs.model.qo.QcSourceQoInsert;
import com.xkrs.service.QcSourceService;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
@RestController
public class QcSourceController {
@Resource
private QcSourceService qcSourceService;
/**
* 添加检验数据用于在Json中接收字符串数据
*/
@PostMapping("/insertQcSource")
public String insertQcSource(@RequestBody QcSourceQoInsert insertQo, @RequestParam(required = false, value = "picture") MultipartFile picture) {
return qcSourceService.insertQcSource(insertQo, picture);
}
/**
* 添加检验数据用于在form-data中接收图片文件
*/
@PostMapping("/insertQcSourceOnlyPicture")
public String insertQcSourceOnlyPicture(QcSourceQoInsert insertQo, @RequestParam(value = "picture") MultipartFile picture) {
return qcSourceService.insertQcSource(insertQo, picture);
}
/**
* 删除检验数据
*/
@PostMapping("/deleteQcSource")
public String deleteQcSource(@RequestBody QcSourceQoDelete deleteQo) {
return qcSourceService.deleteQcSource(deleteQo);
}
/**
* 查询检验数据
*/
@GetMapping("/queryQcSource")
public String queryQcSource(@RequestParam(required = false, value = "batchNo") String batchNo, @RequestParam(required = false, value = "machineNo") String machineNo, @RequestParam(required = false, value = "materialNo") String materialNo, @RequestParam(required = false, value = "mouldNo") String mouldNo, @RequestParam(required = false, value = "varietyNo") String varietyNo, @RequestParam(required = false, value = "craftItemNo") String craftItemNo) {
return qcSourceService.queryQcSource(batchNo, machineNo, materialNo, mouldNo, varietyNo, craftItemNo);
}
/**
* 导出Excel表格
*/
@PostMapping("/exportExcel")
public String exportExcel(@RequestBody ExportSourceExcelQo exportSourceExcelQo) throws Exception {
return qcSourceService.exportExcel(exportSourceExcelQo);
}
/**
* 格式化创建时间历史数据
*/
@GetMapping("/formatCreateTime")
public String formatCreateTime() {
return qcSourceService.formatCreateTime();
}
}

View File

@ -0,0 +1,75 @@
package com.xkrs.controller;
import com.xkrs.model.qo.ExportSpecExcelQo;
import com.xkrs.model.qo.QcSpecQoDelete;
import com.xkrs.model.qo.QcSpecQoInsert;
import com.xkrs.model.qo.QcSpecQoUpdate;
import com.xkrs.service.QcSpecService;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
@RestController
public class QcSpecController {
@Resource
private QcSpecService qcSpecService;
/**
* 添加检验规格
*/
@PostMapping("/insertQcSpec")
public String insertQcSpec(@RequestBody QcSpecQoInsert insertQo) {
return qcSpecService.insertQcSpec(insertQo);
}
/**
* 删除检验规格
*/
@PostMapping("/deleteQcSpec")
public String deleteQcSpec(@RequestBody QcSpecQoDelete deleteQo) {
return qcSpecService.deleteQcSpec(deleteQo);
}
/**
* 更新检验规格
*/
@PostMapping("/updateQcSpec")
public String updateQcSpec(@RequestBody QcSpecQoUpdate updateQo) {
return qcSpecService.updateQcSpec(updateQo);
}
/**
* 查询检验规格
*/
@GetMapping("/queryQcSpec")
public String queryQcSpec(@RequestParam(required = false, value = "varietyNo") String varietyNo, @RequestParam(required = false, value = "craftItemNo") String craftItemNo, @RequestParam(required = false, value = "qcItemNo") String qcItemNo) {
return qcSpecService.queryQcSpec(varietyNo, craftItemNo, qcItemNo);
}
/**
* 导入检验规格
*/
@PostMapping("/importSpecExcel")
public String importSpecExcel(@RequestParam(value = "specExcel") MultipartFile specExcel) {
return qcSpecService.importSpecExcel(specExcel);
}
/**
* 导出检验规格
*/
@PostMapping("/exportSpecExcel")
public String exportSpecExcel(@RequestBody ExportSpecExcelQo exportSpecExcelQo) throws Exception {
return qcSpecService.exportSpecExcel(exportSpecExcelQo);
}
/**
* 导出空白检验规格
*/
@PostMapping("/exportEmptySpecExcel")
public String exportEmptySpecExcel(@RequestBody ExportSpecExcelQo exportSpecExcelQo) throws Exception {
return qcSpecService.exportEmptySpecExcel(exportSpecExcelQo);
}
}

View File

@ -1,55 +0,0 @@
package com.xkrs.controller;
import com.xkrs.encapsulation.PromptMessageEnum;
import com.xkrs.model.entity.SpecEntity;
import com.xkrs.model.qo.SpecQo;
import com.xkrs.service.SpecService;
import com.xkrs.util.SpecQuery;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
import java.util.Locale;
import static com.xkrs.encapsulation.OutputEncapsulation.outputEncapsulationObject;
/**
* @Author: XinYi Song
* @Date: 2022/1/20 16:01
*/
@RestController
public class SpecController {
@Resource
private SpecService specService;
@Resource
private SpecQuery specQuery;
/**
* 添加规格数据
*
* @param specQo
*/
@PostMapping("/insertSpec")
public String insertSpec(@RequestBody SpecQo specQo) {
return specService.insertSpec(specQo);
}
/**
* 查询规格信息
*/
@GetMapping("/selectSpec")
public String selectSpec(@RequestParam(required = false, value = "machineTypeNo") String machineTypeNo,
@RequestParam(required = false, value = "inspectionItemCode") String inspectionItemCode,
@RequestParam(required = false, value = "craftItemName") String craftItemName) {
Locale locale = LocaleContextHolder.getLocale();
List<SpecEntity> specEntities = specQuery.selectSpec(machineTypeNo, inspectionItemCode, craftItemName);
if (specEntities.isEmpty()) {
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE, "暂时没有该规格信息!", locale);
}
return outputEncapsulationObject(PromptMessageEnum.SUCCESS, specEntities, locale);
}
}

View File

@ -0,0 +1,38 @@
package com.xkrs.dao;
import com.xkrs.model.entity.CraftItemEntity;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Component;
import javax.transaction.Transactional;
import java.util.List;
import java.util.Map;
import java.util.Optional;
/**
* 工艺项目Dao
*/
@Component
public interface CraftItemDao extends JpaRepository<CraftItemEntity, Integer>, JpaSpecificationExecutor<CraftItemEntity> {
Optional<CraftItemEntity> findByCraftItemNo(String craftItemNo);
Optional<CraftItemEntity> findByCraftItemName(String craftItemName);
/**
* 更新工艺项目名称
*/
@Transactional(rollbackOn = Exception.class)
@Modifying(clearAutomatically = true)
@Query(value = "UPDATE craft_item SET update_time = ?2, craft_item_name = ?3 WHERE id = ?1", nativeQuery = true)
void updateNameById(Integer id, String updateTime, String name);
/**
* 查询工艺项目
*/
@Query(value = "SELECT id AS id, craft_item_no AS no, craft_item_name AS name FROM craft_item WHERE craft_item_no LIKE %?1% AND craft_item_name LIKE %?2% ORDER BY create_time ASC", nativeQuery = true)
List<Map<String, Object>> queryCraftItem(String no, String name);
}

View File

@ -1,42 +0,0 @@
package com.xkrs.dao;
import com.xkrs.model.entity.DataDict;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Optional;
/**
* @Author: XinYi Song
* @Date: 2022/1/19 10:03
*/
@Component
public interface DataDictDao extends JpaRepository<DataDict,Long>, JpaSpecificationExecutor<DataDict> {
/**
* 通过质检项代码查询字典表的数据
* @param inspectionItemCode
* @return
*/
Optional<DataDict> findByInspectionItemCode(String inspectionItemCode);
/**
* 根据id查询字典信息
* @param id
* @return
*/
Optional<DataDict> findById(Integer id);
/**
* 根据id修改字典的信息
* @param id
* @param inspectionItemName
*/
@Modifying(clearAutomatically=true)
@Query(value = "UPDATE qc_inspection_item_dict SET inspection_item_name = ?2 where id = ?1",nativeQuery = true)
void updateDict(Integer id, String inspectionItemName);
}

View File

@ -1,19 +0,0 @@
package com.xkrs.dao;
import com.xkrs.model.entity.DataSource;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Optional;
/**
* @Author: XinYi Song
* @Date: 2022/1/19 16:41
*/
@Component
public interface DataSourceDao extends JpaRepository<DataSource, Long>, JpaSpecificationExecutor<DataSource> {
}

View File

@ -1,32 +0,0 @@
package com.xkrs.dao;
import com.xkrs.model.entity.PictureEntity;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Component;
import java.util.Optional;
/**
* @Author: XinYi Song
* @Date: 2022/1/19 16:41
*/
@Component
public interface PictureDao extends JpaRepository<PictureEntity, Long>, JpaSpecificationExecutor<PictureEntity> {
/**
* 查询图片信息
*
* @param lotNo 批次号
* @param machineNo 机器号
* @param materialNo 物料号
* @param modelNo 模具号
* @param machineTypeNo 机种号
* @param craftItemName 工艺项目名称
* @return
*/
@Query(value = "SELECT * FROM qc_inspection_picture WHERE lot_no = ? AND machine_no = ? AND material_no = ? AND model_no = ? AND machine_type_no = ? AND craft_item_name = ? ", nativeQuery = true)
Optional<PictureEntity> selectPicture(String lotNo, String machineNo, String materialNo, String modelNo, String machineTypeNo, String craftItemName);
}

View File

@ -0,0 +1,36 @@
package com.xkrs.dao;
import com.xkrs.model.entity.QcItemEntity;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
import java.util.Optional;
/**
* 检验项目Dao
*/
@Component
public interface QcItemDao extends JpaRepository<QcItemEntity, Integer>, JpaSpecificationExecutor<QcItemEntity> {
Optional<QcItemEntity> findByQcItemNo(String qcItemNo);
Optional<QcItemEntity> findByQcItemName(String qcItemName);
/**
* 更新检验项目名称
*/
@Modifying(clearAutomatically = true)
@Query(value = "UPDATE qc_item SET update_time = ?2, qc_item_name = ?3 WHERE id = ?1", nativeQuery = true)
void updateNameById(Integer id, String updateTime, String name);
/**
* 查询检验项目
*/
@Query(value = "SELECT id AS id, qc_item_no AS no, qc_item_name AS name, qc_item_type AS type FROM qc_item WHERE qc_item_no LIKE %?1% AND qc_item_name LIKE %?2% ORDER BY create_time ASC", nativeQuery = true)
List<Map<String, Object>> queryQcItem(String no, String name);
}

View File

@ -0,0 +1,26 @@
package com.xkrs.dao;
import com.xkrs.model.entity.QcSourceEntity;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Component;
import javax.transaction.Transactional;
import java.util.List;
/**
* 检验数据Dao
*/
@Component
public interface QcSourceDao extends JpaRepository<QcSourceEntity, Integer>, JpaSpecificationExecutor<QcSourceEntity> {
@Query(value = "SELECT * FROM qc_source WHERE batch_no LIKE %?1% AND machine_no LIKE %?2% AND material_no LIKE %?3% AND mould_no LIKE %?4% AND variety_no LIKE %?5% AND craft_item_no LIKE %?6% ORDER BY create_time DESC", nativeQuery = true)
List<QcSourceEntity> queryQcSource(String batchNo, String machineNo, String materialNo, String mouldNo, String varietyNo, String craftItemNo);
@Transactional(rollbackOn = Exception.class)
@Modifying(clearAutomatically = true)
@Query(value = "UPDATE qc_source SET create_time_format = ?2 WHERE id = ?1", nativeQuery = true)
void formatCreateTime(Integer id, String formatCreateTime);
}

View File

@ -0,0 +1,48 @@
package com.xkrs.dao;
import com.xkrs.model.entity.QcSpecEntity;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Component;
import javax.transaction.Transactional;
import java.util.List;
import java.util.Map;
import java.util.Optional;
@Component
public interface QcSpecDao extends JpaRepository<QcSpecEntity, Integer>, JpaSpecificationExecutor<QcSpecEntity> {
@Query(value = "SELECT * FROM qc_spec WHERE variety_no = ?1 AND craft_item_no = ?2 AND qc_item_no = ?3 ORDER BY create_time ASC", nativeQuery = true)
Optional<QcSpecEntity> findExistsQcSpec(String varietyNo, String craftItemNo, String qcItemNo);
/**
* 更新检验规格(Integer id)
*/
@Transactional(rollbackOn = Exception.class)
@Modifying(clearAutomatically = true)
@Query(value = "UPDATE qc_spec SET update_time = ?2, max = ?3, mean = ?4, min = ?5, unit = ?6, method = ?7, standard = ?8, remark = ?9 WHERE id = ?1", nativeQuery = true)
void updateQcSpecById(Integer id, String updateTime, String max, String mean, String min, String unit, String method, String standard, String remark);
/**
* 更新检验规格(String varietyNo, String craftItemNo, String qcItemNo)
*/
@Transactional(rollbackOn = Exception.class)
@Modifying(clearAutomatically = true)
@Query(value = "UPDATE qc_spec SET update_time = ?4, max = ?5, mean = ?6, min = ?7, unit = ?8, method = ?9, standard = ?10, remark = ?11 WHERE variety_no = ?1 AND craft_item_no = ?2 AND qc_item_no = ?3", nativeQuery = true)
void updateQcSpecByVCQ(String varietyNo, String craftItemNo, String qcItemNo, String updateTime, String max, String mean, String min, String unit, String method, String standard, String remark);
/**
* 查询检验规格
*/
@Query(value = "SELECT id, variety_no AS varietyNo, craft_item_no AS craftItemNo, qc_item_no AS qcItemNo, max, mean, min, unit, method, standard, remark FROM qc_spec WHERE variety_no LIKE %?1% AND qc_item_no LIKE %?2% ORDER BY create_time ASC", nativeQuery = true)
List<Map<String, Object>> queryQcSpec(String varietyNo, String qcItemNo);
/**
* 查询检验规格
*/
@Query(value = "SELECT id, variety_no AS varietyNo, craft_item_no AS craftItemNo, qc_item_no AS qcItemNo, max, mean, min, unit, method, standard, remark FROM qc_spec WHERE variety_no LIKE %?1% AND craft_item_no = ?2 AND qc_item_no LIKE %?3% ORDER BY create_time ASC", nativeQuery = true)
List<Map<String, Object>> queryQcSpec(String varietyNo, String craftItemNo, String qcItemNo);
}

View File

@ -1,18 +0,0 @@
package com.xkrs.dao;
import com.xkrs.model.entity.SpecEntity;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Optional;
/**
* @Author: XinYi Song
* @Date: 2022/1/19 16:41
*/
@Component
public interface SpecDao extends JpaRepository<SpecEntity, Long>, JpaSpecificationExecutor<SpecEntity> {
}

View File

@ -4,8 +4,9 @@ import java.io.Serializable;
/** /**
* 输出信息对象 * 输出信息对象
* @author tajochen *
* @param <T> * @param <T>
* @author tajochen
*/ */
public class EncapsulationObejct<T> implements Serializable { public class EncapsulationObejct<T> implements Serializable {
@ -50,10 +51,6 @@ public class EncapsulationObejct<T> implements Serializable {
@Override @Override
public String toString() { public String toString() {
return "EncapsulationObejct{" + return "EncapsulationObejct{" + "status=" + status + ", msg='" + msg + '\'' + ", data=" + data + '}';
"status=" + status +
", msg='" + msg + '\'' +
", data=" + data +
'}';
} }
} }

View File

@ -21,6 +21,7 @@ import java.util.Properties;
/** /**
* 输出信息封装 * 输出信息封装
*
* @author tajochen * @author tajochen
*/ */
@Component @Component
@ -30,6 +31,7 @@ public class OutputEncapsulation {
/** /**
* 读取多国语言文件 * 读取多国语言文件
*
* @return * @return
*/ */
public static MessageSource messageSource() { public static MessageSource messageSource() {
@ -50,6 +52,7 @@ public class OutputEncapsulation {
/** /**
* 封装输出数据 * 封装输出数据
*
* @param promptMessageEnum * @param promptMessageEnum
* @param obj * @param obj
* @return * @return
@ -58,12 +61,12 @@ public class OutputEncapsulation {
EncapsulationObejct encapsulationObejct = new EncapsulationObejct(); EncapsulationObejct encapsulationObejct = new EncapsulationObejct();
encapsulationObejct.setStatus(promptMessageEnum.getCode()); encapsulationObejct.setStatus(promptMessageEnum.getCode());
encapsulationObejct.setMsg(messageSource().getMessage(promptMessageEnum.getText(),null,locale)); encapsulationObejct.setMsg(messageSource().getMessage(promptMessageEnum.getText(), null, locale));
encapsulationObejct.setData(obj); encapsulationObejct.setData(obj);
ObjectMapper objectMapper = new ObjectMapper(); ObjectMapper objectMapper = new ObjectMapper();
// 忽略无法转换的对象 // 忽略无法转换的对象
objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS,false); objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
// 忽略json字符串中不识别的属性 // 忽略json字符串中不识别的属性
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
// 解决jackson无法反序列化LocalDateTime的问题,引入jsr310标准 // 解决jackson无法反序列化LocalDateTime的问题,引入jsr310标准
@ -82,15 +85,16 @@ public class OutputEncapsulation {
/** /**
* 输出请求值检验错误信息 * 输出请求值检验错误信息
*
* @param fieldErrors * @param fieldErrors
* @return * @return
*/ */
public static String outputEncapsulationErrorList(List<FieldError> fieldErrors, Locale locale){ public static String outputEncapsulationErrorList(List<FieldError> fieldErrors, Locale locale) {
List<String> errorMsg = new ArrayList<>(); List<String> errorMsg = new ArrayList<>();
for (FieldError fieldError : fieldErrors) { for (FieldError fieldError : fieldErrors) {
String errMessage = fieldError.getDefaultMessage().subSequence(1,fieldError.getDefaultMessage().length()-1).toString(); String errMessage = fieldError.getDefaultMessage().subSequence(1, fieldError.getDefaultMessage().length() - 1).toString();
errorMsg.add(messageSource().getMessage(errMessage,null,locale)); errorMsg.add(messageSource().getMessage(errMessage, null, locale));
} }
return outputEncapsulationObject(PromptMessageEnum.PARAM_ILLEGAL,errorMsg,locale); return outputEncapsulationObject(PromptMessageEnum.PARAM_ILLEGAL, errorMsg, locale);
} }
} }

View File

@ -0,0 +1,51 @@
package com.xkrs.model.bean;
public class ReadSpecHeadBean {
/**
* 是否成功
*/
private boolean success;
/**
* 错误消息
*/
private String errorMessage;
/**
* 表头的有效列数
*/
private long headCount;
public ReadSpecHeadBean() {
}
public boolean isSuccess() {
return success;
}
public void setSuccess(boolean success) {
this.success = success;
}
public String getErrorMessage() {
return errorMessage;
}
public void setErrorMessage(String errorMessage) {
this.errorMessage = errorMessage;
}
public long getHeadCount() {
return headCount;
}
public void setHeadCount(long headCount) {
this.headCount = headCount;
}
@Override
public String toString() {
return "ReadSpecHeadBean{" + "success=" + success + ", errorMessage='" + errorMessage + '\'' + ", headCount=" + headCount + '}';
}
}

View File

@ -0,0 +1,58 @@
package com.xkrs.model.bean;
public class XSSFCellDataBean {
public static final int VALUE_TYPE_STRING = 1;
public static final int VALUE_TYPE_DOUBLE = 2;
private int valueType;
private String stringValue;
private double doubleValue;
public XSSFCellDataBean(String source) {
double tempDoubleValue = -100_000D;
try {
tempDoubleValue = Double.parseDouble(source);
} catch (Exception e) {
}
if (tempDoubleValue < -99_000D) {
valueType = VALUE_TYPE_STRING;
stringValue = source;
} else {
valueType = VALUE_TYPE_DOUBLE;
doubleValue = tempDoubleValue;
}
}
public int getValueType() {
return valueType;
}
public XSSFCellDataBean setValueType(int valueType) {
this.valueType = valueType;
return this;
}
public String getStringValue() {
return stringValue;
}
public XSSFCellDataBean setStringValue(String stringValue) {
this.stringValue = stringValue;
return this;
}
public double getDoubleValue() {
return doubleValue;
}
public XSSFCellDataBean setDoubleValue(double doubleValue) {
this.doubleValue = doubleValue;
return this;
}
@Override
public String toString() {
return "XSSFCellDataBean{" + "valueType=" + valueType + ", stringValue='" + stringValue + '\'' + ", doubleValue=" + doubleValue + '}';
}
}

View File

@ -0,0 +1,91 @@
package com.xkrs.model.entity;
import javax.persistence.*;
/**
* 工艺项目
*/
@Entity
@Table(name = "craft_item")
public class CraftItemEntity {
/**
* 主键id
*/
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "craft_item_seq_gen")
@SequenceGenerator(name = "craft_item_seq_gen", sequenceName = "craft_item_id_seq", allocationSize = 1)
private Integer id;
/**
* 创建时间
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String createTime;
/**
* 更新时间
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String updateTime;
/**
* 编号
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String craftItemNo;
/**
* 名称
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String craftItemName;
public CraftItemEntity() {
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getCreateTime() {
return createTime;
}
public void setCreateTime(String createTime) {
this.createTime = createTime;
}
public String getUpdateTime() {
return updateTime;
}
public void setUpdateTime(String updateTime) {
this.updateTime = updateTime;
}
public String getCraftItemNo() {
return craftItemNo;
}
public void setCraftItemNo(String craftItemNo) {
this.craftItemNo = craftItemNo;
}
public String getCraftItemName() {
return craftItemName;
}
public void setCraftItemName(String craftItemName) {
this.craftItemName = craftItemName;
}
@Override
public String toString() {
return "CraftItemEntity{" + "id=" + id + ", createTime='" + createTime + '\'' + ", updateTime='" + updateTime + '\'' + ", craftItemNo='" + craftItemNo + '\'' + ", craftItemName='" + craftItemName + '\'' + '}';
}
}

View File

@ -1,68 +0,0 @@
package com.xkrs.model.entity;
import javax.persistence.*;
/**
* @Author: XinYi Song
* @Date: 2022/1/19 9:26
*/
@Entity
@Table(name = "qc_inspection_item_dict")
public class DataDict {
/**
* 索引
*/
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "qc_inspection_item_dict_seq_gen")
@SequenceGenerator(name = "qc_inspection_item_dict_seq_gen", sequenceName = "qc_inspection_item_dict_id_seq", allocationSize = 1)
private Integer id;
/**
* 质检项代码
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String inspectionItemCode;
/**
* 质检项名称
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String inspectionItemName;
public DataDict() {
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getInspectionItemCode() {
return inspectionItemCode;
}
public void setInspectionItemCode(String inspectionItemCode) {
this.inspectionItemCode = inspectionItemCode;
}
public String getInspectionItemName() {
return inspectionItemName;
}
public void setInspectionItemName(String inspectionItemName) {
this.inspectionItemName = inspectionItemName;
}
@Override
public String toString() {
return "DataDict{" +
"id=" + id +
", inspectionItemCode='" + inspectionItemCode + '\'' +
", inspectionItemName='" + inspectionItemName + '\'' +
'}';
}
}

View File

@ -1,148 +0,0 @@
package com.xkrs.model.entity;
import javax.persistence.*;
/**
* @Author: XinYi Song
* @Date: 2022/1/19 14:08
*/
@Entity
@Table(name = "qc_inspection_data_source")
public class DataSource {
/**
* 主键id
*/
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "qc_inspection_data_source_seq_gen")
@SequenceGenerator(name = "qc_inspection_data_source_seq_gen", sequenceName = "qc_inspection_data_source_id_seq", allocationSize = 1)
private Integer id;
/**
* 批次号
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String lotNo;
/**
* 机器号
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String machineNo;
/**
* 物料号
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String materialNo;
/**
* 模具号
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String modelNo;
/**
* 机种号
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String machineTypeNo;
/**
* 检验项代码
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String inspectionItemCode;
/**
* 工艺项目名称
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String craftItemName;
/**
* 检验数值
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String inspectValue;
public DataSource() {
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getLotNo() {
return lotNo;
}
public void setLotNo(String lotNo) {
this.lotNo = lotNo;
}
public String getMachineNo() {
return machineNo;
}
public void setMachineNo(String machineNo) {
this.machineNo = machineNo;
}
public String getMaterialNo() {
return materialNo;
}
public void setMaterialNo(String materialNo) {
this.materialNo = materialNo;
}
public String getModelNo() {
return modelNo;
}
public void setModelNo(String modelNo) {
this.modelNo = modelNo;
}
public String getMachineTypeNo() {
return machineTypeNo;
}
public void setMachineTypeNo(String machineTypeNo) {
this.machineTypeNo = machineTypeNo;
}
public String getInspectionItemCode() {
return inspectionItemCode;
}
public void setInspectionItemCode(String inspectionItemCode) {
this.inspectionItemCode = inspectionItemCode;
}
public String getCraftItemName() {
return craftItemName;
}
public void setCraftItemName(String craftItemName) {
this.craftItemName = craftItemName;
}
public String getInspectValue() {
return inspectValue;
}
public void setInspectValue(String inspectValue) {
this.inspectValue = inspectValue;
}
@Override
public String toString() {
return "DataSource{" + "id=" + id + ", lotNo='" + lotNo + '\'' + ", machineNo='" + machineNo + '\'' + ", materialNo='" + materialNo + '\'' + ", modelNo='" + modelNo + '\'' + ", machineTypeNo='" + machineTypeNo + '\'' + ", inspectionItemCode='" + inspectionItemCode + '\'' + ", craftItemName='" + craftItemName + '\'' + ", inspectValue='" + inspectValue + '\'' + '}';
}
}

View File

@ -143,16 +143,6 @@ public class FileEntity {
@Override @Override
public String toString() { public String toString() {
return "FileEntity{" + return "FileEntity{" + "id=" + id + ", lotNo='" + lotNo + '\'' + ", machineNo='" + machineNo + '\'' + ", materialNo='" + materialNo + '\'' + ", modelNo='" + modelNo + '\'' + ", machineTypeNo='" + machineTypeNo + '\'' + ", craftItemName='" + craftItemName + '\'' + ", fileUploadPath='" + fileUploadPath + '\'' + ", fileDownloadPath='" + fileDownloadPath + '\'' + '}';
"id=" + id +
", lotNo='" + lotNo + '\'' +
", machineNo='" + machineNo + '\'' +
", materialNo='" + materialNo + '\'' +
", modelNo='" + modelNo + '\'' +
", machineTypeNo='" + machineTypeNo + '\'' +
", craftItemName='" + craftItemName + '\'' +
", fileUploadPath='" + fileUploadPath + '\'' +
", fileDownloadPath='" + fileDownloadPath + '\'' +
'}';
} }
} }

View File

@ -1,138 +0,0 @@
package com.xkrs.model.entity;
import javax.persistence.*;
@Entity
@Table(name = "qc_inspection_picture")
public class PictureEntity {
/**
* 主键id
*/
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "qc_inspection_picture_seq_gen")
@SequenceGenerator(name = "qc_inspection_picture_seq_gen", sequenceName = "qc_inspection_picture_id_seq", allocationSize = 1)
private Integer id;
/**
* 批次号
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String lotNo;
/**
* 机器号
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String machineNo;
/**
* 物料号
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String materialNo;
/**
* 模具号
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String modelNo;
/**
* 机种号
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String machineTypeNo;
/**
* 工艺项目名称
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String craftItemName;
/**
* 图片路径
*/
@Column(length = 2048, columnDefinition = "varchar(2048)")
private String picturePath;
public PictureEntity() {
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getLotNo() {
return lotNo;
}
public void setLotNo(String lotNo) {
this.lotNo = lotNo;
}
public String getMachineNo() {
return machineNo;
}
public void setMachineNo(String machineNo) {
this.machineNo = machineNo;
}
public String getMaterialNo() {
return materialNo;
}
public void setMaterialNo(String materialNo) {
this.materialNo = materialNo;
}
public String getModelNo() {
return modelNo;
}
public void setModelNo(String modelNo) {
this.modelNo = modelNo;
}
public String getMachineTypeNo() {
return machineTypeNo;
}
public void setMachineTypeNo(String machineTypeNo) {
this.machineTypeNo = machineTypeNo;
}
public String getCraftItemName() {
return craftItemName;
}
public void setCraftItemName(String craftItemName) {
this.craftItemName = craftItemName;
}
public String getPicturePath() {
return picturePath;
}
public void setPicturePath(String picturePath) {
this.picturePath = picturePath;
}
@Override
public String toString() {
return "PictureEntity{" +
"id=" + id +
", lotNo='" + lotNo + '\'' +
", machineNo='" + machineNo + '\'' +
", materialNo='" + materialNo + '\'' +
", modelNo='" + modelNo + '\'' +
", machineTypeNo='" + machineTypeNo + '\'' +
", craftItemName='" + craftItemName + '\'' +
", picturePath='" + picturePath + '\'' +
'}';
}
}

View File

@ -0,0 +1,107 @@
package com.xkrs.model.entity;
import javax.persistence.*;
/**
* 检验项目
*/
@Entity
@Table(name = "qc_item")
public class QcItemEntity {
/**
* 主键id
*/
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "qc_item_seq_gen")
@SequenceGenerator(name = "qc_item_seq_gen", sequenceName = "qc_item_id_seq", allocationSize = 1)
private Integer id;
/**
* 创建时间
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String createTime;
/**
* 更新时间
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String updateTime;
/**
* 编号
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String qcItemNo;
/**
* 名称
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String qcItemName;
/**
* 类型
* "0":文本格式
* "1":图片格式
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String qcItemType;
public QcItemEntity() {
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getCreateTime() {
return createTime;
}
public void setCreateTime(String createTime) {
this.createTime = createTime;
}
public String getUpdateTime() {
return updateTime;
}
public void setUpdateTime(String updateTime) {
this.updateTime = updateTime;
}
public String getQcItemNo() {
return qcItemNo;
}
public void setQcItemNo(String qcItemNo) {
this.qcItemNo = qcItemNo;
}
public String getQcItemName() {
return qcItemName;
}
public void setQcItemName(String qcItemName) {
this.qcItemName = qcItemName;
}
public String getQcItemType() {
return qcItemType;
}
public void setQcItemType(String qcItemType) {
this.qcItemType = qcItemType;
}
@Override
public String toString() {
return "QcItemEntity{" + "id=" + id + ", createTime='" + createTime + '\'' + ", updateTime='" + updateTime + '\'' + ", qcItemNo='" + qcItemNo + '\'' + ", qcItemName='" + qcItemName + '\'' + ", qcItemType='" + qcItemType + '\'' + '}';
}
}

View File

@ -0,0 +1,187 @@
package com.xkrs.model.entity;
import javax.persistence.*;
/**
* 检验数据
*/
@Entity
@Table(name = "qc_source")
public class QcSourceEntity {
/**
* 主键id
*/
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "qc_source_seq_gen")
@SequenceGenerator(name = "qc_source_seq_gen", sequenceName = "qc_source_id_seq", allocationSize = 1)
private Integer id;
/**
* 创建时间
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String createTime;
/**
* 格式化创建时间
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String createTimeFormat;
/**
* 批次号
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String batchNo;
/**
* 机器号
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String machineNo;
/**
* 物料号
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String materialNo;
/**
* 模具号
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String mouldNo;
/**
* 机种号
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String varietyNo;
/**
* 工艺项目编号
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String craftItemNo;
/**
* 检验项目编号
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String qcItemNo;
/**
* 数值
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String qcValue;
public QcSourceEntity() {
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getCreateTime() {
return createTime;
}
public void setCreateTime(String createTime) {
this.createTime = createTime;
}
public String getCreateTimeFormat() {
return createTimeFormat;
}
public void setCreateTimeFormat(String createTimeFormat) {
this.createTimeFormat = createTimeFormat;
}
public String getBatchNo() {
return batchNo;
}
public void setBatchNo(String batchNo) {
this.batchNo = batchNo;
}
public String getMachineNo() {
return machineNo;
}
public void setMachineNo(String machineNo) {
this.machineNo = machineNo;
}
public String getMaterialNo() {
return materialNo;
}
public void setMaterialNo(String materialNo) {
this.materialNo = materialNo;
}
public String getMouldNo() {
return mouldNo;
}
public void setMouldNo(String mouldNo) {
this.mouldNo = mouldNo;
}
public String getVarietyNo() {
return varietyNo;
}
public void setVarietyNo(String varietyNo) {
this.varietyNo = varietyNo;
}
public String getCraftItemNo() {
return craftItemNo;
}
public void setCraftItemNo(String craftItemNo) {
this.craftItemNo = craftItemNo;
}
public String getQcItemNo() {
return qcItemNo;
}
public void setQcItemNo(String qcItemNo) {
this.qcItemNo = qcItemNo;
}
public String getQcValue() {
return qcValue;
}
public void setQcValue(String qcValue) {
this.qcValue = qcValue;
}
@Override
public String toString() {
return "QcSourceEntity{" +
"id=" + id +
", createTime='" + createTime + '\'' +
", createTimeFormat='" + createTimeFormat + '\'' +
", batchNo='" + batchNo + '\'' +
", machineNo='" + machineNo + '\'' +
", materialNo='" + materialNo + '\'' +
", mouldNo='" + mouldNo + '\'' +
", varietyNo='" + varietyNo + '\'' +
", craftItemNo='" + craftItemNo + '\'' +
", qcItemNo='" + qcItemNo + '\'' +
", qcValue='" + qcValue + '\'' +
'}';
}
}

View File

@ -0,0 +1,203 @@
package com.xkrs.model.entity;
import javax.persistence.*;
/**
* 检验规格
*/
@Entity
@Table(name = "qc_spec")
public class QcSpecEntity {
/**
* 主键id
*/
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "qc_spec_seq_gen")
@SequenceGenerator(name = "qc_spec_seq_gen", sequenceName = "qc_spec_id_seq", allocationSize = 1)
private Integer id;
/**
* 创建时间
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String createTime;
/**
* 更新时间
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String updateTime;
/**
* 机种号
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String varietyNo;
/**
* 工艺项目编号
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String craftItemNo;
/**
* 检验项目编号
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String qcItemNo;
/**
* 最大值
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String max;
/**
* 平均值
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String mean;
/**
* 最小值
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String min;
/**
* 单位
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String unit;
/**
* 检验方法
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String method;
/**
* 检验标准
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String standard;
/**
* 备注
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String remark;
public QcSpecEntity() {
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getCreateTime() {
return createTime;
}
public void setCreateTime(String createTime) {
this.createTime = createTime;
}
public String getUpdateTime() {
return updateTime;
}
public void setUpdateTime(String updateTime) {
this.updateTime = updateTime;
}
public String getVarietyNo() {
return varietyNo;
}
public void setVarietyNo(String varietyNo) {
this.varietyNo = varietyNo;
}
public String getCraftItemNo() {
return craftItemNo;
}
public void setCraftItemNo(String craftItemNo) {
this.craftItemNo = craftItemNo;
}
public String getQcItemNo() {
return qcItemNo;
}
public void setQcItemNo(String qcItemNo) {
this.qcItemNo = qcItemNo;
}
public String getMax() {
return max;
}
public void setMax(String max) {
this.max = max;
}
public String getMean() {
return mean;
}
public void setMean(String mean) {
this.mean = mean;
}
public String getMin() {
return min;
}
public void setMin(String min) {
this.min = min;
}
public String getUnit() {
return unit;
}
public void setUnit(String unit) {
this.unit = unit;
}
public String getMethod() {
return method;
}
public void setMethod(String method) {
this.method = method;
}
public String getStandard() {
return standard;
}
public void setStandard(String standard) {
this.standard = standard;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
@Override
public String toString() {
return "QcSpecEntity{" + "id=" + id + ", createTime='" + createTime + '\'' + ", updateTime='" + updateTime + '\'' + ", varietyNo='" + varietyNo + '\'' + ", craftItemNo='" + craftItemNo + '\'' + ", qcItemNo='" + qcItemNo + '\'' + ", max='" + max + '\'' + ", mean='" + mean + '\'' + ", min='" + min + '\'' + ", unit='" + unit + '\'' + ", method='" + method + '\'' + ", standard='" + standard + '\'' + ", remark='" + remark + '\'' + '}';
}
}

View File

@ -1,183 +0,0 @@
package com.xkrs.model.entity;
import javax.persistence.*;
@Entity
@Table(name = "qc_inspection_spec")
public class SpecEntity {
/**
* 主键id
*/
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "qc_inspection_spec_seq_gen")
@SequenceGenerator(name = "qc_inspection_spec_seq_gen", sequenceName = "qc_inspection_spec_id_seq", allocationSize = 1)
private Integer id;
/**
* 机种号
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String machineTypeNo;
/**
* 检验项代码
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String inspectionItemCode;
/**
* 工艺项目名称
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String craftItemName;
/**
* 最大值
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String max;
/**
* 平均值
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String mean;
/**
* 最小值
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String min;
/**
* 单位
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String unit;
/**
* 检验方法
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String inspectionMethod;
/**
* 检验标准
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String inspectionStandard;
/**
* 备注
*/
@Column(length = 85, columnDefinition = "varchar(85)")
private String remark;
public SpecEntity() {
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getMachineTypeNo() {
return machineTypeNo;
}
public void setMachineTypeNo(String machineTypeNo) {
this.machineTypeNo = machineTypeNo;
}
public String getInspectionItemCode() {
return inspectionItemCode;
}
public void setInspectionItemCode(String inspectionItemCode) {
this.inspectionItemCode = inspectionItemCode;
}
public String getCraftItemName() {
return craftItemName;
}
public void setCraftItemName(String craftItemName) {
this.craftItemName = craftItemName;
}
public String getMax() {
return max;
}
public void setMax(String max) {
this.max = max;
}
public String getMean() {
return mean;
}
public void setMean(String mean) {
this.mean = mean;
}
public String getMin() {
return min;
}
public void setMin(String min) {
this.min = min;
}
public String getUnit() {
return unit;
}
public void setUnit(String unit) {
this.unit = unit;
}
public String getInspectionMethod() {
return inspectionMethod;
}
public void setInspectionMethod(String inspectionMethod) {
this.inspectionMethod = inspectionMethod;
}
public String getInspectionStandard() {
return inspectionStandard;
}
public void setInspectionStandard(String inspectionStandard) {
this.inspectionStandard = inspectionStandard;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
@Override
public String toString() {
return "SpecEntity{" +
"id=" + id +
", machineTypeNo='" + machineTypeNo + '\'' +
", inspectionItemCode='" + inspectionItemCode + '\'' +
", craftItemName='" + craftItemName + '\'' +
", max='" + max + '\'' +
", mean='" + mean + '\'' +
", min='" + min + '\'' +
", unit='" + unit + '\'' +
", inspectionMethod='" + inspectionMethod + '\'' +
", inspectionStandard='" + inspectionStandard + '\'' +
", remark='" + remark + '\'' +
'}';
}
}

View File

@ -0,0 +1,33 @@
package com.xkrs.model.qo;
import com.xkrs.model.va.CraftItemQoDeleteVa;
import javax.validation.constraints.NotBlank;
/**
* 删除工艺项目接收类
*/
public class CraftItemQoDelete {
/**
* 主键id
*/
@NotBlank(message = "{CraftItemEntity.id.blank}", groups = {CraftItemQoDeleteVa.class})
private Integer id;
public CraftItemQoDelete() {
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@Override
public String toString() {
return "CraftItemQoDelete{" + "id=" + id + '}';
}
}

View File

@ -0,0 +1,47 @@
package com.xkrs.model.qo;
import com.xkrs.model.va.CraftItemQoInsertVa;
import javax.validation.constraints.NotBlank;
/**
* 新增工艺项目接收类
*/
public class CraftItemQoInsert {
/**
* 编号
*/
@NotBlank(message = "{CraftItemEntity.no.blank}", groups = {CraftItemQoInsertVa.class})
private String no;
/**
* 名称
*/
@NotBlank(message = "{CraftItemEntity.name.blank}", groups = {CraftItemQoInsertVa.class})
private String name;
public CraftItemQoInsert() {
}
public String getNo() {
return no;
}
public void setNo(String no) {
this.no = no;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "CraftItemQoInsert{" + "no='" + no + '\'' + ", name='" + name + '\'' + '}';
}
}

View File

@ -0,0 +1,44 @@
package com.xkrs.model.qo;
import com.xkrs.model.va.CraftItemQoUpdateVa;
import javax.validation.constraints.NotBlank;
public class CraftItemQoUpdate {
/**
* 主键id
*/
@NotBlank(message = "{CraftItemEntity.id.blank}", groups = {CraftItemQoUpdateVa.class})
private Integer id;
/**
* 名称
*/
@NotBlank(message = "{CraftItemEntity.name.blank}", groups = {CraftItemQoUpdateVa.class})
private String name;
public CraftItemQoUpdate() {
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "CraftItemQoUpdate{" + "id=" + id + ", name='" + name + '\'' + '}';
}
}

View File

@ -1,43 +0,0 @@
package com.xkrs.model.qo;
import com.xkrs.model.validation.DataDictQoInsert;
import javax.validation.constraints.NotBlank;
/**
* @Author: XinYi Song
* @Date: 2022/1/19 10:14
*/
public class DataDictQo {
/**
* 质检项代码
*/
@NotBlank(message = "{DataDict.inspectionItemCode.blank}", groups = {DataDictQoInsert.class})
private String inspectionItemCode;
/**
* 质检项名称
*/
@NotBlank(message = "{DataDict.inspectionItemName.blank}", groups = {DataDictQoInsert.class})
private String inspectionItemName;
public DataDictQo() {
}
public String getInspectionItemCode() {
return inspectionItemCode;
}
public void setInspectionItemCode(String inspectionItemCode) {
this.inspectionItemCode = inspectionItemCode;
}
public String getInspectionItemName() {
return inspectionItemName;
}
public void setInspectionItemName(String inspectionItemName) {
this.inspectionItemName = inspectionItemName;
}
}

View File

@ -1,40 +0,0 @@
package com.xkrs.model.qo;
import com.xkrs.model.validation.DataDictUpdateQoUpdate;
import javax.validation.constraints.NotBlank;
/**
* @Author: XinYi Song
* @Date: 2022/1/20 11:23
*/
public class DataDictUpdateQo {
@NotBlank(message = "{DataDict.id.blank}", groups = {DataDictUpdateQoUpdate.class})
private Integer id;
/**
* 质检项名称
*/
@NotBlank(message = "{DataDict.inspectionItemName.blank}", groups = {DataDictUpdateQoUpdate.class})
private String inspectionItemName;
public DataDictUpdateQo() {
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getInspectionItemName() {
return inspectionItemName;
}
public void setInspectionItemName(String inspectionItemName) {
this.inspectionItemName = inspectionItemName;
}
}

View File

@ -1,128 +0,0 @@
package com.xkrs.model.qo;
import com.xkrs.model.validation.DataSourceQoInsert;
import javax.validation.constraints.NotBlank;
/**
* @Author: XinYi Song
* @Date: 2022/1/19 16:37
*/
public class DataSourceQo {
/**
* 批次号
*/
@NotBlank(message = "{DataSource.lotNo.blank}", groups = {DataSourceQoInsert.class})
private String lotNo;
/**
* 机器号
*/
@NotBlank(message = "{DataSource.machineNo.blank}", groups = {DataSourceQoInsert.class})
private String machineNo;
/**
* 物料号
*/
@NotBlank(message = "{DataSource.materialNo.blank}", groups = {DataSourceQoInsert.class})
private String materialNo;
/**
* 模具号
*/
@NotBlank(message = "{DataSource.modelNo.blank}", groups = {DataSourceQoInsert.class})
private String modelNo;
/**
* 机种号
*/
@NotBlank(message = "{DataSource.machineTypeNo.blank}", groups = {DataSourceQoInsert.class})
private String machineTypeNo;
/**
* 检验项代码
*/
@NotBlank(message = "{DataSource.inspectionItemCode.blank}", groups = {DataSourceQoInsert.class})
private String inspectionItemCode;
/**
* 工艺项目名称
*/
@NotBlank(message = "{DataSource.craftItemName.blank}", groups = {DataSourceQoInsert.class})
private String craftItemName;
/**
* 检验数值
*/
@NotBlank(message = "{DataSource.inspectValue.blank}", groups = {DataSourceQoInsert.class})
private String inspectValue;
public DataSourceQo() {
}
public String getLotNo() {
return lotNo;
}
public void setLotNo(String lotNo) {
this.lotNo = lotNo;
}
public String getMachineNo() {
return machineNo;
}
public void setMachineNo(String machineNo) {
this.machineNo = machineNo;
}
public String getMaterialNo() {
return materialNo;
}
public void setMaterialNo(String materialNo) {
this.materialNo = materialNo;
}
public String getModelNo() {
return modelNo;
}
public void setModelNo(String modelNo) {
this.modelNo = modelNo;
}
public String getMachineTypeNo() {
return machineTypeNo;
}
public void setMachineTypeNo(String machineTypeNo) {
this.machineTypeNo = machineTypeNo;
}
public String getInspectionItemCode() {
return inspectionItemCode;
}
public void setInspectionItemCode(String inspectionItemCode) {
this.inspectionItemCode = inspectionItemCode;
}
public String getCraftItemName() {
return craftItemName;
}
public void setCraftItemName(String craftItemName) {
this.craftItemName = craftItemName;
}
public String getInspectValue() {
return inspectValue;
}
public void setInspectValue(String inspectValue) {
this.inspectValue = inspectValue;
}
}

View File

@ -0,0 +1,108 @@
package com.xkrs.model.qo;
import com.xkrs.model.va.ExportSourceExcelQoVa;
import javax.validation.constraints.NotBlank;
public class ExportSourceExcelQo {
/**
* IP端口
*/
@NotBlank(message = "{QcSourceEntity.host.blank}", groups = {ExportSourceExcelQoVa.class})
private String host;
/**
* 批次号
*/
private String batchNo;
/**
* 机器号
*/
private String machineNo;
/**
* 物料号
*/
private String materialNo;
/**
* 模具号
*/
private String mouldNo;
/**
* 机种号
*/
private String varietyNo;
/**
* 工艺项目编号
*/
private String craftItemNo;
public ExportSourceExcelQo() {
}
public String getHost() {
return host;
}
public void setHost(String host) {
this.host = host;
}
public String getBatchNo() {
return batchNo;
}
public void setBatchNo(String batchNo) {
this.batchNo = batchNo;
}
public String getMachineNo() {
return machineNo;
}
public void setMachineNo(String machineNo) {
this.machineNo = machineNo;
}
public String getMaterialNo() {
return materialNo;
}
public void setMaterialNo(String materialNo) {
this.materialNo = materialNo;
}
public String getMouldNo() {
return mouldNo;
}
public void setMouldNo(String mouldNo) {
this.mouldNo = mouldNo;
}
public String getVarietyNo() {
return varietyNo;
}
public void setVarietyNo(String varietyNo) {
this.varietyNo = varietyNo;
}
public String getCraftItemNo() {
return craftItemNo;
}
public void setCraftItemNo(String craftItemNo) {
this.craftItemNo = craftItemNo;
}
@Override
public String toString() {
return "ExportExcelQo{" + "host='" + host + '\'' + ", batchNo='" + batchNo + '\'' + ", machineNo='" + machineNo + '\'' + ", materialNo='" + materialNo + '\'' + ", mouldNo='" + mouldNo + '\'' + ", varietyNo='" + varietyNo + '\'' + ", craftItemNo='" + craftItemNo + '\'' + '}';
}
}

View File

@ -0,0 +1,30 @@
package com.xkrs.model.qo;
import com.xkrs.model.va.ExportSpecExcelQoVa;
import javax.validation.constraints.NotBlank;
public class ExportSpecExcelQo {
/**
* IP端口
*/
@NotBlank(message = "{QcSpecEntity.host.blank}", groups = {ExportSpecExcelQoVa.class})
private String host;
public ExportSpecExcelQo() {
}
public String getHost() {
return host;
}
public void setHost(String host) {
this.host = host;
}
@Override
public String toString() {
return "ExportSpecExcelQo{" + "host='" + host + '\'' + '}';
}
}

View File

@ -1,6 +1,6 @@
package com.xkrs.model.qo; package com.xkrs.model.qo;
import com.xkrs.model.validation.FileQoInsert; import com.xkrs.model.va.FileQoInsert;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;

View File

@ -1,95 +0,0 @@
package com.xkrs.model.qo;
import com.xkrs.model.validation.PictureQoInsert;
import javax.validation.constraints.NotBlank;
public class PictureQo {
/**
* 批次号
*/
@NotBlank(message = "{PictureEntity.lotNo.blank}", groups = {PictureQoInsert.class})
private String lotNo;
/**
* 机器号
*/
@NotBlank(message = "{PictureEntity.machineNo.blank}", groups = {PictureQoInsert.class})
private String machineNo;
/**
* 物料号
*/
@NotBlank(message = "{PictureEntity.materialNo.blank}", groups = {PictureQoInsert.class})
private String materialNo;
/**
* 模具号
*/
@NotBlank(message = "{PictureEntity.modelNo.blank}", groups = {PictureQoInsert.class})
private String modelNo;
/**
* 机种号
*/
@NotBlank(message = "{PictureEntity.machineTypeNo.blank}", groups = {PictureQoInsert.class})
private String machineTypeNo;
/**
* 工艺项目名称
*/
@NotBlank(message = "{PictureEntity.craftItemName.blank}", groups = {PictureQoInsert.class})
private String craftItemName;
public PictureQo() {
}
public String getLotNo() {
return lotNo;
}
public void setLotNo(String lotNo) {
this.lotNo = lotNo;
}
public String getMachineNo() {
return machineNo;
}
public void setMachineNo(String machineNo) {
this.machineNo = machineNo;
}
public String getMaterialNo() {
return materialNo;
}
public void setMaterialNo(String materialNo) {
this.materialNo = materialNo;
}
public String getModelNo() {
return modelNo;
}
public void setModelNo(String modelNo) {
this.modelNo = modelNo;
}
public String getMachineTypeNo() {
return machineTypeNo;
}
public void setMachineTypeNo(String machineTypeNo) {
this.machineTypeNo = machineTypeNo;
}
public String getCraftItemName() {
return craftItemName;
}
public void setCraftItemName(String craftItemName) {
this.craftItemName = craftItemName;
}
}

View File

@ -0,0 +1,33 @@
package com.xkrs.model.qo;
import com.xkrs.model.va.QcItemQoDeleteVa;
import javax.validation.constraints.NotBlank;
/**
* 删除检验项目接收类
*/
public class QcItemQoDelete {
/**
* 主键id
*/
@NotBlank(message = "{QcItemEntity.id.blank}", groups = {QcItemQoDeleteVa.class})
private Integer id;
public QcItemQoDelete() {
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@Override
public String toString() {
return "QcItemQoDelete{" + "id=" + id + '}';
}
}

View File

@ -0,0 +1,61 @@
package com.xkrs.model.qo;
import com.xkrs.model.va.QcItemQoInsertVa;
import javax.validation.constraints.NotBlank;
/**
* 新增检验项目接收类
*/
public class QcItemQoInsert {
/**
* 编号
*/
@NotBlank(message = "{QcItemEntity.no.blank}", groups = {QcItemQoInsertVa.class})
private String no;
/**
* 名称
*/
@NotBlank(message = "{QcItemEntity.name.blank}", groups = {QcItemQoInsertVa.class})
private String name;
/**
* 类型
*/
@NotBlank(message = "{QcItemEntity.type.blank}", groups = {QcItemQoInsertVa.class})
private String type;
public QcItemQoInsert() {
}
public String getNo() {
return no;
}
public void setNo(String no) {
this.no = no;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
@Override
public String toString() {
return "QcItemQoInsert{" + "no='" + no + '\'' + ", name='" + name + '\'' + ", type='" + type + '\'' + '}';
}
}

View File

@ -0,0 +1,47 @@
package com.xkrs.model.qo;
import com.xkrs.model.va.QcItemQoUpdateVa;
import javax.validation.constraints.NotBlank;
/**
* 更新检验项目接收类
*/
public class QcItemQoUpdate {
/**
* 主键id
*/
@NotBlank(message = "{QcItemEntity.id.blank}", groups = {QcItemQoUpdateVa.class})
private Integer id;
/**
* 名称
*/
@NotBlank(message = "{QcItemEntity.name.blank}", groups = {QcItemQoUpdateVa.class})
private String name;
public QcItemQoUpdate() {
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "QcItemQoUpdate{" + "id=" + id + ", name='" + name + '\'' + '}';
}
}

View File

@ -0,0 +1,33 @@
package com.xkrs.model.qo;
import com.xkrs.model.va.QcSourceQoDeleteVa;
import javax.validation.constraints.NotBlank;
/**
* 删除检验数据接收类
*/
public class QcSourceQoDelete {
/**
* 主键id
*/
@NotBlank(message = "{QcSourceEntity.id.blank}", groups = {QcSourceQoDeleteVa.class})
private Integer id;
public QcSourceQoDelete() {
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@Override
public String toString() {
return "QcSourceQoDelete{" + "id=" + id + '}';
}
}

View File

@ -0,0 +1,130 @@
package com.xkrs.model.qo;
import com.xkrs.model.va.QcSourceQoInsertVa;
import javax.validation.constraints.NotBlank;
/**
* 新增检验数据接收类
*/
public class QcSourceQoInsert {
/**
* 批次号
*/
@NotBlank(message = "{QcSourceEntity.batchNo.blank}", groups = {QcSourceQoInsertVa.class})
private String batchNo;
/**
* 机器号
*/
@NotBlank(message = "{QcSourceEntity.machineNo.blank}", groups = {QcSourceQoInsertVa.class})
private String machineNo;
/**
* 物料号
*/
@NotBlank(message = "{QcSourceEntity.materialNo.blank}", groups = {QcSourceQoInsertVa.class})
private String materialNo;
/**
* 模具号
*/
@NotBlank(message = "{QcSourceEntity.mouldNo.blank}", groups = {QcSourceQoInsertVa.class})
private String mouldNo;
/**
* 机种号
*/
@NotBlank(message = "{QcSourceEntity.varietyNo.blank}", groups = {QcSourceQoInsertVa.class})
private String varietyNo;
/**
* 工艺项目编号
*/
@NotBlank(message = "{QcSourceEntity.craftItemNo.blank}", groups = {QcSourceQoInsertVa.class})
private String craftItemNo;
/**
* 检验项目编号
*/
@NotBlank(message = "{QcSourceEntity.qcItemNo.blank}", groups = {QcSourceQoInsertVa.class})
private String qcItemNo;
/**
* 数值
*/
private String qcValue;
public QcSourceQoInsert() {
}
public String getBatchNo() {
return batchNo;
}
public void setBatchNo(String batchNo) {
this.batchNo = batchNo;
}
public String getMachineNo() {
return machineNo;
}
public void setMachineNo(String machineNo) {
this.machineNo = machineNo;
}
public String getMaterialNo() {
return materialNo;
}
public void setMaterialNo(String materialNo) {
this.materialNo = materialNo;
}
public String getMouldNo() {
return mouldNo;
}
public void setMouldNo(String mouldNo) {
this.mouldNo = mouldNo;
}
public String getVarietyNo() {
return varietyNo;
}
public void setVarietyNo(String varietyNo) {
this.varietyNo = varietyNo;
}
public String getCraftItemNo() {
return craftItemNo;
}
public void setCraftItemNo(String craftItemNo) {
this.craftItemNo = craftItemNo;
}
public String getQcItemNo() {
return qcItemNo;
}
public void setQcItemNo(String qcItemNo) {
this.qcItemNo = qcItemNo;
}
public String getQcValue() {
return qcValue;
}
public void setQcValue(String qcValue) {
this.qcValue = qcValue;
}
@Override
public String toString() {
return "QcSourceQoInsert{" + "batchNo='" + batchNo + '\'' + ", machineNo='" + machineNo + '\'' + ", materialNo='" + materialNo + '\'' + ", mouldNo='" + mouldNo + '\'' + ", varietyNo='" + varietyNo + '\'' + ", craftItemNo='" + craftItemNo + '\'' + ", qcItemNo='" + qcItemNo + '\'' + ", qcValue='" + qcValue + '\'' + '}';
}
}

View File

@ -0,0 +1,33 @@
package com.xkrs.model.qo;
import com.xkrs.model.va.QcSpecQoDeleteVa;
import javax.validation.constraints.NotBlank;
/**
* 删除检验规格接收类
*/
public class QcSpecQoDelete {
/**
* 主键id
*/
@NotBlank(message = "{QcSpecEntity.id.blank}", groups = {QcSpecQoDeleteVa.class})
private Integer id;
public QcSpecQoDelete() {
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@Override
public String toString() {
return "QcSpecQoDelete{" + "id=" + id + '}';
}
}

View File

@ -0,0 +1,152 @@
package com.xkrs.model.qo;
import com.xkrs.model.va.QcSpecQoInsertVa;
import javax.validation.constraints.NotBlank;
/**
* 新增检验规格接收类
*/
public class QcSpecQoInsert {
/**
* 机种号
*/
@NotBlank(message = "{QcSpecEntity.varietyNo.blank}", groups = {QcSpecQoInsertVa.class})
private String varietyNo;
/**
* 工艺项目编号
*/
@NotBlank(message = "{QcSpecEntity.craftItemNo.blank}", groups = {QcSpecQoInsertVa.class})
private String craftItemNo;
/**
* 检验项目编号
*/
@NotBlank(message = "{QcSpecEntity.qcItemNo.blank}", groups = {QcSpecQoInsertVa.class})
private String qcItemNo;
/**
* 最大值
*/
private String max;
/**
* 平均值
*/
private String mean;
/**
* 最小值
*/
private String min;
/**
* 单位
*/
private String unit;
/**
* 检验方法
*/
private String method;
/**
* 检验标准
*/
private String standard;
/**
* 备注
*/
private String remark;
public QcSpecQoInsert() {
}
public String getVarietyNo() {
return varietyNo;
}
public void setVarietyNo(String varietyNo) {
this.varietyNo = varietyNo;
}
public String getCraftItemNo() {
return craftItemNo;
}
public void setCraftItemNo(String craftItemNo) {
this.craftItemNo = craftItemNo;
}
public String getQcItemNo() {
return qcItemNo;
}
public void setQcItemNo(String qcItemNo) {
this.qcItemNo = qcItemNo;
}
public String getMax() {
return max;
}
public void setMax(String max) {
this.max = max;
}
public String getMean() {
return mean;
}
public void setMean(String mean) {
this.mean = mean;
}
public String getMin() {
return min;
}
public void setMin(String min) {
this.min = min;
}
public String getUnit() {
return unit;
}
public void setUnit(String unit) {
this.unit = unit;
}
public String getMethod() {
return method;
}
public void setMethod(String method) {
this.method = method;
}
public String getStandard() {
return standard;
}
public void setStandard(String standard) {
this.standard = standard;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
@Override
public String toString() {
return "QcSpecQoInsert{" + "varietyNo='" + varietyNo + '\'' + ", craftItemNo='" + craftItemNo + '\'' + ", qcItemNo='" + qcItemNo + '\'' + ", max='" + max + '\'' + ", mean='" + mean + '\'' + ", min='" + min + '\'' + ", unit='" + unit + '\'' + ", method='" + method + '\'' + ", standard='" + standard + '\'' + ", remark='" + remark + '\'' + '}';
}
}

View File

@ -0,0 +1,124 @@
package com.xkrs.model.qo;
import com.xkrs.model.va.QcSpecQoUpdateVa;
import javax.validation.constraints.NotBlank;
/**
* 更新检验规格接收类
*/
public class QcSpecQoUpdate {
/**
* 主键id
*/
@NotBlank(message = "{QcSpecEntity.id.blank}", groups = {QcSpecQoUpdateVa.class})
private Integer id;
/**
* 最大值
*/
private String max;
/**
* 平均值
*/
private String mean;
/**
* 最小值
*/
private String min;
/**
* 单位
*/
private String unit;
/**
* 检验方法
*/
private String method;
/**
* 检验标准
*/
private String standard;
/**
* 备注
*/
private String remark;
public QcSpecQoUpdate() {
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getMax() {
return max;
}
public void setMax(String max) {
this.max = max;
}
public String getMean() {
return mean;
}
public void setMean(String mean) {
this.mean = mean;
}
public String getMin() {
return min;
}
public void setMin(String min) {
this.min = min;
}
public String getUnit() {
return unit;
}
public void setUnit(String unit) {
this.unit = unit;
}
public String getMethod() {
return method;
}
public void setMethod(String method) {
this.method = method;
}
public String getStandard() {
return standard;
}
public void setStandard(String standard) {
this.standard = standard;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
@Override
public String toString() {
return "QcSpecQoUpdate{" + "id=" + id + ", max='" + max + '\'' + ", mean='" + mean + '\'' + ", min='" + min + '\'' + ", unit='" + unit + '\'' + ", method='" + method + '\'' + ", standard='" + standard + '\'' + ", remark='" + remark + '\'' + '}';
}
}

View File

@ -1,150 +0,0 @@
package com.xkrs.model.qo;
import com.xkrs.model.validation.SpecQoInsert;
import javax.validation.constraints.NotBlank;
public class SpecQo {
/**
* 机种号
*/
@NotBlank(message = "{SpecEntity.machineTypeNo.blank}", groups = {SpecQoInsert.class})
private String machineTypeNo;
/**
* 检验项代码
*/
@NotBlank(message = "{SpecEntity.inspectionItemCode.blank}", groups = {SpecQoInsert.class})
private String inspectionItemCode;
/**
* 工艺项目名称
*/
@NotBlank(message = "{SpecEntity.craftItemName.blank}", groups = {SpecQoInsert.class})
private String craftItemName;
/**
* 最大值
*/
@NotBlank(message = "{SpecEntity.max.blank}", groups = {SpecQoInsert.class})
private String max;
/**
* 平均值
*/
@NotBlank(message = "{SpecEntity.mean.blank}", groups = {SpecQoInsert.class})
private String mean;
/**
* 最小值
*/
@NotBlank(message = "{SpecEntity.min.blank}", groups = {SpecQoInsert.class})
private String min;
/**
* 单位
*/
@NotBlank(message = "{SpecEntity.unit.blank}", groups = {SpecQoInsert.class})
private String unit;
/**
* 检验方法
*/
@NotBlank(message = "{SpecEntity.inspectionMethod.blank}", groups = {SpecQoInsert.class})
private String inspectionMethod;
/**
* 检验标准
*/
@NotBlank(message = "{SpecEntity.inspectionStandard.blank}", groups = {SpecQoInsert.class})
private String inspectionStandard;
/**
* 备注
*/
private String remark;
public SpecQo() {
}
public String getMachineTypeNo() {
return machineTypeNo;
}
public void setMachineTypeNo(String machineTypeNo) {
this.machineTypeNo = machineTypeNo;
}
public String getInspectionItemCode() {
return inspectionItemCode;
}
public void setInspectionItemCode(String inspectionItemCode) {
this.inspectionItemCode = inspectionItemCode;
}
public String getCraftItemName() {
return craftItemName;
}
public void setCraftItemName(String craftItemName) {
this.craftItemName = craftItemName;
}
public String getMax() {
return max;
}
public void setMax(String max) {
this.max = max;
}
public String getMean() {
return mean;
}
public void setMean(String mean) {
this.mean = mean;
}
public String getMin() {
return min;
}
public void setMin(String min) {
this.min = min;
}
public String getUnit() {
return unit;
}
public void setUnit(String unit) {
this.unit = unit;
}
public String getInspectionMethod() {
return inspectionMethod;
}
public void setInspectionMethod(String inspectionMethod) {
this.inspectionMethod = inspectionMethod;
}
public String getInspectionStandard() {
return inspectionStandard;
}
public void setInspectionStandard(String inspectionStandard) {
this.inspectionStandard = inspectionStandard;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
}

View File

@ -0,0 +1,4 @@
package com.xkrs.model.va;
public interface CraftItemQoDeleteVa {
}

View File

@ -0,0 +1,4 @@
package com.xkrs.model.va;
public interface CraftItemQoInsertVa {
}

View File

@ -0,0 +1,4 @@
package com.xkrs.model.va;
public interface CraftItemQoUpdateVa {
}

View File

@ -0,0 +1,4 @@
package com.xkrs.model.va;
public interface ExportSourceExcelQoVa {
}

View File

@ -0,0 +1,4 @@
package com.xkrs.model.va;
public interface ExportSpecExcelQoVa {
}

View File

@ -1,4 +1,4 @@
package com.xkrs.model.validation; package com.xkrs.model.va;
/** /**
* @Author: XinYi Song * @Author: XinYi Song

View File

@ -0,0 +1,4 @@
package com.xkrs.model.va;
public interface QcItemQoDeleteVa {
}

View File

@ -0,0 +1,4 @@
package com.xkrs.model.va;
public interface QcItemQoInsertVa {
}

View File

@ -0,0 +1,4 @@
package com.xkrs.model.va;
public interface QcItemQoUpdateVa {
}

View File

@ -0,0 +1,4 @@
package com.xkrs.model.va;
public interface QcSourceQoDeleteVa {
}

View File

@ -0,0 +1,4 @@
package com.xkrs.model.va;
public interface QcSourceQoInsertVa {
}

View File

@ -0,0 +1,4 @@
package com.xkrs.model.va;
public interface QcSpecQoDeleteVa {
}

View File

@ -0,0 +1,4 @@
package com.xkrs.model.va;
public interface QcSpecQoInsertVa {
}

View File

@ -0,0 +1,4 @@
package com.xkrs.model.va;
public interface QcSpecQoUpdateVa {
}

View File

@ -1,8 +0,0 @@
package com.xkrs.model.validation;
/**
* @Author: XinYi Song
* @Date: 2022/1/19 10:22
*/
public interface DataDictQoInsert {
}

View File

@ -1,8 +0,0 @@
package com.xkrs.model.validation;
/**
* @Author: XinYi Song
* @Date: 2022/1/20 11:23
*/
public interface DataDictUpdateQoUpdate {
}

View File

@ -1,8 +0,0 @@
package com.xkrs.model.validation;
/**
* @Author: XinYi Song
* @Date: 2022/1/19 16:39
*/
public interface DataSourceQoInsert {
}

View File

@ -1,8 +0,0 @@
package com.xkrs.model.validation;
/**
* @Author: XinYi Song
* @Date: 2022/1/20 16:21
*/
public interface FileUpdateQoUpdate {
}

View File

@ -1,8 +0,0 @@
package com.xkrs.model.validation;
/**
* @Author: XinYi Song
* @Date: 2022/1/20 15:26
*/
public interface PictureQoInsert {
}

View File

@ -1,8 +0,0 @@
package com.xkrs.model.validation;
/**
* @Author: XinYi Song
* @Date: 2022/1/19 10:22
*/
public interface SpecQoInsert {
}

View File

@ -0,0 +1,29 @@
package com.xkrs.service;
import com.xkrs.model.qo.CraftItemQoDelete;
import com.xkrs.model.qo.CraftItemQoInsert;
import com.xkrs.model.qo.CraftItemQoUpdate;
public interface CraftItemService {
/**
* 添加工艺项目
*/
String insertCraftItem(CraftItemQoInsert insertQo);
/**
* 删除工艺项目
*/
String deleteCraftItem(CraftItemQoDelete deleteQo);
/**
* 更新工艺项目名称
*/
String updateCraftItem(CraftItemQoUpdate updateQo);
/**
* 查询工艺项目
*/
String queryCraftItem(String no, String name);
}

View File

@ -1,18 +0,0 @@
package com.xkrs.service;
import com.xkrs.model.entity.DataDict;
import com.xkrs.model.qo.DataDictQo;
/**
* @Author: XinYi Song
* @Date: 2022/1/19 10:10
*/
public interface DataDictService {
/**
* 添加字典数据
* @param dataDictQo
* @return
*/
String insertDataDict(DataDictQo dataDictQo);
}

View File

@ -1,17 +0,0 @@
package com.xkrs.service;
import com.xkrs.model.qo.DataSourceQo;
/**
* @Author: XinYi Song
* @Date: 2022/1/19 16:42
*/
public interface DataSourceService {
/**
* 添加测量数据
* @param dataSourceQo
* @return
*/
String insertDataSource(DataSourceQo dataSourceQo);
}

View File

@ -4,7 +4,6 @@ import com.xkrs.model.qo.FileQo;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
/** /**
@ -15,13 +14,15 @@ public interface FileService {
/** /**
* 添加模板信息 * 添加模板信息
*
* @param fileQo * @param fileQo
* @return * @return
*/ */
String insertFileExcel(FileQo fileQo,MultipartFile fileExcel) throws IOException; String insertFileExcel(FileQo fileQo, MultipartFile fileExcel) throws IOException;
/** /**
* 导出excel * 导出excel
*
* @param fileQo * @param fileQo
* @return * @return
*/ */

View File

@ -1,19 +0,0 @@
package com.xkrs.service;
import com.xkrs.model.qo.PictureQo;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
/**
* @Author: XinYi Song
* @Date: 2022/1/20 15:24
*/
public interface PictureService {
/**
* 添加图片
*/
String insertPicture(PictureQo pictureQo, MultipartFile pictureFile)throws IOException;
}

View File

@ -0,0 +1,29 @@
package com.xkrs.service;
import com.xkrs.model.qo.QcItemQoDelete;
import com.xkrs.model.qo.QcItemQoInsert;
import com.xkrs.model.qo.QcItemQoUpdate;
public interface QcItemService {
/**
* 添加检验项目
*/
String insertQcItem(QcItemQoInsert insertQo);
/**
* 删除检验项目
*/
String deleteQcItem(QcItemQoDelete deleteQo);
/**
* 更新检验项目名称
*/
String updateQcItem(QcItemQoUpdate updateQo);
/**
* 查询检验项目
*/
String queryQcItem(String no, String name);
}

View File

@ -0,0 +1,34 @@
package com.xkrs.service;
import com.xkrs.model.qo.ExportSourceExcelQo;
import com.xkrs.model.qo.QcSourceQoDelete;
import com.xkrs.model.qo.QcSourceQoInsert;
import org.springframework.web.multipart.MultipartFile;
public interface QcSourceService {
/**
* 添加检验数据
*/
String insertQcSource(QcSourceQoInsert insertQo, MultipartFile picture);
/**
* 删除检验数据
*/
String deleteQcSource(QcSourceQoDelete deleteQo);
/**
* 查询检验数据
*/
String queryQcSource(String batchNo, String machineNo, String materialNo, String mouldNo, String varietyNo, String craftItemNo);
/**
* 导出Excel表格
*/
String exportExcel(ExportSourceExcelQo exportSourceExcelQo) throws Exception;
/**
* 格式化创建时间历史数据
*/
String formatCreateTime();
}

View File

@ -0,0 +1,47 @@
package com.xkrs.service;
import com.xkrs.model.qo.ExportSpecExcelQo;
import com.xkrs.model.qo.QcSpecQoDelete;
import com.xkrs.model.qo.QcSpecQoInsert;
import com.xkrs.model.qo.QcSpecQoUpdate;
import org.springframework.web.multipart.MultipartFile;
public interface QcSpecService {
/**
* 添加检验规格
*/
String insertQcSpec(QcSpecQoInsert insertQo);
/**
* 删除检验规格
*/
String deleteQcSpec(QcSpecQoDelete deleteQo);
/**
* 更新检验规格
*/
String updateQcSpec(QcSpecQoUpdate updateQo);
/**
* 查询检验规格
*/
String queryQcSpec(String varietyNo, String craftItemNo, String qcItemNo);
/**
* 导入检验规格
*/
String importSpecExcel(MultipartFile specExcel);
/**
* 导出检验规格
*/
String exportSpecExcel(ExportSpecExcelQo exportSpecExcelQo) throws Exception;
/**
* 导出空白检验规格
*/
String exportEmptySpecExcel(ExportSpecExcelQo exportSpecExcelQo) throws Exception;
}

View File

@ -1,19 +0,0 @@
package com.xkrs.service;
import com.xkrs.model.qo.SpecQo;
/**
* @Author: XinYi Song
* @Date: 2022/1/20 15:24
*/
public interface SpecService {
/**
* 添加规格数据
*
* @param specQo
* @return
*/
String insertSpec(SpecQo specQo);
}

View File

@ -0,0 +1,91 @@
package com.xkrs.service.impl;
import com.xkrs.dao.CraftItemDao;
import com.xkrs.encapsulation.PromptMessageEnum;
import com.xkrs.model.entity.CraftItemEntity;
import com.xkrs.model.qo.CraftItemQoDelete;
import com.xkrs.model.qo.CraftItemQoInsert;
import com.xkrs.model.qo.CraftItemQoUpdate;
import com.xkrs.service.CraftItemService;
import com.xkrs.util.LocalDateUtils;
import com.xkrs.util.LocalStringUtils;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Optional;
import static com.xkrs.encapsulation.OutputEncapsulation.outputEncapsulationObject;
@Service
public class CraftItemServiceImpl implements CraftItemService {
private Locale locale = LocaleContextHolder.getLocale();
@Resource
private CraftItemDao craftItemDao;
/**
* 添加工艺项目
*/
@Override
public String insertCraftItem(CraftItemQoInsert insertQo) {
String no = insertQo.getNo();
String name = insertQo.getName();
Optional<CraftItemEntity> entityByNo = craftItemDao.findByCraftItemNo(no);
if (entityByNo.isPresent()) {
return outputEncapsulationObject(PromptMessageEnum.DATA_EXIT, "该工艺项目已存在,请勿重复添加!", locale);
}
CraftItemEntity entity = new CraftItemEntity();
entity.setCreateTime(LocalDateUtils.getCurrentSecond());
entity.setUpdateTime("");
entity.setCraftItemNo(LocalStringUtils.formatEmptyValue(no));
entity.setCraftItemName(LocalStringUtils.formatEmptyValue(name));
craftItemDao.save(entity);
return outputEncapsulationObject(PromptMessageEnum.SUCCESS, "添加成功!", locale);
}
/**
* 删除工艺项目
*/
@Override
public String deleteCraftItem(CraftItemQoDelete deleteQo) {
Integer id = deleteQo.getId();
Optional<CraftItemEntity> entityById = craftItemDao.findById(id);
if (entityById.isEmpty()) {
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE, "不存在该工艺项目,请先添加工艺项目!", locale);
}
craftItemDao.deleteById(id);
return outputEncapsulationObject(PromptMessageEnum.SUCCESS, "删除成功!", locale);
}
/**
* 更新工艺项目名称
*/
@Override
public String updateCraftItem(CraftItemQoUpdate updateQo) {
Integer id = updateQo.getId();
String name = updateQo.getName();
Optional<CraftItemEntity> entityById = craftItemDao.findById(id);
if (entityById.isEmpty()) {
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE, "不存在该工艺项目,请先添加工艺项目!", locale);
}
craftItemDao.updateNameById(id, LocalDateUtils.getCurrentSecond(), LocalStringUtils.formatEmptyValue(name));
return outputEncapsulationObject(PromptMessageEnum.SUCCESS, "更新成功!", locale);
}
/**
* 查询工艺项目
*/
@Override
public String queryCraftItem(String no, String name) {
List<Map<String, Object>> resultList = craftItemDao.queryCraftItem(LocalStringUtils.formatEmptyValue(no), LocalStringUtils.formatEmptyValue(name));
if (resultList == null || resultList.isEmpty()) {
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE, "暂时没有该工艺项目的信息!", locale);
}
return outputEncapsulationObject(PromptMessageEnum.SUCCESS, resultList, locale);
}
}

View File

@ -1,46 +0,0 @@
package com.xkrs.service.impl;
import com.xkrs.dao.DataDictDao;
import com.xkrs.encapsulation.PromptMessageEnum;
import com.xkrs.model.entity.DataDict;
import com.xkrs.model.qo.DataDictQo;
import com.xkrs.service.DataDictService;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Locale;
import java.util.Optional;
import static com.xkrs.encapsulation.OutputEncapsulation.outputEncapsulationObject;
/**
* @Author: XinYi Song
* @Date: 2022/1/19 10:28
*/
@Service
public class DataDictServiceImpl implements DataDictService {
@Resource
private DataDictDao dataDictDao;
/**
* 添加字典数据
*
* @param dataDictQo
* @return
*/
@Override
public String insertDataDict(DataDictQo dataDictQo) {
Locale locale = LocaleContextHolder.getLocale();
Optional<DataDict> byInspectionItemCode = dataDictDao.findByInspectionItemCode(dataDictQo.getInspectionItemCode());
if (byInspectionItemCode.isPresent()) {
return outputEncapsulationObject(PromptMessageEnum.DATA_EXIT, "该产品变量已存在,请勿重复添加!", locale);
}
DataDict dataDict = new DataDict();
dataDict.setInspectionItemName(dataDictQo.getInspectionItemName());
dataDict.setInspectionItemCode(dataDictQo.getInspectionItemCode());
dataDictDao.save(dataDict);
return outputEncapsulationObject(PromptMessageEnum.SUCCESS, "添加成功!", locale);
}
}

View File

@ -1,57 +0,0 @@
package com.xkrs.service.impl;
import com.xkrs.dao.DataDictDao;
import com.xkrs.dao.DataSourceDao;
import com.xkrs.encapsulation.PromptMessageEnum;
import com.xkrs.model.entity.DataDict;
import com.xkrs.model.entity.DataSource;
import com.xkrs.model.qo.DataSourceQo;
import com.xkrs.service.DataSourceService;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Locale;
import java.util.Optional;
import static com.xkrs.encapsulation.OutputEncapsulation.outputEncapsulationObject;
/**
* @Author: XinYi Song
* @Date: 2022/1/19 16:43
*/
@Service
public class DataSourceServiceImpl implements DataSourceService {
@Resource
private DataSourceDao dataSourceDao;
@Resource
private DataDictDao dataDictDao;
/**
* 添加测量数据
*
* @param dataSourceQo
* @return
*/
@Override
public String insertDataSource(DataSourceQo dataSourceQo) {
Locale locale = LocaleContextHolder.getLocale();
Optional<DataDict> byInspectionItemCode = dataDictDao.findByInspectionItemCode(dataSourceQo.getInspectionItemCode());
if (byInspectionItemCode.isEmpty()) {
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE, "不存在该字典类型!", locale);
}
DataSource dataSource = new DataSource();
dataSource.setLotNo(dataSourceQo.getLotNo());
dataSource.setMachineNo(dataSourceQo.getMachineNo());
dataSource.setMaterialNo(dataSourceQo.getMaterialNo());
dataSource.setModelNo(dataSourceQo.getModelNo());
dataSource.setMachineTypeNo(dataSourceQo.getMachineTypeNo());
dataSource.setCraftItemName(dataSourceQo.getCraftItemName());
dataSource.setInspectionItemCode(dataSourceQo.getInspectionItemCode());
dataSource.setInspectValue(dataSourceQo.getInspectValue());
dataSourceDao.save(dataSource);
return outputEncapsulationObject(PromptMessageEnum.SUCCESS, "添加成功!", locale);
}
}

View File

@ -1,14 +1,10 @@
package com.xkrs.service.impl; package com.xkrs.service.impl;
import com.xkrs.dao.FileDao; import com.xkrs.dao.FileDao;
import com.xkrs.dao.QcSourceDao;
import com.xkrs.encapsulation.PromptMessageEnum; import com.xkrs.encapsulation.PromptMessageEnum;
import com.xkrs.model.entity.DataSource;
import com.xkrs.model.entity.FileEntity;
import com.xkrs.model.qo.FileQo; import com.xkrs.model.qo.FileQo;
import com.xkrs.service.FileService; import com.xkrs.service.FileService;
import com.xkrs.util.DataSourceQuery;
import com.xkrs.util.ExcelUploadUtil;
import com.xkrs.util.ExportExcel;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.springframework.context.i18n.LocaleContextHolder; import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -17,7 +13,7 @@ import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.transaction.Transactional; import javax.transaction.Transactional;
import java.io.IOException; import java.io.IOException;
import java.util.*; import java.util.Locale;
import static com.xkrs.encapsulation.OutputEncapsulation.outputEncapsulationObject; import static com.xkrs.encapsulation.OutputEncapsulation.outputEncapsulationObject;
@ -32,7 +28,7 @@ public class FileServiceImpl implements FileService {
private FileDao fileDao; private FileDao fileDao;
@Resource @Resource
private DataSourceQuery dataSourceQuery; private QcSourceDao qcSourceDao;
/** /**
* 添加模板信息 * 添加模板信息
@ -42,29 +38,29 @@ public class FileServiceImpl implements FileService {
*/ */
@Override @Override
public String insertFileExcel(FileQo fileQo, MultipartFile fileExcel) throws IOException { public String insertFileExcel(FileQo fileQo, MultipartFile fileExcel) throws IOException {
String lotNo = fileQo.getLotNo(); // String lotNo = fileQo.getLotNo();
String machineNo = fileQo.getMachineNo(); // String machineNo = fileQo.getMachineNo();
String materialNo = fileQo.getMaterialNo(); // String materialNo = fileQo.getMaterialNo();
String modelNo = fileQo.getModelNo(); // String modelNo = fileQo.getModelNo();
String machineTypeNo = fileQo.getMachineTypeNo(); // String machineTypeNo = fileQo.getMachineTypeNo();
String craftItemName = fileQo.getCraftItemName(); // String craftItemName = fileQo.getCraftItemName();
Locale locale = LocaleContextHolder.getLocale(); Locale locale = LocaleContextHolder.getLocale();
Optional<FileEntity> fileEntity = fileDao.selectFile(lotNo, machineNo, materialNo, modelNo, machineTypeNo, craftItemName); // Optional<FileEntity> fileEntity = fileDao.selectFile(lotNo, machineNo, materialNo, modelNo, machineTypeNo, craftItemName);
if (fileEntity.isPresent()) { // if (fileEntity.isPresent()) {
return outputEncapsulationObject(PromptMessageEnum.DATA_EXIT, "已存在该产品的模板!", locale); // return outputEncapsulationObject(PromptMessageEnum.DATA_EXIT, "已存在该产品的模板!", locale);
} // }
if (fileExcel == null) { // if (fileExcel == null) {
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE, "模板不能为空!", locale); // return outputEncapsulationObject(PromptMessageEnum.DATA_NONE, "模板不能为空!", locale);
} // }
String file = ExcelUploadUtil.memoryFile(fileExcel, 1); // String file = ExcelUploadUtil.memoryFile(fileExcel, 1);
FileEntity fileEntity1 = new FileEntity(); // FileEntity fileEntity1 = new FileEntity();
fileEntity1.setLotNo(fileQo.getLotNo()); // fileEntity1.setLotNo(fileQo.getLotNo());
fileEntity1.setMachineNo(fileQo.getMachineNo()); // fileEntity1.setMachineNo(fileQo.getMachineNo());
fileEntity1.setMaterialNo(fileQo.getMaterialNo()); // fileEntity1.setMaterialNo(fileQo.getMaterialNo());
fileEntity1.setModelNo(fileQo.getModelNo()); // fileEntity1.setModelNo(fileQo.getModelNo());
fileEntity1.setMachineTypeNo(fileQo.getMachineTypeNo()); // fileEntity1.setMachineTypeNo(fileQo.getMachineTypeNo());
fileEntity1.setFileUploadPath(file); // fileEntity1.setFileUploadPath(file);
fileDao.save(fileEntity1); // fileDao.save(fileEntity1);
return outputEncapsulationObject(PromptMessageEnum.SUCCESS, "添加成功!", locale); return outputEncapsulationObject(PromptMessageEnum.SUCCESS, "添加成功!", locale);
} }
@ -77,28 +73,28 @@ public class FileServiceImpl implements FileService {
@Transactional(rollbackOn = Exception.class) @Transactional(rollbackOn = Exception.class)
@Override @Override
public String exportExcel(FileQo fileQo) throws IOException, InvalidFormatException { public String exportExcel(FileQo fileQo) throws IOException, InvalidFormatException {
String lotNo = fileQo.getLotNo(); // String lotNo = fileQo.getLotNo();
String machineNo = fileQo.getMachineNo(); // String machineNo = fileQo.getMachineNo();
String materialNo = fileQo.getMaterialNo(); // String materialNo = fileQo.getMaterialNo();
String modelNo = fileQo.getModelNo(); // String modelNo = fileQo.getModelNo();
String machineTypeNo = fileQo.getMachineTypeNo(); // String machineTypeNo = fileQo.getMachineTypeNo();
String craftItemName = fileQo.getCraftItemName(); // String craftItemName = fileQo.getCraftItemName();
Locale locale = LocaleContextHolder.getLocale(); Locale locale = LocaleContextHolder.getLocale();
Optional<FileEntity> fileEntity = fileDao.selectFile(lotNo, machineNo, materialNo, modelNo, machineTypeNo, craftItemName); // Optional<FileEntity> fileEntity = fileDao.selectFile(lotNo, machineNo, materialNo, modelNo, machineTypeNo, craftItemName);
if (fileEntity.isEmpty()) { // if (fileEntity.isEmpty()) {
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE, "暂时没有该产品的模板,请添加!", locale); // return outputEncapsulationObject(PromptMessageEnum.DATA_NONE, "暂时没有该产品的模板,请添加!", locale);
} // }
String fileUploadPath = fileEntity.get().getFileUploadPath(); // String fileUploadPath = fileEntity.get().getFileUploadPath();
List<DataSource> dataSources = dataSourceQuery.selectDataSource(lotNo, machineNo, materialNo, modelNo, machineTypeNo, craftItemName); // List<Map<String, Object>> resultList = qcSourceDao.queryQcSource(lotNo, machineNo, materialNo, modelNo, machineTypeNo, "");
if (dataSources == null || dataSources.size() == 0) { // if (resultList == null || resultList.size() == 0) {
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE, "暂时没有该产品的信息!", locale); // return outputEncapsulationObject(PromptMessageEnum.DATA_NONE, "暂时没有该产品的信息!", locale);
} // }
Map<String, String> map = new HashMap<>(); // Map<String, String> map = new HashMap<>();
for (DataSource dataSource : dataSources) { // for (Map<String, Object> result : resultList) {
map.put(dataSource.getInspectionItemCode(), dataSource.getInspectValue()); // map.put((String) result.get("qcItemNo"), (String) result.get("qcValue"));
} // }
String fill = ExportExcel.exportToProveExcel(map, fileUploadPath); // String fill = ExportExcel.exportToProveExcel(map, fileUploadPath);
fileDao.updateFileDownloadPath(lotNo, machineNo, materialNo, modelNo, machineTypeNo, craftItemName, fill); // fileDao.updateFileDownloadPath(lotNo, machineNo, materialNo, modelNo, machineTypeNo, craftItemName, fill);
return outputEncapsulationObject(PromptMessageEnum.SUCCESS, fill, locale); return outputEncapsulationObject(PromptMessageEnum.SUCCESS, "导出成功", locale);
} }
} }

View File

@ -1,51 +0,0 @@
package com.xkrs.service.impl;
import com.xkrs.dao.PictureDao;
import com.xkrs.encapsulation.PromptMessageEnum;
import com.xkrs.model.entity.PictureEntity;
import com.xkrs.model.qo.PictureQo;
import com.xkrs.service.PictureService;
import com.xkrs.util.ExcelUploadUtil;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.io.IOException;
import java.util.Locale;
import java.util.Optional;
import static com.xkrs.encapsulation.OutputEncapsulation.outputEncapsulationObject;
@Service
public class PictureServiceImpl implements PictureService {
@Resource
private PictureDao pictureDao;
@Override
public String insertPicture(PictureQo pictureQo, MultipartFile pictureFile) throws IOException {
Locale locale = LocaleContextHolder.getLocale();
String lotNo = pictureQo.getLotNo();
String machineNo = pictureQo.getMachineNo();
String materialNo = pictureQo.getMaterialNo();
String modelNo = pictureQo.getModelNo();
String machineTypeNo = pictureQo.getMachineTypeNo();
String craftItemName = pictureQo.getCraftItemName();
Optional<PictureEntity> pictureEntity2 = pictureDao.selectPicture(lotNo, machineNo, materialNo, modelNo, machineTypeNo, craftItemName);
if (pictureEntity2.isPresent()) {
return outputEncapsulationObject(PromptMessageEnum.DATA_EXIT, "请勿重复添加!", locale);
}
String file = ExcelUploadUtil.memoryFile(pictureFile, 2);
PictureEntity pictureEntity1 = new PictureEntity();
pictureEntity1.setLotNo(lotNo);
pictureEntity1.setMachineNo(machineNo);
pictureEntity1.setMaterialNo(materialNo);
pictureEntity1.setModelNo(modelNo);
pictureEntity1.setMachineTypeNo(machineTypeNo);
pictureEntity1.setCraftItemName(craftItemName);
pictureEntity1.setPicturePath(file);
pictureDao.save(pictureEntity1);
return outputEncapsulationObject(PromptMessageEnum.SUCCESS, "添加成功!", locale);
}
}

View File

@ -0,0 +1,96 @@
package com.xkrs.service.impl;
import com.xkrs.dao.QcItemDao;
import com.xkrs.encapsulation.PromptMessageEnum;
import com.xkrs.model.entity.QcItemEntity;
import com.xkrs.model.qo.QcItemQoDelete;
import com.xkrs.model.qo.QcItemQoInsert;
import com.xkrs.model.qo.QcItemQoUpdate;
import com.xkrs.service.QcItemService;
import com.xkrs.util.LocalDateUtils;
import com.xkrs.util.LocalStringUtils;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.transaction.Transactional;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Optional;
import static com.xkrs.encapsulation.OutputEncapsulation.outputEncapsulationObject;
@Service
public class QcItemServiceImpl implements QcItemService {
private Locale locale = LocaleContextHolder.getLocale();
@Resource
private QcItemDao qcItemDao;
/**
* 添加检验项目
*/
@Override
public String insertQcItem(QcItemQoInsert insertQo) {
String no = insertQo.getNo();
String name = insertQo.getName();
String type = insertQo.getType();
Optional<QcItemEntity> entityByNo = qcItemDao.findByQcItemNo(no);
if (entityByNo.isPresent()) {
return outputEncapsulationObject(PromptMessageEnum.DATA_EXIT, "该检验项目已存在,请勿重复添加!", locale);
}
QcItemEntity entity = new QcItemEntity();
entity.setCreateTime(LocalDateUtils.getCurrentSecond());
entity.setUpdateTime("");
entity.setQcItemNo(LocalStringUtils.formatEmptyValue(no));
entity.setQcItemName(LocalStringUtils.formatEmptyValue(name));
entity.setQcItemType(LocalStringUtils.formatEmptyValue(type));
qcItemDao.save(entity);
return outputEncapsulationObject(PromptMessageEnum.SUCCESS, "添加成功!", locale);
}
/**
* 删除检验项目
*/
@Transactional(rollbackOn = Exception.class)
@Override
public String deleteQcItem(QcItemQoDelete deleteQo) {
Integer id = deleteQo.getId();
Optional<QcItemEntity> entityById = qcItemDao.findById(id);
if (entityById.isEmpty()) {
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE, "不存在该检验项目,请先添加检验项目!", locale);
}
qcItemDao.deleteById(id);
return outputEncapsulationObject(PromptMessageEnum.SUCCESS, "删除成功!", locale);
}
/**
* 更新检验项目名称
*/
@Transactional(rollbackOn = Exception.class)
@Override
public String updateQcItem(QcItemQoUpdate updateQo) {
Integer id = updateQo.getId();
String name = updateQo.getName();
Optional<QcItemEntity> entityById = qcItemDao.findById(id);
if (entityById.isEmpty()) {
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE, "不存在该检验项目,请先添加检验项目!", locale);
}
qcItemDao.updateNameById(id, LocalDateUtils.getCurrentSecond(), LocalStringUtils.formatEmptyValue(name));
return outputEncapsulationObject(PromptMessageEnum.SUCCESS, "更新成功!", locale);
}
/**
* 查询检验项目
*/
@Override
public String queryQcItem(String no, String name) {
List<Map<String, Object>> resultList = qcItemDao.queryQcItem(LocalStringUtils.formatEmptyValue(no), LocalStringUtils.formatEmptyValue(name));
if (resultList == null || resultList.isEmpty()) {
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE, "暂时没有该检验项目的信息!", locale);
}
return outputEncapsulationObject(PromptMessageEnum.SUCCESS, resultList, locale);
}
}

View File

@ -0,0 +1,610 @@
package com.xkrs.service.impl;
import com.xkrs.dao.CraftItemDao;
import com.xkrs.dao.QcItemDao;
import com.xkrs.dao.QcSourceDao;
import com.xkrs.dao.QcSpecDao;
import com.xkrs.encapsulation.PromptMessageEnum;
import com.xkrs.model.bean.XSSFCellDataBean;
import com.xkrs.model.entity.CraftItemEntity;
import com.xkrs.model.entity.QcItemEntity;
import com.xkrs.model.entity.QcSourceEntity;
import com.xkrs.model.entity.QcSpecEntity;
import com.xkrs.model.qo.ExportSourceExcelQo;
import com.xkrs.model.qo.QcSourceQoDelete;
import com.xkrs.model.qo.QcSourceQoInsert;
import com.xkrs.service.QcSourceService;
import com.xkrs.util.*;
import org.apache.http.util.TextUtils;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.*;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.transaction.Transactional;
import java.awt.*;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
import java.util.*;
import static com.xkrs.encapsulation.OutputEncapsulation.outputEncapsulationObject;
@Service
public class QcSourceServiceImpl implements QcSourceService {
private Locale locale = LocaleContextHolder.getLocale();
@Resource
private CraftItemDao craftItemDao;
@Resource
private QcItemDao qcItemDao;
@Resource
private QcSourceDao qcSourceDao;
@Resource
private QcSpecDao qcSpecDao;
/**
* 导出excel样式一表头顺序
* 批次号 机器号 物料号 模具号 机种号
*/
List<String> EXCEL_HEAD_STYLE_ONE_NO = Arrays.asList("batchNo", "machineNo", "materialNo", "mouldNo", "varietyNo", "craftItemNo", "createTime", "index");
List<String> EXCEL_HEAD_STYLE_ONE_NAME = Arrays.asList("批次", "机器", "物料", "模具", "机种", "工艺项目", "上传时间", "过程抽检批次");
/**
* 添加检验数据
*/
@Override
public String insertQcSource(QcSourceQoInsert insertQo, MultipartFile picture) {
String batchNo = insertQo.getBatchNo();
String machineNo = insertQo.getMachineNo();
String materialNo = insertQo.getMaterialNo();
String mouldNo = insertQo.getMouldNo();
String varietyNo = insertQo.getVarietyNo();
String craftItemNo = insertQo.getCraftItemNo();
String qcItemNo = insertQo.getQcItemNo();
String qcValue = insertQo.getQcValue();
Optional<CraftItemEntity> craftItemByNo = craftItemDao.findByCraftItemNo(craftItemNo);
if (craftItemByNo.isEmpty()) {
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE, "不存在该工艺项目,请先添加工艺项目!", locale);
}
Optional<QcItemEntity> qcItemByNo = qcItemDao.findByQcItemNo(qcItemNo);
if (qcItemByNo.isEmpty()) {
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE, "不存在该检验项目,请先添加检验项目!", locale);
}
if (Constant.QC_ITEM_TYPE_STRING.equals(qcItemByNo.get().getQcItemType())) {
System.out.println("添加检验数据(文本类型)" + insertQo.toString());
QcSourceEntity entity = new QcSourceEntity();
String currentSecond = LocalDateUtils.getCurrentSecond();
entity.setCreateTime(currentSecond);
entity.setCreateTimeFormat(LocalDateUtils.formatCurrentSecond(currentSecond));
entity.setBatchNo(LocalStringUtils.formatEmptyValue(batchNo));
entity.setMachineNo(LocalStringUtils.formatEmptyValue(machineNo));
entity.setMaterialNo(LocalStringUtils.formatEmptyValue(materialNo));
entity.setMouldNo(LocalStringUtils.formatEmptyValue(mouldNo));
entity.setVarietyNo(LocalStringUtils.formatEmptyValue(varietyNo));
entity.setCraftItemNo(LocalStringUtils.formatEmptyValue(craftItemNo));
entity.setQcItemNo(LocalStringUtils.formatEmptyValue(qcItemNo));
if (TextUtils.isEmpty(qcValue)) {
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE, "添加失败,测量值(qcValue)字段不能为空!", locale);
}
entity.setQcValue(LocalStringUtils.formatEmptyValue(qcValue));
qcSourceDao.save(entity);
return outputEncapsulationObject(PromptMessageEnum.SUCCESS, "添加成功!", locale);
}
if (Constant.QC_ITEM_TYPE_PICTURE.equals(qcItemByNo.get().getQcItemType())) {
System.out.println("添加检验数据(图片类型)" + insertQo.toString());
if (picture == null) {
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE, "上传图片不能为空!", locale);
}
String picturePath;
try {
picturePath = ExcelUploadUtil.memoryFile(picture, 2);
} catch (IOException e) {
e.printStackTrace();
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE, "上传图片失败!", locale);
}
QcSourceEntity entity = new QcSourceEntity();
String currentSecond = LocalDateUtils.getCurrentSecond();
entity.setCreateTime(currentSecond);
entity.setCreateTimeFormat(LocalDateUtils.formatCurrentSecond(currentSecond));
entity.setBatchNo(LocalStringUtils.formatEmptyValue(batchNo));
entity.setMachineNo(LocalStringUtils.formatEmptyValue(machineNo));
entity.setMaterialNo(LocalStringUtils.formatEmptyValue(materialNo));
entity.setMouldNo(LocalStringUtils.formatEmptyValue(mouldNo));
entity.setVarietyNo(LocalStringUtils.formatEmptyValue(varietyNo));
entity.setCraftItemNo(LocalStringUtils.formatEmptyValue(craftItemNo));
entity.setQcItemNo(LocalStringUtils.formatEmptyValue(qcItemNo));
entity.setQcValue(LocalStringUtils.formatEmptyValue(picturePath));
qcSourceDao.save(entity);
return outputEncapsulationObject(PromptMessageEnum.SUCCESS, "添加成功!", locale);
}
System.out.println("添加检验数据(未知类型)" + insertQo.toString());
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE, "添加失败!", locale);
}
/**
* 删除检验数据
*/
@Transactional(rollbackOn = Exception.class)
@Override
public String deleteQcSource(QcSourceQoDelete deleteQo) {
Integer id = deleteQo.getId();
Optional<QcSourceEntity> entityById = qcSourceDao.findById(id);
if (entityById.isEmpty()) {
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE, "不存在该检验数据,请先添加检验数据!", locale);
}
qcSourceDao.deleteById(id);
return outputEncapsulationObject(PromptMessageEnum.SUCCESS, "删除成功!", locale);
}
/**
* 查询检验数据
*/
@Override
public String queryQcSource(String batchNo, String machineNo, String materialNo, String mouldNo, String varietyNo, String craftItemNo) {
long startTimeMillis = System.currentTimeMillis();
List<CraftItemEntity> craftItemList = craftItemDao.findAll();
if (craftItemList.isEmpty()) {
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE, "未添加工艺项目,请先添加工艺项目!", locale);
}
List<QcItemEntity> qcItemList = qcItemDao.findAll();
if (qcItemList.isEmpty()) {
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE, "未添加检验项目,请先添加检验项目!", locale);
}
String finalBatchNo = LocalStringUtils.formatEmptyValue(batchNo).trim();
String finalMachineNo = LocalStringUtils.formatEmptyValue(machineNo).trim();
String finalMaterialNo = LocalStringUtils.formatEmptyValue(materialNo).trim();
String finalMouldNo = LocalStringUtils.formatEmptyValue(mouldNo).trim();
String finalVarietyNo = LocalStringUtils.formatEmptyValue(varietyNo).trim();
String finalCraftItemNo = LocalStringUtils.formatEmptyValue(craftItemNo).trim();
//检验数据结果集
List<QcSourceEntity> sourceList = qcSourceDao.queryQcSource(finalBatchNo, finalMachineNo, finalMaterialNo, finalMouldNo, finalVarietyNo, finalCraftItemNo);
//检验规格
List<QcSpecEntity> qcSpecList = qcSpecDao.findAll();
List<Map<String, Object>> resultList = generateResultList(sourceList, qcSpecList);
System.out.println("查询检验数据耗时:" + formatDuring(System.currentTimeMillis() - startTimeMillis));
if (resultList.isEmpty()) {
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE, "暂时没有该检验数据的信息!", locale);
}
return outputEncapsulationObject(PromptMessageEnum.SUCCESS, resultList, locale);
}
/**
* 生成返回结果
*
* @param sourceList 检验数据结果集
* @param qcSpecList 检验规格结果集
* @return
*/
private List<Map<String, Object>> generateResultList(List<QcSourceEntity> sourceList, List<QcSpecEntity> qcSpecList) {
List<Map<String, Object>> resultList = new ArrayList<>();
if (sourceList == null || sourceList.isEmpty()) {
return resultList;
}
long startTimeMillis = System.currentTimeMillis();
//这个for循环完成后一维结果集被格式化为二维结果集每一行的上传时间是本行所有数据的最早时间
for (QcSourceEntity sourceEntity : sourceList) {
String batchNo = LocalStringUtils.formatEmptyValue(sourceEntity.getBatchNo());
String machineNo = LocalStringUtils.formatEmptyValue(sourceEntity.getMachineNo());
String materialNo = LocalStringUtils.formatEmptyValue(sourceEntity.getMaterialNo());
String mouldNo = LocalStringUtils.formatEmptyValue(sourceEntity.getMouldNo());
String varietyNo = LocalStringUtils.formatEmptyValue(sourceEntity.getVarietyNo());
String craftItemNo = LocalStringUtils.formatEmptyValue(sourceEntity.getCraftItemNo());
String createTime = LocalStringUtils.formatEmptyValue(sourceEntity.getCreateTime());
String qcItemNo = LocalStringUtils.formatEmptyValue(sourceEntity.getQcItemNo());
String qcValue = LocalStringUtils.formatEmptyValue(sourceEntity.getQcValue());
String formatValue = getFormatValue(qcSpecList, varietyNo, craftItemNo, qcItemNo, qcValue);
Map<String, Object> emptyRoom = findEmptyRoom(resultList, qcItemNo, batchNo, machineNo, materialNo, mouldNo, varietyNo, craftItemNo);
if (emptyRoom == null) {
Map<String, Object> newRoom = new HashMap<>();
newRoom.put(EXCEL_HEAD_STYLE_ONE_NO.get(0), batchNo);
newRoom.put(EXCEL_HEAD_STYLE_ONE_NO.get(1), machineNo);
newRoom.put(EXCEL_HEAD_STYLE_ONE_NO.get(2), materialNo);
newRoom.put(EXCEL_HEAD_STYLE_ONE_NO.get(3), mouldNo);
newRoom.put(EXCEL_HEAD_STYLE_ONE_NO.get(4), varietyNo);
newRoom.put(EXCEL_HEAD_STYLE_ONE_NO.get(5), craftItemNo);
newRoom.put(EXCEL_HEAD_STYLE_ONE_NO.get(6), createTime);//新行的上传时间使用第一个数据的上传时间
newRoom.put(qcItemNo, formatValue);
resultList.add(newRoom);
} else {
emptyRoom.put(qcItemNo, formatValue);
long oldTime = Long.parseLong((String) emptyRoom.get(EXCEL_HEAD_STYLE_ONE_NO.get(6)));
if (Long.parseLong(createTime) < oldTime) {//已存在行的上传时间用更早的时间替换更晚的时间
emptyRoom.put(EXCEL_HEAD_STYLE_ONE_NO.get(6), createTime);
}
}
}
//这个for循环完成后二维结果集每一行的上传时间是本分组所有数据的最早时间
for (Map<String, Object> result : resultList) {
String createTime = (String) result.get(EXCEL_HEAD_STYLE_ONE_NO.get(6));
List<Long> createTimeTagList = getCreateTimeTagList(resultList, result);
int createTimeTagIndex = getCreateTimeTagIndex(createTimeTagList, Long.parseLong(createTime));
result.put(EXCEL_HEAD_STYLE_ONE_NO.get(6), String.valueOf(createTimeTagList.get(createTimeTagIndex)));
result.put(EXCEL_HEAD_STYLE_ONE_NO.get(7), "" + (createTimeTagIndex + 1) + "");
}
System.out.println("generateResultList耗时" + formatDuring(System.currentTimeMillis() - startTimeMillis));
return resultList;
}
/**
* 获取上传时间节点索引
*
* @param createTimeTagList 上传时间节点集合
* @param createTimeLong 当前行上传时间(其实也是当前行所有数据的最早上传时间)
* @return 上传时间节点索引
*/
private int getCreateTimeTagIndex(List<Long> createTimeTagList, long createTimeLong) {
for (int i = 0; i < createTimeTagList.size(); i++) {
long dur = createTimeLong - createTimeTagList.get(i);
if (dur >= 0 && dur <= Constant.QC_TIME_INTERVAL) {
return i;
}
}
throw new RuntimeException("获取上传时间节点索引时发生异常");
}
/**
* 获取上传时间节点集合
*
* @param resultList 二维结果集
* @param currentResult 当前行
* @return 当前行所在分组的时间节点集合
*/
private List<Long> getCreateTimeTagList(List<Map<String, Object>> resultList, Map<String, Object> currentResult) {
String currentBatchNo = (String) currentResult.get(EXCEL_HEAD_STYLE_ONE_NO.get(0));
String currentMachineNo = (String) currentResult.get(EXCEL_HEAD_STYLE_ONE_NO.get(1));
String currentMaterialNo = (String) currentResult.get(EXCEL_HEAD_STYLE_ONE_NO.get(2));
String currentMouldNo = (String) currentResult.get(EXCEL_HEAD_STYLE_ONE_NO.get(3));
String currentVarietyNo = (String) currentResult.get(EXCEL_HEAD_STYLE_ONE_NO.get(4));
String currentCraftItemNo = (String) currentResult.get(EXCEL_HEAD_STYLE_ONE_NO.get(5));
List<Long> createTimeList = new ArrayList<>();
//这个for循环的作用是在二维结果集中过滤出和当前行数据属于同一分组的所有行上传时间集合
for (Map<String, Object> result : resultList) {
String batchNo = (String) result.get(EXCEL_HEAD_STYLE_ONE_NO.get(0));
String machineNo = (String) result.get(EXCEL_HEAD_STYLE_ONE_NO.get(1));
String materialNo = (String) result.get(EXCEL_HEAD_STYLE_ONE_NO.get(2));
String mouldNo = (String) result.get(EXCEL_HEAD_STYLE_ONE_NO.get(3));
String varietyNo = (String) result.get(EXCEL_HEAD_STYLE_ONE_NO.get(4));
String craftItemNo = (String) result.get(EXCEL_HEAD_STYLE_ONE_NO.get(5));
String createTime = (String) result.get(EXCEL_HEAD_STYLE_ONE_NO.get(6));
if (batchNo.equals(currentBatchNo) && machineNo.equals(currentMachineNo) && materialNo.equals(currentMaterialNo) && mouldNo.equals(currentMouldNo) && varietyNo.equals(currentVarietyNo) && craftItemNo.equals(currentCraftItemNo)) {
createTimeList.add(Long.parseLong(createTime));
}
}
//对上传时间集合进行排序
createTimeList.sort(Long::compareTo);
//根据上传时间集合和时间间隔生成上传时间节点集合
List<Long> createTimeTagList = new ArrayList<>();//时间节点列表
for (int i = 0; i < createTimeList.size(); i++) {
Long createTime = createTimeList.get(i);
if (createTimeTagList.isEmpty()) {
createTimeTagList.add(createTime);
continue;
}
Long newCreateTimeTag = createTimeTagList.get(createTimeTagList.size() - 1);//最新的时间节点
if (createTime >= newCreateTimeTag + Constant.QC_TIME_INTERVAL) {
createTimeTagList.add(createTime);
}
}
return createTimeTagList;
}
/**
* 获取添加了 ##H 或 ##L 后缀的测量值(如果可能的话)
*/
private String getFormatValue(List<QcSpecEntity> qcSpecList, String varietyNo, String craftItemNo, String qcItemNo, String qcValue) {
if (qcSpecList == null || qcSpecList.isEmpty()) {
return qcValue;
}
for (int i = 0; i < qcSpecList.size(); i++) {
QcSpecEntity qcSpec = qcSpecList.get(i);
if (varietyNo.equals(qcSpec.getVarietyNo()) && craftItemNo.equals(qcSpec.getCraftItemNo()) && qcItemNo.equals(qcSpec.getQcItemNo())) {
double valueMax = stringToDouble(qcSpec.getMax());
double valueMin = stringToDouble(qcSpec.getMin());
double value = stringToDouble(qcValue);
if (valueMax > -99_000D && value > -99_000D && value >= valueMax) {
return qcValue + "##H";
}
if (valueMin > -99_000D && value > -99_000D && value <= valueMin) {
return qcValue + "##L";
}
return qcValue;
}
}
return qcValue;
}
/**
* 格式化字符串为Double
*/
private Double stringToDouble(String stringValue) {
try {
return Double.parseDouble(stringValue);
} catch (Exception e) {
// e.printStackTrace();
// return -100_000D;
}
return -100_000D;
}
/**
* 尝试找到一个qcItemNo有空位置的Map
*/
private Map<String, Object> findEmptyRoom(List<Map<String, Object>> mapList, String qcItemNo, String batchNo, String machineNo, String materialNo, String mouldNo, String varietyNo, String craftItemNo) {
if (mapList == null || mapList.isEmpty() || TextUtils.isEmpty(qcItemNo)) {
return null;
}
for (Map<String, Object> room : mapList) {
if (room.get(EXCEL_HEAD_STYLE_ONE_NO.get(0)).equals(batchNo) && room.get(EXCEL_HEAD_STYLE_ONE_NO.get(1)).equals(machineNo) && room.get(EXCEL_HEAD_STYLE_ONE_NO.get(2)).equals(materialNo) && room.get(EXCEL_HEAD_STYLE_ONE_NO.get(3)).equals(mouldNo) && room.get(EXCEL_HEAD_STYLE_ONE_NO.get(4)).equals(varietyNo) && room.get(EXCEL_HEAD_STYLE_ONE_NO.get(5)).equals(craftItemNo)) {
if (!room.containsKey(qcItemNo)) {
return room;
}
}
}
return null;
}
/**
* 导出Excel表格
*/
@Override
public String exportExcel(ExportSourceExcelQo exportSourceExcelQo) throws Exception {
String host = LocalStringUtils.formatEmptyValue(exportSourceExcelQo.getHost()).trim();
String finalBatchNo = LocalStringUtils.formatEmptyValue(exportSourceExcelQo.getBatchNo()).trim();
String finalMachineNo = LocalStringUtils.formatEmptyValue(exportSourceExcelQo.getMachineNo()).trim();
String finalMaterialNo = LocalStringUtils.formatEmptyValue(exportSourceExcelQo.getMaterialNo()).trim();
String finalMouldNo = LocalStringUtils.formatEmptyValue(exportSourceExcelQo.getMouldNo()).trim();
String finalVarietyNo = LocalStringUtils.formatEmptyValue(exportSourceExcelQo.getVarietyNo()).trim();
String finalCraftItemNo = LocalStringUtils.formatEmptyValue(exportSourceExcelQo.getCraftItemNo()).trim();
List<CraftItemEntity> craftItemList = craftItemDao.findAll();
if (craftItemList.isEmpty()) {
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE, "未添加工艺项目,请先添加工艺项目!", locale);
}
List<QcItemEntity> qcItemList = qcItemDao.findAll();
if (qcItemList.isEmpty()) {
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE, "未添加检验项目,请先添加检验项目!", locale);
}
List<QcSourceEntity> sourceList = qcSourceDao.queryQcSource(finalBatchNo, finalMachineNo, finalMaterialNo, finalMouldNo, finalVarietyNo, finalCraftItemNo);
List<QcSpecEntity> qcSpecList = qcSpecDao.findAll();
List<Map<String, Object>> resultList = generateResultList(sourceList, qcSpecList);
String finalHost = host.endsWith("/") ? host : host + "/";
List<List<String>> formattedResultList = formatResultList(finalHost, resultList, qcItemList);
if (formattedResultList.isEmpty()) {
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE, "暂时没有该检验数据的信息!", locale);
}
String excelPath = doExportExcel(formattedResultList);
return outputEncapsulationObject(PromptMessageEnum.SUCCESS, finalHost + excelPath, locale);
}
/**
* 格式化结果集数据
*/
private List<List<String>> formatResultList(String host, List<Map<String, Object>> resultList, List<QcItemEntity> qcItemList) {
List<List<String>> formatResultList = new ArrayList<>();
if (resultList == null || resultList.isEmpty()) {
return formatResultList;
}
boolean needProcessBatch = needProcessBatch(resultList);
List<String> headList = new ArrayList<>();
for (int i = 0; i < EXCEL_HEAD_STYLE_ONE_NAME.size(); i++) {
if (i == 7) {
if (needProcessBatch) {
headList.add(EXCEL_HEAD_STYLE_ONE_NAME.get(i));
}
} else {
headList.add(EXCEL_HEAD_STYLE_ONE_NAME.get(i));
}
}
for (QcItemEntity qcItemEntity : qcItemList) {
headList.add(qcItemEntity.getQcItemName());
}
formatResultList.add(headList);
for (Map<String, Object> result : resultList) {
List<String> dataList = new ArrayList<>();
dataList.add((String) result.get(EXCEL_HEAD_STYLE_ONE_NO.get(0)));
dataList.add((String) result.get(EXCEL_HEAD_STYLE_ONE_NO.get(1)));
dataList.add((String) result.get(EXCEL_HEAD_STYLE_ONE_NO.get(2)));
dataList.add((String) result.get(EXCEL_HEAD_STYLE_ONE_NO.get(3)));
dataList.add((String) result.get(EXCEL_HEAD_STYLE_ONE_NO.get(4)));
dataList.add((String) result.get(EXCEL_HEAD_STYLE_ONE_NO.get(5)));
dataList.add(LocalDateUtils.exportFormatCurrentSecond((String) result.get(EXCEL_HEAD_STYLE_ONE_NO.get(6))));
if (needProcessBatch) {
if (isProcessBatch(result)) {
dataList.add((String) result.get(EXCEL_HEAD_STYLE_ONE_NO.get(7)));
} else {
dataList.add("");
}
}
for (QcItemEntity entity : qcItemList) {
String value = (String) result.getOrDefault(entity.getQcItemNo(), "");
if (Constant.QC_ITEM_TYPE_STRING.equals(entity.getQcItemType())) {
dataList.add(value);
} else if (Constant.QC_ITEM_TYPE_PICTURE.equals(entity.getQcItemType())) {
if (value.startsWith("picture")) {
dataList.add(host + value);
} else {
dataList.add(value);
}
} else {
dataList.add(value);
}
}
formatResultList.add(dataList);
}
return formatResultList;
}
/**
* 这个表格是否需要过程抽检批次这个表头
* 只要存在一条项目工艺编号为U001的数据就需要这个表头
*/
private boolean needProcessBatch(List<Map<String, Object>> resultList) {
for (Map<String, Object> result : resultList) {
if ("U001".equals((String) result.get(EXCEL_HEAD_STYLE_ONE_NO.get(5)))) {
return true;
}
}
return false;
}
/**
* 表格中的本行记录是否是成型过程工检数据
* 如果项目工艺编号为U001那就是
*/
private boolean isProcessBatch(Map<String, Object> result) {
if ("U001".equals((String) result.get(EXCEL_HEAD_STYLE_ONE_NO.get(5)))) {
return true;
}
return false;
}
/**
* 将格式化后的结果集数据导出为Excel文件
*/
private String doExportExcel(List<List<String>> dataListList) throws Exception {
//创建XSSFWorkbook对象(excel的文档对象)
XSSFWorkbook workbook = new XSSFWorkbook();
//建立新的sheet对象excel的表单
XSSFSheet sheet = workbook.createSheet("检验数据表");
for (int i = 0; i < dataListList.get(0).size(); i++) {
if (i <= 7) {
sheet.setColumnWidth(i, 22 * 256);
} else {
sheet.setColumnWidth(i, 14 * 256);
}
}
XSSFCellStyle headCellStyle = workbook.createCellStyle();
headCellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
headCellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
XSSFFont headFont = workbook.createFont();
headFont.setColor(HSSFColor.BLACK.index);
headCellStyle.setFont(headFont);
headCellStyle.setFillForegroundColor(new XSSFColor(new Color(156, 195, 230)));//设置背景色
headCellStyle.setFillPattern(CellStyle.SOLID_FOREGROUND);//填充模式
XSSFCellStyle highCellStyle = workbook.createCellStyle();
highCellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
highCellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
XSSFFont highFont = workbook.createFont();
highFont.setColor(HSSFColor.RED.index);
highCellStyle.setFont(highFont);
XSSFCellStyle lowCellStyle = workbook.createCellStyle();
lowCellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
lowCellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
XSSFFont lowFont = workbook.createFont();
lowFont.setColor(HSSFColor.BLUE.index);
lowCellStyle.setFont(lowFont);
XSSFCellStyle normalCellStyle = workbook.createCellStyle();
normalCellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
normalCellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
XSSFFont normalFont = workbook.createFont();
normalFont.setColor(HSSFColor.BLACK.index);
normalCellStyle.setFont(normalFont);
//在sheet里创建第一行参数为行索引(excel的行)可以是065535之间的任何一个
XSSFRow titleRow = sheet.createRow(0);
//创建单元格excel的单元格参数为列索引可以是0255之间的任何一个
XSSFCell titleCell = titleRow.createCell(0);
//设置单元格内容
titleCell.setCellValue("检验数据导出表");
titleCell.setCellStyle(normalCellStyle);
//合并单元格CellRangeAddress构造参数依次表示起始行截至行起始列 截至列
sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, dataListList.get(0).size() - 1));
int startRowNum = 1;
for (int i = 0; i < dataListList.size(); i++) {
List<String> dataList = dataListList.get(i);
if (dataList != null && dataList.size() > 0) {
XSSFRow row = sheet.createRow(i + startRowNum);
for (int j = 0; j < dataList.size(); j++) {
XSSFCell cell = row.createCell(j);
String sourceValue = dataList.get(j);
if (i == 0) {
cell.setCellValue(sourceValue);
cell.setCellStyle(headCellStyle);
} else if (j <= 5) {
cell.setCellValue(sourceValue);
cell.setCellStyle(normalCellStyle);
} else if (sourceValue.contains("##H")) {
cell.setCellValue(LocalDoubleUtils.keepThreeDecimal(sourceValue.split("##")[0]));
cell.setCellStyle(highCellStyle);
} else if (sourceValue.contains("##L")) {
cell.setCellValue(LocalDoubleUtils.keepThreeDecimal(sourceValue.split("##")[0]));
cell.setCellStyle(lowCellStyle);
} else {
XSSFCellDataBean cellDataBean = new XSSFCellDataBean(sourceValue);
if (XSSFCellDataBean.VALUE_TYPE_STRING == cellDataBean.getValueType()) {
cell.setCellValue(cellDataBean.getStringValue());
} else if (XSSFCellDataBean.VALUE_TYPE_DOUBLE == cellDataBean.getValueType()) {
cell.setCellValue(LocalDoubleUtils.keepThreeDecimal(cellDataBean.getDoubleValue()));
}
cell.setCellStyle(normalCellStyle);
}
}
}
}
//输出Excel文件
File dirFile = new File("/home/sxy/server/industrial_measurement/excel/");
// File dirFile = new File("/Users/liuchengqian/Desktop/DaJiang/");
if (!dirFile.exists()) {
dirFile.mkdirs();
}
String excelFileName = System.currentTimeMillis() + ".xlsx";
FileOutputStream output = new FileOutputStream(new File(dirFile, excelFileName));
workbook.write(output);
output.flush();
return "excel/" + excelFileName;
}
/**
* 格式化创建时间历史数据
*/
@Override
public String formatCreateTime() {
System.out.println("开始格式化创建时间历史数据");
List<QcSourceEntity> sourceEntityList = qcSourceDao.findAll();
long startTimeMillis = System.currentTimeMillis();
int listSize = sourceEntityList.size();
for (int i = 0; i < listSize; i++) {
QcSourceEntity sourceEntity = sourceEntityList.get(i);
String createTime = sourceEntity.getCreateTime();
String formatCurrentSecond = LocalDateUtils.formatCurrentSecond(createTime);
qcSourceDao.formatCreateTime(sourceEntity.getId(), formatCurrentSecond);
if (i % 10 == 0) {
long spendTimeMillis = System.currentTimeMillis() - startTimeMillis;
double remainTimeMillis = (listSize - i) * spendTimeMillis * 1D / i;
System.out.println("已完成(" + i + "/" + listSize + "),用时" + formatDuring(spendTimeMillis) + ",剩余" + formatDuring((long) remainTimeMillis));
}
}
return outputEncapsulationObject(PromptMessageEnum.SUCCESS, "格式化创建时间历史数据成功", locale);
}
public static String formatDuring(long mss) {
long days = mss / (1000 * 60 * 60 * 24);
long hours = (mss % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60);
long minutes = (mss % (1000 * 60 * 60)) / (1000 * 60);
long seconds = (mss % (1000 * 60)) / 1000;
if (days <= 0 && hours <= 0 && minutes <= 0) {
return seconds + "";
}
if (days <= 0 && hours <= 0) {
return minutes + " 分钟 " + seconds + "";
}
if (days <= 0) {
return hours + " 小时 " + minutes + " 分钟 " + seconds + "";
}
return days + "" + hours + " 小时 " + minutes + " 分钟 " + seconds + "";
}
}

View File

@ -0,0 +1,494 @@
package com.xkrs.service.impl;
import com.xkrs.dao.CraftItemDao;
import com.xkrs.dao.QcItemDao;
import com.xkrs.dao.QcSpecDao;
import com.xkrs.encapsulation.PromptMessageEnum;
import com.xkrs.model.bean.ReadSpecHeadBean;
import com.xkrs.model.bean.XSSFCellDataBean;
import com.xkrs.model.entity.CraftItemEntity;
import com.xkrs.model.entity.QcItemEntity;
import com.xkrs.model.entity.QcSpecEntity;
import com.xkrs.model.qo.ExportSpecExcelQo;
import com.xkrs.model.qo.QcSpecQoDelete;
import com.xkrs.model.qo.QcSpecQoInsert;
import com.xkrs.model.qo.QcSpecQoUpdate;
import com.xkrs.service.QcSpecService;
import com.xkrs.util.LocalDateUtils;
import com.xkrs.util.LocalDoubleUtils;
import com.xkrs.util.LocalStringUtils;
import org.apache.http.util.TextUtils;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.*;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.transaction.Transactional;
import java.awt.*;
import java.io.File;
import java.io.FileOutputStream;
import java.util.List;
import java.util.*;
import static com.xkrs.encapsulation.OutputEncapsulation.outputEncapsulationObject;
@Service
public class QcSpecServiceImpl implements QcSpecService {
private Locale locale = LocaleContextHolder.getLocale();
@Resource
private CraftItemDao craftItemDao;
@Resource
private QcItemDao qcItemDao;
@Resource
private QcSpecDao qcSpecDao;
/**
* 添加检验规格
*/
@Override
public String insertQcSpec(QcSpecQoInsert insertQo) {
String varietyNo = insertQo.getVarietyNo();
String craftItemNo = insertQo.getCraftItemNo();
String qcItemNo = insertQo.getQcItemNo();
String max = insertQo.getMax();
String mean = insertQo.getMean();
String min = insertQo.getMin();
String unit = insertQo.getUnit();
String method = insertQo.getMethod();
String standard = insertQo.getStandard();
String remark = insertQo.getRemark();
Optional<CraftItemEntity> craftItemByNo = craftItemDao.findByCraftItemNo(craftItemNo);
if (craftItemByNo.isEmpty()) {
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE, "不存在该工艺项目,请先添加工艺项目!", locale);
}
Optional<QcItemEntity> qcItemByNo = qcItemDao.findByQcItemNo(qcItemNo);
if (qcItemByNo.isEmpty()) {
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE, "不存在该检验项目,请先添加检验项目!", locale);
}
Optional<QcSpecEntity> existsQcSpecOptional = qcSpecDao.findExistsQcSpec(varietyNo, craftItemNo, qcItemNo);
if (existsQcSpecOptional.isPresent()) {
return outputEncapsulationObject(PromptMessageEnum.DATA_EXIT, "该检验规格已存在,请勿重复添加!", locale);
}
QcSpecEntity entity = new QcSpecEntity();
entity.setCreateTime(LocalDateUtils.getCurrentSecond());
entity.setUpdateTime("");
entity.setVarietyNo(LocalStringUtils.formatEmptyValue(varietyNo));
entity.setCraftItemNo(LocalStringUtils.formatEmptyValue(craftItemNo));
entity.setQcItemNo(LocalStringUtils.formatEmptyValue(qcItemNo));
entity.setMax(LocalStringUtils.formatEmptyValue(max));
entity.setMean(LocalStringUtils.formatEmptyValue(mean));
entity.setMin(LocalStringUtils.formatEmptyValue(min));
entity.setUnit(LocalStringUtils.formatEmptyValue(unit));
entity.setMethod(LocalStringUtils.formatEmptyValue(method));
entity.setStandard(LocalStringUtils.formatEmptyValue(standard));
entity.setRemark(LocalStringUtils.formatEmptyValue(remark));
qcSpecDao.save(entity);
return outputEncapsulationObject(PromptMessageEnum.SUCCESS, "添加成功!", locale);
}
/**
* 删除检验规格
*/
@Transactional(rollbackOn = Exception.class)
@Override
public String deleteQcSpec(QcSpecQoDelete deleteQo) {
Integer id = deleteQo.getId();
Optional<QcSpecEntity> entityById = qcSpecDao.findById(id);
if (entityById.isEmpty()) {
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE, "不存在该检验规格,请先添加检验规格!", locale);
}
qcSpecDao.deleteById(id);
return outputEncapsulationObject(PromptMessageEnum.SUCCESS, "删除成功!", locale);
}
/**
* 更新检验规格
*/
@Override
public String updateQcSpec(QcSpecQoUpdate updateQo) {
Integer id = updateQo.getId();
String max = updateQo.getMax();
String mean = updateQo.getMean();
String min = updateQo.getMin();
String unit = updateQo.getUnit();
String method = updateQo.getMethod();
String standard = updateQo.getStandard();
String remark = updateQo.getRemark();
Optional<QcSpecEntity> entityById = qcSpecDao.findById(id);
if (entityById.isEmpty()) {
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE, "不存在该检验规格,请先添加检验规格!", locale);
}
qcSpecDao.updateQcSpecById(id, LocalDateUtils.getCurrentSecond(), LocalStringUtils.formatEmptyValue(max), LocalStringUtils.formatEmptyValue(mean), LocalStringUtils.formatEmptyValue(min), LocalStringUtils.formatEmptyValue(unit), LocalStringUtils.formatEmptyValue(method), LocalStringUtils.formatEmptyValue(standard), LocalStringUtils.formatEmptyValue(remark));
return outputEncapsulationObject(PromptMessageEnum.SUCCESS, "修改成功!", locale);
}
/**
* 查询检验规格
*/
@Override
public String queryQcSpec(String varietyNo, String craftItemNo, String qcItemNo) {
String finalVarietyNo = LocalStringUtils.formatEmptyValue(varietyNo).trim();
String finalQcItemNo = LocalStringUtils.formatEmptyValue(qcItemNo).trim();
List<Map<String, Object>> resultList;
if (TextUtils.isEmpty(craftItemNo)) {
resultList = qcSpecDao.queryQcSpec(finalVarietyNo, finalQcItemNo);
} else {
resultList = qcSpecDao.queryQcSpec(finalVarietyNo, craftItemNo.trim(), finalQcItemNo);
}
if (resultList == null || resultList.isEmpty()) {
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE, "暂时没有该检验规格的信息!", locale);
}
return outputEncapsulationObject(PromptMessageEnum.SUCCESS, resultList, locale);
}
/**
* 导入检验规格
*/
@Override
public String importSpecExcel(MultipartFile specExcel) {
try {
//1、读取检验规格数据表文件
XSSFWorkbook workbook = new XSSFWorkbook(specExcel.getInputStream());
//2、获取工作表对象
XSSFSheet sheet = workbook.getSheetAt(0);
//3、获取行的迭代器
Iterator<Row> iterator = sheet.iterator();
long rowNum = 0;
long colNum = -1;
//4、表格数据容器
List<List<String>> sheetDataList = new ArrayList<>();
while (iterator.hasNext()) {
Row row = iterator.next();
if (rowNum == 0) {
ReadSpecHeadBean readResult = readSpecHead(row);
if (readResult.isSuccess()) {
colNum = readResult.getHeadCount();
rowNum++;
continue;
}
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE, readResult.getErrorMessage(), locale);
}
List<String> rowDataList = new ArrayList<>();
for (int i = 0; i < colNum; i++) {
String value = getValue(row.getCell(i));
if (i == 0) {//机种号数据直接添加
if (TextUtils.isEmpty(value)) {
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE, "" + rowNum + "行机种号为空,请先编辑机种号!", locale);
}
rowDataList.add(value);
} else if (i == 1) {//工艺项目数据要添加对应的编号
Optional<CraftItemEntity> craftItemOptional = craftItemDao.findByCraftItemName(value);
if (craftItemOptional.isEmpty()) {
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE, "" + rowNum + "行工艺项目(" + value + ")不存在,请先添加工艺项目!", locale);
}
rowDataList.add(craftItemOptional.get().getCraftItemNo());
} else if (i == 2) {//检验项目数据要添加对应的编号
Optional<QcItemEntity> qcItemOptional = qcItemDao.findByQcItemName(value);
if (qcItemOptional.isEmpty()) {
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE, "" + rowNum + "行检验项目(" + value + ")不存在,请先添加检验项目!", locale);
}
rowDataList.add(qcItemOptional.get().getQcItemNo());
} else {//其他数据直接添加
rowDataList.add(value);
}
}
sheetDataList.add(rowDataList);
rowNum++;
}
//5、表格数据自重复检查
for (int i = 0; i < sheetDataList.size(); i++) {
List<String> rowDataList = sheetDataList.get(i);
List<Integer> appearIndexList = checkAppearIndex(sheetDataList, rowDataList.get(0), rowDataList.get(1), rowDataList.get(2));
if (appearIndexList.size() == 0) {
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE, "系统错误!", locale);
}
if (appearIndexList.size() > 1) {
StringBuilder response = new StringBuilder();
response.append("检验规格表中:机种号、工艺项目、检验项目三项存在全部相同项,行数:");
for (Integer appearIndex : appearIndexList) {
response.append("").append(appearIndex + 2).append("行、");
}
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE, response.toString(), locale);
}
}
//6、表格的数据已经全部读取完成并且自检通过接下来遍历入库即可
int insertCount = 0;
int updateCount = 0;
for (List<String> rowDataList : sheetDataList) {
String varietyNo = rowDataList.get(0);
String craftItemNo = rowDataList.get(1);
String qcItemNo = rowDataList.get(2);
String max = rowDataList.get(3);
String min = rowDataList.get(4);
String method = rowDataList.get(5);
Optional<QcSpecEntity> existsQcSpecOptional = qcSpecDao.findExistsQcSpec(varietyNo, craftItemNo, qcItemNo);
if (existsQcSpecOptional.isPresent()) {
qcSpecDao.updateQcSpecByVCQ(LocalStringUtils.formatEmptyValue(varietyNo), LocalStringUtils.formatEmptyValue(craftItemNo), LocalStringUtils.formatEmptyValue(qcItemNo), LocalDateUtils.getCurrentSecond(), LocalStringUtils.formatEmptyValue(max), "", LocalStringUtils.formatEmptyValue(min), "", LocalStringUtils.formatEmptyValue(method), "", "");
updateCount++;
} else {
QcSpecEntity entity = new QcSpecEntity();
entity.setCreateTime(LocalDateUtils.getCurrentSecond());
entity.setUpdateTime("");
entity.setVarietyNo(LocalStringUtils.formatEmptyValue(varietyNo));
entity.setCraftItemNo(LocalStringUtils.formatEmptyValue(craftItemNo));
entity.setQcItemNo(LocalStringUtils.formatEmptyValue(qcItemNo));
entity.setMax(LocalStringUtils.formatEmptyValue(max));
entity.setMean("");
entity.setMin(LocalStringUtils.formatEmptyValue(min));
entity.setUnit("");
entity.setMethod(LocalStringUtils.formatEmptyValue(method));
entity.setStandard("");
entity.setRemark("");
qcSpecDao.save(entity);
insertCount++;
}
}
StringBuilder response = new StringBuilder();
response.append("导入成功");
if (insertCount > 0) {
response.append(",新增").append(insertCount).append("条检验规格");
}
if (updateCount > 0) {
response.append(",更新").append(updateCount).append("条检验规格");
}
response.append("");
return outputEncapsulationObject(PromptMessageEnum.SUCCESS, response.toString(), locale);
} catch (Exception e) {
e.printStackTrace();
}
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE, "请上传正确的Microsoft Excel 2007/2010 Workbook(*.xlsx)文件!", locale);
}
private List<Integer> checkAppearIndex(List<List<String>> sheetDataList, String varietyNo, String craftItemNo, String qcItemNo) {
List<Integer> appearIndexList = new ArrayList<>();
for (int i = 0; i < sheetDataList.size(); i++) {
List<String> rowDataList = sheetDataList.get(i);
if (rowDataList.get(0).equals(varietyNo) && rowDataList.get(1).equals(craftItemNo) && rowDataList.get(2).equals(qcItemNo)) {
appearIndexList.add(i);
}
}
return appearIndexList;
}
List<String> QC_SPEC_HEAD = Arrays.asList("机种号", "工艺项目", "检验项目", "最大值", "最小值", "检验方法", "最大值(管理值)", "最小值(管理值)");
/**
* 读取表头数据
*/
private ReadSpecHeadBean readSpecHead(Row headRow) {
ReadSpecHeadBean readResult = new ReadSpecHeadBean();
for (int i = 0; i < 6; i++) {
if (!QC_SPEC_HEAD.get(i).equals(getValue(headRow.getCell(i)))) {
readResult.setSuccess(false);
readResult.setHeadCount(0);
readResult.setErrorMessage("表头第" + (i + 1) + "列应该是:" + QC_SPEC_HEAD.get(i));
return readResult;
}
}
readResult.setSuccess(true);
readResult.setHeadCount(6);
readResult.setErrorMessage("");
return readResult;
}
/**
* 获取单元格内的数据,并进行格式转换
*/
private String getValue(Cell cell) {
if (cell == null) {
return "";
}
if (Cell.CELL_TYPE_STRING == cell.getCellType()) {
return cell.getStringCellValue();
}
if (Cell.CELL_TYPE_BOOLEAN == cell.getCellType()) {
return String.valueOf(cell.getBooleanCellValue());
}
if (Cell.CELL_TYPE_NUMERIC == cell.getCellType()) {//数值和日期均是此类型,需进一步判断
if (HSSFDateUtil.isCellDateFormatted(cell)) {
//是日期类型
return String.valueOf(cell.getDateCellValue().getTime());
} else {
//是数值类型
return String.valueOf(cell.getNumericCellValue());
}
}
return "";
}
/**
* 导出检验规格
*/
@Override
public String exportSpecExcel(ExportSpecExcelQo exportSpecExcelQo) throws Exception {
List<QcSpecEntity> qcSpecList = qcSpecDao.findAll(Sort.by(Sort.Direction.ASC, "createTime"));
if (qcSpecList.isEmpty()) {
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE, "无检验规格数据可导出,请先添加检验规格!", locale);
}
List<List<String>> dataListList = new ArrayList<>();
dataListList.add(QC_SPEC_HEAD);
for (QcSpecEntity qcSpecEntity : qcSpecList) {
List<String> dataList = new ArrayList<>();
dataList.add(qcSpecEntity.getVarietyNo());
Optional<CraftItemEntity> craftItemOptional = craftItemDao.findByCraftItemNo(qcSpecEntity.getCraftItemNo());
if (craftItemOptional.isEmpty()) {
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE, "检验规格数据导出失败code=01", locale);
}
dataList.add(craftItemOptional.get().getCraftItemName());
Optional<QcItemEntity> qcItemOptional = qcItemDao.findByQcItemNo(qcSpecEntity.getQcItemNo());
if (qcItemOptional.isEmpty()) {
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE, "检验规格数据导出失败code=02", locale);
}
dataList.add(qcItemOptional.get().getQcItemName());
dataList.add(qcSpecEntity.getMax());
dataList.add(qcSpecEntity.getMin());
dataList.add(qcSpecEntity.getMethod());
dataListList.add(dataList);
}
//创建XSSFWorkbook对象(excel的文档对象)
XSSFWorkbook workbook = new XSSFWorkbook();
//建立新的sheet对象excel的表单
XSSFSheet sheet = workbook.createSheet("检验规格表");
for (int i = 0; i < dataListList.get(0).size(); i++) {
sheet.setColumnWidth(i, 24 * 256);
}
XSSFCellStyle headCellStyle = workbook.createCellStyle();
headCellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
headCellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
XSSFFont headFont = workbook.createFont();
headFont.setColor(HSSFColor.BLACK.index);
headCellStyle.setFont(headFont);
headCellStyle.setFillForegroundColor(new XSSFColor(new Color(156, 195, 230)));//设置背景色
headCellStyle.setFillPattern(CellStyle.SOLID_FOREGROUND);//填充模式
XSSFCellStyle normalCellStyle = workbook.createCellStyle();
normalCellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
normalCellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
XSSFFont normalFont = workbook.createFont();
normalFont.setColor(HSSFColor.BLACK.index);
normalCellStyle.setFont(normalFont);
int startRowNum = 0;
for (int i = 0; i < dataListList.size(); i++) {
List<String> dataList = dataListList.get(i);
if (dataList != null && dataList.size() > 0) {
XSSFRow row = sheet.createRow(i + startRowNum);
for (int j = 0; j < dataList.size(); j++) {
XSSFCell cell = row.createCell(j);
String sourceValue = dataList.get(j);
if (i == 0) {
cell.setCellValue(sourceValue);
cell.setCellStyle(headCellStyle);
} else if (j <= 2) {
cell.setCellValue(sourceValue);
cell.setCellStyle(normalCellStyle);
} else {
XSSFCellDataBean cellDataBean = new XSSFCellDataBean(sourceValue);
if (XSSFCellDataBean.VALUE_TYPE_STRING == cellDataBean.getValueType()) {
cell.setCellValue(cellDataBean.getStringValue());
} else if (XSSFCellDataBean.VALUE_TYPE_DOUBLE == cellDataBean.getValueType()) {
cell.setCellValue(LocalDoubleUtils.keepThreeDecimal(cellDataBean.getDoubleValue()));
}
cell.setCellStyle(normalCellStyle);
}
}
}
}
//输出Excel文件
File dirFile = new File("/home/sxy/server/industrial_measurement/excel/");
// File dirFile = new File("/Users/liuchengqian/Desktop/DaJiang/");
if (!dirFile.exists()) {
dirFile.mkdirs();
}
String excelFileName = System.currentTimeMillis() + ".xlsx";
FileOutputStream output = new FileOutputStream(new File(dirFile, excelFileName));
workbook.write(output);
output.flush();
String host = exportSpecExcelQo.getHost();
String finalHost = host.endsWith("/") ? host : host + "/";
return outputEncapsulationObject(PromptMessageEnum.SUCCESS, finalHost + "excel/" + excelFileName, locale);
}
private boolean formatData(String data) {
return false;
}
/**
* 导出空白检验规格
*/
@Override
public String exportEmptySpecExcel(ExportSpecExcelQo exportSpecExcelQo) throws Exception {
List<List<String>> dataListList = new ArrayList<>();
dataListList.add(QC_SPEC_HEAD);
XSSFWorkbook workbook = new XSSFWorkbook();
//建立新的sheet对象excel的表单
XSSFSheet sheet = workbook.createSheet("检验规格表");
for (int i = 0; i < dataListList.get(0).size(); i++) {
sheet.setColumnWidth(i, 24 * 256);
}
XSSFCellStyle headCellStyle = workbook.createCellStyle();
headCellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
headCellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
XSSFFont headFont = workbook.createFont();
headFont.setColor(HSSFColor.BLACK.index);
headCellStyle.setFont(headFont);
headCellStyle.setFillForegroundColor(new XSSFColor(new Color(156, 195, 230)));//设置背景色
headCellStyle.setFillPattern(CellStyle.SOLID_FOREGROUND);//填充模式
int startRowNum = 0;
List<String> dataList = dataListList.get(0);
if (dataList != null && dataList.size() > 0) {
XSSFRow row = sheet.createRow(startRowNum);
for (int j = 0; j < dataList.size(); j++) {
XSSFCell cell = row.createCell(j);
cell.setCellStyle(headCellStyle);
String data = dataList.get(j);
cell.setCellValue(data);
}
}
//输出Excel文件
File dirFile = new File("/home/sxy/server/industrial_measurement/excel/");
// File dirFile = new File("/Users/liuchengqian/Desktop/DaJiang/");
if (!dirFile.exists()) {
dirFile.mkdirs();
}
String excelFileName = System.currentTimeMillis() + ".xlsx";
FileOutputStream output = new FileOutputStream(new File(dirFile, excelFileName));
workbook.write(output);
output.flush();
String host = exportSpecExcelQo.getHost();
String finalHost = host.endsWith("/") ? host : host + "/";
return outputEncapsulationObject(PromptMessageEnum.SUCCESS, finalHost + "excel/" + excelFileName, locale);
}
}

View File

@ -1,48 +0,0 @@
package com.xkrs.service.impl;
import com.xkrs.dao.SpecDao;
import com.xkrs.encapsulation.PromptMessageEnum;
import com.xkrs.model.entity.SpecEntity;
import com.xkrs.model.qo.SpecQo;
import com.xkrs.service.SpecService;
import com.xkrs.util.SpecQuery;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.Locale;
import static com.xkrs.encapsulation.OutputEncapsulation.outputEncapsulationObject;
@Service
public class SpecServiceImpl implements SpecService {
@Resource
private SpecQuery specQuery;
@Resource
private SpecDao specDao;
@Override
public String insertSpec(SpecQo specQo) {
Locale locale = LocaleContextHolder.getLocale();
List<SpecEntity> specEntities = specQuery.selectSpec(specQo.getMachineTypeNo(), specQo.getInspectionItemCode(),specQo.getCraftItemName());
if (!specEntities.isEmpty()) {
return outputEncapsulationObject(PromptMessageEnum.DATA_EXIT, "已存在该测量规格!", locale);
}
SpecEntity specEntity1 = new SpecEntity();
specEntity1.setMachineTypeNo(specQo.getMachineTypeNo());
specEntity1.setInspectionItemCode(specQo.getInspectionItemCode());
specEntity1.setCraftItemName(specQo.getCraftItemName());
specEntity1.setMax(specQo.getMax());
specEntity1.setMean(specQo.getMean());
specEntity1.setMin(specQo.getMin());
specEntity1.setUnit(specQo.getUnit());
specEntity1.setInspectionMethod(specQo.getInspectionMethod());
specEntity1.setInspectionStandard(specQo.getInspectionStandard());
specEntity1.setRemark(specQo.getRemark());
specDao.save(specEntity1);
return outputEncapsulationObject(PromptMessageEnum.SUCCESS, "添加成功!", locale);
}
}

View File

@ -0,0 +1,20 @@
package com.xkrs.util;
public interface Constant {
/**
* 检验项目类型:文本
*/
String QC_ITEM_TYPE_STRING = "0";
/**
* 检验项目类型:图片
*/
String QC_ITEM_TYPE_PICTURE = "1";
/**
* 检验数据时间分组间隔
*/
long QC_TIME_INTERVAL = 3600;
}

View File

@ -1,42 +0,0 @@
package com.xkrs.util;
import com.xkrs.dao.DataDictDao;
import com.xkrs.model.entity.DataDict;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import javax.persistence.criteria.Predicate;
import java.util.ArrayList;
import java.util.List;
/**
* @Author: XinYi Song
* @Date: 2022/1/19 13:56
*/
@Component
public class DataDictQuery {
@Resource
private DataDictDao dataDictDao;
/**
* 动态多条件查询字典信息
*
* @return
*/
public List<DataDict> selectDataDict(String inspectionItemName, String inspectionItemCode) {
Specification<DataDict> specification = (root, criteriaQuery, criteriaBuilder) -> {
List<Predicate> list = new ArrayList<>();
if (inspectionItemName != null && !"".equals(inspectionItemName)) {
list.add(criteriaBuilder.equal(root.get("inspectionItemName").as(String.class), inspectionItemName));
}
if (inspectionItemCode != null && !"".equals(inspectionItemCode)) {
list.add(criteriaBuilder.equal(root.get("inspectionItemCode").as(String.class), inspectionItemCode));
}
Predicate[] predicates = new Predicate[list.size()];
return criteriaBuilder.and(list.toArray(predicates));
};
return dataDictDao.findAll(specification);
}
}

View File

@ -1,55 +0,0 @@
package com.xkrs.util;
import com.xkrs.dao.DataSourceDao;
import com.xkrs.model.entity.DataSource;
import org.apache.http.util.TextUtils;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import javax.persistence.criteria.Predicate;
import java.util.ArrayList;
import java.util.List;
/**
* @Author: XinYi Song
* @Date: 2022/1/19 13:56
*/
@Component
public class DataSourceQuery {
@Resource
private DataSourceDao dataSourceDao;
/**
* 动态多条件查询采集数据信息
*
* @return
*/
public List<DataSource> selectDataSource(String lotNo, String machineNo, String materialNo, String modelNo, String machineTypeNo, String craftItemName) {
Specification<DataSource> specification = (root, criteriaQuery, criteriaBuilder) -> {
List<Predicate> list = new ArrayList<>();
if (!TextUtils.isEmpty(lotNo)) {
list.add(criteriaBuilder.equal(root.get("lotNo").as(String.class), lotNo));
}
if (!TextUtils.isEmpty(machineNo)) {
list.add(criteriaBuilder.equal(root.get("machineNo").as(String.class), machineNo));
}
if (!TextUtils.isEmpty(materialNo)) {
list.add(criteriaBuilder.equal(root.get("materialNo").as(String.class), materialNo));
}
if (!TextUtils.isEmpty(modelNo)) {
list.add(criteriaBuilder.equal(root.get("modelNo").as(String.class), modelNo));
}
if (!TextUtils.isEmpty(machineTypeNo)) {
list.add(criteriaBuilder.equal(root.get("machineTypeNo").as(String.class), machineTypeNo));
}
if (!TextUtils.isEmpty(craftItemName)) {
list.add(criteriaBuilder.equal(root.get("craftItemName").as(String.class), craftItemName));
}
Predicate[] predicates = new Predicate[list.size()];
return criteriaBuilder.and(list.toArray(predicates));
};
return dataSourceDao.findAll(specification);
}
}

View File

@ -48,7 +48,8 @@ public class ExcelUploadUtil {
String path = "/home/sxy/server/industrial_measurement/" + subDir + newName; String path = "/home/sxy/server/industrial_measurement/" + subDir + newName;
//实现上传 //实现上传
fileInput.transferTo(new File(path)); fileInput.transferTo(new File(path));
return "http://118.24.27.47:2088/" + subDir + newName; // return path;
return subDir + newName;
} }
return null; return null;
} }
@ -94,31 +95,23 @@ public class ExcelUploadUtil {
return fireTaskPhotos; return fireTaskPhotos;
}*/ }*/
/** /**
* 删除本地或服务器储存的图片 * 删除本地或服务器储存的图片
*
* @param path
* @return
*/ */
public static String delFile(String path) { public static String delFile(String path, int subDirType) {
String resultInfo = null; String subDir = subDirType == 1 ? "excel/" : "picture/";
int lastIndexOf = path.lastIndexOf("/"); int lastIndexOf = path.lastIndexOf("/");
String imgPath = path.substring(lastIndexOf + 1, path.length()); String fileName = path.substring(lastIndexOf + 1);
System.out.println(imgPath); String filePath = "/Users/liuchengqian/Desktop/DaJiang/" + subDir + fileName;
imgPath = "/usr/local/etc/images/" + imgPath; // String filePath = "/home/sxy/server/industrial_measurement/" + subDir + fileName;
// img_path = "/usr/etc/images/Folder/" + img_path; File file = new File(filePath);
File file = new File(imgPath);
if (file.exists()) { if (file.exists()) {
if (file.delete()) { if (file.delete()) {
resultInfo = "删除成功!"; return "删除成功!";
} else {
resultInfo = "删除失败!";
} }
} else { return "删除失败!";
resultInfo = "文件不存在";
} }
return resultInfo; return "文件不存在";
} }
/** /**

View File

@ -2,7 +2,8 @@ package com.xkrs.util;
import net.sf.jxls.transformer.XLSTransformer; import net.sf.jxls.transformer.XLSTransformer;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import java.io.*;
import java.io.IOException;
import java.util.Map; import java.util.Map;
/** /**
@ -11,58 +12,16 @@ import java.util.Map;
*/ */
public class ExportExcel { public class ExportExcel {
/**
* 最简单的填充
*
* @since 2.1.1
*/
/*public static String simpleFill(Map<String, String> map,String templateFileName) {
String s = System.currentTimeMillis() + ".xlsx";
// 方案2 根据Map填充
String fileName = "/usr/local/excel/" + s;
//String fileName = "E:\\shoptest\\" + s;
// 这里 会填充到第一个sheet 然后文件流会自动关闭
ExcelWriterBuilder write = EasyExcel.write(fileName);
ExcelWriterBuilder excelWriterBuilder = write.withTemplate(templateFileName);
ExcelWriter build = excelWriterBuilder.build();
WriteSheet writeSheet = EasyExcel.writerSheet().build();
build.fill(map,writeSheet);
build.finish();
//EasyExcel.write(fileName).withTemplate(templateFileName).sheet().doFill(map);
return "http://118.24.27.47:2088/excel/"+s;
//return "http://192.168.2.139/"+s;
}*/
public static String exportToProveExcel(Map<String, String> dataMap, String srcFilePath) throws IOException, InvalidFormatException { public static String exportToProveExcel(Map<String, String> dataMap, String srcFilePath) throws IOException, InvalidFormatException {
String s = System.currentTimeMillis() + ".xlsx"; String s = System.currentTimeMillis() + ".xlsx";
//String path = "E:/shop/"+s; //String path = "E:/shop/"+s;
String path = "/home/sxy/server/industrial_measurement/excel/" + s; String path = "/home/sxy/server/industrial_measurement/excel/" + s;
// 开始转换。利用 transformer 转到Excel // 开始转换。利用 transformer 转到Excel
XLSTransformer transformer = new XLSTransformer(); XLSTransformer transformer = new XLSTransformer();
// 参数srcFilePath模板源文件 cMap需要导出的数据 destFile.getAbsolutePath():下载的目标文件 // 参数srcFilePath模板源文件 cMap需要导出的数据 destFile.getAbsolutePath():下载的目标文件
transformer.transformXLS(srcFilePath, dataMap, path); transformer.transformXLS(srcFilePath, dataMap, path);
//return "http://192.168.2.139/"+s; //return "http://192.168.2.139/"+s;
return "http://118.24.27.47:2088/excel/"+s; return "http://118.24.27.47:2088/excel/" + s;
} }
/*public static void main(String[] args) throws IOException, InvalidFormatException {
// 模板注意 用{} 来表示你要用的变量 如果本来就有"{","}" 特殊字符 用"\{","\}"代替
String templateFileName = TestFileUtil.getPath() + "templates" + File.separator + "test.xlsx";
Map<String, String> map = new HashMap<String, String>();
map.put("name", "张三");
map.put("sex", "男");
//simpleFill(map,templateFileName);
HttpServletResponse response = null;
String s = exportToProveExcel(map);
System.out.println(s);
}*/
} }

View File

@ -0,0 +1,35 @@
package com.xkrs.util;
import cn.hutool.core.date.DateUtil;
import java.util.Date;
public class LocalDateUtils {
private LocalDateUtils() {
}
public static String getCurrentSecond() {
return String.valueOf(new Date().getTime() / 1000L);
}
/**
* 返回给前端用的日期格式化
*
* @param second 秒时间戳
*/
public static String formatCurrentSecond(String second) {
long timeMillis = Long.parseLong(second + "000");
return DateUtil.format(new Date(timeMillis), "yyyy-MM-dd HH:mm:ss");
}
/**
* 导出表格用的日期格式化
*
* @param second 秒时间戳
*/
public static String exportFormatCurrentSecond(String second) {
long timeMillis = Long.parseLong(second + "000");
return DateUtil.format(new Date(timeMillis), "yyyy-MM-dd HH");
}
}

View File

@ -0,0 +1,20 @@
package com.xkrs.util;
import java.text.DecimalFormat;
public class LocalDoubleUtils {
private static final DecimalFormat decimalFormat = new DecimalFormat("0.000");
private LocalDoubleUtils() {
}
public static String keepThreeDecimal(String value) {
return keepThreeDecimal(Double.parseDouble(value));
}
public static String keepThreeDecimal(double value) {
return decimalFormat.format(value);
}
}

View File

@ -0,0 +1,12 @@
package com.xkrs.util;
public class LocalStringUtils {
private LocalStringUtils() {
}
public static String formatEmptyValue(String value) {
return value == null ? "" : value;
}
}

View File

@ -1,55 +0,0 @@
package com.xkrs.util;
import com.xkrs.dao.PictureDao;
import com.xkrs.model.entity.PictureEntity;
import org.apache.http.util.TextUtils;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import javax.persistence.criteria.Predicate;
import java.util.ArrayList;
import java.util.List;
/**
* @Author: XinYi Song
* @Date: 2022/1/19 13:56
*/
@Component
public class PictureQuery {
@Resource
private PictureDao pictureDao;
/**
* 动态多条件查询图片信息
*
* @return
*/
public List<PictureEntity> selectPicture(String lotNo, String machineNo, String materialNo, String modelNo, String machineTypeNo, String craftItemName) {
Specification<PictureEntity> specification = (root, criteriaQuery, criteriaBuilder) -> {
List<Predicate> list = new ArrayList<>();
if (!TextUtils.isEmpty(lotNo)) {
list.add(criteriaBuilder.equal(root.get("lotNo").as(String.class), lotNo));
}
if (!TextUtils.isEmpty(machineNo)) {
list.add(criteriaBuilder.equal(root.get("machineNo").as(String.class), machineNo));
}
if (!TextUtils.isEmpty(materialNo)) {
list.add(criteriaBuilder.equal(root.get("materialNo").as(String.class), materialNo));
}
if (!TextUtils.isEmpty(modelNo)) {
list.add(criteriaBuilder.equal(root.get("modelNo").as(String.class), modelNo));
}
if (!TextUtils.isEmpty(machineTypeNo)) {
list.add(criteriaBuilder.equal(root.get("machineTypeNo").as(String.class), machineTypeNo));
}
if (!TextUtils.isEmpty(craftItemName)) {
list.add(criteriaBuilder.equal(root.get("craftItemName").as(String.class), craftItemName));
}
Predicate[] predicates = new Predicate[list.size()];
return criteriaBuilder.and(list.toArray(predicates));
};
return pictureDao.findAll(specification);
}
}

View File

@ -1,46 +0,0 @@
package com.xkrs.util;
import com.xkrs.dao.SpecDao;
import com.xkrs.model.entity.SpecEntity;
import org.apache.http.util.TextUtils;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import javax.persistence.criteria.Predicate;
import java.util.ArrayList;
import java.util.List;
/**
* @Author: XinYi Song
* @Date: 2022/1/19 13:56
*/
@Component
public class SpecQuery {
@Resource
private SpecDao specDao;
/**
* 动态多条件查询规格信息
*
* @return
*/
public List<SpecEntity> selectSpec(String machineTypeNo, String inspectionItemCode, String craftItemName) {
Specification<SpecEntity> specification = (root, criteriaQuery, criteriaBuilder) -> {
List<Predicate> list = new ArrayList<>();
if (!TextUtils.isEmpty(machineTypeNo)) {
list.add(criteriaBuilder.equal(root.get("machineTypeNo").as(String.class), machineTypeNo));
}
if (!TextUtils.isEmpty(inspectionItemCode)) {
list.add(criteriaBuilder.equal(root.get("inspectionItemCode").as(String.class), inspectionItemCode));
}
if (!TextUtils.isEmpty(craftItemName)) {
list.add(criteriaBuilder.equal(root.get("craftItemName").as(String.class), craftItemName));
}
Predicate[] predicates = new Predicate[list.size()];
return criteriaBuilder.and(list.toArray(predicates));
};
return specDao.findAll(specification);
}
}

View File

@ -6,7 +6,7 @@ server.port = 6810
#spring.datasource.password = 123456 #spring.datasource.password = 123456
#spring.datasource.driverClassName = org.postgresql.Driver #spring.datasource.driverClassName = org.postgresql.Driver
spring.datasource.url = jdbc:mysql://118.24.27.47:3306/data_model?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai spring.datasource.url = jdbc:mysql://118.24.27.47:3306/data_model?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
spring.datasource.userName = sxy spring.datasource.userName = sxy
spring.datasource.password = sxy123 spring.datasource.password = sxy123
spring.datasource.driverClassName = com.mysql.cj.jdbc.Driver spring.datasource.driverClassName = com.mysql.cj.jdbc.Driver