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