package com.qianwen.smartman.modules.tool.service.impl;
|
|
import java.lang.reflect.Field;
|
import java.util.ArrayList;
|
import java.util.Arrays;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.Objects;
|
import java.util.stream.Collectors;
|
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.stereotype.Service;
|
import org.springframework.web.multipart.MultipartFile;
|
|
import com.alibaba.excel.annotation.ExcelProperty;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.qianwen.core.log.exception.ServiceException;
|
import com.qianwen.core.mp.base.BaseServiceImpl;
|
import com.qianwen.core.mp.support.Condition;
|
import com.qianwen.core.mp.support.Query;
|
import com.qianwen.core.oss.model.BladeFile;
|
import com.qianwen.core.tool.utils.DateUtil;
|
import com.qianwen.core.tool.utils.Func;
|
import com.qianwen.smartman.common.constant.ExcelConstant;
|
import com.qianwen.smartman.common.utils.MessageUtils;
|
import com.qianwen.smartman.modules.cps.entity.Employee;
|
import com.qianwen.smartman.modules.cps.service.IEmployeeService;
|
import com.qianwen.smartman.modules.mdc.utils.ExcelStrategyUtil;
|
import com.qianwen.smartman.modules.resource.builder.oss.OssBuilder;
|
import com.qianwen.smartman.modules.tool.convert.ToolChangeRecordConvert;
|
import com.qianwen.smartman.modules.tool.entity.Tool;
|
import com.qianwen.smartman.modules.tool.entity.ToolChangeRecord;
|
import com.qianwen.smartman.modules.tool.entity.ToolParameter;
|
import com.qianwen.smartman.modules.tool.enums.ToolLifeCountMethodEnum;
|
import com.qianwen.smartman.modules.tool.enums.ToolOperationTypeEnum;
|
import com.qianwen.smartman.modules.tool.excel.ToolChangeRecordExcel;
|
import com.qianwen.smartman.modules.tool.mapper.ToolChangeRecordMapper;
|
import com.qianwen.smartman.modules.tool.service.IToolCategoryService;
|
import com.qianwen.smartman.modules.tool.service.IToolChangeRecordService;
|
import com.qianwen.smartman.modules.tool.service.IToolModelService;
|
import com.qianwen.smartman.modules.tool.service.IToolParameterService;
|
import com.qianwen.smartman.modules.tool.vo.ToolChangeRecordQueryVO;
|
import com.qianwen.smartman.modules.tool.vo.ToolChangeRecordVO;
|
|
@Service
|
/* loaded from: blade-api.jar:BOOT-INF/classes/org/springblade/modules/tool/service/impl/ToolChangeRecordServiceImpl.class */
|
public class ToolChangeRecordServiceImpl extends BaseServiceImpl<ToolChangeRecordMapper, ToolChangeRecord> implements IToolChangeRecordService {
|
private static final Logger log = LoggerFactory.getLogger(ToolChangeRecordServiceImpl.class);
|
private final IToolParameterService toolParameterService;
|
private final OssBuilder ossBuilder;
|
private final IEmployeeService employeeService;
|
private final IToolModelService toolModelService;
|
private final IToolCategoryService toolCategoryService;
|
|
|
public ToolChangeRecordServiceImpl(final IToolParameterService toolParameterService, final OssBuilder ossBuilder, final IEmployeeService employeeService, final IToolModelService toolModelService, final IToolCategoryService toolCategoryService) {
|
this.toolParameterService = toolParameterService;
|
this.ossBuilder = ossBuilder;
|
this.employeeService = employeeService;
|
this.toolModelService = toolModelService;
|
this.toolCategoryService = toolCategoryService;
|
}
|
|
@Override // org.springblade.modules.tool.service.IToolChangeRecordService
|
public IPage<ToolChangeRecordVO> pageToolChangeRecord(ToolChangeRecordQueryVO toolChangeRecordQueryVO, Query query) {
|
IPage<ToolChangeRecord> toolChangeRecordIPage = page(Condition.getPage(query),Wrappers.<ToolChangeRecord>lambdaQuery()
|
.eq((Func.isNotEmpty(toolChangeRecordQueryVO.getToolCategoryId()) && !Objects.equals(toolChangeRecordQueryVO.getToolCategoryId(), "1")), ToolChangeRecord::getToolCategoryId, toolChangeRecordQueryVO.getToolCategoryId())
|
|
.likeRight(Func.isNotEmpty(toolChangeRecordQueryVO.getCode()), ToolChangeRecord::getToolCode, toolChangeRecordQueryVO.getCode())
|
.between((Func.isNotEmpty(toolChangeRecordQueryVO.getStartTime()) && Func.isNotEmpty(toolChangeRecordQueryVO.getEndTime())), ToolChangeRecord::getCreateTime, toolChangeRecordQueryVO.getStartTime(), toolChangeRecordQueryVO.getEndTime())
|
.orderByDesc(Arrays.asList(ToolChangeRecord::getCreateTime, ToolChangeRecord::getId)));
|
/*
|
IPage<ToolChangeRecord> toolChangeRecordIPage = page(Condition.getPage(query), (Wrapper) Wrappers.lambdaQuery().eq(Func.isNotEmpty(toolChangeRecordQueryVO.getToolCategoryId()) && !Objects.equals(toolChangeRecordQueryVO.getToolCategoryId(), "1"), (v0) -> {
|
return v0.getToolCategoryId();
|
}, toolChangeRecordQueryVO.getToolCategoryId()).likeRight(Func.isNotEmpty(toolChangeRecordQueryVO.getCode()), (v0) -> {
|
return v0.getToolCode();
|
}, toolChangeRecordQueryVO.getCode()).between(Func.isNotEmpty(toolChangeRecordQueryVO.getStartTime()) && Func.isNotEmpty(toolChangeRecordQueryVO.getEndTime()), (v0) -> {
|
return v0.getCreateTime();
|
}, toolChangeRecordQueryVO.getStartTime(), toolChangeRecordQueryVO.getEndTime()).orderByDesc((v0) -> {
|
return v0.getCreateTime();
|
}, new SFunction[]{(v0) -> {
|
return v0.getId();
|
}}));*/
|
IPage<ToolChangeRecordVO> toolChangeRecordVOIPage = ToolChangeRecordConvert.INSTANCE.convert(toolChangeRecordIPage);
|
toolChangeRecordVOIPage.getRecords().forEach(toolChangeRecordVO -> {
|
toolChangeRecordVO.setOperationType(Func.isNotEmpty(toolChangeRecordVO.getOperationType()) ? ToolOperationTypeEnum.findByCode(Integer.valueOf(toolChangeRecordVO.getOperationType())).getDesc() : null);
|
});
|
return toolChangeRecordVOIPage;
|
}
|
|
@Override // org.springblade.modules.tool.service.IToolChangeRecordService
|
public BladeFile exportToolChangeRecord(ToolChangeRecordQueryVO toolChangeRecordQueryVO) throws Exception {
|
List<List<String>> head = getHead();
|
List<List<Object>> data = getData(toolChangeRecordQueryVO);
|
String fileName = String.format("%s-%s.xlsx", "装卸刀记录表", DateUtil.time());
|
MultipartFile multipartFile = ExcelStrategyUtil.customerStyleExport(fileName, ExcelConstant.SHEET, head, data);
|
return this.ossBuilder.tempTemplate().putFile(multipartFile.getOriginalFilename(), multipartFile);
|
}
|
|
public List<List<String>> getHead() {
|
List<List<String>> list = new ArrayList<>();
|
ToolChangeRecordExcel toolChangeRecordExcel = new ToolChangeRecordExcel();
|
Field[] fields = toolChangeRecordExcel.getClass().getDeclaredFields();
|
for (Field field : fields) {
|
field.setAccessible(true);
|
ExcelProperty annotation = field.getAnnotation(ExcelProperty.class);
|
List<String> head = new ArrayList<>();
|
head.add(annotation.value()[0]);
|
list.add(head);
|
}
|
|
List<ToolParameter> toolParameterList = this.toolParameterService.list(Wrappers.<ToolParameter>lambdaQuery().orderByAsc(ToolParameter::getToolParameterCode));
|
List<String> toolParameterNameList = toolParameterList.stream().map(ToolParameter::getToolParameterName).collect(Collectors.toList());
|
/*
|
List<ToolParameter> toolParameterList = this.toolParameterService.list((Wrapper) Wrappers.lambdaQuery().orderByAsc((v0) -> {
|
return v0.getToolParameterCode();
|
}));
|
List<String> toolParameterNameList = (List) toolParameterList.stream().map((v0) -> {
|
return v0.getToolParameterName();
|
}).collect(Collectors.toList());*/
|
Map<String, String> nameUnitMap = toolParameterList.stream().filter(item -> {
|
return Func.isNotEmpty(item.getToolParameterUnit());
|
}).collect(Collectors.toMap((v0) -> {
|
return v0.getToolParameterName();
|
}, (v0) -> {
|
return v0.getToolParameterUnit();
|
}));
|
for (String name : toolParameterNameList) {
|
List<String> head2 = new ArrayList<>();
|
head2.add(nameUnitMap.containsKey(name) ? name + "(" + nameUnitMap.get(name) + ")" : name);
|
list.add(head2);
|
}
|
return list;
|
}
|
|
public List<List<Object>> getData(ToolChangeRecordQueryVO toolChangeRecordQueryVO) throws IllegalAccessException, NoSuchFieldException {
|
List<ToolChangeRecord> toolChangeRecords = list(Wrappers.<ToolChangeRecord>lambdaQuery()
|
.eq((Func.isNotEmpty(toolChangeRecordQueryVO.getToolCategoryId()) && !Objects.equals(toolChangeRecordQueryVO.getToolCategoryId(), "1")), ToolChangeRecord::getToolCategoryId, toolChangeRecordQueryVO.getToolCategoryId())
|
.likeRight(Func.isNotEmpty(toolChangeRecordQueryVO.getCode()), ToolChangeRecord::getToolCode, toolChangeRecordQueryVO.getCode())
|
.between((Func.isNotEmpty(toolChangeRecordQueryVO.getStartTime()) && Func.isNotEmpty(toolChangeRecordQueryVO.getEndTime())), ToolChangeRecord::getCreateTime, toolChangeRecordQueryVO.getStartTime(), toolChangeRecordQueryVO.getEndTime())
|
.orderByDesc(Arrays.asList(ToolChangeRecord::getCreateTime, ToolChangeRecord::getId) ));
|
/*
|
List<ToolChangeRecord> toolChangeRecords = list((Wrapper) Wrappers.lambdaQuery().eq(Func.isNotEmpty(toolChangeRecordQueryVO.getToolCategoryId()) && !Objects.equals(toolChangeRecordQueryVO.getToolCategoryId(), "1"), (v0) -> {
|
return v0.getToolCategoryId();
|
}, toolChangeRecordQueryVO.getToolCategoryId()).likeRight(Func.isNotEmpty(toolChangeRecordQueryVO.getCode()), (v0) -> {
|
return v0.getToolCode();
|
}, toolChangeRecordQueryVO.getCode()).between(Func.isNotEmpty(toolChangeRecordQueryVO.getStartTime()) && Func.isNotEmpty(toolChangeRecordQueryVO.getEndTime()), (v0) -> {
|
return v0.getCreateTime();
|
}, toolChangeRecordQueryVO.getStartTime(), toolChangeRecordQueryVO.getEndTime()).orderByDesc((v0) -> {
|
return v0.getCreateTime();
|
}, new SFunction[]{(v0) -> {
|
return v0.getId();
|
}}));*/
|
List<String> toolParameterCodeList = this.toolParameterService.list(Wrappers.<ToolParameter>lambdaQuery().orderByAsc(ToolParameter::getToolParameterCode)).stream().map(ToolParameter::getToolParameterCode).collect(Collectors.toList());
|
/*
|
List<String> toolParameterCodeList = (List) this.toolParameterService.list((Wrapper) Wrappers.lambdaQuery().orderByAsc((v0) -> {
|
return v0.getToolParameterCode();
|
})).stream().map((v0) -> {
|
return v0.getToolParameterCode();
|
}).collect(Collectors.toList());*/
|
List<List<Object>> list = new ArrayList<>();
|
for (ToolChangeRecord toolChangeRecord : toolChangeRecords) {
|
ToolChangeRecordExcel toolChangeRecordExcel = ToolChangeRecordConvert.INSTANCE.convertToExcel(toolChangeRecord);
|
toolChangeRecordExcel.setLifeCountMethod(Func.isNotEmpty(toolChangeRecord.getLifeCountMethod()) ? ToolLifeCountMethodEnum.findByCode(toolChangeRecord.getLifeCountMethod()).getDesc() : null);
|
toolChangeRecordExcel.setOperationType(Func.isNotEmpty(toolChangeRecord.getOperationType()) ? ToolOperationTypeEnum.findByCode(toolChangeRecord.getOperationType()).getDesc() : null);
|
List<Object> objectList = new ArrayList<>();
|
Field[] fields = toolChangeRecordExcel.getClass().getDeclaredFields();
|
for (Field field : fields) {
|
field.setAccessible(true);
|
objectList.add(field.get(toolChangeRecordExcel));
|
}
|
for (String code : toolParameterCodeList) {
|
Field field2 = ToolChangeRecord.class.getDeclaredField(code);
|
field2.setAccessible(true);
|
Object codeValue = field2.get(toolChangeRecord);
|
objectList.add(codeValue);
|
}
|
list.add(objectList);
|
}
|
return list;
|
}
|
|
@Override // org.springblade.modules.tool.service.IToolChangeRecordService
|
public void dischargeToolChangeRecord(List<Tool> toolManageList, Long employeeId) {
|
List<ToolChangeRecord> toolChangeRecords = ToolChangeRecordConvert.INSTANCE.toolToConvert(toolManageList);
|
Employee employee = (Employee) this.employeeService.getById(employeeId);
|
Map<Long, String> modelNameMap = this.toolModelService.list().stream().collect(Collectors.toMap((v0) -> {
|
return v0.getId();
|
}, (v0) -> {
|
return v0.getModel();
|
}));
|
Map<Long, String> categoryNameMap = this.toolCategoryService.list().stream().collect(Collectors.toMap((v0) -> {
|
return v0.getId();
|
}, (v0) -> {
|
return v0.getName();
|
}));
|
if (Func.isEmpty(employee)) {
|
throw new ServiceException(MessageUtils.message("sys.outer.user.not.bind.employee", new Object[0]));
|
}
|
toolChangeRecords.forEach(toolChangeRecord -> {
|
toolChangeRecord.setToolModel((String) modelNameMap.get(toolChangeRecord.getToolModelId()));
|
toolChangeRecord.setToolCategory((String) categoryNameMap.get(toolChangeRecord.getToolCategoryId()));
|
toolChangeRecord.setEmployeeId(employeeId);
|
toolChangeRecord.setEmployeeName(employee.getName());
|
toolChangeRecord.setOperationType(ToolOperationTypeEnum.DISCHARGE.getCode());
|
});
|
saveBatch(toolChangeRecords);
|
}
|
|
@Override // org.springblade.modules.tool.service.IToolChangeRecordService
|
public void equipmentToolChangeRecord(Tool toolManage, Long employeeId) {
|
Employee employee = (Employee) this.employeeService.getById(employeeId);
|
Map<Long, String> modelNameMap = this.toolModelService.list().stream().collect(Collectors.toMap((v0) -> {
|
return v0.getId();
|
}, (v0) -> {
|
return v0.getModel();
|
}));
|
Map<Long, String> categoryNameMap = this.toolCategoryService.list().stream().collect(Collectors.toMap((v0) -> {
|
return v0.getId();
|
}, (v0) -> {
|
return v0.getName();
|
}));
|
if (Func.isEmpty(employee)) {
|
throw new ServiceException(MessageUtils.message("sys.outer.user.not.bind.employee", new Object[0]));
|
}
|
ToolChangeRecord toolChangeRecord = ToolChangeRecordConvert.INSTANCE.toolToConvert(toolManage);
|
toolChangeRecord.setEmployeeName(employee.getName()).setEmployeeId(employee.getId()).setOperationType(ToolOperationTypeEnum.EQUIP.getCode());
|
toolChangeRecord.setToolModel(modelNameMap.get(toolChangeRecord.getToolModelId()));
|
toolChangeRecord.setToolCategory(categoryNameMap.get(toolChangeRecord.getToolCategoryId()));
|
save(toolChangeRecord);
|
}
|
}
|