liweidong
liweidong-hj 2 days ago
commit 16dc1cd0d8
  1. 40
      blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/EpTowerRecAlarmMapper.java
  2. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/EpTowerRecAlarmMapper.xml
  3. 40
      blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/RpParameterSetMapper.java
  4. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/RpParameterSetMapper.xml
  5. 35
      blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/entity/BsDosingRecEntity.java
  6. 18
      blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/entity/BsTowerReportEntity.java
  7. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/entity/BsWasteGasRunRecEntity.java
  8. 76
      blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/entity/EpTowerRecAlarm.java
  9. 194
      blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/entity/RpParameterSet.java
  10. 3
      blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IBsDosingRecService.java
  11. 5
      blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IBsTowerReportService.java
  12. 3
      blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IBsTowerService.java
  13. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IBsWasteGasRunRecService.java
  14. 40
      blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IEpTowerRecAlarmService.java
  15. 45
      blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IRpParameterSetService.java
  16. 39
      blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/BsDosingRecServiceImpl.java
  17. 85
      blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/BsTowerReportServiceImpl.java
  18. 90
      blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/BsTowerServiceImpl.java
  19. 96
      blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/BsWasteGasRunRecServiceImpl.java
  20. 44
      blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/EpTowerRecAlarmServiceImpl.java
  21. 93
      blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/RpParameterSetServiceImpl.java
  22. 27
      blade-service/blade-desk/src/main/java/org/springblade/desk/energy/util/HttpRequestService.java
  23. 146
      blade-service/blade-desk/src/main/java/org/springblade/desk/energy/util/TimeSpan.java
  24. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldOrderCraftService.java
  25. 11
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderCraftServiceImpl.java
  26. BIN
      blade-service/blade-desk/src/main/resources/Excel/QA/安全巡检配置导入模板.xls
  27. BIN
      blade-service/blade-desk/src/main/resources/Excel/QA/酸雾塔导入模板.xls

@ -0,0 +1,40 @@
/**
* BladeX Commercial License Agreement
* Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
* <p>
* Use of this software is governed by the Commercial License Agreement
* obtained after purchasing a license from BladeX.
* <p>
* 1. This software is for development use only under a valid license
* from BladeX.
* <p>
* 2. Redistribution of this software's source code to any third party
* without a commercial license is strictly prohibited.
* <p>
* 3. Licensees may copyright their own code but cannot use segments
* from this software for such purposes. Copyright of this software
* remains with BladeX.
* <p>
* Using this software signifies agreement to this License, and the software
* must not be used for illegal purposes.
* <p>
* THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
* not liable for any claims arising from secondary or illegal development.
* <p>
* Author: Chill Zhuang (bladejava@qq.com)
*/
package org.springblade.desk.energy.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springblade.desk.energy.pojo.entity.EpTowerRecAlarm;
/**
* 酸雾塔报警记录对照表 Mapper 接口
*
* @author BladeX
* @since 2026-04-20
*/
public interface EpTowerRecAlarmMapper extends BaseMapper<EpTowerRecAlarm> {
}

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.springblade.desk.energy.mapper.EpTowerRecAlarmMapper">
</mapper>

@ -0,0 +1,40 @@
/**
* BladeX Commercial License Agreement
* Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
* <p>
* Use of this software is governed by the Commercial License Agreement
* obtained after purchasing a license from BladeX.
* <p>
* 1. This software is for development use only under a valid license
* from BladeX.
* <p>
* 2. Redistribution of this software's source code to any third party
* without a commercial license is strictly prohibited.
* <p>
* 3. Licensees may copyright their own code but cannot use segments
* from this software for such purposes. Copyright of this software
* remains with BladeX.
* <p>
* Using this software signifies agreement to this License, and the software
* must not be used for illegal purposes.
* <p>
* THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
* not liable for any claims arising from secondary or illegal development.
* <p>
* Author: Chill Zhuang (bladejava@qq.com)
*/
package org.springblade.desk.energy.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springblade.desk.energy.pojo.entity.RpParameterSet;
/**
* 参数设置表 Mapper 接口
*
* @author BladeX
* @since 2026-04-20
*/
public interface RpParameterSetMapper extends BaseMapper<RpParameterSet> {
}

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.springblade.desk.energy.mapper.RpParameterSetMapper">
</mapper>

@ -38,6 +38,8 @@ import org.springblade.core.tool.utils.DateUtil;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serial;
import java.util.HashMap;
import java.util.Map;
/**
* 废气/废水加药记录表 实体类
@ -103,4 +105,37 @@ public class BsDosingRecEntity extends BaseEntity {
//@Schema(description = "酸雾塔")
private Long btId;
/**
* 废气加药
*/
public static Short DORTYPE_GAS_DOS = 1;
/**
* 废水加药
*/
public static Short DORTYPE_WATER_DOS = 2;
public static Map<Short, String> dorTypeMap = new HashMap<>(2);
/**
* 手动新增-默认已处理
*/
public static Short HANDLE_RESULT_ADD = 1;
/**
* 自动生成-待处理
*/
public static Short HANDLE_RESULT_WAIT = 2;
/**
* 自动生成-pda处理
*/
public static Short HANDLE_RESULT_PDA = 3;
public static Map<Short, String> handleResultMap = new HashMap<>(3);
static {
handleResultMap.put(HANDLE_RESULT_ADD, "手动新增");
handleResultMap.put(HANDLE_RESULT_WAIT, "待处理");
handleResultMap.put(HANDLE_RESULT_PDA, "PDA已处理");
}
}

