feat(pocket): 新增工厂状态数据的CURD功能

- 为Klptcm1ProPlantStateCurrent实体增加完整的增删改查接口
- 实现按复合键(INSDATE+TYPE)查询、插入、更新和删除逻辑
- 在Mapper层添加对应的XML SQL映射支持
- 为Klptcm1ProPlantStateDefine增加ID查询、批量删除等功能
- 添加PlantStateWithValueVo视图对象及相关联查逻辑
- 提供根据名称获取带值的状态定义列表方法
- 控制器层新增RESTful API endpoints支持完整操作- 完善服务层实现并暴露统一的服务接口供调用
This commit is contained in:
2025-10-29 11:53:42 +08:00
parent 22895d3513
commit d9580f4c5b
11 changed files with 728 additions and 2 deletions

View File

@@ -9,6 +9,9 @@ import com.klp.pocket.service.IKlptcm1ProPlantStateCurrentService;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
import java.util.Date;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
@RestController
@RequestMapping("/pocket/proPlantStateCurrent")
@@ -26,4 +29,40 @@ public class Klptcm1ProPlantStateCurrentController extends BaseController {
}
/**
* 查询单条(按 INSDATE + TYPE
*/
@GetMapping("/one")
public R<Klptcm1ProPlantStateCurrent> getOne(
@RequestParam("type") BigDecimal type,
@RequestParam("insdate") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date insdate) {
return R.ok(klptcm1ProPlantStateCurrentService.selectOne(insdate, type));
}
/**
* 新增一条 current 记录
*/
@PostMapping
public R<Void> add(@RequestBody Klptcm1ProPlantStateCurrent entity) {
return toAjax(klptcm1ProPlantStateCurrentService.insert(entity));
}
/**
* 修改一条 current 记录(依据 INSDATE + TYPE
*/
@PutMapping
public R<Void> edit(@RequestBody Klptcm1ProPlantStateCurrent entity) {
return toAjax(klptcm1ProPlantStateCurrentService.updateByKey(entity));
}
/**
* 删除一条 current 记录(按 INSDATE + TYPE
*/
@DeleteMapping
public R<Void> remove(
@RequestParam("type") BigDecimal type,
@RequestParam("insdate") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date insdate) {
return toAjax(klptcm1ProPlantStateCurrentService.deleteByKey(insdate, type));
}
}

View File

@@ -4,11 +4,13 @@ import com.klp.common.core.controller.BaseController;
import com.klp.common.core.domain.PageQuery;
import com.klp.common.core.page.TableDataInfo;
import com.klp.pocket.domain.Klptcm1ProPlantStateDefine;
import com.klp.pocket.domain.vo.PlantStateWithValueVo;
import com.klp.pocket.service.IKlptcm1ProPlantStateDefineService;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.List;
import com.klp.common.core.domain.R;
/**
* 工厂状态定义表Controller
@@ -21,6 +23,10 @@ public class Klptcm1ProPlantStateDefineController extends BaseController {
@Resource
private IKlptcm1ProPlantStateDefineService defineService;
@GetMapping("/plant/state")
public List<PlantStateWithValueVo> getTopByValue(@RequestParam String name) {
return defineService.selectByValue(name);
}
/**
* 分页查询状态定义列表
* @param pageQuery 分页参数(请求参数,如?pageNum=1&pageSize=10
@@ -31,4 +37,25 @@ public class Klptcm1ProPlantStateDefineController extends BaseController {
return defineService.getDefinePage(pageQuery);
}
@GetMapping("/{id}")
public R<Klptcm1ProPlantStateDefine> getInfo(@PathVariable BigDecimal id) {
return R.ok(defineService.selectById(id));
}
@PostMapping
public R<Void> add(@RequestBody Klptcm1ProPlantStateDefine entity) {
return toAjax(defineService.insert(entity));
}
@PutMapping
public R<Void> edit(@RequestBody Klptcm1ProPlantStateDefine entity) {
return toAjax(defineService.updateById(entity));
}
@DeleteMapping("/{ids}")
public R<Void> remove(@PathVariable List<BigDecimal> ids) {
return toAjax(defineService.deleteByIds(ids));
}
}

View File

@@ -0,0 +1,27 @@
package com.klp.pocket.domain.vo;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class PlantStateWithValueVo {
// define表基础字段
private BigDecimal id;
private String name;
private String units;
private String comments;
private Date insdate;
private BigDecimal modeltype;
// current表关联字段VALUE{ID} + 时间)
private BigDecimal currentValue;
private Date currentInsdate;
// history表关联字段VALUE{ID} + 时间)
private BigDecimal historyValue;
private Date historyInsdate;
}

View File

@@ -6,10 +6,25 @@ import com.klp.common.core.page.TableDataInfo;
import com.klp.pocket.domain.Klptcm1ProPlantStateCurrent;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
import java.util.Date;
import java.math.BigDecimal;
import org.apache.ibatis.annotations.Param;
@Mapper
public interface Klptcm1ProPlantStateCurrentMapper {
// 查询所有
Page<Klptcm1ProPlantStateCurrent> selectAll(Page<Object> build);
// 按复合键查询
Klptcm1ProPlantStateCurrent selectOne(@Param("insdate") Date insdate, @Param("type") BigDecimal type);
// 新增
int insert(Klptcm1ProPlantStateCurrent entity);
// 修改(按复合键)
int updateByKey(Klptcm1ProPlantStateCurrent entity);
// 删除(按复合键)
int deleteByKey(@Param("insdate") Date insdate, @Param("type") BigDecimal type);
}

View File

@@ -2,6 +2,7 @@ package com.klp.pocket.mapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.klp.pocket.domain.Klptcm1ProPlantStateDefine;
import com.klp.pocket.domain.vo.PlantStateWithValueVo;
import org.apache.ibatis.annotations.Mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -22,4 +23,25 @@ public interface Klptcm1ProPlantStateDefineMapper {
*/
Page<Klptcm1ProPlantStateDefine> selectPage(Page<Object> page);
List<PlantStateWithValueVo> selectByValue(String name);
/**
* 按ID查询
*/
Klptcm1ProPlantStateDefine selectById(BigDecimal id);
/**
* 新增
*/
int insert(Klptcm1ProPlantStateDefine entity);
/**
* 修改
*/
int updateById(Klptcm1ProPlantStateDefine entity);
/**
* 删除(批量)
*/
int deleteByIds(List<BigDecimal> ids);
}

