Java开发小笔记
==========================================================================================
1.
==========================================================================================
1.将request获取到的对象进行类型转换(首先将Map的value值由String数组类型转换成Object类型,其次再将转换后的Map对象中的某一属性转换成String类型):
public Result remove(HttpServletRequest request) {
//获取传递过来科室信息
Map<String, String[]> requestMap = request.getParameterMap();
Map<String, Object> paramMap = HttpRequestHelper.switchMap(requestMap);
//获取医院编号和排班编号
String hoscode = (String) paramMap.get("hoscode");
String hosScheduleId = (String) paramMap.get("hosScheduleId");
}
==========================================================================================
2.将Map对象转换成实体类对象:
//上传科室接口
@Override
public void save(Map<String, Object> paramMap) {
//paramMap 转换department对象
String paramMapString = JSONObject.toJSONString(paramMap);
Department department = JSONObject.parseObject(paramMapString, Department.class);
//根据医院编号 和 科室编号查询
Department departmentExist = departmentRepository.
getDepartmentByHoscodeAndDepcode(department.getHoscode(), department.getDepcode());
//判断
if (departmentExist != null) {
departmentExist.setUpdateTime(new Date());
departmentExist.setIsDeleted(0);
departmentRepository.save(departmentExist);
} else {
department.setCreateTime(new Date());
department.setUpdateTime(new Date());
department.setIsDeleted(0);
departmentRepository.save(department);
}
}
==========================================================================================
3.经典的mybatis查询案例(这是一个用来获取Echart前端折线图x、y轴数据的接口,x轴是日期y轴是数量,用List存放。)
① Controller:
@ApiOperation(value = "获取订单统计数据") //swagger里的接口说明注解
@PostMapping("inner/getCountMap")
public Map<String, Object> getCountMap(@RequestBody OrderCountQueryVo orderCountQueryVo) {
return orderService.getCountMap(orderCountQueryVo);
}
② Service:
//预约统计
Map<String, Object> getCountMap(OrderCountQueryVo orderCountQueryVo);
③ ServiceImpl:
//预约统计
@Override
public Map<String, Object> getCountMap(OrderCountQueryVo orderCountQueryVo) {
//调用mapper方法得到数据
List<OrderCountVo> orderCountVoList = baseMapper.selectOrderCount(orderCountQueryVo);
//获取x需要数据 ,日期数据 list集合
List<String> dateList = orderCountVoList.stream().map(OrderCountVo::getReserveDate).collect(Collectors.toList()); //使用stream流的方式获取数据(较全部遍历后获取更简洁)
//获取y需要数据,具体数量 list集合
List<Integer> countList = orderCountVoList.stream().map(OrderCountVo::getCount).collect(Collectors.toList());
Map<String, Object> map = new HashMap<>();
map.put("dateList", dateList);
map.put("countList", countList);
return map;
}
④ Mapper(dao层接口):
public interface OrderMapper extends BaseMapper<OrderInfo> {
//查询预约统计数据的方法
List<OrderCountVo> selectOrderCount(@Param("vo") OrderCountQueryVo orderCountQueryVo); //vo是给orderCountQueryVo这个参数起的一个别名,到时候直接用vo.就行了。
}
⑤ Mapper.xml (dao层接口的实现):
<?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="com.atguigu.yygh.order.mapper.OrderMapper">
<select id="selectOrderCount" resultType="com.atguigu.yygh.vo.order.OrderCountVo">
SELECT COUNT(*) AS count ,reserve_date AS reserveDate FROM order_info
<where>
<if test="vo.hosname!=null and vo.hosname!=''">
and hosname like CONCAT('%',#{vo.hosname},'%') <!-- concat是用来进行模糊查询的 -->
</if>
<if test="vo.reserveDateBegin != null and vo.reserveDateBegin != ''">
and reserve_date >= #{vo.reserveDateBegin}
</if>
<if test="vo.reserveDateEnd != null and vo.reserveDateEnd != ''">
and reserve_date <= #{vo.reserveDateEnd} <-- Mybatis中的sql语句中的“<”号和“>”号要分别用转义字符“<”和”>“替换,否则会报错!-->
</if>
and is_deleted = 0
</where>
GROUP BY reserve_date <!-- 分组(去重) -->
ORDER BY reserve_date <!-- 排序 -->
</select>
</mapper>
==========================================================================================
4. 在含有json字符串的字段中,通过for循环遍历对象,对含有json字符串的该字段的内容(含有json字符串的字段就是实体类中的一个普通的属性,就是存的是json数据)相互替换(通过get和set方式)。
private List<MonitorDevice> addJson(List<MonitorDevice> monitorDevices){
System.out.println(monitorDevices);
for (MonitorDevice monitorDevice : monitorDevices) {
String opcDeviceName = monitorDevice.getOpcDeviceName();
if (opcDeviceName.equals("P_IZP_KTJZ_ID0001")){
for (MonitorDevice monitorDevice1 : monitorDevices) {
String opcDeviceName1 = monitorDevice1.getOpcDeviceName();
if (opcDeviceName1.equals("P_IZP_KTJZ_ID0007")){
JSONObject deviceMonitor1 = monitorDevice1.getDeviceMonitor();
monitorDevice.setDeviceMonitors(deviceMonitor1);
}
}
}
if (opcDeviceName.equals("P_IZP_KTJZ_ID0002")){
for (MonitorDevice monitorDevice1 : monitorDevices) {
String opcDeviceName1 = monitorDevice1.getOpcDeviceName();
if (opcDeviceName1.equals("P_IZP_KTJZ_ID0007")){
JSONObject deviceMonitor1 = monitorDevice1.getDeviceMonitor();
monitorDevice.setDeviceMonitors(deviceMonitor1);
}
}
}
if (opcDeviceName.equals("P_IZP_KTJZ_ID0004")){
for (MonitorDevice monitorDevice1 : monitorDevices) {
String opcDeviceName1 = monitorDevice1.getOpcDeviceName();
if (opcDeviceName1.equals("P_IZP_KTJZ_ID0008")){
JSONObject deviceMonitor1 = monitorDevice1.getDeviceMonitor();
monitorDevice.setDeviceMonitors(deviceMonitor1);
}
}
}
if (opcDeviceName.equals("P_IZP_KTJZ_ID0005")){
for (MonitorDevice monitorDevice1 : monitorDevices) {
String opcDeviceName1 = monitorDevice1.getOpcDeviceName();
if (opcDeviceName1.equals("P_IZP_KTJZ_ID0008")){
JSONObject deviceMonitor1 = monitorDevice1.getDeviceMonitor();
monitorDevice.setDeviceMonitors(deviceMonitor1);
}
}
}
}
List<MonitorDevice> monitorDevices1 = new ArrayList<>();
for (MonitorDevice monitorDevices2: monitorDevices) {
String opcDeviceName = monitorDevices2.getOpcDeviceName();
if (opcDeviceName.equals("P_IZP_KTJZ_ID0001")){
monitorDevices1.add(monitorDevices2);
}
if (opcDeviceName.equals("P_IZP_KTJZ_ID0002")){
monitorDevices1.add(monitorDevices2);
}
if (opcDeviceName.equals("P_IZP_KTJZ_ID0004")){
monitorDevices1.add(monitorDevices2);
}
if (opcDeviceName.equals("P_IZP_KTJZ_ID0005")){
monitorDevices1.add(monitorDevices2);
}
}
return monitorDevices1;
}
======================
注:原始设备状态字段:
//设备状态(json)
@Type(type = "json")
private JSONObject deviceMonitor;
//新加的虚拟设备状态字段:(用来存放转换后的设备状态,也就是把deviceMonitor中的数据处理后存放到deviceMonitors里返回)
@Transient //加上该注解,不会映射到数据库表结构上,否则报错。
@Type(type = "json")
private JSONObject deviceMonitors;
======================
==========================================================================================
5.在含有json字符串的字段中,通过for循环遍历对象,将该字段json数据的部分key进行修改(张家口)。
private List<MonitorDevice> jsonConvert (List<MonitorDevice> monitorDevices){
for (MonitorDevice monitorDevices1 : monitorDevices) {
JSONObject deviceMonitor = monitorDevices1.getDeviceMonitor();
deviceMonitor.put("YCDCKTXFWD",deviceMonitor.getString("JZXFWD")); //1.新风温度
deviceMonitor.remove("JZXFWD");
deviceMonitor.put("JZXFFKZT",deviceMonitor.getString("JZXFFQT")); //2.新风阀状态
deviceMonitor.remove("JZXFFQT");
// deviceMonitor.put("JZSFKZT",deviceMonitor.getString("JZSFKZ")); //3.水阀状态先不展示
// deviceMonitor.remove("JZSFKZ");
deviceMonitor.put("YCDCKTSFWD",deviceMonitor.getString("JZSFWD")); //4.送风温度
deviceMonitor.remove("JZSFWD");
deviceMonitor.put("YCDCKTHFWD",deviceMonitor.getString("JZHFWD")); //5.回风温度
deviceMonitor.remove("JZHFWD");
deviceMonitor.put("JZQT",deviceMonitor.getString("JZBPYX")); //6.空调状态
deviceMonitor.remove("JZBPYX");
deviceMonitor.put("JZGZ",deviceMonitor.getString("JZBPGZ")); //7.空调故障状态
deviceMonitor.remove("JZBPGZ");
// deviceMonitor.put("JZSZD",deviceMonitor.getString("JZSZD")); //8.空调手自动状态
// deviceMonitor.remove("JZSZD");
// deviceMonitor.put("JZFJGLQZDBJ",deviceMonitor.getString("JZJDCC")); //9.空调过滤报警不展示
// deviceMonitor.remove("JZJDCC");
// deviceMonitor.put("JZXFFKZT",deviceMonitor.getString("JZXFFZT")); //10.新风阀手自动状态不展示
// deviceMonitor.remove("JZXFFZT");
monitorDevices1.setDeviceMonitors(deviceMonitor);
}
return monitorDevices;
}
======================
注:原始设备状态字段:
//设备状态(json)
@Type(type = "json")
private JSONObject deviceMonitor;
//新加的虚拟设备状态字段:(用来存放转换后的设备状态,也就是把deviceMonitor中的数据处理后存放到deviceMonitors里返回)
@Transient //加上该注解,不会映射到数据库表结构上,否则报错。
@Type(type = "json")
private JSONObject deviceMonitors;
======================
==========================================================================================
6.在含有json字符串的字段中,通过for循环遍历对象,将该字段json数据的部分key进行修改(清河),其中json类型的deviceMonitor属性中的送风温度的键前后使用了两种不同的字段名,需要判断一下。
//清河字段转换
private List<MonitorDevice> jsonConvertQIP (List<MonitorDevice> monitorDevices){
// List<String> list = new ArrayList<String>(){{add("SFTT");add("TT");}};
for (MonitorDevice monitorDevices1 : monitorDevices) {
JSONObject deviceMonitor = monitorDevices1.getDeviceMonitor();
Set<String> set = deviceMonitor.keySet();
deviceMonitor.put("YCDCKTXFWD",deviceMonitor.getString("XFTT")); //1.新风温度
deviceMonitor.remove("XFTT");
// deviceMonitor.put("JZXFFKZT",deviceMonitor.getString("JZXFFQT")); //2.新风阀状态不展示
// deviceMonitor.remove("JZXFFQT");
// deviceMonitor.put("JZSFKZT",deviceMonitor.getString("TVLFB")); //3.水阀状态不展示
// deviceMonitor.remove("TVLFB");
if (set.contains("SFTT")){
deviceMonitor.put("YCDCKTSFWD",deviceMonitor.getString("SFTT")); //4.送风温度 (SFTT、TT)
deviceMonitor.remove("SFTT");
}
if (set.contains("TT")){
deviceMonitor.put("YCDCKTSFWD",deviceMonitor.getString("TT"));
deviceMonitor.remove("TT");
}
deviceMonitor.put("YCDCKTHFWD",deviceMonitor.getString("RFTT")); //5.回风温度
deviceMonitor.remove("RFTT");
deviceMonitor.put("JZQT",deviceMonitor.getString("ST")); //6.空调状态
deviceMonitor.remove("ST");
deviceMonitor.put("JZGZ",deviceMonitor.getString("AL")); //7.空调故障状态
deviceMonitor.remove("AL");
deviceMonitor.put("JZSZD",deviceMonitor.getString("RL")); //8.空调手自动状态
deviceMonitor.remove("RL");
// deviceMonitor.put("JZFJGLQZDBJ",deviceMonitor.getString("JZJDCC")); //9.空调过滤报警不展示
// deviceMonitor.remove("JZJDCC");
deviceMonitor.put("JZXFFKZT",deviceMonitor.getString("MANMDV")); //10.新风阀手自动状态不展示
deviceMonitor.remove("MANMDV");
monitorDevices1.setDeviceMonitors(deviceMonitor);
}
return monitorDevices;
}

浙公网安备 33010602011771号