package com.zt.life.modules.mainPart.basicInfo.service;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.zt.common.constant.Constant;
|
import com.zt.common.service.BaseService;
|
import com.zt.common.utils.CacheUtils;
|
import com.zt.common.utils.CommonUtils;
|
import com.zt.common.utils.TreeUtils;
|
import com.zt.common.utils.UUIDUtil;
|
import com.zt.core.shiro.ImportUtil;
|
import com.zt.life.modules.mainPart.basicInfo.dao.XhProductModelDao;
|
import com.zt.life.modules.mainPart.basicInfo.model.ParamData;
|
import com.zt.life.modules.mainPart.basicInfo.model.ProductImg;
|
import com.zt.life.modules.mainPart.basicInfo.model.XhProductModel;
|
import com.zt.life.modules.mainPart.sysPictureBase.service.SysPictureBaseService;
|
import com.zt.modules.sys.dto.DictTypeDto;
|
import org.apache.commons.lang3.StringUtils;
|
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
import org.apache.poi.ss.usermodel.Row;
|
import org.apache.poi.ss.usermodel.Sheet;
|
import org.apache.poi.ss.usermodel.Workbook;
|
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import com.zt.common.db.query.QueryFilter;
|
import org.springframework.web.multipart.MultipartFile;
|
|
import java.util.*;
|
|
|
/**
|
* product_model
|
*
|
* @author zt generator
|
* @since 1.0.0 2024-02-29
|
*/
|
@Service
|
public class XhProductModelService extends BaseService<XhProductModelDao, XhProductModel> {
|
@Autowired
|
ParamDataService paramDataService;
|
@Autowired
|
SysPictureBaseService sysPictureBaseService;
|
|
/**
|
* 分页查询
|
*
|
* @param queryFilter
|
* @return
|
*/
|
public List<XhProductModel> page(QueryFilter queryFilter) {
|
List<XhProductModel> list = baseDao.getList(queryFilter.getQueryParams());
|
return list;
|
}
|
|
/**
|
* 删除
|
*
|
* @param ids
|
*/
|
public void delete(Long[] ids) {
|
super.deleteLogic(ids);
|
}
|
|
public List<XhProductModel> getAllTree(Boolean showXdy, Integer ztShow) {
|
List<XhProductModel> productList = null;
|
if (showXdy) {
|
productList = baseDao.selectList(new QueryWrapper<XhProductModel>().eq(Constant.TableColumn.IS_DELETE,
|
Constant.Bool.NO).lt("product_type", 5).orderByAsc(Constant.TableColumn.SORT));
|
} else {
|
if (ztShow == 1) {
|
productList = baseDao.selectList(new QueryWrapper<XhProductModel>().eq(Constant.TableColumn.IS_DELETE,
|
Constant.Bool.NO).lt("product_type", 5).ne("product_type", 10).orderByAsc(Constant.TableColumn.SORT));
|
} else if (ztShow == 2) {
|
productList = baseDao.selectList(new QueryWrapper<XhProductModel>().eq(Constant.TableColumn.IS_DELETE,
|
Constant.Bool.NO).lt("product_type", 4).ne("product_type", 10).orderByAsc(Constant.TableColumn.SORT));
|
} else if (ztShow == 3) {
|
productList = baseDao.selectList(new QueryWrapper<XhProductModel>().eq(Constant.TableColumn.IS_DELETE,
|
Constant.Bool.NO).lt("product_type", 3).ne("product_type", 10).orderByAsc(Constant.TableColumn.SORT));
|
}
|
|
}
|
return TreeUtils.build(productList);
|
}
|
|
public Integer getNo(Long pid, String productType) {
|
if (baseDao.getNo(pid, productType) == null) {
|
return 0;
|
}
|
return baseDao.getNo(pid, productType);
|
}
|
|
public List<XhProductModel> getProductList() {
|
List<XhProductModel> ProductList = baseDao.getProductList();
|
return TreeUtils.build(ProductList);
|
}
|
|
public List<ProductImg> getProduct(Long productId) {
|
XhProductModel model = this.get(productId);
|
Long parentId = model.getPid();
|
return baseDao.getProduct(productId, parentId);
|
}
|
|
public List<XhProductModel> getTaskProductList() {
|
return baseDao.getTaskProductList();
|
}
|
|
public List<Map<String, Object>> importProductExcel(MultipartFile mutFile, String progressId, Long shipId) {
|
int count = 0;
|
Date beginDate = new Date();
|
List<Map<String, Object>> list = new ArrayList<>();//存储所有的导入状态
|
Map<String, Object> map;//存储每一行的状态
|
Integer sum = 0; // 总共的条数
|
Integer suc = 0; // 成功的条数
|
Integer err = 0; // 失败的条数
|
int row1 = 0;
|
Map<String, Object> errMap = new HashMap<>();
|
Map<String, Integer> reliabType = new HashMap<>();
|
reliabType.put("指数分布", 1);
|
reliabType.put("二项分布", 2);
|
reliabType.put("威布尔分布", 3);
|
Map<String, Integer> repairType = new HashMap<>();
|
repairType.put("指数分布", 1);
|
repairType.put("威布尔分布", 2);
|
Map<String, Integer> isOrNot = new HashMap<>();
|
isOrNot.put("是", 1);
|
isOrNot.put("否", 0);
|
|
//获取是否有数据,如果有则删除数据
|
List<XhProductModel> productList = this.getByShipId(shipId);
|
List<ParamData> dataList = paramDataService.getByShipId(shipId);
|
if (productList.size() > 0) {
|
this.deleteByShipId(shipId);
|
}
|
if (dataList.size()>0){
|
paramDataService.deleteByShipId(shipId);
|
}
|
|
try {
|
// 获取导入文件的后缀名
|
String fileName = mutFile.getOriginalFilename();
|
Workbook workbook = null;
|
//解决excel版本问题
|
if (fileName != null && fileName.endsWith(".xls")) {
|
workbook = new HSSFWorkbook(mutFile.getInputStream());
|
} else if (fileName != null && fileName.endsWith(".xlsx")) {
|
workbook = new XSSFWorkbook(mutFile.getInputStream());
|
}
|
assert workbook != null; //断言如果[boolean表达式]为true,则程序继续执行。 如果为false,则程序抛出AssertionError,并终止执行。
|
int sheets = workbook.getNumberOfSheets();
|
|
//List<LifeManagement> lifeManagementList = new ArrayList<LifeManagement>();
|
String xt = null;
|
String fxt = null;
|
Long xtId = null;
|
Long fxtId = null;
|
|
|
//导入预计参数
|
ParamData itemEntity1 = new ParamData();
|
itemEntity1.setShipId(shipId);
|
itemEntity1.setProductId(shipId);
|
itemEntity1.setPageCode("expect");
|
paramDataService.insert(itemEntity1);
|
|
for (int i = 0; i < sheets; i++) {
|
Sheet sheet = workbook.getSheetAt(i);
|
int num = sheet.getLastRowNum(); // 一共有多少行
|
String sheetName = sheet.getSheetName(); //获取当前sheet名称
|
for (int j = 1; j <= num; j++) {
|
CacheUtils.put(progressId, "speed", CommonUtils.getPercent(j, num));
|
CacheUtils.put(progressId, "msg", "共" + num + "行,已完成第" + j + "行");
|
DictTypeDto lifeManagement = new DictTypeDto();
|
boolean isToggleXt = false;
|
boolean isToggleFxt = false;
|
row1 = j + 1;
|
String pattern = "yyyy-MM-dd";
|
Row row = sheet.getRow(row1);
|
String sort = com.zt.core.shiro.ImportUtil.getCellValue(row, 0, pattern); //序号
|
if (StringUtils.isNotBlank(com.zt.core.shiro.ImportUtil.getCellValue(row, 1, pattern))) {
|
if (!com.zt.core.shiro.ImportUtil.getCellValue(row, 1, pattern).equals(xt)) {
|
isToggleXt = true;
|
xtId = UUIDUtil.generateId();
|
}
|
xt = com.zt.core.shiro.ImportUtil.getCellValue(row, 1, pattern); //系统
|
}
|
|
if (StringUtils.isNotBlank(com.zt.core.shiro.ImportUtil.getCellValue(row, 2, pattern)) && !isToggleXt) {
|
fxt = com.zt.core.shiro.ImportUtil.getCellValue(row, 2, pattern); //分系统
|
fxtId = UUIDUtil.generateId();
|
isToggleFxt = true;
|
} else if (isToggleXt) {
|
if (StringUtils.isNotBlank(com.zt.core.shiro.ImportUtil.getCellValue(row, 2, pattern))) {
|
fxt = com.zt.core.shiro.ImportUtil.getCellValue(row, 2, pattern); //分系统
|
fxtId = UUIDUtil.generateId();
|
isToggleFxt = true;
|
} else {
|
fxt = null;
|
isToggleFxt = true;
|
}
|
}
|
|
String sb = com.zt.core.shiro.ImportUtil.getCellValue(row, 3, pattern); //设备
|
String reliabDistribType = com.zt.core.shiro.ImportUtil.getCellValue(row, 4, pattern); //可靠性分布类型
|
String basicJoinCompute = com.zt.core.shiro.ImportUtil.getCellValue(row, 5, pattern); //参加计算
|
String basicMtbfRegulate = com.zt.core.shiro.ImportUtil.getCellValue(row, 6, pattern); //mtbf
|
String basicMtbfRegulSuccRate = com.zt.core.shiro.ImportUtil.getCellValue(row, 7, pattern); //成功率
|
String basicMtbfOperatingRatio = com.zt.core.shiro.ImportUtil.getCellValue(row, 8, pattern); //运行比
|
String taskMtbcfRegulate = com.zt.core.shiro.ImportUtil.getCellValue(row, 9, pattern); //mtbcf
|
String taskMtbcfOtherParams2 = com.zt.core.shiro.ImportUtil.getCellValue(row, 10, pattern); //mtbcf其他参数2
|
String taskMtbcfOtherParams3 = com.zt.core.shiro.ImportUtil.getCellValue(row, 11, pattern); //mtbcf其他参数3
|
String taskMtbcfRegulSuccRate = com.zt.core.shiro.ImportUtil.getCellValue(row, 12, pattern); //mtbcf成功率
|
String taskMtbcfOperatingRatio = com.zt.core.shiro.ImportUtil.getCellValue(row, 13, pattern); //mtbcf运行比
|
String repairable = com.zt.core.shiro.ImportUtil.getCellValue(row, 14, pattern); //是否可维修
|
String repairDistribType = com.zt.core.shiro.ImportUtil.getCellValue(row, 15, pattern); //维修发布类型
|
String repairMttcr = com.zt.core.shiro.ImportUtil.getCellValue(row, 16, pattern); //mttcr
|
String repairMttcrOtherParams2 = com.zt.core.shiro.ImportUtil.getCellValue(row, 17, pattern); //mttcr其他参数2
|
String repairMttcrOtherParams3 = com.zt.core.shiro.ImportUtil.getCellValue(row, 18, pattern); //mttcr其他参数3
|
|
if (StringUtils.isEmpty(sb)) {
|
com.zt.life.util.ImportUtil.updateErrMap(errMap, "没有填写设备名称", sheetName, row1);
|
continue;
|
}
|
if (StringUtils.isEmpty(reliabDistribType)) {
|
com.zt.life.util.ImportUtil.updateErrMap(errMap, "没有填写可靠性分布类型", sheetName, row1);
|
continue;
|
}
|
if (StringUtils.isEmpty(basicJoinCompute)) {
|
com.zt.life.util.ImportUtil.updateErrMap(errMap, "没有填写是否参加计算", sheetName, row1);
|
continue;
|
}
|
if (StringUtils.isEmpty(repairable)) {
|
com.zt.life.util.ImportUtil.updateErrMap(errMap, "没有填写是否可维修", sheetName, row1);
|
continue;
|
}
|
if (StringUtils.isNotBlank(repairable) && StringUtils.isEmpty(repairDistribType)) {
|
com.zt.life.util.ImportUtil.updateErrMap(errMap, "有未填写的维修分布类型", sheetName, row1);
|
continue;
|
}
|
|
//导入型号产品结果库
|
XhProductModel xhProductModel = new XhProductModel();
|
|
|
Long defultImg = null;
|
xhProductModel.setShipId(shipId);
|
|
//添加系统
|
if (isToggleXt) {
|
xhProductModel.setPid(shipId);
|
xhProductModel.setId(xtId);
|
xhProductModel.setName(xt);
|
xhProductModel.setProductType("3");
|
xhProductModel.setSort(Integer.valueOf(sort));
|
defultImg = sysPictureBaseService.getDefaultImg(3).getId();
|
xhProductModel.setOperatImg(defultImg);
|
this.insert(xhProductModel);
|
|
//导入预计参数
|
ParamData itemEntity = new ParamData();
|
itemEntity.setShipId(shipId);
|
itemEntity.setProductId(xtId);
|
itemEntity.setPageCode("expect");
|
paramDataService.insert(itemEntity);
|
}
|
|
|
if (StringUtils.isNotBlank(fxt) && isToggleFxt) {
|
xhProductModel.setPid(xtId);
|
xhProductModel.setId(fxtId);
|
xhProductModel.setName(fxt);
|
xhProductModel.setProductType("4");
|
xhProductModel.setSort(Integer.valueOf(sort));
|
defultImg = sysPictureBaseService.getDefaultImg(4).getId();
|
xhProductModel.setOperatImg(defultImg);
|
this.insert(xhProductModel);
|
|
//导入预计参数
|
ParamData itemEntity = new ParamData();
|
itemEntity.setShipId(shipId);
|
itemEntity.setProductId(fxtId);
|
itemEntity.setPageCode("expect");
|
paramDataService.insert(itemEntity);
|
}
|
|
Long sbId = UUIDUtil.generateId();
|
if (StringUtils.isNotBlank(fxt)) {
|
xhProductModel.setPid(fxtId);
|
} else {
|
xhProductModel.setPid(xtId);
|
}
|
xhProductModel.setId(sbId);
|
xhProductModel.setName(sb);
|
xhProductModel.setProductType("5");
|
xhProductModel.setSort(Integer.valueOf(sort));
|
defultImg = sysPictureBaseService.getDefaultImg(5).getId();
|
xhProductModel.setOperatImg(defultImg);
|
this.insert(xhProductModel);
|
|
//导入预计参数
|
ParamData itemEntity = new ParamData();
|
//绑定设备ID
|
itemEntity.setShipId(shipId);
|
itemEntity.setProductId(sbId);
|
itemEntity.setPageCode("expect");
|
itemEntity.setReliabDistribType(reliabType.get(reliabDistribType));
|
itemEntity.setBasicJoinCompute(isOrNot.get(basicJoinCompute));
|
if (StringUtils.isNotBlank(basicMtbfRegulate)){
|
itemEntity.setBasicMtbfRegulate(Double.valueOf(basicMtbfRegulate));
|
}
|
if (StringUtils.isNotBlank(basicMtbfRegulSuccRate)){
|
itemEntity.setBasicMtbfRegulSuccRate(Double.valueOf(basicMtbfRegulSuccRate));
|
}
|
if (StringUtils.isNotBlank(basicMtbfOperatingRatio)){
|
itemEntity.setBasicMtbfOperatingRatio(Double.valueOf(basicMtbfOperatingRatio));
|
}
|
if (StringUtils.isNotBlank(taskMtbcfRegulate)){
|
itemEntity.setTaskMtbcfRegulate(Double.valueOf(taskMtbcfRegulate));
|
}
|
if (StringUtils.isNotBlank(taskMtbcfOtherParams2)){
|
itemEntity.setTaskMtbcfOtherParams2(Double.valueOf(taskMtbcfOtherParams2));
|
}
|
if (StringUtils.isNotBlank(taskMtbcfOtherParams3)){
|
itemEntity.setTaskMtbcfOtherParams3(Double.valueOf(taskMtbcfOtherParams3));
|
}
|
if (StringUtils.isNotBlank(taskMtbcfRegulSuccRate)){
|
itemEntity.setTaskMtbcfRegulSuccRate(Double.valueOf(taskMtbcfRegulSuccRate));
|
}
|
if (StringUtils.isNotBlank(taskMtbcfOperatingRatio)){
|
itemEntity.setTaskMtbcfOperatingRatio(Double.valueOf(taskMtbcfOperatingRatio));
|
}
|
itemEntity.setRepairable(isOrNot.get(repairable));
|
itemEntity.setRepairDistribType(repairType.get(repairDistribType));
|
if (StringUtils.isNotBlank(repairMttcr)){
|
itemEntity.setRepairMttcr(Double.valueOf(repairMttcr));
|
}
|
if (StringUtils.isNotBlank(repairMttcrOtherParams2)){
|
itemEntity.setRepairMttcrOtherParams2(Double.valueOf(repairMttcrOtherParams2));
|
}
|
if (StringUtils.isNotBlank(repairMttcrOtherParams3)){
|
itemEntity.setRepairMttcrOtherParams3(Double.valueOf(repairMttcrOtherParams3));
|
}
|
paramDataService.insert(itemEntity);
|
}
|
}
|
|
} catch (Exception e) {
|
e.printStackTrace();
|
ImportUtil.updateErrMap(errMap, "导入异常" + e.getMessage(), "", row1);
|
//err++;
|
}
|
/* if (batchList.size() > 0 && err == 0) {
|
super.insertBatch(batchList, 100);
|
baseDao.updateOldId();
|
}
|
if (batchUpdateList.size() > 0) {
|
super.updateBatch(batchUpdateList, 100);
|
}*/
|
Date nowDate = new Date();
|
String msg = "产品模型导入时间:" + CommonUtils.getDatePoor(nowDate, beginDate) + "\r\n";
|
System.out.println(msg);
|
suc = sum - err;
|
map = new HashMap<>();
|
map.put("sum", sum + ""); // 所有导入的条数
|
map.put("suc", suc + ""); // 成功的条数
|
map.put("err", err + ""); // 失败的条数
|
list.add(map);
|
list.add(errMap);
|
return list;
|
}
|
|
private void deleteByShipId(Long shipId) {
|
baseDao.deleteByShipId(shipId);
|
}
|
|
private List<XhProductModel> getByShipId(Long shipId) {
|
return baseDao.getByShipId(shipId);
|
}
|
}
|