View File

@@ -4,9 +4,18 @@ import com.klp.common.core.domain.PageQuery;
import com.klp.common.core.page.TableDataInfo;
import com.klp.pocket.domain.Klptcm1ProPlantStateCurrent;
import java.util.List;
import java.util.Date;
import java.math.BigDecimal;
public interface IKlptcm1ProPlantStateCurrentService {
TableDataInfo<Klptcm1ProPlantStateCurrent> selectAll(PageQuery pageQuery);
Klptcm1ProPlantStateCurrent selectOne(Date insdate, BigDecimal type);
int insert(Klptcm1ProPlantStateCurrent entity);
int updateByKey(Klptcm1ProPlantStateCurrent entity);
int deleteByKey(Date insdate, BigDecimal type);
}

View File

@@ -3,7 +3,7 @@ package com.klp.pocket.service;
import com.klp.common.core.domain.PageQuery;
import com.klp.common.core.page.TableDataInfo;
import com.klp.pocket.domain.Klptcm1ProPlantStateDefine;
import com.klp.pocket.domain.vo.PlantStateWithValueVo;
import java.math.BigDecimal;
@@ -23,5 +23,13 @@ public interface IKlptcm1ProPlantStateDefineService {
*/
TableDataInfo<Klptcm1ProPlantStateDefine> getDefinePage(PageQuery pageQuery);
List<PlantStateWithValueVo> selectByValue(String name);
Klptcm1ProPlantStateDefine selectById(BigDecimal id);
int insert(Klptcm1ProPlantStateDefine entity);
int updateById(Klptcm1ProPlantStateDefine entity);
int deleteByIds(List<BigDecimal> ids);
}

View File

@@ -10,6 +10,8 @@ import com.klp.pocket.service.IKlptcm1ProPlantStateCurrentService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.Date;
import java.math.BigDecimal;
@DS("slave")
@Service
@@ -18,11 +20,30 @@ public class Klptcm1ProPlantStateCurrentServiceImpl implements IKlptcm1ProPlantS
@Resource
private Klptcm1ProPlantStateCurrentMapper klptcm1ProPlantStateCurrentMapper;
@Override
public TableDataInfo<Klptcm1ProPlantStateCurrent> selectAll(PageQuery pageQuery) {
Page<Klptcm1ProPlantStateCurrent> result = klptcm1ProPlantStateCurrentMapper.selectAll(pageQuery.build());
return TableDataInfo.build(result);
}
@Override
public Klptcm1ProPlantStateCurrent selectOne(Date insdate, BigDecimal type) {
return klptcm1ProPlantStateCurrentMapper.selectOne(insdate, type);
}
@Override
public int insert(Klptcm1ProPlantStateCurrent entity) {
return klptcm1ProPlantStateCurrentMapper.insert(entity);
}
@Override
public int updateByKey(Klptcm1ProPlantStateCurrent entity) {
return klptcm1ProPlantStateCurrentMapper.updateByKey(entity);
}
@Override
public int deleteByKey(Date insdate, BigDecimal type) {
return klptcm1ProPlantStateCurrentMapper.deleteByKey(insdate, type);
}
}

View File

@@ -1,9 +1,11 @@
package com.klp.pocket.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.klp.common.core.domain.PageQuery;
import com.klp.common.core.page.TableDataInfo;
import com.klp.pocket.domain.Klptcm1ProPlantStateCurrent;
import com.klp.pocket.domain.Klptcm1ProPlantStateDefine;
import com.klp.pocket.domain.vo.PlantStateWithValueVo;
import com.klp.pocket.mapper.Klptcm1ProPlantStateDefineMapper;
import com.klp.pocket.service.IKlptcm1ProPlantStateDefineService;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -11,12 +13,14 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.Collections;
import java.util.List;
/**
* 工厂状态定义表Service实现类
* 具体业务逻辑实现依赖Mapper操作数据库
*/
@DS("slave")
@Service
public class Klptcm1ProPlantStateDefineServiceImpl implements IKlptcm1ProPlantStateDefineService {
@@ -33,4 +37,30 @@ public class Klptcm1ProPlantStateDefineServiceImpl implements IKlptcm1ProPlantSt
}
@Override
public List<PlantStateWithValueVo> selectByValue(String name) {
return defineMapper.selectByValue(name);
}
@Override
public Klptcm1ProPlantStateDefine selectById(BigDecimal id) {
return defineMapper.selectById(id);
}
@Override
public int insert(Klptcm1ProPlantStateDefine entity) {
return defineMapper.insert(entity);
}
@Override
public int updateById(Klptcm1ProPlantStateDefine entity) {
return defineMapper.updateById(entity);
}
@Override
public int deleteByIds(List<BigDecimal> ids) {
return defineMapper.deleteByIds(ids);
}
}

