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 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 pageToolChangeRecord(ToolChangeRecordQueryVO toolChangeRecordQueryVO, Query query) { IPage toolChangeRecordIPage = page(Condition.getPage(query),Wrappers.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 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 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> head = getHead(); List> 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> getHead() { List> 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 head = new ArrayList<>(); head.add(annotation.value()[0]); list.add(head); } List toolParameterList = this.toolParameterService.list(Wrappers.lambdaQuery().orderByAsc(ToolParameter::getToolParameterCode)); List toolParameterNameList = toolParameterList.stream().map(ToolParameter::getToolParameterName).collect(Collectors.toList()); /* List toolParameterList = this.toolParameterService.list((Wrapper) Wrappers.lambdaQuery().orderByAsc((v0) -> { return v0.getToolParameterCode(); })); List toolParameterNameList = (List) toolParameterList.stream().map((v0) -> { return v0.getToolParameterName(); }).collect(Collectors.toList());*/ Map 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 head2 = new ArrayList<>(); head2.add(nameUnitMap.containsKey(name) ? name + "(" + nameUnitMap.get(name) + ")" : name); list.add(head2); } return list; } public List> getData(ToolChangeRecordQueryVO toolChangeRecordQueryVO) throws IllegalAccessException, NoSuchFieldException { List toolChangeRecords = list(Wrappers.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 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 toolParameterCodeList = this.toolParameterService.list(Wrappers.lambdaQuery().orderByAsc(ToolParameter::getToolParameterCode)).stream().map(ToolParameter::getToolParameterCode).collect(Collectors.toList()); /* List toolParameterCodeList = (List) this.toolParameterService.list((Wrapper) Wrappers.lambdaQuery().orderByAsc((v0) -> { return v0.getToolParameterCode(); })).stream().map((v0) -> { return v0.getToolParameterCode(); }).collect(Collectors.toList());*/ List> 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 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 toolManageList, Long employeeId) { List toolChangeRecords = ToolChangeRecordConvert.INSTANCE.toolToConvert(toolManageList); Employee employee = (Employee) this.employeeService.getById(employeeId); Map modelNameMap = this.toolModelService.list().stream().collect(Collectors.toMap((v0) -> { return v0.getId(); }, (v0) -> { return v0.getModel(); })); Map 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 modelNameMap = this.toolModelService.list().stream().collect(Collectors.toMap((v0) -> { return v0.getId(); }, (v0) -> { return v0.getModel(); })); Map 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); } }