@ -60,13 +60,16 @@ public class BsTowerReportEntity extends BaseEntity {
/**
* 处理状态
*/
@Schema(description = "处理状态")
private String dealStatus;
@Schema(description = "处理状态(是否报警 、、 0否1是)")
private Boolean dealStatus = false;
/**
* 编码
*/
@Schema(description = "编码")
private String btCode;
//点位
@Schema(description = "点位")
private String key;
/**
* 日期
*/
@ -74,6 +77,17 @@ public class BsTowerReportEntity extends BaseEntity {
@JsonFormat(pattern = DateUtil.PATTERN_DATETIME)
@Schema(description = "日期")
private Date btDate;
@Schema(name = "开始时间")
@DateTimeFormat(pattern = DateUtil.PATTERN_DATETIME)
@JsonFormat(pattern = DateUtil.PATTERN_DATETIME)
private Date startTime;
@Schema(name = "结束时间")
@DateTimeFormat(pattern = DateUtil.PATTERN_DATETIME)
@JsonFormat(pattern = DateUtil.PATTERN_DATETIME)
private Date endTime;
/**
* 错误点
*/

@ -73,10 +73,8 @@ public class BsWasteGasRunRecEntity extends BaseEntity {
/**
* 运行时间
*/
@DateTimeFormat(pattern = DateUtil.PATTERN_DATETIME)
@JsonFormat(pattern = DateUtil.PATTERN_DATETIME)
@Schema(description = "运行时间")
private Date runTime;
private Double runTime;
/**
* 系统参数
*/

@ -0,0 +1,76 @@
/**
* BladeX Commercial License Agreement
* Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
* <p>
* Use of this software is governed by the Commercial License Agreement
* obtained after purchasing a license from BladeX.
* <p>
* 1. This software is for development use only under a valid license
* from BladeX.
* <p>
* 2. Redistribution of this software's source code to any third party
* without a commercial license is strictly prohibited.
* <p>
* 3. Licensees may copyright their own code but cannot use segments
* from this software for such purposes. Copyright of this software
* remains with BladeX.
* <p>
* Using this software signifies agreement to this License, and the software
* must not be used for illegal purposes.
* <p>
* THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
* not liable for any claims arising from secondary or illegal development.
* <p>
* Author: Chill Zhuang (bladejava@qq.com)
*/
package org.springblade.desk.energy.pojo.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springblade.core.mp.base.BaseEntity;
import java.io.Serial;
import java.io.Serializable;
/**
* 酸雾塔报警记录对照表 实体类
*
* @author BladeX
* @since 2026-04-20
*/
@Data
@TableName("EP_TOWER_REC_ALARM")
@Schema(description = "EpTowerRecAlarm对象")
public class EpTowerRecAlarm extends BaseEntity implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 编号
*/
@Schema(description = "编号")
private String code;
/**
* 点位
*/
@Schema(description = "点位")
private String key;
/**
* 错误点
*/
@Schema(description = "错误点")
private String errorPoint;
/**
* 消息文本
*/
@Schema(description = "消息文本")
private String messText;
}

@ -0,0 +1,194 @@
/**
* BladeX Commercial License Agreement
* Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
* <p>
* Use of this software is governed by the Commercial License Agreement
* obtained after purchasing a license from BladeX.
* <p>
* 1. This software is for development use only under a valid license
* from BladeX.
* <p>
* 2. Redistribution of this software's source code to any third party
* without a commercial license is strictly prohibited.
* <p>
* 3. Licensees may copyright their own code but cannot use segments
* from this software for such purposes. Copyright of this software
* remains with BladeX.
* <p>
* Using this software signifies agreement to this License, and the software
* must not be used for illegal purposes.
* <p>
* THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
* not liable for any claims arising from secondary or illegal development.
* <p>
* Author: Chill Zhuang (bladejava@qq.com)
*/
package org.springblade.desk.energy.pojo.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springblade.core.mp.base.BaseEntity;
import java.io.Serial;
import java.io.Serializable;
/**
* 参数设置表 实体类
*
* @author BladeX
* @since 2026-04-20
*/
@Data
@TableName("RP_PARAMETER_SET")
@Schema(description = "RpParameterSet对象")
public class RpParameterSet implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 日期
*/
@Schema(description = "日期")
private String rpsDate;
/**
* 时间
*/
@Schema(description = "时间")
private String rpsTime;
/**
* NF产水导电率A
*/
@Schema(description = "NF产水导电率A")
private String nfA;
/**
* NF产水导电率B
*/
@Schema(description = "NF产水导电率B")
private String nfB;
/**
* NF进水导电率
*/
@Schema(description = "NF进水导电率")
private String nf;
/**
* RO1_1_产水导电率A
*/
@Schema(description = "RO1_1_产水导电率A")
private String ro11A;
/**
* RO1_1_产水导电率B
*/
@Schema(description = "RO1_1_产水导电率B")
private String ro11B;
/**
* RO1_1_产水导电率C
*/
@Schema(description = "RO1_1_产水导电率C")
private String ro11C;
/**
* RO1_1_进水导电率
*/
@Schema(description = "RO1_1_进水导电率")
private String ro11;
/**
* RO1_1_浓水PH值
*/
@Schema(description = "RO1_1_浓水PH值")
private String ro11Ph;
/**
* RO2_1_产水导电
*/
@Schema(description = "RO2_1_产水导电")
private String ro21;
/**
* RO2_1_进水导电率
*/
@Schema(description = "RO2_1_进水导电率")
private String ro21Rate;
/**
* RO2_2_产水导电率
*/
@Schema(description = "RO2_2_产水导电率")
private String ro22Rate;
/**
* RO2_2_进水导电
*/
@Schema(description = "RO2_2_进水导电")
private String ro22;
/**
* 电镀镍PH值
*/
@Schema(description = "电镀镍PH值")
private String electPh;
/**
* 废液反应池ORP_A
*/
@Schema(description = "废液反应池ORP_A")
private String orpA;
/**
* 废液反应池ORP_B
*/
@Schema(description = "废液反应池ORP_B")
private String orpB;
/**
* 废液反应池PH_A
*/
@Schema(description = "废液反应池PH_A")
private String phA;
/**
* 废液反应池PH_B
*/
@Schema(description = "废液反应池PH_B")
private String phB;
/**
* 废液反应池温度_A
*/
@Schema(description = "废液反应池温度_A")
private String tempA;
/**
* 废液反应池温度_B
*/
@Schema(description = "废液反应池温度_B")
private String tempB;
/**
* 生化溶解氧
*/
@Schema(description = "生化溶解氧")
private String oxygen;
/**
* 阴阳床产水PH
*/
@Schema(description = "阴阳床产水PH")
private String ph;
/**
* 预处理ORP
*/
@Schema(description = "预处理ORP")
private String orp;
}

@ -25,6 +25,7 @@
*/
package org.springblade.desk.energy.service;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
@ -59,4 +60,6 @@ public interface IBsDosingRecService extends BaseService<BsDosingRecEntity> {
*/
List<BsDosingRecExcel> exportBsDosingRec(Wrapper<BsDosingRecEntity> queryWrapper);
void towerSosRec(List<JSONObject> objList);
}

@ -25,6 +25,7 @@
*/
package org.springblade.desk.energy.service;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
@ -59,4 +60,8 @@ public interface IBsTowerReportService extends BaseService<BsTowerReportEntity>
*/
List<BsTowerReportExcel> exportBsTowerReport(Wrapper<BsTowerReportEntity> queryWrapper);
void setEpTowerRec(List<JSONObject> objList);
BsTowerReportEntity getTowerReportByTerm(String pid, Short type, Long id);
}

@ -25,6 +25,7 @@
*/
package org.springblade.desk.energy.service;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
@ -59,4 +60,6 @@ public interface IBsTowerService extends BaseService<BsTowerEntity> {
*/
List<BsTowerExcel> exportBsTower(Wrapper<BsTowerEntity> queryWrapper);
void generateData(List<JSONObject> objList);
}

@ -25,6 +25,7 @@
*/
package org.springblade.desk.energy.service;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
@ -59,4 +60,7 @@ public interface IBsWasteGasRunRecService extends BaseService<BsWasteGasRunRecEn
*/
List<BsWasteGasRunRecExcel> exportBsWasteGasRunRec(Wrapper<BsWasteGasRunRecEntity> queryWrapper);
void creatRunData(List<JSONObject> objList);
BsWasteGasRunRecEntity queryMaxDataByCode(String btCode);
}

@ -0,0 +1,40 @@
/**
* BladeX Commercial License Agreement
* Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
* <p>
* Use of this software is governed by the Commercial License Agreement
* obtained after purchasing a license from BladeX.
* <p>
* 1. This software is for development use only under a valid license
* from BladeX.
* <p>
* 2. Redistribution of this software's source code to any third party
* without a commercial license is strictly prohibited.
* <p>
* 3. Licensees may copyright their own code but cannot use segments
* from this software for such purposes. Copyright of this software
* remains with BladeX.
* <p>
* Using this software signifies agreement to this License, and the software
* must not be used for illegal purposes.
* <p>
* THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
* not liable for any claims arising from secondary or illegal development.
* <p>
* Author: Chill Zhuang (bladejava@qq.com)
*/
package org.springblade.desk.energy.service;
import org.springblade.core.mp.base.BaseService;
import org.springblade.desk.energy.pojo.entity.EpTowerRecAlarm;
/**
* 酸雾塔报警记录对照表 服务类
*
* @author BladeX
* @since 2026-04-20
*/
public interface IEpTowerRecAlarmService extends BaseService<EpTowerRecAlarm> {
}

@ -0,0 +1,45 @@
/**
* BladeX Commercial License Agreement
* Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
* <p>
* Use of this software is governed by the Commercial License Agreement
* obtained after purchasing a license from BladeX.
* <p>
* 1. This software is for development use only under a valid license
* from BladeX.
* <p>
* 2. Redistribution of this software's source code to any third party
* without a commercial license is strictly prohibited.
* <p>
* 3. Licensees may copyright their own code but cannot use segments
* from this software for such purposes. Copyright of this software
* remains with BladeX.
* <p>
* Using this software signifies agreement to this License, and the software
* must not be used for illegal purposes.
* <p>
* THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
* not liable for any claims arising from secondary or illegal development.
* <p>
* Author: Chill Zhuang (bladejava@qq.com)
*/
package org.springblade.desk.energy.service;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springblade.core.mp.base.BaseService;
import org.springblade.desk.energy.pojo.entity.RpParameterSet;
import java.util.List;
/**
* 参数设置表 服务类
*
* @author BladeX
* @since 2026-04-20
*/
public interface IRpParameterSetService extends IService<RpParameterSet> {
void setParameterSet(List<JSONObject> objList);
}

