yuhdemo/cms/jnpf-mes/jnpf-example-controller/src/main/java/jnpf/controller/QaMaterialCheckDataController.java
2026-01-30 16:22:13 +08:00

362 lines
16 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package jnpf.controller;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
import cn.xuyanwu.spring.file.storage.FileInfo;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jnpf.base.ActionResult;
import jnpf.base.UserInfo;
import jnpf.base.model.ColumnDataModel;
import jnpf.base.util.VisualUtils;
import jnpf.base.vo.DownloadVO;
import jnpf.config.ConfigValueUtil;
import jnpf.model.materialcheckdata.QaMaterialCheckDataConstant;
import jnpf.model.materialcheckdata.QaMaterialCheckDataForm;
import jnpf.model.materialcheckdata.QaMaterialCheckDataPagination;
import jnpf.model.materialcheckdata.QaSchemeBaseModel;
import jnpf.model.qafinalcheckdata.QaFinalCheckDataConstant;
import jnpf.model.qafinalcheckdata.QaFinalCheckDataPagination;
import jnpf.model.visualJson.config.HeaderModel;
import jnpf.service.*;
import jnpf.entity.*;
import jnpf.util.*;
import lombok.Cleanup;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.*;
import jnpf.base.vo.PageListVO;
import jnpf.base.vo.PaginationVO;
import java.io.IOException;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
/**
* 原材料检验
* @版本: V3.5
* @版权: 引迈信息技术有限公司https://www.jnpfsoft.com
* @作者: JNPF开发平台组
* @日期: 2024-10-03
*/
@Slf4j
@RestController
@Tag(name = "原材料检验" , description = "example")
@RequestMapping("/api/example/Qa_material_check_data")
public class QaMaterialCheckDataController {
@Autowired
private GeneraterSwapUtil generaterSwapUtil;
@Autowired
private UserProvider userProvider;
@Autowired
private QaMaterialCheckDataService qaMaterialCheckDataService;
@Autowired
private QaMaterialCheckDataTwService qaMaterialCheckDataTwService;
@Autowired
private QaMaterialCheckDataThService qaMaterialCheckDataThService;
@Autowired
private ConfigValueUtil configValueUtil;
/**
* 列表
*
* @param pageInfo
* @return
*/
@Operation(summary = "获取列表")
@PostMapping("/getList")
public ActionResult list(@RequestBody QaMaterialCheckDataPagination pageInfo)throws IOException{
List<QaMaterialCheckDataForm> list= qaMaterialCheckDataService.getList(pageInfo);
//返回对象
PageListVO vo = new PageListVO();
vo.setList(list);
PaginationVO page = JsonUtil.getJsonToBean(pageInfo, PaginationVO.class);
vo.setPagination(page);
return ActionResult.success(vo);
}
/**
* 创建
*
* @param qaMaterialCheckDataForm
* @return
*/
@PostMapping()
@Operation(summary = "创建")
public ActionResult create(@RequestBody @Valid QaMaterialCheckDataForm qaMaterialCheckDataForm) {
String b = qaMaterialCheckDataService.checkForm(qaMaterialCheckDataForm,0);
if (StringUtil.isNotEmpty(b)){
return ActionResult.fail(b );
}
try{
qaMaterialCheckDataService.saveOrUpdate(qaMaterialCheckDataForm, null ,true);
}catch(Exception e){
log.error("####################### 新增数据失败 ", e);
return ActionResult.fail("新增数据失败");
}
return ActionResult.success("创建成功");
}
/**
* 编辑
* @param id
* @param qaMaterialCheckDataForm
* @return
*/
@PutMapping("/{id}")
@Operation(summary = "更新")
public ActionResult update(@PathVariable("id") String id,@RequestBody @Valid QaMaterialCheckDataForm qaMaterialCheckDataForm,
@RequestParam(value = "isImport", required = false) boolean isImport){
if (!isImport) {
String b = qaMaterialCheckDataService.checkForm(qaMaterialCheckDataForm,1);
if (StringUtil.isNotEmpty(b)){
return ActionResult.fail(b );
}
}
QaMaterialCheckDataEntity entity= qaMaterialCheckDataService.getInfo(id);
if(entity!=null){
try{
qaMaterialCheckDataService.saveOrUpdate(qaMaterialCheckDataForm,id,false);
}catch(Exception e){
return ActionResult.fail("修改数据失败");
}
return ActionResult.success("更新成功");
}else{
return ActionResult.fail("更新失败,数据不存在");
}
}
/**
* 删除
* @param id
* @return
*/
@Operation(summary = "删除")
@DeleteMapping("/{id}")
@Transactional
public ActionResult delete(@PathVariable("id") String id){
QaMaterialCheckDataEntity entity= qaMaterialCheckDataService.getInfo(id);
if(entity!=null){
//主表数据删除
qaMaterialCheckDataService.delete(entity);
QueryWrapper<QaMaterialCheckDataTwEntity> queryWrapperQa_material_check_data_tw=new QueryWrapper<>();
queryWrapperQa_material_check_data_tw.lambda().eq(QaMaterialCheckDataTwEntity::getMaterialCheckDataId,entity.getId());
//子表数据删除
qaMaterialCheckDataTwService.remove(queryWrapperQa_material_check_data_tw);
QueryWrapper<QaMaterialCheckDataThEntity> queryWrapperQa_material_check_data_th=new QueryWrapper<>();
queryWrapperQa_material_check_data_th.lambda().eq(QaMaterialCheckDataThEntity::getMaterialCheckDataId,entity.getId());
//子表数据删除
qaMaterialCheckDataThService.remove(queryWrapperQa_material_check_data_th);
}
return ActionResult.success("删除成功");
}
/**
* 表单信息(详情页)
* 详情页面使用-转换数据
* @param id
* @return
*/
@Operation(summary = "表单信息(详情页)")
@GetMapping("/detail/{id}")
public ActionResult detailInfo(@PathVariable("id") String id){
QaMaterialCheckDataEntity entity= qaMaterialCheckDataService.getInfo(id);
if(entity==null){
return ActionResult.fail("表单数据不存在!");
}
Map<String, Object> qa_material_check_dataMap=JsonUtil.entityToMap(entity);
qa_material_check_dataMap.put("id", qa_material_check_dataMap.get("id"));
//副表数据
//子表数据
List<QaMaterialCheckDataTwEntity> qa_material_check_data_twList = entity.getQa_material_check_data_tw();
qa_material_check_dataMap.put("tableField120",JsonUtil.getJsonToList(JsonUtil.getListToJsonArray(qa_material_check_data_twList)));
qa_material_check_dataMap.put("qa_material_check_data_twList",JsonUtil.getJsonToList(JsonUtil.getListToJsonArray(qa_material_check_data_twList)));
List<QaMaterialCheckDataThEntity> qa_material_check_data_thList = entity.getQa_material_check_data_th();
qa_material_check_dataMap.put("tableField126",JsonUtil.getJsonToList(JsonUtil.getListToJsonArray(qa_material_check_data_thList)));
qa_material_check_dataMap.put("qa_material_check_data_thList",JsonUtil.getJsonToList(JsonUtil.getListToJsonArray(qa_material_check_data_thList)));
qa_material_check_dataMap = generaterSwapUtil.swapDataDetail(qa_material_check_dataMap, QaMaterialCheckDataConstant.getFormData(),"611557365761712197",false);
return ActionResult.success(qa_material_check_dataMap);
}
/**
* 获取详情(编辑页)
* 编辑页面使用-不转换数据
* @param id
* @return
*/
@Operation(summary = "信息")
@GetMapping("/{id}")
public ActionResult info(@PathVariable("id") String id){
QaMaterialCheckDataEntity entity= qaMaterialCheckDataService.getInfo(id);
if(entity==null){
return ActionResult.fail("表单数据不存在!");
}
Map<String, Object> qa_material_check_dataMap=JsonUtil.entityToMap(entity);
qa_material_check_dataMap.put("id", qa_material_check_dataMap.get("id"));
//副表数据
//子表数据
List<QaMaterialCheckDataTwEntity> qa_material_check_data_twList = entity.getQa_material_check_data_tw();
qa_material_check_dataMap.put("tableField120",JsonUtil.getJsonToList(JsonUtil.getListToJsonArray(qa_material_check_data_twList)));
qa_material_check_dataMap.put("qa_material_check_data_twList",JsonUtil.getJsonToList(JsonUtil.getListToJsonArray(qa_material_check_data_twList)));
List<QaMaterialCheckDataThEntity> qa_material_check_data_thList = entity.getQa_material_check_data_th();
qa_material_check_dataMap.put("tableField126",JsonUtil.getJsonToList(JsonUtil.getListToJsonArray(qa_material_check_data_thList)));
qa_material_check_dataMap.put("qa_material_check_data_thList",JsonUtil.getJsonToList(JsonUtil.getListToJsonArray(qa_material_check_data_thList)));
qa_material_check_dataMap = generaterSwapUtil.swapDataForm(qa_material_check_dataMap, QaMaterialCheckDataConstant.getFormData(), QaMaterialCheckDataConstant.TABLEFIELDKEY, QaMaterialCheckDataConstant.TABLERENAMES);
return ActionResult.success(qa_material_check_dataMap);
}
/**
* 质检方案信息
* @param materialCode
* @return
*/
@Operation(summary = "质检方案信息")
@PostMapping("/item/{materialCode}")
public ActionResult item(@PathVariable("materialCode") String materialCode, @RequestBody @Valid QaMaterialCheckDataForm qaMaterialCheckDataForm){
QaMaterialCheckDataForm param = qaMaterialCheckDataForm;
param.setMaterialCode(materialCode);
List<QaSchemeBaseModel> result= qaMaterialCheckDataService.getItemInfo(param);
return ActionResult.success(result);
}
/**
* 导出Excel
*
* @return
*/
@Operation(summary = "导出Excel")
@PostMapping("/Actions/Export")
public ActionResult Export(@RequestBody QaMaterialCheckDataPagination qaMaterialCheckDataPagination) throws IOException {
if (StringUtil.isEmpty(qaMaterialCheckDataPagination.getSelectKey())){
return ActionResult.fail("请选择导出字段");
}
List<QaMaterialCheckDataForm> list = qaMaterialCheckDataService.getList(qaMaterialCheckDataPagination);
List<Map<String, Object>> realList=new ArrayList<>();
for (QaMaterialCheckDataForm entity : list) {
Map<String, Object> qaFinalCheckDataMap=JsonUtil.entityToMap(entity);
qaFinalCheckDataMap.put("id", qaFinalCheckDataMap.get("id"));
realList.add(qaFinalCheckDataMap);
}
//数据转换
realList = generaterSwapUtil.swapDataList(realList, QaFinalCheckDataConstant.getFormData(), QaFinalCheckDataConstant.getColumnData(), qaMaterialCheckDataPagination.getModuleId(),false);
String[]keys=!StringUtil.isEmpty(qaMaterialCheckDataPagination.getSelectKey())?qaMaterialCheckDataPagination.getSelectKey():new String[0];
UserInfo userInfo=userProvider.get();
DownloadVO vo=this.creatModelExcel(configValueUtil.getTemporaryFilePath(),realList,keys,userInfo);
return ActionResult.success(vo);
}
/**
* 导出表格方法
*/
public DownloadVO creatModelExcel(String path,List<Map<String, Object>>list,String[]keys,UserInfo userInfo){
DownloadVO vo=DownloadVO.builder().build();
List<ExcelExportEntity> entitys=new ArrayList<>();
if(keys.length>0){
for(String key:keys){
switch(key){
case "supplierName" :
entitys.add(new ExcelExportEntity("供应商" ,"supplierName"));
break;
case "materialName" :
entitys.add(new ExcelExportEntity("原材料名称" ,"materialName"));
break;
case "model" :
entitys.add(new ExcelExportEntity("规格" ,"model"));
break;
case "productLot" :
entitys.add(new ExcelExportEntity("生产批号" ,"productLot"));
break;
case "checkDate" :
entitys.add(new ExcelExportEntity("检验日期" ,"checkDate"));
break;
case "checkResult" :
entitys.add(new ExcelExportEntity("检验结果" ,"checkResult"));
break;
case "processResult" :
entitys.add(new ExcelExportEntity("处理结果" ,"processResult"));
break;
case "problemReason" :
entitys.add(new ExcelExportEntity("问题原因" ,"problemReason"));
break;
case "remark" :
entitys.add(new ExcelExportEntity("备注" ,"remark"));
break;
default:
break;
}
}
}
ExportParams exportParams = new ExportParams(null, "表单信息");
exportParams.setType(ExcelType.XSSF);
try{
@Cleanup Workbook workbook = new HSSFWorkbook();
if (entitys.size()>0){
if (list.size()==0){
list.add(new HashMap<>());
}
//去除空数据
List<Map<String, Object>> dataList = new ArrayList<>();
for (Map<String, Object> map : list) {
int i = 0;
for (String key : keys) {
//子表
if (key.toLowerCase().startsWith("tablefield")) {
String tableField = key.substring(0, key.indexOf("-" ));
String field = key.substring(key.indexOf("-" ) + 1);
Object o = map.get(tableField);
if (o != null) {
List<Map<String, Object>> childList = (List<Map<String, Object>>) o;
for (Map<String, Object> childMap : childList) {
if (childMap.get(field) != null) {
i++;
}
}
}
} else {
Object o = map.get(key);
if (o != null) {
i++;
}
}
}
if (i > 0) {
dataList.add(map);
}
}
//复杂表头-表头和数据处理
ColumnDataModel columnDataModel = JsonUtil.getJsonToBean(QaFinalCheckDataConstant.getColumnData(), ColumnDataModel.class);
List<HeaderModel> complexHeaderList = columnDataModel.getComplexHeaderList();
//复杂表头-表头和数据处理
if (!Objects.equals(columnDataModel.getType(), 3) && !Objects.equals(columnDataModel.getType(), 5)) {
entitys = VisualUtils.complexHeaderHandel(entitys, complexHeaderList);
dataList = VisualUtils.complexHeaderDataHandel(dataList, complexHeaderList);
}
workbook = ExcelExportUtil.exportExcel(exportParams, entitys, dataList);
}
String fileName = "原材料检验表单信息_" + DateUtil.dateNow("yyyyMMddHHmmss") + ".xlsx";
MultipartFile multipartFile = ExcelUtil.workbookToCommonsMultipartFile(workbook, fileName);
String temporaryFilePath = configValueUtil.getTemporaryFilePath();
FileInfo fileInfo = FileUploadUtils.uploadFile(multipartFile, temporaryFilePath, fileName);
vo.setName(fileInfo.getFilename());
vo.setUrl(UploaderUtil.uploaderFile(fileInfo.getFilename() + "#" + "Temporary") + "&name=" + fileName);
} catch (Exception e) {
log.error("信息导出Excel错误:{}", e.getMessage());
e.printStackTrace();
}
return vo;
}
}