luotaiqian 2026-07-22 09:48:21 +08:00
parent 247e384a96
commit 7fa193897b
4 changed files with 71 additions and 5 deletions

View File

@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.List;
/** /**
* *
@ -43,4 +44,7 @@ public class EvalProjectProgressCO {
@ApiModelProperty("项目进度状态名称:正常/项目临期/项目延期") @ApiModelProperty("项目进度状态名称:正常/项目临期/项目延期")
private String progressStatusName; private String progressStatusName;
@ApiModelProperty("项目节点")
private List<EvalProjectNodeItemCO> projectNode;
} }

View File

@ -1,6 +1,6 @@
package org.qinan.safetyeval.infrastructure.handler; package org.qinan.safetyeval.infrastructure.handler;
import com.alibaba.fastjson.JSON; import cn.hutool.json.JSONUtil;
import org.apache.ibatis.type.BaseTypeHandler; import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType; import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.MappedJdbcTypes; import org.apache.ibatis.type.MappedJdbcTypes;
@ -27,7 +27,7 @@ public class JsonStringListTypeHandler extends BaseTypeHandler<List<String>> {
@Override @Override
public void setNonNullParameter(PreparedStatement ps, int i, List<String> parameter, JdbcType jdbcType) throws SQLException { public void setNonNullParameter(PreparedStatement ps, int i, List<String> parameter, JdbcType jdbcType) throws SQLException {
ps.setString(i, JSON.toJSONString(parameter)); ps.setString(i, JSONUtil.toJsonStr(parameter));
} }
@Override @Override
@ -49,6 +49,6 @@ public class JsonStringListTypeHandler extends BaseTypeHandler<List<String>> {
if (json == null || json.isEmpty()) { if (json == null || json.isEmpty()) {
return Collections.emptyList(); return Collections.emptyList();
} }
return JSON.parseArray(json, String.class); return JSONUtil.toList(json, String.class);
} }
} }

View File

@ -0,0 +1,54 @@
package org.qinan.safetyeval.infrastructure.handler;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.MappedJdbcTypes;
import org.qinan.safetyeval.client.co.institution.EvalProjectNodeItemCO;
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Collections;
import java.util.List;
/**
* MyBatis TypeHandler: varchar/text JSON List<EvalProjectNodeItemCO>
* <p>
* : List<EvalProjectNodeItemCO> -> JSON.toJSONString -> String
* : String -> JSON.parseArray -> List<EvalProjectNodeItemCO>
*
* @author safety-eval
*/
@MappedJdbcTypes(JdbcType.VARCHAR)
public class ProjectNodeListTypeHandler extends BaseTypeHandler<List<EvalProjectNodeItemCO>> {
@Override
public void setNonNullParameter(PreparedStatement ps, int i, List<EvalProjectNodeItemCO> parameter, JdbcType jdbcType) throws SQLException {
ps.setString(i, JSONUtil.toJsonStr(parameter));
}
@Override
public List<EvalProjectNodeItemCO> getNullableResult(ResultSet rs, String columnName) throws SQLException {
return parse(rs.getString(columnName));
}
@Override
public List<EvalProjectNodeItemCO> getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
return parse(rs.getString(columnIndex));
}
@Override
public List<EvalProjectNodeItemCO> getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
return parse(cs.getString(columnIndex));
}
private List<EvalProjectNodeItemCO> parse(String json) {
if (json == null || json.isEmpty()) {
return Collections.emptyList();
}
return JSONUtil.toList(json, EvalProjectNodeItemCO.class);
}
}

View File

@ -3,8 +3,15 @@
<mapper namespace="org.qinan.safetyeval.infrastructure.mapper.EvalProjectMapper"> <mapper namespace="org.qinan.safetyeval.infrastructure.mapper.EvalProjectMapper">
<!-- 项目进度管理分页查询(关联 eval_customer 获取客户名称;进度状态/剩余天数由业务代码计算) --> <!-- 项目进度管理分页查询(关联 eval_customer 获取客户名称;进度状态/剩余天数由业务代码计算) -->
<resultMap id="EvalProjectProgressCOMap"
type="org.qinan.safetyeval.client.co.institution.EvalProjectProgressCO"
autoMapping="true">
<result property="projectNode" column="project_node"
typeHandler="org.qinan.safetyeval.infrastructure.handler.ProjectNodeListTypeHandler"/>
</resultMap>
<select id="selectProgressPage" <select id="selectProgressPage"
resultType="org.qinan.safetyeval.client.co.institution.EvalProjectProgressCO"> resultMap="EvalProjectProgressCOMap">
SELECT SELECT
p.id, p.id,
p.project_no, p.project_no,
@ -12,7 +19,8 @@
c.customer_name, c.customer_name,
p.customer_contact_name, p.customer_contact_name,
p.project_leader_name, p.project_leader_name,
p.plan_end_date p.plan_end_date,
p.project_node
FROM eval_project p FROM eval_project p
LEFT JOIN eval_customer c LEFT JOIN eval_customer c
ON c.id = p.customer_id ON c.id = p.customer_id