@ -25,18 +25,25 @@
*/
package org.springblade.desk.energy.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import jakarta.annotation.Resource;
import org.apache.commons.lang3.StringUtils;
import org.springblade.desk.energy.excel.BsDosingRecExcel;
import org.springblade.desk.energy.mapper.BsDosingRecMapper;
import org.springblade.desk.energy.pojo.entity.BsDosingRecEntity;
import org.springblade.desk.energy.pojo.entity.BsTowerEntity;
import org.springblade.desk.energy.pojo.vo.BsDosingRecVO;
import org.springblade.desk.energy.service.IBsDosingRecService;
import org.springblade.desk.energy.service.IBsTowerService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseServiceImpl;
import java.util.List;
import static org.springblade.desk.energy.pojo.entity.BsDosingRecEntity.HANDLE_RESULT_WAIT;
/**
* 废气/废水加药记录表 服务实现类
*
@ -45,7 +52,8 @@ import java.util.List;
*/
@Service
public class BsDosingRecServiceImpl extends BaseServiceImpl<BsDosingRecMapper, BsDosingRecEntity> implements IBsDosingRecService {
@Resource
IBsTowerService iBsTowerService;
@Override
public IPage<BsDosingRecVO> selectBsDosingRecPage(IPage<BsDosingRecVO> page, BsDosingRecVO bsDosingRec) {
if(StringUtils.isNotEmpty(bsDosingRec.getQueryDosingTime())){
@ -65,4 +73,33 @@ public class BsDosingRecServiceImpl extends BaseServiceImpl<BsDosingRecMapper, B
return bsDosingRecList;
}
@Override
public void towerSosRec(List<JSONObject> objList) {
List<BsTowerEntity> bsTowers = iBsTowerService.list();
for (BsTowerEntity bsTower : bsTowers) {
BsDosingRecEntity epDos = getOne(Wrappers.lambdaQuery(BsDosingRecEntity.class)
.eq(BsDosingRecEntity::getBtId,bsTower.getId())
.eq(BsDosingRecEntity::getHandleResult,HANDLE_RESULT_WAIT));
if (epDos != null) {
removeById(epDos.getId());
}
for (JSONObject jsonObject : objList) {
if ("false".equals(jsonObject.getString("defaultValue")) || "true".equals(jsonObject.getString("defaultValue"))) {
continue;
}
if (bsTower.getPhPoint() != null && bsTower.getPhPoint().equals(jsonObject.getString("identifierName")) && bsTower.getThreshold().doubleValue() > Double.parseDouble(jsonObject.getString("defaultValue"))) {
BsDosingRecEntity epDosingRec = new BsDosingRecEntity();
epDosingRec.setDevice(bsTower.getBtName());
epDosingRec.setDrug(bsTower.getDrugName());
epDosingRec.setDorType("2");
epDosingRec.setHandleResult(Long.valueOf(HANDLE_RESULT_WAIT));
epDosingRec.setBtId(bsTower.getId());
save(epDosingRec);
}
}
}
}
}

@ -26,17 +26,29 @@
package org.springblade.desk.energy.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import jakarta.annotation.Resource;
import org.apache.commons.lang3.StringUtils;
import org.springblade.desk.energy.excel.BsTowerReportExcel;
import org.springblade.desk.energy.mapper.BsTowerReportMapper;
import org.springblade.desk.energy.pojo.entity.BsTowerEntity;
import org.springblade.desk.energy.pojo.entity.BsTowerReportEntity;
import org.springblade.desk.energy.pojo.entity.EpTowerRecAlarm;
import org.springblade.desk.energy.pojo.entity.RpParameterSet;
import org.springblade.desk.energy.pojo.vo.BsTowerReportVO;
import org.springblade.desk.energy.service.IBsTowerReportService;
import org.springblade.desk.energy.service.IBsTowerService;
import org.springblade.desk.energy.service.IEpTowerRecAlarmService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseServiceImpl;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
* 酸雾塔报警记录表 服务实现类
@ -46,7 +58,10 @@ import java.util.List;
*/
@Service
public class BsTowerReportServiceImpl extends BaseServiceImpl<BsTowerReportMapper, BsTowerReportEntity> implements IBsTowerReportService {
@Resource
IBsTowerService iBsTowerService;
@Resource
IEpTowerRecAlarmService iEpTowerRecAlarmService;
@Override
public IPage<BsTowerReportVO> selectBsTowerReportPage(IPage<BsTowerReportVO> page, BsTowerReportVO bsTowerReport) {
if(StringUtils.isNotEmpty(bsTowerReport.getQueryBtDate())){
@ -66,4 +81,72 @@ public class BsTowerReportServiceImpl extends BaseServiceImpl<BsTowerReportMappe
return bsTowerReportList;
}
@Override
public void setEpTowerRec(List<JSONObject> objList) {
JSONObject jsonListObj = new JSONObject();
// 拿到所有的值装到一个对象中
for (JSONObject jsonObject : objList) {
jsonListObj.put(jsonObject.getString("identifierName"), jsonObject.getString("defaultValue"));
}
// 拿出所有的报警记录对照表
List<EpTowerRecAlarm> allEpTowerRecAlarm = iEpTowerRecAlarmService.list();
// 创建空的报警记录
List<EpTowerRecAlarm> allAlarmList = new ArrayList<>();
BsTowerReportEntity epTowerRec;
//
for (String s : jsonListObj.keySet()) {
for (EpTowerRecAlarm epTowerRecAlarm : allEpTowerRecAlarm) {
// 如果当前点位为在报警记录对照表中找到,并且当前点位的值为true
if (s.equals(epTowerRecAlarm.getKey()) && jsonListObj.getString(s) == "true") {
// 添加到报警记录中
allAlarmList.add(epTowerRecAlarm);
// 查看数据库中是否存在 点位为 s 并且正在报警的数据
Long num = count(Wrappers.lambdaQuery(BsTowerReportEntity.class)
.eq(BsTowerReportEntity::getKey, s)
.eq(BsTowerReportEntity::getDealStatus, "1"));
// 如果不存在则创建一条新的数据
if(num != 1) {
epTowerRec = new BsTowerReportEntity();
epTowerRec.setDealStatus(true);
epTowerRec.setBtCode(epTowerRecAlarm.getCode());
epTowerRec.setKey(epTowerRecAlarm.getKey());
epTowerRec.setErrorPoint(epTowerRecAlarm.getErrorPoint());
epTowerRec.setMessText(epTowerRecAlarm.getMessText());
epTowerRec.setBtDate(new Date());
epTowerRec.setStartTime(new Date());
save(epTowerRec);
}
}
}
};
// 剩余都是不报警的数据
allEpTowerRecAlarm.removeAll(allAlarmList);
// 拿出正在报警的数据
List<BsTowerReportEntity> alarmList = list(Wrappers.lambdaQuery(BsTowerReportEntity.class)
.eq(BsTowerReportEntity::getDealStatus, "1"));
if(alarmList.size()>0) {
for (BsTowerReportEntity towerRec : alarmList) {
for (EpTowerRecAlarm epTowerRecAlarm : allEpTowerRecAlarm) {
// 如果当前报警点位在不报警的数据中,则该点位现在不报警,并且给结束时间
if (towerRec.getKey().equals(epTowerRecAlarm.getKey())) {
towerRec.setEndTime(new Date());
towerRec.setDealStatus(false);
save(towerRec);
}
}
}
}
}
// TODO: 2026/4/21 缺少报表用表
@Override
public BsTowerReportEntity getTowerReportByTerm(String pid, Short type, Long id) {
//return getOne(Wrappers.lambdaQuery(BsTowerReportEntity.class)
// .eq(BsTowerReportEntity::getKey, pid )
// .eq(BsTowerReportEntity::get, , ))
return null;
}
}

@ -25,15 +25,21 @@
*/
package org.springblade.desk.energy.service.impl;
import com.alibaba.fastjson.JSONObject;
import jakarta.annotation.Resource;
import org.springblade.desk.energy.excel.BsTowerExcel;
import org.springblade.desk.energy.mapper.BsTowerMapper;
import org.springblade.desk.energy.pojo.entity.BsTowerEntity;
import org.springblade.desk.energy.pojo.entity.BsTowerReportEntity;
import org.springblade.desk.energy.pojo.vo.BsTowerVO;
import org.springblade.desk.energy.service.IBsTowerReportService;
import org.springblade.desk.energy.service.IBsTowerService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseServiceImpl;
import java.util.Date;
import java.util.List;
/**
@ -44,7 +50,8 @@ import java.util.List;
*/
@Service
public class BsTowerServiceImpl extends BaseServiceImpl<BsTowerMapper, BsTowerEntity> implements IBsTowerService {
//@Resource
//IBsTowerReportService epTowerReportService;
@Override
public IPage<BsTowerVO> selectBsTowerPage(IPage<BsTowerVO> page, BsTowerVO bsTower) {
return page.setRecords(baseMapper.selectBsTowerPage(page, bsTower));
@ -59,5 +66,86 @@ public class BsTowerServiceImpl extends BaseServiceImpl<BsTowerMapper, BsTowerEn
//});
return bsTowerList;
}
/**
* PH
*/
public static final Short PH = 1;
/**
* 风机
*/
public static final Short FAN = 2;
/**
* 循环泵
*/
public static final Short PUMP = 3;
@Override
public void generateData(List<JSONObject> objList) {
List<BsTowerEntity> bsTowers = list();
for (BsTowerEntity bsTower : bsTowers) {
for (JSONObject jsonObject : objList) {
String identifierName = jsonObject.getString("identifierName");
String defaultValue = jsonObject.getString("defaultValue");
// 如果当前点位与所配置PH点位一样并且点位对应的值为true
if (identifierName.equals(bsTower.getPhPoint()) && "true".equals(defaultValue)) {
queryAlsoSave(identifierName, PH, bsTower);
} else if (identifierName.equals(bsTower.getPhPoint()) && "false".equals(defaultValue)) {
queryAlsoUpdate(identifierName, PH, bsTower);
}
// 如果当前点位跟所配置风机点位一样并且点位对应的值为true
if (identifierName.equals(bsTower.getFanPoint()) && "true".equals(defaultValue)) {
this.queryAlsoSave(identifierName, FAN, bsTower);
} else if (identifierName.equals(bsTower.getFanPoint()) && "false".equals(defaultValue)) {
this.queryAlsoUpdate(identifierName, FAN, bsTower);
}
// 如果当前点位跟所配置循环泵点位一样并且点位对应的值为true
if (identifierName.equals(bsTower.getPumpPoint()) && "true".equals(defaultValue)) {
this.queryAlsoSave(identifierName, PUMP, bsTower);
} else if (identifierName.equals(bsTower.getPumpPoint()) && "false".equals(defaultValue)) {
this.queryAlsoUpdate(identifierName, PUMP, bsTower);
}
// 酸雾塔运行时间记录
//if (identifierName.equals(bsTower.getFanRunPoint()) && "true".equals(defaultValue)) {
// // 根据酸雾塔查询酸雾塔运行数据并存储开始运行时间
// EpTowerRunTime epTowerRunTime = epTowerRunTimeDao.getEpTowerRunTimeByBtId(bsTower.getBtId());
// if (epTowerRunTime == null) {
// EpTowerRunTime newEpTowerRunTime = new EpTowerRunTime();
// newEpTowerRunTime.setBsTower(bsTower);
// newEpTowerRunTime.setStartTime(new Date());
// epTowerRunTimeDao.save(newEpTowerRunTime);
// }
//} else if (identifierName.equals(bsTower.getFanRunPoint()) && "false".equals(defaultValue)) {
// // 存储关闭时间
// EpTowerRunTime epTowerRunTime = epTowerRunTimeDao.getEpTowerRunTimeByBtId(bsTower.getBtId());
// if (epTowerRunTime != null) {
// epTowerRunTime.setEtrtTime(this.getTimeFun(epTowerRunTime.getStartTime()));
// epTowerRunTime.setEndTime(new Date());
// epTowerRunTimeDao.update(epTowerRunTime);
// }
//}
}
}
}
private void queryAlsoUpdate(String identifierName, Short ph, BsTowerEntity bsTower) {
}
private void queryAlsoSave(String pid, Short type, BsTowerEntity bsTower) {
// 然后根据点位、类型、名称 并且没有结束时间的 去查数据
//BsTowerReportEntity epTowerReport = epTowerReportService.getTowerReportByTerm(pid, type, bsTower.getId());
// 如果查到不做任何操作 如果没有查到新增一条数据
//if (epTowerReport == null) {
// EpTowerReport newEpTowerReport = new EpTowerReport();
// newEpTowerReport.setBsTower(bsTower);
// newEpTowerReport.setEtrType(type);
// newEpTowerReport.setStartTime(new Date());
// newEpTowerReport.setKey(pid);
// epTowerReportDao.save(newEpTowerReport);
//}
}
}

@ -25,18 +25,28 @@
*/
package org.springblade.desk.energy.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import jakarta.annotation.Resource;
import org.apache.commons.lang3.StringUtils;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.desk.energy.excel.BsWasteGasRunRecExcel;
import org.springblade.desk.energy.mapper.BsWasteGasRunRecMapper;
import org.springblade.desk.energy.pojo.entity.BsTowerEntity;
import org.springblade.desk.energy.pojo.entity.BsWasteGasRunRecEntity;
import org.springblade.desk.energy.pojo.vo.BsWasteGasRunRecVO;
import org.springblade.desk.energy.service.IBsTowerService;
import org.springblade.desk.energy.service.IBsWasteGasRunRecService;
import org.springframework.stereotype.Service;
import java.util.List;
import java.text.NumberFormat;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
import static org.springblade.desk.energy.util.TimeSpan.dateDiff;
/**
* 废气运行记录表 服务实现类
@ -46,6 +56,8 @@ import java.util.List;
*/
@Service
public class BsWasteGasRunRecServiceImpl extends BaseServiceImpl<BsWasteGasRunRecMapper, BsWasteGasRunRecEntity> implements IBsWasteGasRunRecService {
@Resource
IBsTowerService iBsTowerService;
@Override
public IPage<BsWasteGasRunRecVO> selectBsWasteGasRunRecPage(IPage<BsWasteGasRunRecVO> page, BsWasteGasRunRecVO bsWasteGasRunRec) {
@ -70,4 +82,86 @@ public class BsWasteGasRunRecServiceImpl extends BaseServiceImpl<BsWasteGasRunRe
return bsWasteGasRunRecList;
}
@Override
public void creatRunData(List<JSONObject> objList) {
List<BsTowerEntity> bsTowers = iBsTowerService.list();
Map<String, BsTowerEntity> bsTowersMap = bsTowers
.stream()
.filter(bsTower -> StringUtils.isNotBlank(bsTower.getFanRunPoint()))
.collect(Collectors.toMap(BsTowerEntity::getFanRunPoint,
Function.identity(),
(oldValue, newValue) -> newValue));
if (bsTowersMap.size() == 0) {
return;
}
Random rand = new Random();
BsWasteGasRunRecEntity epWasteGasRunRec;
for (JSONObject jsonObject : objList) {
String name = jsonObject.getString("identifierName");
BsTowerEntity bsTower = bsTowersMap.get(name);
// 如果数据存在,并且维护得编码不是六位
if (bsTower != null && bsTower.getId() != null && bsTower.getBtCode().length() != 6) {
Boolean value = jsonObject.getBoolean("defaultValue");
// 查询最新得一条数据
epWasteGasRunRec = queryMaxDataByCode(bsTower.getBtCode());
// 如果存在
if (epWasteGasRunRec != null && epWasteGasRunRec.getId() != null) {
// 如果当前点位值为true,
if (value) {
// 如果有结束时间,说明已经开关过一次,并且此次是再次开启,如果没有不做任何处理
if (epWasteGasRunRec.getEndTime() != null) {
// 获取运行时间
epWasteGasRunRec = new BsWasteGasRunRecEntity();
epWasteGasRunRec.setDeviceNum(bsTower.getBtCode());
epWasteGasRunRec.setStartTime(new Date());
epWasteGasRunRec.setSysData(String.valueOf(Double.valueOf(rand.nextInt(300) + 800) / 100));
save(epWasteGasRunRec);
}
} else {
// 如果没有结束时间,说明开过之后一直运行到现在,要给上结束时间
if (epWasteGasRunRec.getEndTime() == null) {
// 获取运行时间
String s = formatDouble(dateDiff(epWasteGasRunRec.getStartTime(), new Date()).getTotalHours(), 2, 0, false);
epWasteGasRunRec.setRunTime(Double.valueOf(s));
epWasteGasRunRec.setEndTime(new Date());
updateById(epWasteGasRunRec);
}
}
} else {
// 没有运行记录,创建一条
epWasteGasRunRec = new BsWasteGasRunRecEntity();
epWasteGasRunRec.setDeviceNum(bsTower.getBtCode());
epWasteGasRunRec.setStartTime(new Date());
epWasteGasRunRec.setSysData(String.valueOf((rand.nextInt(300) + 800) / 100));
save(epWasteGasRunRec);
}
}
}
}
public static String formatDouble(double n, int maxDigits, int minDigits, boolean useGrouping) {
if (maxDigits > 10) {
maxDigits = 10;
}
if (minDigits < 0) {
minDigits = 0;
}
NumberFormat nf = NumberFormat.getInstance();
nf.setMaximumFractionDigits(maxDigits);
nf.setMinimumFractionDigits(minDigits);
nf.setGroupingUsed(useGrouping);
return nf.format(n);
}
@Override
public BsWasteGasRunRecEntity queryMaxDataByCode(String btCode) {
return getOne(Wrappers.lambdaQuery(BsWasteGasRunRecEntity.class)
.eq(BsWasteGasRunRecEntity::getDeviceNum, btCode),false);
}
}

@ -0,0 +1,44 @@
/**
* BladeX Commercial License Agreement
* Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
* <p>
* Use of this software is governed by the Commercial License Agreement
* obtained after purchasing a license from BladeX.
* <p>
* 1. This software is for development use only under a valid license
* from BladeX.
* <p>
* 2. Redistribution of this software's source code to any third party
* without a commercial license is strictly prohibited.
* <p>
* 3. Licensees may copyright their own code but cannot use segments
* from this software for such purposes. Copyright of this software
* remains with BladeX.
* <p>
* Using this software signifies agreement to this License, and the software
* must not be used for illegal purposes.
* <p>
* THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
* not liable for any claims arising from secondary or illegal development.
* <p>
* Author: Chill Zhuang (bladejava@qq.com)
*/
package org.springblade.desk.energy.service.impl;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.desk.energy.mapper.EpTowerRecAlarmMapper;
import org.springblade.desk.energy.pojo.entity.EpTowerRecAlarm;
import org.springblade.desk.energy.service.IEpTowerRecAlarmService;
import org.springframework.stereotype.Service;
/**
* 酸雾塔报警记录对照表 服务实现类
*
* @author BladeX
* @since 2026-04-20
*/
@Service
public class EpTowerRecAlarmServiceImpl extends BaseServiceImpl<EpTowerRecAlarmMapper, EpTowerRecAlarm> implements IEpTowerRecAlarmService {
}

@ -0,0 +1,93 @@
/**
* BladeX Commercial License Agreement
* Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
* <p>
* Use of this software is governed by the Commercial License Agreement
* obtained after purchasing a license from BladeX.
* <p>
* 1. This software is for development use only under a valid license
* from BladeX.
* <p>
* 2. Redistribution of this software's source code to any third party
* without a commercial license is strictly prohibited.
* <p>
* 3. Licensees may copyright their own code but cannot use segments
* from this software for such purposes. Copyright of this software
* remains with BladeX.
* <p>
* Using this software signifies agreement to this License, and the software
* must not be used for illegal purposes.
* <p>
* THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
* not liable for any claims arising from secondary or illegal development.
* <p>
* Author: Chill Zhuang (bladejava@qq.com)
*/
package org.springblade.desk.energy.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.desk.energy.mapper.RpParameterSetMapper;
import org.springblade.desk.energy.pojo.entity.RpParameterSet;
import org.springblade.desk.energy.service.IRpParameterSetService;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 参数设置表 服务实现类
*
* @author BladeX
* @since 2026-04-20
*/
@Service
public class RpParameterSetServiceImpl extends ServiceImpl<RpParameterSetMapper, RpParameterSet> implements IRpParameterSetService {
@Override
public void setParameterSet(List<JSONObject> objList) {
if (objList == null || objList.isEmpty()) {
return;
}
JSONObject obj = new JSONObject(objList.size());
for (JSONObject jsonObject : objList) {
if (jsonObject == null) {
continue;
}
if (StringUtils.isNotEmpty(jsonObject.getString("identifierName"))) {
obj.put(jsonObject.getString("identifierName"), jsonObject.getString("defaultValue"));
}
}
RpParameterSet rpParameterSet = new RpParameterSet();
// 拿出所需的值存储
rpParameterSet.setRpsDate(obj.getString("$日期"));
rpParameterSet.setRpsTime(obj.getString("$时间"));
rpParameterSet.setNfA(obj.getString("NF产水电导率A"));
rpParameterSet.setNfB(obj.getString("NF产水电导率B"));
rpParameterSet.setNf(obj.getString("NF进水电导率"));
rpParameterSet.setRo11A(obj.getString("RO1_1_产水电导率A"));
rpParameterSet.setRo11B(obj.getString("RO1_1_产水电导率B"));
rpParameterSet.setRo11C(obj.getString("RO1_1_产水电导率C"));
rpParameterSet.setRo11(obj.getString("RO1_1_进水电导率"));
rpParameterSet.setRo11Ph(obj.getString("RO1_浓水PH值"));
rpParameterSet.setRo21(obj.getString("RO2_1_产水电导率"));
rpParameterSet.setRo21Rate(obj.getString("RO2_1_进水电导率"));
rpParameterSet.setRo22Rate(obj.getString("RO2_2_产水电导率"));
rpParameterSet.setRo22(obj.getString("RO2_2_进水电导率"));
rpParameterSet.setElectPh(obj.getString("电镀镍PH值"));
rpParameterSet.setOrpA(obj.getString("废液反应池ORP_A"));
rpParameterSet.setOrpB(obj.getString("废液反应池ORP_B"));
rpParameterSet.setPhA(obj.getString("废液反应池PH_A"));
rpParameterSet.setPhB(obj.getString("废液反应池PH_B"));
rpParameterSet.setTempA(obj.getString("废液反应池温度_A"));
rpParameterSet.setTempB(obj.getString("废液反应池温度_B"));
rpParameterSet.setOxygen(obj.getString("生化溶解氧"));
rpParameterSet.setPh(obj.getString("阴阳床产水PH"));
rpParameterSet.setOrp(obj.getString("预处理ORP"));
save(rpParameterSet);
}
}

@ -4,11 +4,16 @@ import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springblade.desk.energy.pojo.entity.BsTowerEntity;
import org.springblade.desk.energy.pojo.entity.RpParameterSet;
import org.springblade.desk.energy.service.*;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import java.util.List;
@Service
@ -17,9 +22,17 @@ public class HttpRequestService {
private static final Logger log = LoggerFactory.getLogger(HttpRequestService.class);
// private final RestTemplate httpClientTemplate;
private final RestTemplate httpClientTemplate;
private final IBsTowerReportService epTowerRecService;
private final IBsWasteGasRunRecService epWasteGasRunRecService;
private final IRpParameterSetService rpParameterSetServer;
private final IBsDosingRecService epDosingRecService;
private final IBsTowerService bsTowerService;
@Value("${request.iotNew.url}")
private String iotNewUrl;
/**
@ -39,7 +52,7 @@ public class HttpRequestService {
JSONObject result = null;
HttpEntity<JSONObject> entity = new HttpEntity<>(object, headers);
ResponseEntity<JSONObject> responseEntity= null;//httpClientTemplate.postForEntity(iotNewUrl + "/deviceForZhgd/getDataByIotCode", entity, JSONObject.class);
ResponseEntity<JSONObject> responseEntity= httpClientTemplate.postForEntity(iotNewUrl + "/deviceForZhgd/getDataByIotCode", entity, JSONObject.class);
result = responseEntity.getBody();
if (result != null && result.getInteger("code").equals(200)) {
JSONObject object1 = result.getJSONObject("data");
@ -49,18 +62,18 @@ public class HttpRequestService {
if (flag) {
if (str.equals("rpAcidMistTower")) {
// 酸雾塔报警记录
// epTowerRecService.setEpTowerRec(objList);
epTowerRecService.setEpTowerRec(objList);
// 废气运行记录
// epWasteGasRunRecService.creatRunData(objList);
epWasteGasRunRecService.creatRunData(objList);
} else if (str.equals("rpParameterSet")) {
// 参数设置
// rpParameterSetServer.setParameterSet(objList);
rpParameterSetServer.setParameterSet(objList);
} else if (str.equals("towerSosRec")) {
// 生产酸雾塔报警任务
// epDosingRecService.towerSosRec(objList);
epDosingRecService.towerSosRec(objList);
// 生成报警数据用于报表展示
// bsTowerService.generateData(objList);
bsTowerService.generateData(objList);
}
} else {
return objList;

@ -0,0 +1,146 @@
package org.springblade.desk.energy.util;/**
* @date : 2026/4/21 10:02
*/
import java.io.Serializable;
import java.util.Date;
/**
* 文件名称
* @module 归属项目
* @author ***
* @date 2025/11/26 10:27
*/
public class TimeSpan implements Serializable {
private static final long serialVersionUID = 807778275482047920L;
private static final long MILLISECONDS_OF_DAY = 86400000L;
private static final long MILLISECONDS_OF_HOUR = 3600000L;
private static final long MILLISECONDS_OF_MINUTE = 60000L;
private static final long MILLISECONDS_OF_SECOND = 1000L;
private long totalMilliseconds;
private int days;
private int hours;
private int minutes;
private int seconds;
private int milliseconds;
public static TimeSpan days(int day) {
return new TimeSpan((long)day * 86400000L);
}
public static TimeSpan hours(int hour) {
return new TimeSpan((long)hour * 3600000L);
}
public static TimeSpan minutes(int minute) {
return new TimeSpan((long)minute * 60000L);
}
public TimeSpan(Date sd, Date ed) {
this(ed.getTime() - sd.getTime());
}
public TimeSpan(int days, int hours, int minutes, int seconds, int milliseconds) {
this((long)days * 86400000L + (long)hours * 3600000L + (long)minutes * 60000L + (long)seconds * 1000L + (long)milliseconds);
}
public TimeSpan(long mscs) {
this.totalMilliseconds = 0L;
this.days = 0;
this.hours = 0;
this.minutes = 0;
this.seconds = 0;
this.milliseconds = 0;
this.totalMilliseconds = mscs;
boolean isNav = this.totalMilliseconds < 0L;
long millBanlance = Math.abs(this.totalMilliseconds);
this.days = (int)(millBanlance / 86400000L);
millBanlance -= 86400000L * (long)this.days;
if (isNav) {
this.days = 0 - this.days;
}
if (millBanlance > 0L) {
this.hours = (int)(millBanlance / 3600000L);
millBanlance -= 3600000L * (long)this.hours;
if (isNav) {
this.hours = 0 - this.hours;
}
if (millBanlance > 0L) {
this.minutes = (int)(millBanlance / 60000L);
millBanlance -= 60000L * (long)this.minutes;
if (isNav) {
this.minutes = 0 - this.minutes;
}
if (millBanlance > 0L) {
this.seconds = (int)(millBanlance / 1000L);
millBanlance -= 1000L * (long)this.seconds;
if (isNav) {
this.seconds = 0 - this.seconds;
}
if (millBanlance > 0L) {
this.milliseconds = (int)millBanlance;
if (isNav) {
this.milliseconds = 0 - this.milliseconds;
}
}
}
}
}
}
public int getDays() {
return this.days;
}
public int getHours() {
return this.hours;
}
public int getMinutes() {
return this.minutes;
}
public int getSeconds() {
return this.seconds;
}
public int getMilliseconds() {
return this.milliseconds;
}
public long getTotalMilliseconds() {
return this.totalMilliseconds;
}
public double getTotalSeconds() {
return 1.0D * (double)this.totalMilliseconds / 1000.0D;
}
public double getTotalMinutes() {
return 1.0D * (double)this.totalMilliseconds / 60000.0D;
}
public double getTotalHours() {
return 1.0D * (double)this.totalMilliseconds / 3600000.0D;
}
public double getTotalDays() {
return 1.0D * (double)this.totalMilliseconds / 8.64E7D;
}
public static final TimeSpan dateDiff(Date date1, Date date2) {
long diff = 0L;
if (date1 != null && date2 != null) {
diff = date2.getTime() - date1.getTime();
}
return new TimeSpan(diff);
}
}

@ -49,5 +49,5 @@ public interface IYieldOrderCraftService extends BaseService<YieldOrderCraft> {
* @param rxlSpace 需要特殊分派true:需要 false不需要null不需要
* @throws BusinessException
*/
void automaticDispatch(List<YieldOrderCraft> yieldOrderCraftList, YieldOrder yieldOrder, Boolean factor, Boolean rxlSpace) throws BusinessException;
void automaticDispatch(List<YieldOrderCraft> yieldOrderCraftList, YieldOrder yieldOrder, Boolean factor, Boolean rxlSpace) throws Exception;
}

@ -74,7 +74,7 @@ public class YieldOrderCraftServiceImpl extends BaseServiceImpl<YieldOrderCraftM
public List<YieldOrderCraft> listByYoId(Long yoId) {
LambdaQueryWrapper<YieldOrderCraft> queryWrapper = Wrappers.lambdaQuery(YieldOrderCraft.class)
.eq(YieldOrderCraft::getYoId, yoId)
.eq(YieldOrderCraft::getIsDeleted, CommonConstant.DELETE_FALSE);
.eq(YieldOrderCraft::getIsDeleted, CommonConstant.DELETE_FALSE).orderByAsc(YieldOrderCraft::getProcessNo);
List<YieldOrderCraft> craftList = baseMapper.selectList(queryWrapper);
craftList.stream().forEach(item ->{
BsProcessSetEntity processSet = processSetService.getById(item.getPpsId());
@ -93,9 +93,10 @@ public class YieldOrderCraftServiceImpl extends BaseServiceImpl<YieldOrderCraftM
}
@Override
public void automaticDispatch(List<YieldOrderCraft> yieldOrderCraftList, YieldOrder yieldOrder, Boolean factor, Boolean rxlSpace) throws BusinessException {
public void automaticDispatch(List<YieldOrderCraft> yieldOrderCraftList, YieldOrder yieldOrder, Boolean factor, Boolean rxlSpace) throws Exception {
// 组装key为工艺能力的作业计划map
Map<Long, List<YieldOrderCraft>> craftAbilityMap = yieldOrderCraftList.stream().collect(Collectors.groupingBy(YieldOrderCraft::getCaId));
Map<Long, List<YieldOrderCraft>> craftAbilityMap = yieldOrderCraftList.stream()
.collect(Collectors.groupingBy(YieldOrderCraft::getCaId,LinkedHashMap::new,Collectors.toList()));
//作业计划map工艺能力key集合
Set<Long> craftKeys = craftAbilityMap.keySet();
//获取到认定的主工艺能力(默认第一个工艺能力为主工艺能力)
@ -382,7 +383,7 @@ public class YieldOrderCraftServiceImpl extends BaseServiceImpl<YieldOrderCraftM
*/
private List<YieldOrderCraft> bindWorkCenter(Long workCenterId, Map<Long, WorkCenter> workCenterMap, Long craftAbilityId,
Map<Long, List<YieldOrderCraft>> craftAbilityMap, Set<Long> craftKeys,
YieldOrder yieldOrder, Boolean factor) throws BusinessException {
YieldOrder yieldOrder, Boolean factor) throws Exception {
List<YieldOrderCraft> orderCrafts = new ArrayList<>();
// 开始循环生产订单中组合的工艺能力key集合, 主工艺能力之前的全部分配到此作业中心
for (Long craftId : craftKeys) {
@ -568,7 +569,7 @@ public class YieldOrderCraftServiceImpl extends BaseServiceImpl<YieldOrderCraftM
* @CreateTime 2023/2/17 16:28
*/
private List<YieldOrderCraft> bindOem(Oem oemCustomer, Long craftAbilityId, Map<Long,
List<YieldOrderCraft>> craftAbilityMap, Set<Long> keys, YieldOrder yieldOrder, Boolean factor) {
List<YieldOrderCraft>> craftAbilityMap, Set<Long> keys, YieldOrder yieldOrder, Boolean factor) throws Exception {
List<YieldOrderCraft> rtnList = new ArrayList<>();

Loading…
Cancel
Save