| | |
| | | import com.alibaba.fastjson2.JSONObject; |
| | | import com.dy.common.mw.protocol.Command; |
| | | import com.dy.common.webUtil.QueryResultVo; |
| | | import com.dy.pipIrrGlobal.daoPr.PrControllerMapper; |
| | | import com.dy.pipIrrGlobal.command.ComSupport; |
| | | import com.dy.pipIrrGlobal.daoPr.PrIntakeMapper; |
| | | import com.dy.pipIrrGlobal.daoPr.PrIntakeVcMapper; |
| | | import com.dy.pipIrrGlobal.daoPr.PrWaterPriceMapper; |
| | | import com.dy.pipIrrGlobal.daoRm.RmCommandHistoryMapper; |
| | | import com.dy.pipIrrGlobal.daoSe.SeClientCardMapper; |
| | | import com.dy.pipIrrGlobal.daoSe.SeVirtualCardMapper; |
| | | import com.dy.pipIrrGlobal.pojoRm.RmCommandHistory; |
| | | import com.dy.pipIrrGlobal.pojoSe.SeClientCard; |
| | | import com.dy.pipIrrGlobal.voPr.VoOnLineIntake; |
| | | import com.dy.pipIrrGlobal.voRm.VoCommand; |
| | | import com.dy.pipIrrGlobal.voRm.VoUnclosedParam; |
| | | import com.dy.pipIrrGlobal.voRm.VoUnclosedValve; |
| | | import com.dy.pipIrrRemote.common.qo.OnLineIntakesQO; |
| | | import com.dy.pipIrrGlobal.voSe.VoVirtualCard; |
| | | import com.dy.pipIrrRemote.common.qo.QoCommand; |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.dubbo.common.utils.PojoUtils; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.util.ArrayList; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | |
| | | @RequiredArgsConstructor |
| | | public class CommandSv extends ComSupport { |
| | | private final RmCommandHistoryMapper rmCommandHistoryMapper; |
| | | private final PrControllerMapper prControllerMapper; |
| | | private final SeVirtualCardMapper seVirtualCardMapper; |
| | | private final PrIntakeMapper prIntakeMapper; |
| | | private final PrWaterPriceMapper prWaterPriceMapper; |
| | | private final PrIntakeVcMapper prIntakeVcMapper; |
| | | private final SeClientCardMapper seClientCardMapper; |
| | | |
| | | /** |
| | | * 根据取水口ID获取阀控器地址 |
| | | * @param intakeId 取水口ID |
| | | * @return 阀控器地址 |
| | | * 虚拟卡ID换虚拟卡对象 |
| | | * @param vcId |
| | | * @return |
| | | */ |
| | | public String getRtuAddrByIntakeId(Long intakeId) { |
| | | return prControllerMapper.getRtuAddrByIntakeId(intakeId); |
| | | public VoVirtualCard getVcById(Long vcId) { |
| | | return seVirtualCardMapper.getVcById(vcId); |
| | | } |
| | | |
| | | /** |
| | | * 获取水价 |
| | | * @return |
| | | */ |
| | | public Double getPrice() { |
| | | return prWaterPriceMapper.getPrice(); |
| | | } |
| | | |
| | | /** |
| | |
| | | * @param po 命令日志对象 |
| | | * @return 字符串类型的主键 |
| | | */ |
| | | public String insert(RmCommandHistory po) { |
| | | public Long insert(RmCommandHistory po) { |
| | | rmCommandHistoryMapper.insert(po); |
| | | return (po.getId()).toString(); |
| | | return po.getId(); |
| | | } |
| | | |
| | | /** |
| | |
| | | */ |
| | | public Integer update(RmCommandHistory po) { |
| | | return rmCommandHistoryMapper.updateByPrimaryKeySelective(po); |
| | | } |
| | | |
| | | /** |
| | | * 获取取水口列表 |
| | | * @return |
| | | */ |
| | | public QueryResultVo<List<VoOnLineIntake>> selectOnLineIntakes(OnLineIntakesQO qo) { |
| | | Command com = new Command() ; |
| | | com.id = Command.defaultId; |
| | | com.code = "LCD0001"; |
| | | com.type = "innerCommand"; |
| | | |
| | | JSONObject response = (JSONObject) JSON.toJSON(sendCom2Mw(com)); |
| | | |
| | | if(response != null && response.getString("code").equals("0001")) { |
| | | JSONObject attachment = response.getJSONObject("content").getJSONObject("attachment").getJSONObject("onLineMap"); |
| | | HashMap<String, Boolean> onLineMap = JSON.parseObject(attachment.toJSONString(), HashMap.class); |
| | | |
| | | JSONArray jsonArray = new JSONArray(); |
| | | for (Map.Entry<String, Boolean> entry : onLineMap.entrySet()) { |
| | | JSONObject jsonObject = new JSONObject(); |
| | | jsonObject.put("rtuAddr", entry.getKey()); |
| | | jsonObject.put("isOnLine", entry.getValue()); |
| | | jsonArray.add(jsonObject); |
| | | } |
| | | |
| | | qo.setOnLineMap(jsonArray.toJSONString()); |
| | | Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ; |
| | | Long itemTotal = prIntakeMapper.getOnLineIntakesCount(params); |
| | | |
| | | QueryResultVo<List<VoOnLineIntake>> rsVo = new QueryResultVo<>() ; |
| | | rsVo.pageSize = qo.pageSize ; |
| | | rsVo.pageCurr = qo.pageCurr ; |
| | | rsVo.calculateAndSet(itemTotal, params); |
| | | rsVo.obj = prIntakeMapper.getOnLineIntakes(params); |
| | | return rsVo; |
| | | } else { |
| | | QueryResultVo<List<VoOnLineIntake>> rsVo = new QueryResultVo<>(); |
| | | return rsVo; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 根据操作员获取常用取水口 |
| | | * @param operator |
| | | * @return |
| | | */ |
| | | public List<VoOnLineIntake> getUsedIntakes(Long operator) { |
| | | Command com = new Command() ; |
| | | com.id = Command.defaultId; |
| | | com.code = "LCD0001"; |
| | | com.type = "innerCommand"; |
| | | JSONObject response = (JSONObject) JSON.toJSON(sendCom2Mw(com)); |
| | | |
| | | if(response != null && response.getString("code").equals("0001")) { |
| | | JSONObject attachment = response.getJSONObject("content").getJSONObject("attachment").getJSONObject("onLineMap"); |
| | | HashMap<String, Boolean> onLineMap = JSON.parseObject(attachment.toJSONString(), HashMap.class); |
| | | |
| | | JSONArray jsonArray = new JSONArray(); |
| | | for (Map.Entry<String, Boolean> entry : onLineMap.entrySet()) { |
| | | JSONObject jsonObject = new JSONObject(); |
| | | jsonObject.put("rtuAddr", entry.getKey()); |
| | | jsonObject.put("isOnLine", entry.getValue()); |
| | | jsonArray.add(jsonObject); |
| | | } |
| | | return prIntakeMapper.getUsedIntakes(jsonArray.toJSONString(), operator); |
| | | } else { |
| | | return new ArrayList<>(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | |
| | | jsonArray.add(jsonObject); |
| | | } |
| | | |
| | | System.out.println(jsonArray); |
| | | List<VoUnclosedValve> res = rmCommandHistoryMapper.getUnclosedValves(jsonArray.toJSONString(), operator); |
| | | if(res != null) { |
| | | return res; |
| | |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 修改命令日志记录,回调报错时将命令记录的执行结果改为失败 |
| | | * @param po |
| | | * @return |
| | | */ |
| | | public Integer updateCommandResult(RmCommandHistory po) { |
| | | return rmCommandHistoryMapper.updateByPrimaryKeySelective(po); |
| | | } |
| | | |
| | | /** |
| | | * 根据取水口ID获取与之绑定虚拟卡ID |
| | | * @param intakeId |
| | | * @return |
| | | */ |
| | | public Long getVcIdByIntakeId(Long intakeId) { |
| | | return prIntakeVcMapper.getVcIdByIntakeId(intakeId); |
| | | } |
| | | |
| | | /** |
| | | * 根据取水口ID获取该取水口未关阀参数,平台选择取水口关阀使用 |
| | | * @param intakeId |
| | | * @return |
| | | */ |
| | | public VoUnclosedParam getUncloseParam(Long intakeId) { |
| | | Command com = new Command() ; |
| | | com.id = Command.defaultId; |
| | | com.code = "LCD0001"; |
| | | com.type = "innerCommand"; |
| | | |
| | | JSONObject response = (JSONObject) JSON.toJSON(sendCom2Mw(com)); |
| | | |
| | | if(response != null && response.getString("code").equals("0001")) { |
| | | JSONObject attachment = response.getJSONObject("content").getJSONObject("attachment").getJSONObject("onLineMap"); |
| | | HashMap<String, Boolean> onLineMap = JSON.parseObject(attachment.toJSONString(), HashMap.class); |
| | | |
| | | JSONArray jsonArray = new JSONArray(); |
| | | for (Map.Entry<String, Boolean> entry : onLineMap.entrySet()) { |
| | | JSONObject jsonObject = new JSONObject(); |
| | | jsonObject.put("rtuAddr", entry.getKey()); |
| | | jsonObject.put("isOnLine", entry.getValue()); |
| | | jsonArray.add(jsonObject); |
| | | } |
| | | System.out.println(jsonArray); |
| | | return rmCommandHistoryMapper.getUncloseParam(jsonArray.toJSONString(), intakeId); |
| | | } else { |
| | | QueryResultVo<List<VoOnLineIntake>> rsVo = new QueryResultVo<>(); |
| | | VoUnclosedParam voUnclosedParam = new VoUnclosedParam(); |
| | | return voUnclosedParam; |
| | | } |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 根据水卡编号获取水卡对象,远程充值使用 |
| | | * @param cardId |
| | | * @return |
| | | */ |
| | | public SeClientCard geClientCardByCardId(Long cardId) { |
| | | return seClientCardMapper.selectByPrimaryKey(cardId); |
| | | } |
| | | |
| | | /** |
| | | * 根据指定条件获取命令日志历史记录 |
| | | * @param query |
| | | * @return |
| | | */ |
| | | public QueryResultVo<List<VoCommand>> getCommandHistories(QoCommand query) { |
| | | DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); |
| | | // 完善查询起止时间 |
| | | String timeStart = query.getTimeStart(); |
| | | String timeStop = query.getTimeStop(); |
| | | if(timeStart != null) { |
| | | timeStart = timeStart + " 00:00:00"; |
| | | query.setTimeStart(timeStart); |
| | | } |
| | | if(timeStop != null) { |
| | | timeStop = timeStop + " 23:59:59"; |
| | | query.setTimeStop(timeStop); |
| | | } |
| | | |
| | | Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(query); |
| | | |
| | | Long itemTotal = rmCommandHistoryMapper.getCommandHistoriesCount(params); |
| | | |
| | | QueryResultVo<List<VoCommand>> rsVo = new QueryResultVo<>() ; |
| | | rsVo.pageSize = query.pageSize ; |
| | | rsVo.pageCurr = query.pageCurr ; |
| | | |
| | | rsVo.calculateAndSet(itemTotal, params); |
| | | rsVo.obj = rmCommandHistoryMapper.getCommandHistories(params); |
| | | return rsVo ; |
| | | } |
| | | } |