| | |
| | | package com.product.device.service; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | import com.product.admin.service.PublicService; |
| | | 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.idel.IDeviceInspectionService; |
| | | import com.product.module.sys.entity.SystemUser; |
| | | import com.product.util.BaseUtil; |
| | | |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.thymeleaf.util.StringUtils; |
| | | |
| | | |
| | | /** |
| | | * 设备点检 |
| | | * @Author |
| | | * |
| | | * @Author |
| | | * @Date 2022/3/8 16:33 |
| | | * @Desc 功能相关 service |
| | | */ |
| | | @Service |
| | | public class CommonInspectionService extends AbstractBaseService { |
| | | public class CommonInspectionService extends AbstractBaseService implements IDeviceInspectionService { |
| | | |
| | | @Autowired |
| | | public BaseDao baseDao; |
| | | @Autowired |
| | | DeviceManagerService deviceManagerService; |
| | | @Autowired |
| | | PublicService publicService; |
| | | @Autowired |
| | | DeviceTaskService deviceTaskService; |
| | | /** |
| | | * 获取设备信息 包括子设备 |
| | | * @param uuid |
| | | * |
| | | * @param device_sn |
| | | * @return |
| | | */ |
| | | public FieldSetEntity createInspection(String device_sn) { |
| | | FieldSetEntity dev=deviceManagerService.findDevice(null,device_sn); |
| | | baseDao.loadPromptData(dev); |
| | | if(dev !=null) { |
| | | DataTableEntity dt=baseDao.listTable(DeviceConst.TABLE_PRODUCT_INSPECT_CONFIG," uuid in( select config_uuid from"+DeviceConst.TABLE_PRODUCT_INSPECT_SETTING_SUB+" where main_uuid=(select uuid from "+DeviceConst.TABLE_PRODUCT_INSPECT_SETTING+" where device_type=? )", new String[] {dev.getString("device_type")}); |
| | | if(!DataTableEntity.isEmpty(dt)) { |
| | | Map <String,DataTableEntity> sub=new HashMap<>(); |
| | | sub.put("sub", dt); |
| | | dev.setSubData(sub); |
| | | dev.addSubDataTable(dt); |
| | | } |
| | | FieldSetEntity dev = deviceManagerService.findDevice( device_sn); |
| | | baseDao.loadPromptData(dev); |
| | | if (dev != null) { |
| | | DataTableEntity dt = baseDao.listTable(DeviceConst.TABLE_PRODUCT_DEVICE_INSPECT_ITEM_CONFIG, " uuid in( select config_uuid from" + DeviceConst.TABLE_PRODUCT_INSPECT_SETTING_SUB + " where main_uuid=(select uuid from " + DeviceConst.TABLE_PRODUCT_INSPECT_SETTING + " where device_type=? )", new String[]{dev.getString("device_type")}); |
| | | if (!DataTableEntity.isEmpty(dt)) { |
| | | Map<String, DataTableEntity> sub = new HashMap<>(); |
| | | sub.put("sub", dt); |
| | | dev.setSubData(sub); |
| | | dev.addSubDataTable(dt); |
| | | } |
| | | } |
| | | return dev; |
| | | } |
| | | |
| | | public DataTableEntity getPatrolMonthlView(FieldSetEntity fliter) throws BaseException{ |
| | | StringBuffer sb = new StringBuffer(); |
| | | ArrayList<String> parme = new ArrayList<>(); |
| | | sb.append(" SELECT a.name obName,GROUP_CONCAT( CONCAT(check_time,'&',result) ) check_time FROM("); |
| | | sb.append(" SELECT c.name,b.result,DATE_FORMAT( a.check_time, '%d' ) check_time FROM "); |
| | | |
| | | sb.append(" "+fliter.getTableName()+" a LEFT JOIN "+fliter.getTableName()+"_sub b on a.uuid =b.record_uuid "); |
| | | |
| | | sb.append(" LEFT JOIN product_device_patrol_config c on b.patrol_uuid=c.uuid where 1=1"); |
| | | |
| | | |
| | | if (!StringUtils.isEmpty(fliter.getString("device_number"))) { |
| | | sb.append(" and a.device_number=?"); |
| | | parme.add(fliter.getString("device_number")); |
| | | } |
| | | if (!StringUtils.isEmpty(fliter.getString("patrol_user"))) { |
| | | sb.append(" and a.patrol_user=?"); |
| | | parme.add(fliter.getString("patrol_user")); |
| | | } |
| | | if (!StringUtils.isEmpty(fliter.getString("check_time"))) { |
| | | sb.append(" and DATE_FORMAT( a.check_time, '%Y-%m' )=?"); |
| | | parme.add(fliter.getString("check_time").substring(0, 7)); |
| | | } else { |
| | | throw new BaseException("0","年月不能为空"); |
| | | } |
| | | sb.append(" GROUP BY c.name,b.result,DATE_FORMAT( a.check_time, '%d' ) "); |
| | | sb.append(") a GROUP BY a.name "); |
| | | String[] pArr = parme.toArray(new String[parme.size()]); |
| | | DataTableEntity dt = baseDao.listTable(sb.toString(), pArr); |
| | | for (int i = 0; i <dt.getRows() ; i++) { |
| | | FieldSetEntity fs = dt.getFieldSetEntity(i); |
| | | String check_time = fs.getString("check_time"); |
| | | if (!StringUtils.isEmpty(check_time)){ |
| | | String[] check_time_arr = check_time.split(","); |
| | | for (int j = 0; j <check_time_arr.length ; j++) { |
| | | String[] v = check_time_arr[j].split("&"); |
| | | fs.setValue("m"+v[0],v[1]); |
| | | } |
| | | |
| | | } |
| | | } |
| | | return dt; |
| | | } |
| | | |
| | | public FieldSetEntity getInspectionSetting(String device_type) { |
| | | FieldSetEntity fs = baseDao.getFieldSetByFilter(DeviceConst.TABLE_PRODUCT_INSPECTION_SETTING, " device_type=? ", new String[]{device_type}, false); |
| | | return fs; |
| | | } |
| | | |
| | | public DataTableEntity getTreeArchives() { |
| | | DataTableEntity dt = baseDao.listTable(DeviceConst.TABLE_PRODUCT_DEVICE_ARCHIVE, new String[]{}); |
| | | return dt; |
| | | } |
| | | |
| | | /** |
| | | * 保持设备配置(点检、巡检、保养) |
| | | * @param fs |
| | | * @return |
| | | */ |
| | | @Transactional |
| | | public boolean saveSetting(FieldSetEntity fs) { |
| | | DataTableEntity subTable = fs.getSubDataTable("subTable"); |
| | | boolean re = true; |
| | | for (int i = 0; i < subTable.getRows(); i++) { |
| | | FieldSetEntity sub = subTable.getFieldSetEntity(i); |
| | | sub.setTableName(fs.getTableName()); |
| | | if (!StringUtils.isEmpty(sub.getString("~type~"))) { |
| | | publicService.delete(sub); |
| | | continue; |
| | | } |
| | | sub.setValue("device_number", fs.getString("device_number")); |
| | | sub.setValue("cycle", fs.getString("cycle")); |
| | | baseDao.executeUpdate("update product_device_maintenance_setting set device_number=? ",new String[] {fs.getString("device_number")}); |
| | | |
| | | if ("product_device_maintenance_setting".equals(fs.getTableName())){ |
| | | sub.setValue("type", fs.getString("type")); |
| | | sub.setValue("ahead_notice_day", fs.getString("ahead_notice_day")); |
| | | } |
| | | if ("product_device_inspection_setting".equals(fs.getTableName())){ |
| | | sub.setValue("start_time", fs.getDate("start_time")); |
| | | sub.setValue("warn_time", fs.getDate("warn_time")); |
| | | } |
| | | String uuid = publicService.saveFieldSetEntity(sub); |
| | | if (StringUtils.isEmpty(uuid)) { |
| | | re = false; |
| | | } |
| | | } |
| | | return re; |
| | | } |
| | | |
| | | @Transactional |
| | | public boolean batchReview(FieldSetEntity fs) { |
| | | String uuid = fs.getString("uuid"); |
| | | if (StringUtils.isEmpty(uuid)) { |
| | | return false; |
| | | } |
| | | String[] split = uuid.split(","); |
| | | boolean re = true; |
| | | for (int i = 0; i < split.length; i++) { |
| | | FieldSetEntity recordFs = new FieldSetEntity(); |
| | | recordFs.setTableName(fs.getTableName()); |
| | | recordFs.setValue("uuid", split[i]); |
| | | recordFs.setValue("check_user", SpringMVCContextHolder.getCurrentUser().getUser_id()); |
| | | recordFs.setValue("check_time", new Date()); |
| | | String uuids = publicService.saveFieldSetEntity(recordFs); |
| | | if (StringUtils.isEmpty(uuids)) { |
| | | re = false; |
| | | } |
| | | |
| | | } |
| | | return re; |
| | | } |
| | | |
| | | public FieldSetEntity findPatrolSetting() { |
| | | DataTableEntity dataTableEntity = baseDao.listTable(DeviceConst.TABLE_PRODUCT_PATROL_SETTING, ""); |
| | | FieldSetEntity fs = new FieldSetEntity(); |
| | | fs.setTableName(DeviceConst.TABLE_PRODUCT_PATROL_SETTING); |
| | | |
| | | DataTableEntity dt = new DataTableEntity(); |
| | | |
| | | for (int i = 0; i < dataTableEntity.getRows(); i++) { |
| | | FieldSetEntity sub = dataTableEntity.getFieldSetEntity(i); |
| | | FieldSetEntity fsSub = new FieldSetEntity(); |
| | | fsSub.setTableName(DeviceConst.TABLE_PRODUCT_PATROL_SETTING); |
| | | fsSub.setValue("patrol_config_uuid", sub.getString("patrol_config_uuid")); |
| | | fsSub.setValue("remark", sub.getString("remark")); |
| | | fsSub.setValue("uuid", sub.getString("uuid")); |
| | | dt.addFieldSetEntity(fsSub); |
| | | fs.setValue("device_number", sub.getString("device_number")); |
| | | fs.setValue("cycle", sub.getString("cycle")); |
| | | |
| | | } |
| | | Map<String, DataTableEntity> sub = new HashMap<>(); |
| | | sub.put("subTable", dt); |
| | | fs.setSubData(sub); |
| | | return fs; |
| | | } |
| | | public FieldSetEntity findInspectionSetting() { |
| | | DataTableEntity dataTableEntity = baseDao.listTable(DeviceConst.TABLE_PRODUCT_INSPECTION_SETTING, ""); |
| | | FieldSetEntity fs = new FieldSetEntity(); |
| | | fs.setTableName(DeviceConst.TABLE_PRODUCT_INSPECTION_SETTING); |
| | | |
| | | DataTableEntity dt = new DataTableEntity(); |
| | | |
| | | for (int i = 0; i < dataTableEntity.getRows(); i++) { |
| | | FieldSetEntity sub = dataTableEntity.getFieldSetEntity(i); |
| | | FieldSetEntity fsSub = new FieldSetEntity(); |
| | | fsSub.setTableName(DeviceConst.TABLE_PRODUCT_INSPECTION_SETTING); |
| | | fsSub.setValue("inspection_uuid", sub.getString("inspection_uuid")); |
| | | fsSub.setValue("remark", sub.getString("remark")); |
| | | fsSub.setValue("uuid", sub.getString("uuid")); |
| | | fsSub.setValue("back_type", sub.getString("back_type")); |
| | | |
| | | dt.addFieldSetEntity(fsSub); |
| | | fs.setValue("device_number", sub.getString("device_number")); |
| | | fs.setValue("cycle", sub.getString("cycle")); |
| | | fs.setValue("start_time", sub.getString("start_time")); |
| | | fs.setValue("warn_time", sub.getString("warn_time")); |
| | | |
| | | } |
| | | Map<String, DataTableEntity> sub = new HashMap<>(); |
| | | sub.put("subTable", dt); |
| | | fs.setSubData(sub); |
| | | return fs; |
| | | } |
| | | /** |
| | | * 设备的点检配置 |
| | | * @param asset_code |
| | | * @return |
| | | */ |
| | | public FieldSetEntity findDeviceSetting(String device_uuid) { |
| | | FieldSetEntity device=deviceManagerService.findDevice(device_uuid); |
| | | String sql="select c.* from product_device_inspection_setting a join product_device_inspection_setting_sub b on a.uuid=b.main_uuid left join product_device_inspection_item_config c on b.config_uuid=c.uuid and c.is_used=1 where status=1 and a.device_uuid=? "; |
| | | DataTableEntity dataTableEntity = baseDao.listTable(sql,new String[] {device_uuid}); |
| | | device.addSubDataTable(dataTableEntity); |
| | | return device; |
| | | } |
| | | /** |
| | | * 设备的点检记录 |
| | | * @param asset_code |
| | | * @return |
| | | */ |
| | | public FieldSetEntity findInspectionRecord(String uuid) { |
| | | FieldSetEntity record=baseDao.getFieldSetEntity("product_device_inspection_record", |
| | | new String[]{"device_uuid","inspect_user","inspect_final_time","check_user","check_time","is_finish"},uuid, false); |
| | | |
| | | if(!FieldSetEntity.isEmpty(record)) { |
| | | |
| | | FieldSetEntity device=deviceManagerService.findDevice(record.getString("device_uuid")); |
| | | record.setValue("device_uuid", device.getString("device_name")); |
| | | record.setValue("device_uuid_save_value", device.getString("uuid")); |
| | | |
| | | String sql="select s.*,c.* from product_device_inspection_setting a left join product_device_inspection_item_config c on a.inspection_item=c.uuid and c.is_used=1 left join product_device_inspection_record_sub s on s.inspect_item=c.uuid and record_uuid=? where a.device_uuid=? "; |
| | | DataTableEntity dt = baseDao.listTable(sql,new String[] {uuid,record.getString("device_uuid_save_value")}); |
| | | record.addSubDataTable(dt); //点检项 |
| | | // record.removeSubData("product_device_inspection_record_sub"); |
| | | } |
| | | return dev; |
| | | return record; |
| | | } |
| | | /** |
| | | * 保存点检信息 |
| | | * @param fs |
| | | * @return |
| | | */ |
| | | @Transactional |
| | | public String saveInspection(FieldSetEntity fs) throws BaseException{ |
| | | if(!FieldSetEntity.isEmpty(fs) ) { |
| | | FieldSetEntity rfs=new FieldSetEntity(DeviceConst.PRODUCT_DEVICE_INSPECTION_RECORD); |
| | | SystemUser user = SpringMVCContextHolder.getCurrentUser(); |
| | | rfs.setValue("org_level_uuid", user.getOrg_level_uuid()); |
| | | // rfs.setValue("device_uuid", fs.getValue("device_number")); |
| | | rfs.setValue("device_uuid", fs.getValue("uuid")); |
| | | rfs.setValue("is_finish", 0); |
| | | rfs.setValue("use_dept", user.getOrg_level_uuid()); |
| | | rfs.setValue("inspect_user", user.getUser_id()); |
| | | rfs.setValue("inspect_final_time",new Date()); |
| | | // rfs.setValue("task_uuid", fieldValue); |
| | | DataTableEntity dt=fs.getSubDataTable(DeviceConst.PRODUCT_DEVICE_INSPECTION_RECORD_SUB); |
| | | if(!DataTableEntity.isEmpty(dt)) { |
| | | rfs.addSubDataTable(dt); |
| | | if(baseDao.saveFieldSetEntity(rfs)) {//创建任务 |
| | | deviceTaskService.automaticCreateTask( |
| | | String.format(DeviceConst.TASK_TITLE_FORMAT_SPOT_CHECK, fs.getString(DeviceConst.DEVICE_NAME)) |
| | | ,DeviceConst.TASK_TYPE_SPOT_CHECK |
| | | ,rfs.getUUID() |
| | | ,fs.getString(DeviceConst.DEVICE_MANAGER) |
| | | ); |
| | | |
| | | } |
| | | } |
| | | return rfs.getUUID(); |
| | | } |
| | | |
| | | return null; |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | } |