From 2fef20fe45a1fc901b51243bcc60682524447990 Mon Sep 17 00:00:00 2001 From: shicf <shi_chongfu@163.com> Date: 星期五, 23 八月 2024 18:55:41 +0800 Subject: [PATCH] Merge branch '2.0.0-release' of http://nonxin.cn:8090/r/product/product-server/V2.0.0 --- product-server-device/src/main/java/com/product/device/service/DeviceMainenanceService.java | 279 +++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 239 insertions(+), 40 deletions(-) diff --git a/product-server-device/src/main/java/com/product/device/service/DeviceMainenanceService.java b/product-server-device/src/main/java/com/product/device/service/DeviceMainenanceService.java index 06c8154..c7b3ba9 100644 --- a/product-server-device/src/main/java/com/product/device/service/DeviceMainenanceService.java +++ b/product-server-device/src/main/java/com/product/device/service/DeviceMainenanceService.java @@ -1,66 +1,265 @@ package com.product.device.service; + +import cn.hutool.core.collection.CollectionUtil; +import com.beust.jcommander.internal.Lists; import com.product.core.config.CoreConst; import com.product.core.dao.BaseDao; +import com.product.core.entity.DataTableEntity; import com.product.core.entity.FieldSetEntity; +import com.product.core.exception.BaseException; import com.product.core.service.support.AbstractBaseService; import com.product.core.spring.context.SpringMVCContextHolder; import com.product.core.transfer.Transactional; +import com.product.device.config.DeviceCode; import com.product.device.config.DeviceConst; -import com.product.device.service.ide.IDeviceMainenanceService; +import com.product.device.service.idel.IDeviceMainenanceService; import com.product.module.sys.entity.SystemUser; import com.product.task.device.service.DeviceManagerTaskService; - +import com.product.util.BaseUtil; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; /** * 璁惧缁翠慨 - * @Author + * + * @Author * @Date 2022/3/8 16:33 * @Desc 鍔熻兘鐩稿叧 service */ @Service public class DeviceMainenanceService extends AbstractBaseService implements IDeviceMainenanceService { - @Autowired - public BaseDao baseDao; - @Autowired - DeviceManagerService deviceManagerService; - @Autowired - DeviceManagerTaskService deviceManagerTaskService; + @Autowired + public BaseDao baseDao; + @Autowired + DeviceManagerService deviceManagerService; + @Autowired + DeviceManagerTaskService deviceManagerTaskService; - /** - * 鑾峰彇璁惧淇℃伅 鍖呮嫭瀛愯澶� - * @param uuid - * @param device_sn - * @return - */ - @Transactional - public String saveDeviceFailure(FieldSetEntity fs) { - SystemUser currentUser = SpringMVCContextHolder.getCurrentUser(); - if(fs!=null) { - fs.setValue("org_level_uuid", currentUser.getOrg_level_uuid()); - } - fs.setTableName(DeviceConst.TABLE_PRODUCT_REPAIR_FAILURE); - boolean b=baseDao.saveFieldSetEntity(fs); - if(b) { - //淇敼璁惧鐨勭姸鎬佷负鍋滄満缁翠慨 - deviceManagerService.deviceStatusChange(fs.getString("asset_code"), "2"); + /** + * 鑾峰彇璁惧淇℃伅 鍖呮嫭瀛愯澶� + * + * @return + */ + @Transactional + public String saveDeviceFailure(FieldSetEntity fs) { + SystemUser currentUser = SpringMVCContextHolder.getCurrentUser(); + if (fs != null) { + fs.setValue("org_level_uuid", currentUser.getOrg_level_uuid()); + } + fs.setTableName(DeviceConst.TABLE_PRODUCT_REPAIR_FAILURE); + boolean b = baseDao.saveFieldSetEntity(fs); + if (b) { + //淇敼璁惧鐨勭姸鎬佷负鍋滄満缁翠慨 + deviceManagerService.deviceStatusChange(fs.getString("asset_code"), "2"); // //涓婃姤浠诲姟鐢熸垚 // deviceManagerTaskService.createTask(); - //璁惧杩愯璁板綍 - deviceManagerService.appendDeivceManageLog(fs.getString("asset_code"),fs.getString("created_by"),"","璁惧鏁呴殰涓婃姤","product_device_repair_failure_record",fs.getString("uuid")); - } - - return fs.getString(CoreConst.UUID); - } - /** - * 鍒涘缓缁翠慨浠诲姟锛岀涓�娆″彲鑳介�変腑鐨勬槸璋冨害浜猴紝涔熷彲鑳芥槸缁翠慨浜哄憳 - * @param fs - */ - public void createMaintainTask(FieldSetEntity fs) { - - deviceManagerTaskService.createTask(); - } + //璁惧杩愯璁板綍 + deviceManagerService.appendDeivceManageLog(fs.getString("asset_code"), fs.getString("created_by"), "", "璁惧鏁呴殰涓婃姤", "product_device_repair_failure_record", fs.getString("uuid")); + } + + return fs.getString(CoreConst.UUID); + } + + /** + * 鍒涘缓缁翠慨浠诲姟锛岀涓�娆″彲鑳介�変腑鐨勬槸璋冨害浜猴紝涔熷彲鑳芥槸缁翠慨浜哄憳 + * + * @param fs + */ + public void createMaintainTask(FieldSetEntity fs) { + + deviceManagerTaskService.createTask(); + } + + + /** + * 鑾峰彇鏈勾宸插畬鎴愮殑淇濆吇璁板綍 + */ + public DataTableEntity getMaintainByCurrentYear(FieldSetEntity fse) { + StringBuilder sql = new StringBuilder(); + sql.append("\nSELECT b.*,a.plan_maintenance_time,a.maintenance_user,a.maintenance_time,a.check_user,a.check_time FROM `product_device_maintenance_record` a "); + sql.append("\nINNER JOIN `product_device_info` b ON a. device_uuid=b.uuid "); + sql.append("\nwhere length(a.check_user)>0 "); + String elevatorVariety = fse.getString("elevator_variety"); + String maintenanceUnit = fse.getString("maintenance_unit"); + List<Object> params = StringUtils.isAnyEmpty(elevatorVariety, maintenanceUnit) ? new ArrayList<>() : null; + if (!StringUtils.isEmpty(elevatorVariety)) { + String[] split = elevatorVariety.split(","); + sql.append("\nAND ").append(BaseUtil.buildQuestionMarkFilter("b.elevator_variety", split.length, true)); + params.addAll(CollectionUtil.toList(split)); + } + if (!StringUtils.isEmpty(maintenanceUnit)) { + sql.append("\nAND b.maintenance_unit=? "); + params.add(elevatorVariety); + } + Integer cpage = fse.getInteger(DeviceConst.CPAGE); + Integer pageSize = fse.getInteger(DeviceConst.PAGESIZE); + //鏌ヨ宸插鏍歌繃鐨勮褰� + sql.append(" order by a.maintenance_time desc "); + DataTableEntity result = baseDao.listTable(sql.toString(), params.toArray(), pageSize, cpage); + result.getMeta().addAliasTable("product_device_info", "b"); + result.getMeta().addAliasTable("product_device_maintenance_record", "a"); + baseDao.loadPromptData(result); + return result; + } + + + public DataTableEntity getMaintainMonth(FieldSetEntity fse) { + Integer cpage = fse.getInteger(DeviceConst.CPAGE); + Integer pageSize = fse.getInteger(DeviceConst.PAGESIZE); + StringBuilder sql = new StringBuilder(); + sql.append("\nSELECT b.*,a.maintenance_user, a.plan_finish_time FROM `product_device_maintenance_plan_sub`a "); + sql.append("\nINNER JOIN `product_device_info`b ON a.device_uuid = b.uuid "); + //sql鏌ヨplan_finish_time鏃堕棿鏄惁灞炰簬褰撴湀 + sql.append("\nWHERE MONTH(a.plan_finish_time) = MONTH(NOW()) AND a.is_finish=1"); + String elevatorVariety = fse.getString("elevator_variety"); + String maintenanceUnit = fse.getString("maintenance_unit"); + List<Object> params = StringUtils.isAnyEmpty(elevatorVariety, maintenanceUnit) ? new ArrayList<>() : null; + if (!StringUtils.isEmpty(elevatorVariety)) { + String[] split = elevatorVariety.split(","); + sql.append("\nAND ").append(BaseUtil.buildQuestionMarkFilter("b.elevator_variety", split.length, true)); + params.addAll(CollectionUtil.toList(split)); + } + if (!StringUtils.isEmpty(maintenanceUnit)) { + sql.append("\nAND b.maintenance_unit=? "); + params.add(elevatorVariety); + } + DataTableEntity result = baseDao.listTable(sql.toString(), params.toArray(), pageSize, cpage); + result.getMeta().addAliasTable("product_device_info", "b"); + result.getMeta().addAliasTable("product_device_maintenance_plan_sub", "a"); + return result; + } + + /** + * 缁翠繚璁板綍澶嶆牳 + */ + public boolean maintenanceReview(FieldSetEntity fse) { + String uuids = fse.getString("uuids"); + if (StringUtils.isBlank(uuids)) { + throw new BaseException(DeviceCode.SYSTEM_FORM_COUNT); + } + + String[] split = (SpringMVCContextHolder.getCurrentUserId() + "," + uuids).split(","); + return baseDao.executeUpdate("update `product_device_maintenance_record` set check_time=now(),check_user=? where is_finish=1 and " + BaseUtil.buildQuestionMarkFilter("uuid", split.length - 1, true), split); + } + + /** + * 缁翠繚鍗曚綅骞村害缁翠繚缁熻 + * + * @param fse + * @return + */ + public DataTableEntity yearMaintenance(FieldSetEntity fse) { + // 鐢垫鍝佺 + String elevatorVariety = null; + // 缁翠繚鍗曚綅 + String maintenanceUnit = null; + if (fse != null) { + elevatorVariety = fse.getString("elevator_variety"); + maintenanceUnit = fse.getString("maintenance_unit"); + } + StringBuilder sql = new StringBuilder(128); + sql.append("\nSELECT u.`name`,count(r.uuid) record_count"); + sql.append("\nFROM product_device_maintenance_unit u"); + sql.append("\nLEFT JOIN product_device_info a on a.maintenance_unit=u.uuid"); + sql.append("\nLEFT JOIN product_device_maintenance_record r on r.device_uuid=a.uuid"); + StringBuilder filterSql = new StringBuilder(32); + List<String> param = Lists.newArrayList(); + if (!StringUtils.isEmpty(elevatorVariety)) { + String[] arr = elevatorVariety.split(","); + filterSql.append(BaseUtil.buildQuestionMarkFilter("elevator_variety", arr.length, true)); + param.addAll(Arrays.asList(arr)); + } + if (!StringUtils.isEmpty(maintenanceUnit)) { + if (filterSql.length() > 0) { + filterSql.append(" AND "); + } + String[] arr = maintenanceUnit.split(","); + filterSql.append(BaseUtil.buildQuestionMarkFilter("maintenance_unit", arr.length, true)); + param.addAll(Arrays.asList(arr)); + } + if (filterSql.length() > 0) { + sql.append("\nWHERE ").append(filterSql); + } + sql.append("\nGROUP BY u.uuid"); + return baseDao.listTable(sql.toString(), param.toArray()); + } + + /** + * 缁翠繚鍗曚綅骞村害缁翠繚浠诲姟瀹屾垚鎯呭喌 + * + * @param fse + * @return + */ + public DataTableEntity yearMaintenanceFinish(FieldSetEntity fse) { + // 鐢垫鍝佺 + String elevatorVariety = null; + // 缁翠繚鍗曚綅 + String maintenanceUnit = null; + if (fse != null) { + elevatorVariety = fse.getString("elevator_variety"); + maintenanceUnit = fse.getString("maintenance_unit"); + } + StringBuilder sql = new StringBuilder(128); + sql.append("\nSELECT T.*,CASE WHEN record_count = 0 THEN 0 ELSE ROUND(finish_count / record_count, 4) END finish_rate"); + sql.append("\nFROM ("); + sql.append("\n SELECT u.name,a.device_number,a.device_unit,a.device_code,d.manufacture_company,count(r.uuid) record_count, count(r.is_finish) + 1 finish_count"); + sql.append("\n FROM product_device_maintenance_unit u"); + sql.append("\n JOIN product_device_info a on a.maintenance_unit=u.uuid"); + sql.append("\n JOIN product_device_archives d on a.archives_uuid=d.uuid"); + sql.append("\n JOIN product_device_maintenance_record r on r.device_uuid=a.uuid"); + StringBuilder filterSql = new StringBuilder(32); + List<String> param = Lists.newArrayList(); + if (!StringUtils.isEmpty(elevatorVariety)) { + String[] arr = elevatorVariety.split(","); + filterSql.append(BaseUtil.buildQuestionMarkFilter("elevator_variety", arr.length, true)); + param.addAll(Arrays.asList(arr)); + } + if (!StringUtils.isEmpty(maintenanceUnit)) { + if (filterSql.length() > 0) { + filterSql.append(" AND "); + } + String[] arr = maintenanceUnit.split(","); + filterSql.append(BaseUtil.buildQuestionMarkFilter("maintenance_unit", arr.length, true)); + param.addAll(Arrays.asList(arr)); + } + if (filterSql.length() > 0) { + sql.append("\n WHERE ").append(filterSql); + } + sql.append("\n GROUP BY 1,2,3,4,5"); + sql.append("\n) T"); + return baseDao.listTable(sql.toString(), param.toArray()); + } + + /** + * 璁惧鐨勪繚鍏婚厤缃� + * + * @param asset_code 璁惧缂栧彿 + * @param manceType 淇濆吇绫诲瀷 + * @return + */ + public FieldSetEntity findDeviceMaintenanceSetting(String uuid, String manceType) { + + FieldSetEntity device = deviceManagerService.findDevice(uuid); + + FieldSetEntity record = new FieldSetEntity("product_device_maintenance_record"); + record.setValue("device_uuid", device.getString("device_name")); + record.setValue("device_number", device.getString("device_number")); + record.setValue("device_uuid_save_value", device.getString("uuid")); + String sql = "select c.item_uuid,c.content ,c.criterion from product_device_maintenance_setting a left join product_device_maintenance_item_config b on\r\n" + + "a.maintenance_item=b.uuid join \r\n" + + "product_device_maintenance_item_detail c on b.uuid= c.item_uuid\r\n" + + "where device_uuid=? and maintenance_type=? and c.is_used=1 \r\n" + + "order by item_uuid"; + DataTableEntity dataTableEntity = baseDao.listTable(sql, new String[]{uuid, manceType}); + record.addSubDataTable(dataTableEntity); + + return record; + } } -- Gitblit v1.9.2