Merge branch 'master' of http://8.140.179.55:20000/r/pipIrr-SV
| | |
| | | import org.springframework.web.client.RestTemplate; |
| | | import org.springframework.web.util.UriComponentsBuilder; |
| | | |
| | | import java.text.ParseException; |
| | | import java.text.SimpleDateFormat; |
| | | import java.time.LocalDateTime; |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.util.Date; |
| | | import java.util.HashMap; |
| | | import java.util.Map; |
| | | import java.util.Random; |
| | | import java.util.*; |
| | | import java.util.concurrent.CompletableFuture; |
| | | import java.util.concurrent.ExecutionException; |
| | | import java.util.concurrent.TimeUnit; |
| | |
| | | if (comType == 1) { |
| | | virtualCard.setInUse((byte) 0); |
| | | virtualCard.setIntakeId(null); |
| | | virtualCard.setOpenTime(null); |
| | | } else { |
| | | virtualCard.setInUse((byte) 1); |
| | | virtualCard.setIntakeId(intakeId); |
| | |
| | | if (comType == 1) { |
| | | virtualCard.setInUse((byte) 1); |
| | | virtualCard.setIntakeId(intakeId); |
| | | |
| | | // 如果是计划开阀,从命令日志中获取计划时间,否则取当前时间 |
| | | if(commandCode.equals(CodeV1.cd_A1) || commandCode.equals(CodeV1.cd_A2)) { |
| | | // 计划开阀 |
| | | Date openTime = null; |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
| | | try { |
| | | openTime = sdf.parse(rmCommandHistoryMapper.getTimeByCommId(comId)); |
| | | }catch (ParseException e) { |
| | | } |
| | | virtualCard.setOpenTime(openTime); |
| | | }else { |
| | | // 非计划开阀 |
| | | virtualCard.setOpenTime(new Date()); |
| | | } |
| | | } else { |
| | | virtualCard.setInUse((byte) 0); |
| | | virtualCard.setIntakeId(null); |
| | |
| | | * @return |
| | | */ |
| | | List<VoCommand> getCommandHistories(Map<?, ?> params); |
| | | |
| | | /** |
| | | * 根据命令日志ID获取预约时间,向虚拟卡写开阀时间用 |
| | | * @param commId |
| | | * @return |
| | | */ |
| | | String getTimeByCommId(Long commId); |
| | | } |
| | |
| | | private Byte inUse; |
| | | |
| | | /** |
| | | * 取水口ID(虚拟卡使用时所应用于的取水口ID) |
| | | */ |
| | | @Schema(description = "取水口ID", requiredMode = Schema.RequiredMode.NOT_REQUIRED) |
| | | private Long intakeId; |
| | | |
| | | /** |
| | | * 开阀时间 |
| | | */ |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private Date openTime; |
| | | |
| | | /** |
| | | * 创建时间 |
| | | */ |
| | | @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.NOT_REQUIRED) |
| | | private Date createTime; |
| | | |
| | | /** |
| | | * 取水口ID(虚拟卡使用时所应用于的取水口ID) |
| | | */ |
| | | @Schema(description = "取水口ID", requiredMode = Schema.RequiredMode.NOT_REQUIRED) |
| | | private Long intakeId; |
| | | |
| | | } |
| | |
| | | import com.fasterxml.jackson.annotation.JsonPropertyOrder; |
| | | import lombok.Data; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * @author ZhuBaoMin |
| | | * @date 2024-05-24 16:30 |
| | |
| | | */ |
| | | |
| | | @Data |
| | | @JsonPropertyOrder({"intakeNum", "isOnLine", "rtuAddr", "vcNum", "orderNo", "state", "planned"}) |
| | | @JsonPropertyOrder({"intakeNum", "isOnLine", "rtuAddr", "vcNum", "orderNo", "state", "planned", "dt", "waterInstant"}) |
| | | public class VoUnclosedValve implements BaseEntity { |
| | | private static final long serialVersionUID = 202405241634001L; |
| | | |
| | |
| | | */ |
| | | private Boolean planned; |
| | | |
| | | //private Date openTime; |
| | | /** |
| | | * 工作报时间 |
| | | */ |
| | | private Date dt; |
| | | |
| | | /** |
| | | * 瞬时流量 |
| | | */ |
| | | private Double waterInstant; |
| | | } |
| | |
| | | <select id="getUnclosedValves" resultType="com.dy.pipIrrGlobal.voRm.VoUnclosedValve"> |
| | | SELECT |
| | | inta.name AS intakeNum, |
| | | IFNULL(rtus.isOnLine,'未知') AS isOnLine, |
| | | IFNULL(rtus.isOnLine, false) AS isOnLine, |
| | | com.rtu_addr AS rtuAddr, |
| | | com.param ->> '$.icCardNo' AS vcNum, |
| | | ( |
| | |
| | | ) AS orderNo, |
| | | 'toClose' AS state, |
| | | CASE |
| | | WHEN com.command_code = 'A1' OR com.command_code = 'A2' THEN 0 |
| | | WHEN com.command_code = 'A1' OR com.command_code = 'A2' THEN 1 |
| | | ELSE 0 |
| | | END AS planned, |
| | | com.send_time AS sendTime, |
| | |
| | | </if> |
| | | </trim> |
| | | </select> |
| | | |
| | | <!--根据命令日志ID获取预约时间,向虚拟卡写开阀时间用--> |
| | | <select id="getTimeByCommId" resultType="java.lang.String"> |
| | | SELECT |
| | | CONCAT(param ->> '$.year', '-', param ->> '$.month', '-', param ->> '$.day', ' ', param ->> '$.hour', ':', param ->> '$.minute', ':00') AS openTime |
| | | FROM rm_command_history |
| | | WHERE com_id = #{commId} |
| | | </select> |
| | | </mapper> |
| | |
| | | <result column="last_operate_time" jdbcType="TIMESTAMP" property="lastOperateTime" /> |
| | | <result column="in_use" jdbcType="TINYINT" property="inUse" /> |
| | | <result column="intake_id" jdbcType="BIGINT" property="intakeId" /> |
| | | <result column="open_time" jdbcType="TIMESTAMP" property="openTime" /> |
| | | <result column="create_time" jdbcType="TIMESTAMP" property="createTime" /> |
| | | </resultMap> |
| | | <sql id="Base_Column_List"> |
| | | <!--@mbg.generated--> |
| | | id, vc_num, client_id, money, state, last_operate, last_operate_time, in_use, intake_id, create_time |
| | | id, vc_num, client_id, money, state, last_operate, last_operate_time, in_use, intake_id, open_time, create_time |
| | | </sql> |
| | | <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap"> |
| | | <!--@mbg.generated--> |
| | |
| | | <!--@mbg.generated--> |
| | | insert into se_virtual_card (id, vc_num, client_id, |
| | | money, state, last_operate, last_operate_time, |
| | | in_use, intake_id, create_time) |
| | | in_use, intake_id, open_time, create_time) |
| | | values (#{id,jdbcType=BIGINT}, #{vcNum,jdbcType=BIGINT}, #{clientId,jdbcType=BIGINT}, |
| | | #{money,jdbcType=FLOAT}, #{state,jdbcType=TINYINT}, #{lastOperate,jdbcType=TINYINT}, #{lastOperateTime,jdbcType=TIMESTAMP}, |
| | | #{inUse,jdbcType=TINYINT}, #{intakeId,jdbcType=BIGINT},#{createTime,jdbcType=TIMESTAMP}) |
| | | #{inUse,jdbcType=TINYINT}, #{intakeId,jdbcType=BIGINT},#{openTime,jdbcType=TIMESTAMP},#{createTime,jdbcType=TIMESTAMP}) |
| | | </insert> |
| | | <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoSe.SeVirtualCard"> |
| | | <!--@mbg.generated--> |
| | |
| | | <if test="intakeId != null"> |
| | | intake_id, |
| | | </if> |
| | | <if test="openTime != null"> |
| | | open_time, |
| | | </if> |
| | | <if test="createTime != null"> |
| | | create_time, |
| | | </if> |
| | |
| | | </if> |
| | | <if test="intakeId != null"> |
| | | #{intakeId,jdbcType=BIGINT}, |
| | | </if> |
| | | <if test="openTime != null"> |
| | | #{openTime,jdbcType=TIMESTAMP}, |
| | | </if> |
| | | <if test="createTime != null"> |
| | | #{createTime,jdbcType=TIMESTAMP}, |
| | |
| | | <if test="intakeId != null"> |
| | | intake_id = #{intakeId,jdbcType=BIGINT}, |
| | | </if> |
| | | <if test="openTime != null"> |
| | | open_time = #{openTime,jdbcType=TIMESTAMP}, |
| | | </if> |
| | | <if test="createTime != null"> |
| | | create_time = #{createTime,jdbcType=TIMESTAMP}, |
| | | </if> |
| | |
| | | last_operate_time = #{lastOperateTime,jdbcType=TIMESTAMP}, |
| | | in_use = #{inUse,jdbcType=TINYINT}, |
| | | intake_id = #{intakeId,jdbcType=BIGINT}, |
| | | open_time = #{openTime,jdbcType=TIMESTAMP}, |
| | | create_time = #{createTime,jdbcType=TIMESTAMP} |
| | | where id = #{id,jdbcType=BIGINT} |
| | | </update> |
| | |
| | | public class ValveCtrl extends ComSupport { |
| | | private final CommandSv commandSv; |
| | | private final SeVirtualCardMapper seVirtualCardMapper; |
| | | private final IDLongGenerator idLongGenerator; |
| | | |
| | | @Value("${mw.rtuCallbackUrl_rm}") |
| | | private String rtuCallbackUrl_rm; |
| | |
| | | private String key_mw = "comSendUrl"; |
| | | |
| | | @Autowired |
| | | public ValveCtrl(CommandSv commandSv, SeVirtualCardMapper seVirtualCardMapper, IDLongGenerator idLongGenerator, Environment env) { |
| | | public ValveCtrl(CommandSv commandSv, SeVirtualCardMapper seVirtualCardMapper, Environment env) { |
| | | this.commandSv = commandSv; |
| | | this.seVirtualCardMapper = seVirtualCardMapper; |
| | | this.idLongGenerator = idLongGenerator; |
| | | this.env = env; |
| | | } |
| | | |
| | |
| | | Long intakeId = valve.getIntakeId(); |
| | | Long vcId = valve.getVcId(); |
| | | Long operator = valve.getOperator(); |
| | | Long comId = idLongGenerator.generate(); |
| | | Long comId = new IDLongGenerator().generate(); |
| | | |
| | | // 获取水价 |
| | | Double waterPrice = commandSv.getPrice(); |
| | |
| | | String vcNum = voUnclosedParam.getVcNum(); |
| | | Long vcId = Optional.ofNullable(seVirtualCardMapper.getVcIdByNum(vcNum)).orElse(0L); |
| | | String orderNo = voUnclosedParam.getOrderNo(); |
| | | Long comId = idLongGenerator.generate(); |
| | | Long comId = new IDLongGenerator().generate(); |
| | | |
| | | // 阀控器地址换取水口ID和通讯协议 |
| | | JSONObject job_rtu = getRtu(null, rtuAddr); |
| | |
| | | Long intakeId = valve.getIntakeId(); |
| | | Long vcId = valve.getVcId(); |
| | | Long operator = valve.getOperator(); |
| | | Long comId = idLongGenerator.generate(); |
| | | Long comId = new IDLongGenerator().generate(); |
| | | |
| | | /** |
| | | * 如果农户选择了虚拟卡,则使用该虚拟卡 |
| | |
| | | String vcNum = voUnclosedParam.getVcNum(); |
| | | Long vcId = Optional.ofNullable(seVirtualCardMapper.getVcIdByNum(vcNum)).orElse(0L); |
| | | String orderNo = voUnclosedParam.getOrderNo(); |
| | | Long comId = idLongGenerator.generate(); |
| | | Long comId = new IDLongGenerator().generate(); |
| | | |
| | | // 阀控器地址换取水口ID和通讯协议 |
| | | JSONObject job_rtu = getRtu(null, rtuAddr); |
| | |
| | | Long vcId = automaticClose.getVcId(); |
| | | Integer minutes = automaticClose.getMinutes(); |
| | | Long operator = automaticClose.getOperator(); |
| | | Long comId = idLongGenerator.generate(); |
| | | Long comId = new IDLongGenerator().generate(); |
| | | |
| | | /** |
| | | * 如果农户选择了虚拟卡,则使用该虚拟卡 |
| | |
| | | Long vcId = automaticClose.getVcId(); |
| | | Integer waterAmount = automaticClose.getWaterAmount(); |
| | | Long operator = automaticClose.getOperator(); |
| | | Long comId = idLongGenerator.generate(); |
| | | Long comId = new IDLongGenerator().generate(); |
| | | |
| | | /** |
| | | * 如果农户选择了虚拟卡,则使用该虚拟卡 |
| | |
| | | Date plannedOpenTime = automaticClose.getPlannedOpenTime(); |
| | | Integer minutes = automaticClose.getMinutes(); |
| | | Long operator = automaticClose.getOperator(); |
| | | Long comId = idLongGenerator.generate(); |
| | | Long comId = new IDLongGenerator().generate(); |
| | | |
| | | Integer year = Integer.parseInt(String.format("%tY", plannedOpenTime)); |
| | | Integer month = Integer.parseInt(String.format("%tm", plannedOpenTime)); |
| | |
| | | Date plannedOpenTime = automaticClose.getPlannedOpenTime(); |
| | | Integer waterAmount = automaticClose.getWaterAmount(); |
| | | Long operator = automaticClose.getOperator(); |
| | | Long comId = idLongGenerator.generate(); |
| | | Long comId = new IDLongGenerator().generate(); |
| | | |
| | | Integer year = Integer.parseInt(String.format("%tY", plannedOpenTime)); |
| | | Integer month = Integer.parseInt(String.format("%tm", plannedOpenTime)); |
| | |
| | | Double chargeWater = po.getChargeWater(); |
| | | Long operator = po.getOperator(); |
| | | String flowNo = RandomStringUtils.randomNumeric(12); // 生成12位随机数 |
| | | Long comId = idLongGenerator.generate(); |
| | | Long comId = new IDLongGenerator().generate(); |
| | | |
| | | // 取水口ID换阀控器地址及通讯协议 |
| | | JSONObject job_rtu = getRtu(intakeId, null); |
| | |
| | | Long intakeId = card.getIntakeId(); |
| | | String cardAddr = card.getCardAddr(); |
| | | Long operator = card.getOperator(); |
| | | Long comId = idLongGenerator.generate(); |
| | | Long comId = new IDLongGenerator().generate(); |
| | | |
| | | // 取水口ID换阀控器地址及通讯协议 |
| | | JSONObject job_rtu = getRtu(intakeId, null); |
| | |
| | | public class ValveCtrl extends ComSupport { |
| | | private final CommandSv commandSv; |
| | | private final SeVirtualCardMapper seVirtualCardMapper; |
| | | private final IDLongGenerator idLongGenerator; |
| | | |
| | | @Value("${mw.rtuCallbackUrl_wx}") |
| | | private String rtuCallbackUrl_wx; |
| | |
| | | private String key_mw = "comSendUrl"; |
| | | |
| | | @Autowired |
| | | public ValveCtrl(CommandSv commandSv, SeVirtualCardMapper seVirtualCardMapper, IDLongGenerator idLongGenerator, Environment env) { |
| | | public ValveCtrl(CommandSv commandSv, SeVirtualCardMapper seVirtualCardMapper, Environment env) { |
| | | this.commandSv = commandSv; |
| | | this.seVirtualCardMapper = seVirtualCardMapper; |
| | | this.idLongGenerator = idLongGenerator; |
| | | this.env = env; |
| | | } |
| | | |
| | |
| | | * @return |
| | | */ |
| | | @PostMapping(path = "open_wx", consumes = MediaType.APPLICATION_JSON_VALUE) |
| | | //@Transactional(rollbackFor = Exception.class) |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public BaseResponse<Boolean> open(@RequestBody @Valid ValveOpen valve, BindingResult bindingResult) { |
| | | if (bindingResult != null && bindingResult.hasErrors()) { |
| | | return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); |
| | |
| | | Long vcId = valve.getVcId(); |
| | | Boolean forceOpen = valve.getForceOpen(); |
| | | Long operator = valve.getOperator(); |
| | | Long comId = idLongGenerator.generate(); |
| | | Long comId = new IDLongGenerator().generate(); |
| | | |
| | | if(intakeId == null && intakeName == null) { |
| | | return BaseResponseUtils.buildErrorMsg(WechatResultCode.PLEASE_SELECT_A_INTAKE.getMessage()); |
| | |
| | | Long vcId = Optional.ofNullable(seVirtualCardMapper.getVcIdByNum(vcNum)).orElse(0L); |
| | | String orderNo = valve.getOrderNo(); |
| | | Long operator = valve.getOperator(); |
| | | Long comId = idLongGenerator.generate(); |
| | | Long comId = new IDLongGenerator().generate(); |
| | | |
| | | // 阀控器地址换取水口ID和通讯协议 |
| | | JSONObject job_rtu = getRtu(null, rtuAddr); |
| | |
| | | Long vcId = automaticClose.getVcId(); |
| | | Integer minutes = automaticClose.getMinutes(); |
| | | Long operator = automaticClose.getOperator(); |
| | | Long comId = idLongGenerator.generate(); |
| | | Long comId = new IDLongGenerator().generate(); |
| | | |
| | | /** |
| | | * 如果农户选择了虚拟卡,则使用该虚拟卡 |
| | |
| | | Long vcId = automaticClose.getVcId(); |
| | | Integer waterAmount = automaticClose.getWaterAmount(); |
| | | Long operator = automaticClose.getOperator(); |
| | | Long comId = idLongGenerator.generate(); |
| | | Long comId = new IDLongGenerator().generate(); |
| | | |
| | | /** |
| | | * 如果农户选择了虚拟卡,则使用该虚拟卡 |
| | |
| | | Date plannedOpenTime = automaticClose.getPlannedOpenTime(); |
| | | Integer minutes = automaticClose.getMinutes(); |
| | | Long operator = automaticClose.getOperator(); |
| | | Long comId = idLongGenerator.generate(); |
| | | Long comId = new IDLongGenerator().generate(); |
| | | |
| | | Integer year = Integer.parseInt(String.format("%tY", plannedOpenTime)); |
| | | Integer month = Integer.parseInt(String.format("%tm", plannedOpenTime)); |
| | |
| | | Date plannedOpenTime = automaticClose.getPlannedOpenTime(); |
| | | Integer waterAmount = automaticClose.getWaterAmount(); |
| | | Long operator = automaticClose.getOperator(); |
| | | Long comId = idLongGenerator.generate(); |
| | | Long comId = new IDLongGenerator().generate(); |
| | | |
| | | Integer year = Integer.parseInt(String.format("%tY", plannedOpenTime)); |
| | | Integer month = Integer.parseInt(String.format("%tm", plannedOpenTime)); |
| | |
| | | Double chargeWater = po.getChargeWater(); |
| | | Long operator = po.getOperator(); |
| | | String flowNo = RandomStringUtils.randomNumeric(12); // 生成12位随机数 |
| | | Long comId = idLongGenerator.generate(); |
| | | Long comId = new IDLongGenerator().generate(); |
| | | |
| | | // 取水口ID换阀控器地址及通讯协议 |
| | | JSONObject job_rtu = getRtu(intakeId, null); |