From b283060729a6adce9eb9dca499d6111d393c5d3c Mon Sep 17 00:00:00 2001 From: hyingbo <1363390067@qq.com> Date: 星期五, 05 九月 2025 11:15:56 +0800 Subject: [PATCH] 设备管理来源国家调整为手输 --- lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentServiceImpl.java | 157 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 152 insertions(+), 5 deletions(-) diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentServiceImpl.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentServiceImpl.java index 1dea4cc..6a48d5d 100644 --- a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentServiceImpl.java +++ b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentServiceImpl.java @@ -4,8 +4,11 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.StringPool; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.compress.utils.Lists; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.jeecg.common.constant.CommonConstant; @@ -17,6 +20,7 @@ import org.jeecg.modules.eam.constant.EquipmentMaintenanceStatus; import org.jeecg.modules.eam.constant.EquipmentOperationTagEnum; import org.jeecg.modules.eam.constant.EquipmentRepairStatus; +import org.jeecg.modules.eam.dto.EquipmentCategoryStatistics; import org.jeecg.modules.eam.entity.EamEquipment; import org.jeecg.modules.eam.entity.EamEquipmentExtend; import org.jeecg.modules.eam.mapper.EamEquipmentMapper; @@ -27,12 +31,20 @@ import org.jeecg.modules.eam.vo.EamEquipmentTree; import org.jeecg.modules.eam.vo.EquipmentSearchResult; import org.jeecg.modules.system.entity.MdcProduction; +import org.jeecg.modules.system.entity.SysCategory; import org.jeecg.modules.system.service.IMdcProductionService; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.servlet.ModelAndView; import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -54,6 +66,9 @@ private IEamEquipmentExtendService equipmentExtendService; @Autowired private IMdcProductionService mdcProductionService; + + @Value("${jeecg.path.upload}") + private String upLoadPath; @Override @Transactional(rollbackFor = Exception.class) @@ -103,6 +118,7 @@ @Override public IPage<EamEquipment> queryPageList(IPage<EamEquipment> page, EamEquipmentQuery eamEquipment) { QueryWrapper<EamEquipment> queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("e.del_flag", CommonConstant.DEL_FLAG_0); //鐢ㄦ埛鏁版嵁鏉冮檺 LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); if (sysUser == null) { @@ -136,11 +152,39 @@ if (StringUtils.isNotBlank(eamEquipment.getOperationSystem())) { queryWrapper.like("e.operation_system", eamEquipment.getOperationSystem()); } + if (StringUtils.isNotBlank(eamEquipment.getManufacturingEnterprise())) { + queryWrapper.like("e.manufacturing_enterprise", eamEquipment.getManufacturingEnterprise()); + } + if (StringUtils.isNotBlank(eamEquipment.getOriginalValue())) { + queryWrapper.like("e.original_value", eamEquipment.getOriginalValue()); + } + if (StringUtils.isNotBlank(eamEquipment.getPerformanceIndicators())) { + queryWrapper.like("e.performance_indicators", eamEquipment.getPerformanceIndicators()); + } + if(oConvertUtils.isNotEmpty(eamEquipment.getLeaveFactoryStartTime()) && oConvertUtils.isNotEmpty(eamEquipment.getLeaveFactoryEndTime())){ + queryWrapper.ge("e.leave_factory_date",eamEquipment.getLeaveFactoryStartTime()); + queryWrapper.le("e.leave_factory_date",eamEquipment.getLeaveFactoryEndTime()); + } + if(oConvertUtils.isNotEmpty(eamEquipment.getAcceptanceCheckStartTime()) && oConvertUtils.isNotEmpty(eamEquipment.getAcceptanceCheckEndTime())){ + queryWrapper.ge("e.acceptance_check_date",eamEquipment.getAcceptanceCheckStartTime()); + queryWrapper.le("e.acceptance_check_date",eamEquipment.getAcceptanceCheckEndTime()); + } if (StringUtils.isNotBlank(eamEquipment.getOrgId())) { - queryWrapper.like("e.org_id", eamEquipment.getOrgId()); + //杞﹂棿缂栫爜涓嶄负绌� + List<String> productIds = mdcProductionService.recursionChildren(eamEquipment.getOrgId()); + if (CollectionUtil.isNotEmpty(productIds)) { + //涓嶅仛绛涢�� + queryWrapper.in("e.org_id", productIds); + } } if (StringUtils.isNotBlank(eamEquipment.getEquipmentCategory())) { queryWrapper.like("e.equipment_category", eamEquipment.getEquipmentCategory()); + } + if (StringUtils.isNotBlank(eamEquipment.getEquipmentUse())) { + queryWrapper.like("e.equipment_use", eamEquipment.getEquipmentUse()); + } + if (StringUtils.isNotBlank(eamEquipment.getId())) { + queryWrapper.eq("e.id", eamEquipment.getId()); } //鎺掑簭 if (StringUtils.isNotBlank(eamEquipment.getColumn()) && StringUtils.isNotBlank(eamEquipment.getOrder())) { @@ -152,13 +196,13 @@ if (DataBaseConstant.SQL_ASC.equalsIgnoreCase(eamEquipment.getOrder())) { queryWrapper.orderByAsc("e." + oConvertUtils.camelToUnderline(column)); } else { - queryWrapper.orderByDesc("e." + oConvertUtils.camelToUnderline(column)); + queryWrapper.orderByAsc("e." + oConvertUtils.camelToUnderline(column)); } } else { - queryWrapper.orderByDesc("e.create_time"); + queryWrapper.orderByAsc("e.equipment_code"); } } else { - queryWrapper.orderByDesc("e.create_time"); + queryWrapper.orderByAsc("e.equipment_code"); } IPage<EamEquipment> ipage = eamEquipmentMapper.queryPageList(page, queryWrapper); @@ -166,7 +210,15 @@ } @Override - public List<EquipmentSearchResult> asyncLoadEquipment(String keyword, Integer pageSize) { + public List<EquipmentSearchResult> asyncLoadEquipment(String keyword, Integer pageSize, String id) { + if (StringUtils.isNotBlank(id)) { + EamEquipment eamEquipment = eamEquipmentMapper.selectById(id); + if (eamEquipment != null) { + List<EquipmentSearchResult> resultList = new ArrayList<>(); + resultList.add(new EquipmentSearchResult(eamEquipment)); + return resultList; + } + } IPage<EamEquipment> page = new Page<>(1, pageSize); QueryWrapper<EamEquipment> queryWrapper = new QueryWrapper<>(); //鐢ㄦ埛鏁版嵁鏉冮檺 @@ -186,6 +238,7 @@ queryWrapper.like("equipment_code", keyword); queryWrapper.or().like("equipment_name", keyword); } + queryWrapper.eq("del_flag", CommonConstant.DEL_FLAG_0); IPage<EamEquipment> pageResult = eamEquipmentMapper.queryPageList(page, queryWrapper); if (pageResult != null && CollectionUtil.isNotEmpty(pageResult.getRecords())) { List<EquipmentSearchResult> resultList = new ArrayList<>(); @@ -197,6 +250,100 @@ return Collections.emptyList(); } + @Override + public EamEquipment selectByEquipmentCode(String equipmentCode) { + if (StringUtils.isBlank(equipmentCode)) { + return null; + } + QueryWrapper<EamEquipment> queryWrapper = new QueryWrapper<>(); + //鐢ㄦ埛鏁版嵁鏉冮檺 + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + if (sysUser == null) { + return null; + } + if (StringUtils.isNotBlank(sysUser.getEquipmentIds())) { + //閫夋嫨浜嗚澶囷紝鏍规嵁璁惧id杩囨护璁惧 + List<String> equipArr = Arrays.asList(sysUser.getEquipmentIds().split(",")); + queryWrapper.in("equipment_code", equipArr); + } else { + //娌℃湁閫夋嫨璁惧锛屾牴鎹溅闂磋繃婊よ澶� + queryWrapper.exists("select 1 from mdc_user_production t where t.user_id={0} and t.pro_id=org_id", sysUser.getId()); + } + queryWrapper.eq("equipment_code", equipmentCode); + queryWrapper.eq("del_flag", CommonConstant.DEL_FLAG_0); + + return eamEquipmentMapper.selectOne(queryWrapper); + } + + @Override + public List<EquipmentCategoryStatistics> queryLedgerStatistics() { + List<EquipmentCategoryStatistics> list = Lists.newArrayList(); + //鑾峰彇鎵�鏈夊凡璁剧疆璁惧绫诲埆鐨勮澶囦俊鎭� + List<EamEquipment> equipmentList = this.list(new LambdaQueryWrapper<EamEquipment>().isNotNull(EamEquipment::getEquipmentType)); + + //鑾峰彇鍒嗙被瀛楀吀浜岀骇銆佷笁绾т互涓嬪寘鍚綋鍓嶅垎绫荤殑鎵�鏈夊垎绫籭d + List<SysCategory> categoryTypeMap = eamEquipmentMapper.getCategoryTypeMap(); + if (CollectionUtils.isEmpty(equipmentList) || CollectionUtils.isEmpty(categoryTypeMap)) { + return list; + } + for (SysCategory sysCategory : categoryTypeMap) { + List<EamEquipment> eamEquipmentList = equipmentList.stream().filter(eamEquipment -> Arrays.asList(sysCategory.getChildCodes().split(StringPool.COMMA)).contains(eamEquipment.getEquipmentType())).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(eamEquipmentList)) { + continue; + } + EquipmentCategoryStatistics statistics = new EquipmentCategoryStatistics(); + statistics.setEquipmentType(sysCategory.getName()); + + //璁剧疆璁惧鎬绘暟 + statistics.setEquipmentCount(eamEquipmentList.size()); + statistics.setOriginalValue(eamEquipmentList.stream().filter(eamEquipment -> eamEquipment.getOriginalValue() != null).map(EamEquipment::getOriginalValue).reduce(BigDecimal.ZERO, BigDecimal::add)); + + //璁剧疆楂樼簿搴︿俊鎭� + List<EamEquipment> equipmentCategoryList = eamEquipmentList.stream().filter(eamEquipment -> "JMSB".equals(eamEquipment.getEquipmentCategory())).collect(Collectors.toList()); + statistics.setHighPrecisionCount(CollectionUtils.isNotEmpty(equipmentCategoryList) ? equipmentCategoryList.size() : 0); + statistics.setHighPrecisionOriginalValue(CollectionUtils.isNotEmpty(equipmentCategoryList) ? equipmentCategoryList.stream().map(eamEquipment -> eamEquipment.getOriginalValue() != null ? eamEquipment.getOriginalValue() : BigDecimal.ZERO).reduce(BigDecimal.ZERO, BigDecimal::add) : BigDecimal.ZERO); + + //璁剧疆鍥戒骇淇℃伅 + List<EamEquipment> equipmentDomesticList = eamEquipmentList.stream().filter(eamEquipment -> "涓浗".equals(eamEquipment.getOriginCountry())).collect(Collectors.toList()); + statistics.setDomesticCount(CollectionUtils.isNotEmpty(equipmentDomesticList) ? equipmentDomesticList.size() : 0); + statistics.setDomesticOriginalValue(CollectionUtils.isNotEmpty(equipmentDomesticList) ? equipmentDomesticList.stream().map(eamEquipment -> eamEquipment.getOriginalValue() != null ? eamEquipment.getOriginalValue() : BigDecimal.ZERO).reduce(BigDecimal.ZERO, BigDecimal::add) : BigDecimal.ZERO); + + //璁剧疆杩涘彛淇℃伅 + List<EamEquipment> equipmentImportList = eamEquipmentList.stream().filter(eamEquipment -> !"涓浗".equals(eamEquipment.getOriginCountry())).collect(Collectors.toList()); + statistics.setImportCount(CollectionUtils.isNotEmpty(equipmentImportList) ? equipmentImportList.size() : 0); + statistics.setImportOriginalValue(CollectionUtils.isNotEmpty(equipmentImportList) ? equipmentImportList.stream().map(eamEquipment -> eamEquipment.getOriginalValue() != null ? eamEquipment.getOriginalValue() : BigDecimal.ZERO).reduce(BigDecimal.ZERO, BigDecimal::add) : BigDecimal.ZERO); + + //璁剧疆瀹屽ソ淇℃伅 + List<EamEquipment> equipmentIntactList = eamEquipmentList.stream().filter(eamEquipment -> StringPool.ONE.equals(eamEquipment.getTechnologyStatus())).collect(Collectors.toList()); + statistics.setIntactCount(CollectionUtils.isNotEmpty(equipmentIntactList) ? equipmentIntactList.size() : 0); + statistics.setIntactOriginalValue(CollectionUtils.isNotEmpty(equipmentIntactList) ? equipmentIntactList.stream().map(eamEquipment -> eamEquipment.getOriginalValue() != null ? eamEquipment.getOriginalValue() : BigDecimal.ZERO).reduce(BigDecimal.ZERO, BigDecimal::add) : BigDecimal.ZERO); + list.add(statistics); + } + return list; + } + + @Override + public ModelAndView exportLedgerStatisticsXls(HttpServletRequest request, Class<EquipmentCategoryStatistics> clazz, String title) { + // 鑾峰彇瀵煎嚭浜� + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + + // Step.2 鑾峰彇瀵煎嚭鏁版嵁 + List<EquipmentCategoryStatistics> exportList = queryLedgerStatistics(); + + // Step.3 AutoPoi 瀵煎嚭Excel + ModelAndView mv = new ModelAndView(new JeecgEntityExcelView()); + //姝ゅ璁剧疆鐨刦ilename鏃犳晥 ,鍓嶇浼氶噸鏇存柊璁剧疆涓�涓� + mv.addObject(NormalExcelConstants.FILE_NAME, title); + mv.addObject(NormalExcelConstants.CLASS, clazz); + //update-begin--Author:liusq Date:20210126 for锛氬浘鐗囧鍑烘姤閿欙紝ImageBasePath鏈缃�-------------------- + ExportParams exportParams = new ExportParams(title + "鎶ヨ〃", "瀵煎嚭浜�:" + sysUser.getRealname(), title); + exportParams.setImageBasePath(upLoadPath); + //update-end--Author:liusq Date:20210126 for锛氬浘鐗囧鍑烘姤閿欙紝ImageBasePath鏈缃�---------------------- + mv.addObject(NormalExcelConstants.PARAMS, exportParams); + mv.addObject(NormalExcelConstants.DATA_LIST, exportList); + return mv; + } + /** * 鑾峰彇鎵�鏈夌殑浜х嚎id锛堝寘鍚墍鏈変笂绾э級 */ -- Gitblit v1.9.3