View File

@@ -134,4 +134,60 @@
FROM klptcm1_pro_plant_state_current
</select>
<!-- 按复合键查询INSDATE + TYPE -->
<select id="selectOne" resultMap="BaseResultMap">
SELECT
<include refid="Base_Column_List"/>
FROM klptcm1_pro_plant_state_current
WHERE INSDATE = #{insdate}
AND TYPE = #{type}
LIMIT 1
</select>
<!-- 新增 -->
<insert id="insert" parameterType="com.klp.pocket.domain.Klptcm1ProPlantStateCurrent">
INSERT INTO klptcm1_pro_plant_state_current
(
<include refid="Base_Column_List"/>
) VALUES (
#{insdate}, #{year}, #{month}, #{day}, #{hour}, #{minute}, #{type},
#{value1}, #{value2}, #{value3}, #{value4}, #{value5}, #{value6}, #{value7}, #{value8}, #{value9}, #{value10},
#{value11}, #{value12}, #{value13}, #{value14}, #{value15}, #{value16}, #{value17}, #{value18}, #{value19}, #{value20},
#{value21}, #{value22}, #{value23}, #{value24}, #{value25}, #{value26}, #{value27}, #{value28}, #{value29}, #{value30},
#{value31}, #{value32}, #{value33}, #{value34}, #{value35}, #{value36}, #{value37}, #{value38}, #{value39}, #{value40},
#{value41}, #{value42}, #{value43}, #{value44}, #{value45}, #{value46}, #{value47}, #{value48}, #{value49}, #{value50},
#{value51}, #{value52}, #{value53}, #{value54}, #{value55}, #{value56}, #{value57}, #{value58}, #{value59}, #{value60},
#{value61}, #{value62}, #{value63}, #{value64}, #{value65}, #{value66}, #{value67}, #{value68}, #{value69}, #{value70},
#{value71}, #{value72}, #{value73}, #{value74}, #{value75}, #{value76}, #{value77}, #{value78}, #{value79}, #{value80},
#{value81}, #{value82}, #{value83}, #{value84}, #{value85}, #{value86}, #{value87}, #{value88}, #{value89}, #{value90},
#{value91}, #{value92}, #{value93}, #{value94}, #{value95}, #{value96}, #{value97}, #{value98}, #{value99}
)
</insert>
<!-- 修改(按复合键) -->
<update id="updateByKey" parameterType="com.klp.pocket.domain.Klptcm1ProPlantStateCurrent">
UPDATE klptcm1_pro_plant_state_current
SET
YEAR=#{year}, MONTH=#{month}, DAY=#{day}, HOUR=#{hour}, MINUTE=#{minute},
VALUE1=#{value1}, VALUE2=#{value2}, VALUE3=#{value3}, VALUE4=#{value4}, VALUE5=#{value5}, VALUE6=#{value6}, VALUE7=#{value7}, VALUE8=#{value8}, VALUE9=#{value9}, VALUE10=#{value10},
VALUE11=#{value11}, VALUE12=#{value12}, VALUE13=#{value13}, VALUE14=#{value14}, VALUE15=#{value15}, VALUE16=#{value16}, VALUE17=#{value17}, VALUE18=#{value18}, VALUE19=#{value19}, VALUE20=#{value20},
VALUE21=#{value21}, VALUE22=#{value22}, VALUE23=#{value23}, VALUE24=#{value24}, VALUE25=#{value25}, VALUE26=#{value26}, VALUE27=#{value27}, VALUE28=#{value28}, VALUE29=#{value29}, VALUE30=#{value30},
VALUE31=#{value31}, VALUE32=#{value32}, VALUE33=#{value33}, VALUE34=#{value34}, VALUE35=#{value35}, VALUE36=#{value36}, VALUE37=#{value37}, VALUE38=#{value38}, VALUE39=#{value39}, VALUE40=#{value40},
VALUE41=#{value41}, VALUE42=#{value42}, VALUE43=#{value43}, VALUE44=#{value44}, VALUE45=#{value45}, VALUE46=#{value46}, VALUE47=#{value47}, VALUE48=#{value48}, VALUE49=#{value49}, VALUE50=#{value50},
VALUE51=#{value51}, VALUE52=#{value52}, VALUE53=#{value53}, VALUE54=#{value54}, VALUE55=#{value55}, VALUE56=#{value56}, VALUE57=#{value57}, VALUE58=#{value58}, VALUE59=#{value59}, VALUE60=#{value60},
VALUE61=#{value61}, VALUE62=#{value62}, VALUE63=#{value63}, VALUE64=#{value64}, VALUE65=#{value65}, VALUE66=#{value66}, VALUE67=#{value67}, VALUE68=#{value68}, VALUE69=#{value69}, VALUE70=#{value70},
VALUE71=#{value71}, VALUE72=#{value72}, VALUE73=#{value73}, VALUE74=#{value74}, VALUE75=#{value75}, VALUE76=#{value76}, VALUE77=#{value77}, VALUE78=#{value78}, VALUE79=#{value79}, VALUE80=#{value80},
VALUE81=#{value81}, VALUE82=#{value82}, VALUE83=#{value83}, VALUE84=#{value84}, VALUE85=#{value85}, VALUE86=#{value86}, VALUE87=#{value87}, VALUE88=#{value88}, VALUE89=#{value89}, VALUE90=#{value90},
VALUE91=#{value91}, VALUE92=#{value92}, VALUE93=#{value93}, VALUE94=#{value94}, VALUE95=#{value95}, VALUE96=#{value96}, VALUE97=#{value97}, VALUE98=#{value98}, VALUE99=#{value99}
WHERE INSDATE = #{insdate}
AND TYPE = #{type}
</update>
<!-- 删除(按复合键) -->
<delete id="deleteByKey">
DELETE FROM klptcm1_pro_plant_state_current
WHERE INSDATE = #{insdate}
AND TYPE = #{type}
</delete>
</mapper>

View File

@@ -23,5 +23,477 @@
ORDER BY INSDATE DESC
</select>
<select id="selectById" resultMap="BaseResultMap">
SELECT <include refid="Base_Column_List"/>
FROM klptcm1_pro_plant_state_define
WHERE ID = #{id}
</select>
<insert id="insert" parameterType="com.klp.pocket.domain.Klptcm1ProPlantStateDefine">
INSERT INTO klptcm1_pro_plant_state_define
(ID, NAME, UNITS, COMMENTS, MODELTYPE)
VALUES
(#{id}, #{name}, #{units}, #{comments}, #{modeltype})
</insert>
<update id="updateById" parameterType="com.klp.pocket.domain.Klptcm1ProPlantStateDefine">
UPDATE klptcm1_pro_plant_state_define
SET
NAME = #{name},
UNITS = #{units},
COMMENTS = #{comments},
MODELTYPE = #{modeltype}
WHERE ID = #{id}
</update>
<delete id="deleteByIds">
DELETE FROM klptcm1_pro_plant_state_define
WHERE ID IN
<foreach collection="list" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
<!-- 新增联查current/history的ResultMap -->
<resultMap id="ValueVoResultMap" type="com.klp.pocket.domain.vo.PlantStateWithValueVo">
<result column="ID" property="id" jdbcType="DECIMAL"/>
<result column="NAME" property="name" jdbcType="VARCHAR"/>
<result column="UNITS" property="units" jdbcType="VARCHAR"/>
<result column="COMMENTS" property="comments" jdbcType="VARCHAR"/>
<result column="INSDATE" property="insdate" jdbcType="TIMESTAMP"/>
<result column="MODELTYPE" property="modeltype" jdbcType="DECIMAL"/>
<result column="currentValue" property="currentValue" jdbcType="DECIMAL"/>
<result column="currentInsdate" property="currentInsdate" jdbcType="TIMESTAMP"/>
<result column="historyValue" property="historyValue" jdbcType="DECIMAL"/>
<result column="historyInsdate" property="historyInsdate" jdbcType="TIMESTAMP"/>
</resultMap>
<select id="selectByValue" resultMap="ValueVoResultMap">
SELECT d.ID,
d.NAME,
d.UNITS,
d.COMMENTS,
d.MODELTYPE,
-- current表对应VALUE{ID}
CASE d.ID
WHEN 1 THEN c.VALUE1
WHEN 2 THEN c.VALUE2
WHEN 3 THEN c.VALUE3
WHEN 4 THEN c.VALUE4
WHEN 5 THEN c.VALUE5
WHEN 6 THEN c.VALUE6
WHEN 7 THEN c.VALUE7
WHEN 8 THEN c.VALUE8
WHEN 9 THEN c.VALUE9
WHEN 10 THEN c.VALUE10
WHEN 11 THEN c.VALUE11
WHEN 12 THEN c.VALUE12
WHEN 13 THEN c.VALUE13
WHEN 14 THEN c.VALUE14
WHEN 15 THEN c.VALUE15
WHEN 16 THEN c.VALUE16
WHEN 17 THEN c.VALUE17
WHEN 18 THEN c.VALUE18
WHEN 19 THEN c.VALUE19
WHEN 20 THEN c.VALUE20
WHEN 21 THEN c.VALUE21
WHEN 22 THEN c.VALUE22
WHEN 23 THEN c.VALUE23
WHEN 24 THEN c.VALUE24
WHEN 25 THEN c.VALUE25
WHEN 26 THEN c.VALUE26
WHEN 27 THEN c.VALUE27
WHEN 28 THEN c.VALUE28
WHEN 29 THEN c.VALUE29
WHEN 30 THEN c.VALUE30
WHEN 31 THEN c.VALUE31
WHEN 32 THEN c.VALUE32
WHEN 33 THEN c.VALUE33
WHEN 34 THEN c.VALUE34
WHEN 35 THEN c.VALUE35
WHEN 36 THEN c.VALUE36
WHEN 37 THEN c.VALUE37
WHEN 38 THEN c.VALUE38
WHEN 39 THEN c.VALUE39
WHEN 40 THEN c.VALUE40
WHEN 41 THEN c.VALUE41
WHEN 42 THEN c.VALUE42
WHEN 43 THEN c.VALUE43
WHEN 44 THEN c.VALUE44
WHEN 45 THEN c.VALUE45
WHEN 46 THEN c.VALUE46
WHEN 47 THEN c.VALUE47
WHEN 48 THEN c.VALUE48
WHEN 49 THEN c.VALUE49
WHEN 50 THEN c.VALUE50
WHEN 51 THEN c.VALUE51
WHEN 52 THEN c.VALUE52
WHEN 53 THEN c.VALUE53
WHEN 54 THEN c.VALUE54
WHEN 55 THEN c.VALUE55
WHEN 56 THEN c.VALUE56
WHEN 57 THEN c.VALUE57
WHEN 58 THEN c.VALUE58
WHEN 59 THEN c.VALUE59
WHEN 60 THEN c.VALUE60
WHEN 61 THEN c.VALUE61
WHEN 62 THEN c.VALUE62
WHEN 63 THEN c.VALUE63
WHEN 64 THEN c.VALUE64
WHEN 65 THEN c.VALUE65
WHEN 66 THEN c.VALUE66
WHEN 67 THEN c.VALUE67
WHEN 68 THEN c.VALUE68
WHEN 69 THEN c.VALUE69
WHEN 70 THEN c.VALUE70
WHEN 71 THEN c.VALUE71
WHEN 72 THEN c.VALUE72
WHEN 73 THEN c.VALUE73
WHEN 74 THEN c.VALUE74
WHEN 75 THEN c.VALUE75
WHEN 76 THEN c.VALUE76
WHEN 77 THEN c.VALUE77
WHEN 78 THEN c.VALUE78
WHEN 79 THEN c.VALUE79
WHEN 80 THEN c.VALUE80
WHEN 81 THEN c.VALUE81
WHEN 82 THEN c.VALUE82
WHEN 83 THEN c.VALUE83
WHEN 84 THEN c.VALUE84
WHEN 85 THEN c.VALUE85
WHEN 86 THEN c.VALUE86
WHEN 87 THEN c.VALUE87
WHEN 88 THEN c.VALUE88
WHEN 89 THEN c.VALUE89
WHEN 90 THEN c.VALUE90
WHEN 91 THEN c.VALUE91
WHEN 92 THEN c.VALUE92
WHEN 93 THEN c.VALUE93
WHEN 94 THEN c.VALUE94
WHEN 95 THEN c.VALUE95
WHEN 96 THEN c.VALUE96
WHEN 97 THEN c.VALUE97
WHEN 98 THEN c.VALUE98
WHEN 99 THEN c.VALUE99
ELSE NULL
END AS currentValue,
c.INSDATE AS currentInsdate,
-- history表对应VALUE{ID}
CASE d.ID
WHEN 1 THEN h.VALUE1
WHEN 2 THEN h.VALUE2
WHEN 3 THEN h.VALUE3
WHEN 4 THEN h.VALUE4
WHEN 5 THEN h.VALUE5
WHEN 6 THEN h.VALUE6
WHEN 7 THEN h.VALUE7
WHEN 8 THEN h.VALUE8
WHEN 9 THEN h.VALUE9
WHEN 10 THEN h.VALUE10
WHEN 11 THEN h.VALUE11
WHEN 12 THEN h.VALUE12
WHEN 13 THEN h.VALUE13
WHEN 14 THEN h.VALUE14
WHEN 15 THEN h.VALUE15
WHEN 16 THEN h.VALUE16
WHEN 17 THEN h.VALUE17
WHEN 18 THEN h.VALUE18
WHEN 19 THEN h.VALUE19
WHEN 20 THEN h.VALUE20
WHEN 21 THEN h.VALUE21
WHEN 22 THEN h.VALUE22
WHEN 23 THEN h.VALUE23
WHEN 24 THEN h.VALUE24
WHEN 25 THEN h.VALUE25
WHEN 26 THEN h.VALUE26
WHEN 27 THEN h.VALUE27
WHEN 28 THEN h.VALUE28
WHEN 29 THEN h.VALUE29
WHEN 30 THEN h.VALUE30
WHEN 31 THEN h.VALUE31
WHEN 32 THEN h.VALUE32
WHEN 33 THEN h.VALUE33
WHEN 34 THEN h.VALUE34
WHEN 35 THEN h.VALUE35
WHEN 36 THEN h.VALUE36
WHEN 37 THEN h.VALUE37
WHEN 38 THEN h.VALUE38
WHEN 39 THEN h.VALUE39
WHEN 40 THEN h.VALUE40
WHEN 41 THEN h.VALUE41
WHEN 42 THEN h.VALUE42
WHEN 43 THEN h.VALUE43
WHEN 44 THEN h.VALUE44
WHEN 45 THEN h.VALUE45
WHEN 46 THEN h.VALUE46
WHEN 47 THEN h.VALUE47
WHEN 48 THEN h.VALUE48
WHEN 49 THEN h.VALUE49
WHEN 50 THEN h.VALUE50
WHEN 51 THEN h.VALUE51
WHEN 52 THEN h.VALUE52
WHEN 53 THEN h.VALUE53
WHEN 54 THEN h.VALUE54
WHEN 55 THEN h.VALUE55
WHEN 56 THEN h.VALUE56
WHEN 57 THEN h.VALUE57
WHEN 58 THEN h.VALUE58
WHEN 59 THEN h.VALUE59
WHEN 60 THEN h.VALUE60
WHEN 61 THEN h.VALUE61
WHEN 62 THEN h.VALUE62
WHEN 63 THEN h.VALUE63
WHEN 64 THEN h.VALUE64
WHEN 65 THEN h.VALUE65
WHEN 66 THEN h.VALUE66
WHEN 67 THEN h.VALUE67
WHEN 68 THEN h.VALUE68
WHEN 69 THEN h.VALUE69
WHEN 70 THEN h.VALUE70
WHEN 71 THEN h.VALUE71
WHEN 72 THEN h.VALUE72
WHEN 73 THEN h.VALUE73
WHEN 74 THEN h.VALUE74
WHEN 75 THEN h.VALUE75
WHEN 76 THEN h.VALUE76
WHEN 77 THEN h.VALUE77
WHEN 78 THEN h.VALUE78
WHEN 79 THEN h.VALUE79
WHEN 80 THEN h.VALUE80
WHEN 81 THEN h.VALUE81
WHEN 82 THEN h.VALUE82
WHEN 83 THEN h.VALUE83
WHEN 84 THEN h.VALUE84
WHEN 85 THEN h.VALUE85
WHEN 86 THEN h.VALUE86
WHEN 87 THEN h.VALUE87
WHEN 88 THEN h.VALUE88
WHEN 89 THEN h.VALUE89
WHEN 90 THEN h.VALUE90
WHEN 91 THEN h.VALUE91
WHEN 92 THEN h.VALUE92
WHEN 93 THEN h.VALUE93
WHEN 94 THEN h.VALUE94
WHEN 95 THEN h.VALUE95
WHEN 96 THEN h.VALUE96
WHEN 97 THEN h.VALUE97
WHEN 98 THEN h.VALUE98
WHEN 99 THEN h.VALUE99
ELSE NULL
END AS historyValue,
h.INSDATE AS historyInsdate
FROM klptcm1_pro_plant_state_define d
-- 关联current表只匹配ID对应的VALUE字段且该字段非空
LEFT JOIN klptcm1_pro_plant_state_current c
ON d.MODELTYPE = c.TYPE
AND (
(d.ID = 1 AND c.VALUE1 IS NOT NULL) OR
(d.ID = 2 AND c.VALUE2 IS NOT NULL) OR
(d.ID = 3 AND c.VALUE3 IS NOT NULL) OR
(d.ID = 4 AND c.VALUE4 IS NOT NULL) OR
(d.ID = 5 AND c.VALUE5 IS NOT NULL) OR
(d.ID = 6 AND c.VALUE6 IS NOT NULL) OR
(d.ID = 7 AND c.VALUE7 IS NOT NULL) OR
(d.ID = 8 AND c.VALUE8 IS NOT NULL) OR
(d.ID = 9 AND c.VALUE9 IS NOT NULL) OR
(d.ID = 10 AND c.VALUE10 IS NOT NULL) OR
(d.ID = 11 AND c.VALUE11 IS NOT NULL) OR
(d.ID = 12 AND c.VALUE12 IS NOT NULL) OR
(d.ID = 13 AND c.VALUE13 IS NOT NULL) OR
(d.ID = 14 AND c.VALUE14 IS NOT NULL) OR
(d.ID = 15 AND c.VALUE15 IS NOT NULL) OR
(d.ID = 16 AND c.VALUE16 IS NOT NULL) OR
(d.ID = 17 AND c.VALUE17 IS NOT NULL) OR
(d.ID = 18 AND c.VALUE18 IS NOT NULL) OR
(d.ID = 19 AND c.VALUE19 IS NOT NULL) OR
(d.ID = 20 AND c.VALUE20 IS NOT NULL) OR
(d.ID = 21 AND c.VALUE21 IS NOT NULL) OR
(d.ID = 22 AND c.VALUE22 IS NOT NULL) OR
(d.ID = 23 AND c.VALUE23 IS NOT NULL) OR
(d.ID = 24 AND c.VALUE24 IS NOT NULL) OR
(d.ID = 25 AND c.VALUE25 IS NOT NULL) OR
(d.ID = 26 AND c.VALUE26 IS NOT NULL) OR
(d.ID = 27 AND c.VALUE27 IS NOT NULL) OR
(d.ID = 28 AND c.VALUE28 IS NOT NULL) OR
(d.ID = 29 AND c.VALUE29 IS NOT NULL) OR
(d.ID = 30 AND c.VALUE30 IS NOT NULL) OR
(d.ID = 31 AND c.VALUE31 IS NOT NULL) OR
(d.ID = 32 AND c.VALUE32 IS NOT NULL) OR
(d.ID = 33 AND c.VALUE33 IS NOT NULL) OR
(d.ID = 34 AND c.VALUE34 IS NOT NULL) OR
(d.ID = 35 AND c.VALUE35 IS NOT NULL) OR
(d.ID = 36 AND c.VALUE36 IS NOT NULL) OR
(d.ID = 37 AND c.VALUE37 IS NOT NULL) OR
(d.ID = 38 AND c.VALUE38 IS NOT NULL) OR
(d.ID = 39 AND c.VALUE39 IS NOT NULL) OR
(d.ID = 40 AND c.VALUE40 IS NOT NULL) OR
(d.ID = 41 AND c.VALUE41 IS NOT NULL) OR
(d.ID = 42 AND c.VALUE42 IS NOT NULL) OR
(d.ID = 43 AND c.VALUE43 IS NOT NULL) OR
(d.ID = 44 AND c.VALUE44 IS NOT NULL) OR
(d.ID = 45 AND c.VALUE45 IS NOT NULL) OR
(d.ID = 46 AND c.VALUE46 IS NOT NULL) OR
(d.ID = 47 AND c.VALUE47 IS NOT NULL) OR
(d.ID = 48 AND c.VALUE48 IS NOT NULL) OR
(d.ID = 49 AND c.VALUE49 IS NOT NULL) OR
(d.ID = 50 AND c.VALUE50 IS NOT NULL) OR
(d.ID = 51 AND c.VALUE51 IS NOT NULL) OR
(d.ID = 52 AND c.VALUE52 IS NOT NULL) OR
(d.ID = 53 AND c.VALUE53 IS NOT NULL) OR
(d.ID = 54 AND c.VALUE54 IS NOT NULL) OR
(d.ID = 55 AND c.VALUE55 IS NOT NULL) OR
(d.ID = 56 AND c.VALUE56 IS NOT NULL) OR
(d.ID = 57 AND c.VALUE57 IS NOT NULL) OR
(d.ID = 58 AND c.VALUE58 IS NOT NULL) OR
(d.ID = 59 AND c.VALUE59 IS NOT NULL) OR
(d.ID = 60 AND c.VALUE60 IS NOT NULL) OR
(d.ID = 61 AND c.VALUE61 IS NOT NULL) OR
(d.ID = 62 AND c.VALUE62 IS NOT NULL) OR
(d.ID = 63 AND c.VALUE63 IS NOT NULL) OR
(d.ID = 64 AND c.VALUE64 IS NOT NULL) OR
(d.ID = 65 AND c.VALUE65 IS NOT NULL) OR
(d.ID = 66 AND c.VALUE66 IS NOT NULL) OR
(d.ID = 67 AND c.VALUE67 IS NOT NULL) OR
(d.ID = 68 AND c.VALUE68 IS NOT NULL) OR
(d.ID = 69 AND c.VALUE69 IS NOT NULL) OR
(d.ID = 70 AND c.VALUE70 IS NOT NULL) OR
(d.ID = 71 AND c.VALUE71 IS NOT NULL) OR
(d.ID = 72 AND c.VALUE72 IS NOT NULL) OR
(d.ID = 73 AND c.VALUE73 IS NOT NULL) OR
(d.ID = 74 AND c.VALUE74 IS NOT NULL) OR
(d.ID = 75 AND c.VALUE75 IS NOT NULL) OR
(d.ID = 76 AND c.VALUE76 IS NOT NULL) OR
(d.ID = 77 AND c.VALUE77 IS NOT NULL) OR
(d.ID = 78 AND c.VALUE78 IS NOT NULL) OR
(d.ID = 79 AND c.VALUE79 IS NOT NULL) OR
(d.ID = 80 AND c.VALUE80 IS NOT NULL) OR
(d.ID = 81 AND c.VALUE81 IS NOT NULL) OR
(d.ID = 82 AND c.VALUE82 IS NOT NULL) OR
(d.ID = 83 AND c.VALUE83 IS NOT NULL) OR
(d.ID = 84 AND c.VALUE84 IS NOT NULL) OR
(d.ID = 85 AND c.VALUE85 IS NOT NULL) OR
(d.ID = 86 AND c.VALUE86 IS NOT NULL) OR
(d.ID = 87 AND c.VALUE87 IS NOT NULL) OR
(d.ID = 88 AND c.VALUE88 IS NOT NULL) OR
(d.ID = 89 AND c.VALUE89 IS NOT NULL) OR
(d.ID = 90 AND c.VALUE90 IS NOT NULL) OR
(d.ID = 91 AND c.VALUE91 IS NOT NULL) OR
(d.ID = 92 AND c.VALUE92 IS NOT NULL) OR
(d.ID = 93 AND c.VALUE93 IS NOT NULL) OR
(d.ID = 94 AND c.VALUE94 IS NOT NULL) OR
(d.ID = 95 AND c.VALUE95 IS NOT NULL) OR
(d.ID = 96 AND c.VALUE96 IS NOT NULL) OR
(d.ID = 97 AND c.VALUE97 IS NOT NULL) OR
(d.ID = 98 AND c.VALUE98 IS NOT NULL) OR
(d.ID = 99 AND c.VALUE99 IS NOT NULL)
)
-- 关联history表逻辑同current表
LEFT JOIN klptcm1_pro_plant_state_history h
ON d.MODELTYPE = h.TYPE
AND (
(d.ID = 1 AND h.VALUE1 IS NOT NULL) OR
(d.ID = 2 AND h.VALUE2 IS NOT NULL) OR
(d.ID = 3 AND h.VALUE3 IS NOT NULL) OR
(d.ID = 4 AND h.VALUE4 IS NOT NULL) OR
(d.ID = 5 AND h.VALUE5 IS NOT NULL) OR
(d.ID = 6 AND h.VALUE6 IS NOT NULL) OR
(d.ID = 7 AND h.VALUE7 IS NOT NULL) OR
(d.ID = 8 AND h.VALUE8 IS NOT NULL) OR
(d.ID = 9 AND h.VALUE9 IS NOT NULL) OR
(d.ID = 10 AND h.VALUE10 IS NOT NULL) OR
(d.ID = 11 AND h.VALUE11 IS NOT NULL) OR
(d.ID = 12 AND h.VALUE12 IS NOT NULL) OR
(d.ID = 13 AND h.VALUE13 IS NOT NULL) OR
(d.ID = 14 AND h.VALUE14 IS NOT NULL) OR
(d.ID = 15 AND h.VALUE15 IS NOT NULL) OR
(d.ID = 16 AND h.VALUE16 IS NOT NULL) OR
(d.ID = 17 AND h.VALUE17 IS NOT NULL) OR
(d.ID = 18 AND h.VALUE18 IS NOT NULL) OR
(d.ID = 19 AND h.VALUE19 IS NOT NULL) OR
(d.ID = 20 AND h.VALUE20 IS NOT NULL) OR
(d.ID = 21 AND h.VALUE21 IS NOT NULL) OR
(d.ID = 22 AND h.VALUE22 IS NOT NULL) OR
(d.ID = 23 AND h.VALUE23 IS NOT NULL) OR
(d.ID = 24 AND h.VALUE24 IS NOT NULL) OR
(d.ID = 25 AND h.VALUE25 IS NOT NULL) OR
(d.ID = 26 AND h.VALUE26 IS NOT NULL) OR
(d.ID = 27 AND h.VALUE27 IS NOT NULL) OR
(d.ID = 28 AND h.VALUE28 IS NOT NULL) OR
(d.ID = 29 AND h.VALUE29 IS NOT NULL) OR
(d.ID = 30 AND h.VALUE30 IS NOT NULL) OR
(d.ID = 31 AND h.VALUE31 IS NOT NULL) OR
(d.ID = 32 AND h.VALUE32 IS NOT NULL) OR
(d.ID = 33 AND h.VALUE33 IS NOT NULL) OR
(d.ID = 34 AND h.VALUE34 IS NOT NULL) OR
(d.ID = 35 AND h.VALUE35 IS NOT NULL) OR
(d.ID = 36 AND h.VALUE36 IS NOT NULL) OR
(d.ID = 37 AND h.VALUE37 IS NOT NULL) OR
(d.ID = 38 AND h.VALUE38 IS NOT NULL) OR
(d.ID = 39 AND h.VALUE39 IS NOT NULL) OR
(d.ID = 40 AND h.VALUE40 IS NOT NULL) OR
(d.ID = 41 AND h.VALUE41 IS NOT NULL) OR
(d.ID = 42 AND h.VALUE42 IS NOT NULL) OR
(d.ID = 43 AND h.VALUE43 IS NOT NULL) OR
(d.ID = 44 AND h.VALUE44 IS NOT NULL) OR
(d.ID = 45 AND h.VALUE45 IS NOT NULL) OR
(d.ID = 46 AND h.VALUE46 IS NOT NULL) OR
(d.ID = 47 AND h.VALUE47 IS NOT NULL) OR
(d.ID = 48 AND h.VALUE48 IS NOT NULL) OR
(d.ID = 49 AND h.VALUE49 IS NOT NULL) OR
(d.ID = 50 AND h.VALUE50 IS NOT NULL) OR
(d.ID = 51 AND h.VALUE51 IS NOT NULL) OR
(d.ID = 52 AND h.VALUE52 IS NOT NULL) OR
(d.ID = 53 AND h.VALUE53 IS NOT NULL) OR
(d.ID = 54 AND h.VALUE54 IS NOT NULL) OR
(d.ID = 55 AND h.VALUE55 IS NOT NULL) OR
(d.ID = 56 AND h.VALUE56 IS NOT NULL) OR
(d.ID = 57 AND h.VALUE57 IS NOT NULL) OR
(d.ID = 58 AND h.VALUE58 IS NOT NULL) OR
(d.ID = 59 AND h.VALUE59 IS NOT NULL) OR
(d.ID = 60 AND h.VALUE60 IS NOT NULL) OR
(d.ID = 61 AND h.VALUE61 IS NOT NULL) OR
(d.ID = 62 AND h.VALUE62 IS NOT NULL) OR
(d.ID = 63 AND h.VALUE63 IS NOT NULL) OR
(d.ID = 64 AND h.VALUE64 IS NOT NULL) OR
(d.ID = 65 AND h.VALUE65 IS NOT NULL) OR
(d.ID = 66 AND h.VALUE66 IS NOT NULL) OR
(d.ID = 67 AND h.VALUE67 IS NOT NULL) OR
(d.ID = 68 AND h.VALUE68 IS NOT NULL) OR
(d.ID = 69 AND h.VALUE69 IS NOT NULL) OR
(d.ID = 70 AND h.VALUE70 IS NOT NULL) OR
(d.ID = 71 AND h.VALUE71 IS NOT NULL) OR
(d.ID = 72 AND h.VALUE72 IS NOT NULL) OR
(d.ID = 73 AND h.VALUE73 IS NOT NULL) OR
(d.ID = 74 AND h.VALUE74 IS NOT NULL) OR
(d.ID = 75 AND h.VALUE75 IS NOT NULL) OR
(d.ID = 76 AND h.VALUE76 IS NOT NULL) OR
(d.ID = 77 AND h.VALUE77 IS NOT NULL) OR
(d.ID = 78 AND h.VALUE78 IS NOT NULL) OR
(d.ID = 79 AND h.VALUE79 IS NOT NULL) OR
(d.ID = 80 AND h.VALUE80 IS NOT NULL) OR
(d.ID = 81 AND h.VALUE81 IS NOT NULL) OR
(d.ID = 82 AND h.VALUE82 IS NOT NULL) OR
(d.ID = 83 AND h.VALUE83 IS NOT NULL) OR
(d.ID = 84 AND h.VALUE84 IS NOT NULL) OR
(d.ID = 85 AND h.VALUE85 IS NOT NULL) OR
(d.ID = 86 AND h.VALUE86 IS NOT NULL) OR
(d.ID = 87 AND h.VALUE87 IS NOT NULL) OR
(d.ID = 88 AND h.VALUE88 IS NOT NULL) OR
(d.ID = 89 AND h.VALUE89 IS NOT NULL) OR
(d.ID = 90 AND h.VALUE90 IS NOT NULL) OR
(d.ID = 91 AND h.VALUE91 IS NOT NULL) OR
(d.ID = 92 AND h.VALUE92 IS NOT NULL) OR
(d.ID = 93 AND h.VALUE93 IS NOT NULL) OR
(d.ID = 94 AND h.VALUE94 IS NOT NULL) OR
(d.ID = 95 AND h.VALUE95 IS NOT NULL) OR
(d.ID = 96 AND h.VALUE96 IS NOT NULL) OR
(d.ID = 97 AND h.VALUE97 IS NOT NULL) OR
(d.ID = 98 AND h.VALUE98 IS NOT NULL) OR
(d.ID = 99 AND h.VALUE99 IS NOT NULL)
)
WHERE d.NAME = #{name}
-- 按插入时间倒叙取最新200条
ORDER BY COALESCE(c.INSDATE, h.INSDATE) DESC LIMIT 200
</select>
</mapper>