完善了应急局案件上报功能

明确了检查项、网格员与企业三者之间的关系,简化了配置
新增了说明文件
This commit is contained in:
wanggeng 2021-07-22 23:02:10 +08:00
parent ccc6be2c51
commit 87365f8087
14 changed files with 129 additions and 125 deletions

43
readme.md Normal file
View File

@ -0,0 +1,43 @@
# 代码组成
1. 该项目代码由两部分组成,其中第一部分为**包头应急管理局**,第二部分为**集宁环保厅**
2. 包头应急管理局由原始代码 + check2 + 带有 v1 标记的代码
3. 集宁环保厅的由 v2 标记的代码
# 业务逻辑
## 包头应急局
1. 案件由网格员进行上报网格员的人员级别为5级网格类型有**嘎查村(社区)****苏木乡镇(街道)****工业园区**等三类
2. 企业需要有网格员去认领
3. 上报案件时,检查项根据网格员的**网格类型**来获取。
4. 网格类型与检查项的关联表为 **gen_industry_check_item_v1**,表中 **classify_id** 对应的就是网格员表中的 **grid_type** 字段,同时对应这企业表中的 **classify** 字段。
5. 案件上报后,后台查询上报人的网格员属性,根据 **grid_type** 查询检查项用来判断企业的检查内容是否通过。
### 案件的流转流程
1. 每月进行安全隐患巡检,根据企业实际情况上报。
2. 所有必查的检查项全部通过则流程结束
3. 如果检查项中存在**必查**且**未通过**,则进入案件复查。
4. 案件复查,如果必查项全部通过,则流程结束,如果存在**必查**且**未通过**检查项,则案件上报到**街道办事处**一级,由该级网格长处理案件
5. 街道办事处级网格长可以选在完成案件或者交由上级处理
6. 当将案件交由上级处理时,街道办事处一级可选择将案件上报至**直属领导(旗县区委办局)**或者上报至**旗县区管理员**,其中上报至**旗县区管理员**时,由于不是直接上下级关系,因此在上报时需要选择对应的网格长。
7. 旗县区委办局的网格长可以选择对案件进行处理、回退。
8. 旗县区管理员可以选择对案件进行处理、回退和交由**上级(市管理员)**处理。
9. 市管理员可以对案件进行处理、回退。该级市案件流转流程中的最后一级。
10. 只要用户处理过案件(案件的经办人或处理人),则可以再历史案件中看到自己处理过的案件。
### 案件随机指派
1. taskCheck的v1版本
## 集宁环保厅
1. 案件上报与流转与包头一致
2. 不一致的地方是,集宁环保的检查选项与企业行业有关,而不与网格长有关。
3. 上报案件时检查项由当前检查的企业中的行业industryId决定。
4. 上报时校对检查项也是由企业中的行业industryId决定。
### 案件随机指派
1. taskCheck的v2版本

View File

@ -66,6 +66,17 @@ public class IndustryCheckItemAppController extends AbstractController {
return industryCheckItemService.listIndustryCheckItem(params);
}
@ApiOperation(value = "我的检查项列表", notes = "我的检查项列表接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "token", value = "token", paramType = "header")
})
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
@GetMapping("list-of-mine")
public List<IndustryCheckItemDTO> listOfMine(@RequestHeader("token") String token) throws SearchException {
Map<String, Object> params = requestParams();
return industryCheckItemService.listOfMine(token, params);
}
@ApiOperation(value = "行业检查项分页列表", notes = "行业检查项分页列表接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "token", value = "token", paramType = "header"),

View File

@ -22,7 +22,7 @@ public class Check2CompleteRunnable implements Runnable {
private String module = BaseService.MODULE_CHECK2_COMPLETE;
private String menu = BaseService.MENU_CHECK2_COMPLETE;
private String checkId;
private static final String TARGET = "GO_CHECK2_INFO";
private static final String TARGET = "GO_CHECK2_COMPLETE";
private IProcessService processService;
public Check2CompleteRunnable(String noticeUrl) {
@ -43,7 +43,7 @@ public class Check2CompleteRunnable implements Runnable {
check2MsgRequest.setTitle("检查案件完结通知");
check2MsgRequest.setMsg("您有一条检查案件处理完成,请点击查看详情");
check2MsgRequest.setUserIdSet(userIdSet);
check2MsgRequest.setCheckId(checkId);
check2MsgRequest.setCheckId("checkId:" + checkId);
check2MsgRequest.postJson(Check2MsgRequest.getNoticeUrl(noticeUrl));
}

View File

@ -20,7 +20,7 @@ public class Check2HandleRunnable implements Runnable {
private String module;
private String menu;
private String checkId;
private static final String TARGET = "GO_CHECK2_INFO";
private static final String TARGET = "GO_CHECK2_HANDLE";
public Check2HandleRunnable(String noticeUrl, GridPersonnelTypeEnum gridPersonnelTypeEnum) {
this.noticeUrl = noticeUrl;
@ -45,10 +45,10 @@ public class Check2HandleRunnable implements Runnable {
check2MsgRequest.setTarget(TARGET);
check2MsgRequest.setModule(module);
check2MsgRequest.setMenu(menu);
check2MsgRequest.setTitle("检查案件办通知");
check2MsgRequest.setTitle("检查案件办通知");
check2MsgRequest.setMsg("您有一条检查案件需要处理,请点击查看详情");
check2MsgRequest.setUserIdSet(userIdSet);
check2MsgRequest.setCheckId(checkId);
check2MsgRequest.setCheckId("checkId:" + checkId);
check2MsgRequest.postJson(Check2MsgRequest.getNoticeUrl(noticeUrl));
}

View File

@ -34,9 +34,9 @@ public class Check2MsgRequest extends AbstractRestTemplate<String, JSONObject> {
JSONArray noticeJSONArray = new JSONArray();
JSONObject notice = new JSONObject();
notice.put("userIds", userIdSet);
notice.put("title", "案件完成通知");
notice.put("msg", "您的案件已完结,请点击查看");
notice.put("target", "GO_CHECK2_INFO");
notice.put("title", title);
notice.put("msg", msg);
notice.put("target", target);
notice.put("system", BaseService.SYSTEM_NAME);
notice.put("module", module);
notice.put("menu", menu);

View File

@ -28,7 +28,7 @@ public class BaseService extends AbstractService {
public static final String MODULE_TASK_V2 = "task_v2";
public static final String MODULE_EIA_REPORT = "eia_report";
public static final String MODULE_DISCHARGE_PERMIT = "discharge_permit";
public static final String MODULE_CHECK2_STREET = "module_check2";
public static final String MODULE_CHECK2_STREET = "module_check2_street";
public static final String MODULE_CHECK2_DISTRICT_DEPARTMENT = "module_check2_district_department";
public static final String MODULE_CHECK2_DISTRICT = "module_check2_district";
public static final String MODULE_CHECK2_CITY = "module_check2_city";

View File

@ -274,7 +274,7 @@ public class Check2ServiceImpl extends BaseService implements ICheck2Service {
}
private SuccessResultList<List<Check2DTO>> listPageReCheckByUserId(String userId, ListPage page) {
List<Task> tasks = processService.listTaskByAssigneeAndVariableKeyValue(userId, CheckProcessParamsEnum.IS_RE_REPORT.getValue(), 0);
List<Task> tasks = processService.listTaskByAssignee(userId);
List<String> checkIds = listLastCheckId(tasks);
if (checkIds.isEmpty()) {
return new SuccessResultList(new ArrayList<>(), 1, 0L);
@ -432,6 +432,9 @@ public class Check2ServiceImpl extends BaseService implements ICheck2Service {
processService.completeByTaskId(task.getId(), params);
LOG.debug("流程回退");
// 通知
noticeHandler(checkId, streetUserId, GridPersonnelTypeEnum.STREET);
}
@Override
@ -532,6 +535,9 @@ public class Check2ServiceImpl extends BaseService implements ICheck2Service {
processService.completeByTaskId(task.getId(), params);
LOG.debug("流程回退");
// 通知
noticeHandler(checkId, streetUserId, GridPersonnelTypeEnum.STREET);
}
@Override
@ -618,6 +624,9 @@ public class Check2ServiceImpl extends BaseService implements ICheck2Service {
processService.completeByTaskId(task.getId(), params);
LOG.debug("流程回退");
// 通知
noticeHandler(checkId, districtUserId, GridPersonnelTypeEnum.DISTRICT);
}
/**
@ -742,7 +751,7 @@ public class Check2ServiceImpl extends BaseService implements ICheck2Service {
processService.completeByTaskId(task.getId(), params);
// 通知
noticeHandler(checkId, gridPersonnelDTO.getUserId(), GridPersonnelTypeEnum.DISTRICT_DEPARTMENT);
noticeHandler(checkId, gridPersonnelDTO.getUserId(), GridPersonnelTypeEnum.DISTRICT);
}
/**
@ -859,10 +868,18 @@ public class Check2ServiceImpl extends BaseService implements ICheck2Service {
* 保存检查结果
*/
private Integer saveCheckResult(String token, String checkId, Check2VO check2VO) throws Exception {
String userId = AppTokenManager.getInstance().getToken(token).getUserId();
GridPersonnelDTO gridPersonnelDTO = gridPersonnelService.getGridPersonnelByUserId(userId);
if (gridPersonnelDTO == null) {
throw new SearchException("您不是网格员或网格长,请联系管理员");
}
LOG.debug("获取检查企业");
EnterpriseDTO enterpriseDTO = enterpriseService.getEnterpriseSingleById(check2VO.getEnterpriseId());
if (enterpriseDTO == null) {
throw new SearchException("企业不存在");
}
LOG.debug("获取企业检查项列表");
List<IndustryCheckItemDTO> industryCheckItemDTOs = industryCheckItemService.listIndustryCheckItemByNatureId(enterpriseDTO.getNature());
List<IndustryCheckItemDTO> industryCheckItemDTOs = industryCheckItemService.listIndustryCheckItemByClassifyId(gridPersonnelDTO.getGridType());
// 获取检查项的所有选项列表
List<CheckItemOptionDTO> checkItemOptionDTOs = new ArrayList<>();
for (IndustryCheckItemDTO industryCheckItemDTO : industryCheckItemDTOs) {
@ -879,8 +896,10 @@ public class Check2ServiceImpl extends BaseService implements ICheck2Service {
hiddenDangerReportVO.setCheckItemType(getCheckItemType(checkItemOptionDTOs, hiddenDangerReportVO.getCheckItemOptionId()));
boolean isMustCheckItem = false;
for (IndustryCheckItemDTO industryCheckItemDTO : industryCheckItemDTOs) {
if (StringUtils.equals(hiddenDangerReportVO.getCheckItemId(), industryCheckItemDTO.getCheckItemId())
&& industryCheckItemDTO.getIsMustCheck() == HiddenDangerReportTypeEnum.MUST.getValue()) {
if (!StringUtils.equals(hiddenDangerReportVO.getCheckItemId(), industryCheckItemDTO.getCheckItemId())) {
continue;
}
if (industryCheckItemDTO.getIsMustCheck() == HiddenDangerReportTypeEnum.MUST.getValue()) {
hiddenDangerReportVO.setType(HiddenDangerReportTypeEnum.MUST.getValue());
isMustCheckItem = true;
break;

View File

@ -271,7 +271,7 @@ public class CheckServiceImpl extends BaseService implements ICheckService {
// 获取企业信息
EnterpriseDTO enterpriseDTO = enterpriseService.getEnterpriseSingleById(checkVO.getEnterpriseId());
// 获取企业检查项列表
List<IndustryCheckItemDTO> industryCheckItemDTOs = industryCheckItemService.listIndustryCheckItemByNatureId(enterpriseDTO.getNature());
List<IndustryCheckItemDTO> industryCheckItemDTOs = industryCheckItemService.listIndustryCheckItemByClassifyId(enterpriseDTO.getNature());
// 获取判断通过不通过的所有选项列表
List<CheckItemOptionDTO> checkItemOptionDTOs = new ArrayList<>();
for (IndustryCheckItemDTO industryCheckItemDTO : industryCheckItemDTOs) {

View File

@ -116,5 +116,14 @@ public interface IIndustryCheckItemService {
* @return
* @throws SearchException
*/
List<IndustryCheckItemDTO> listIndustryCheckItemByNatureId(String nature) throws SearchException;
List<IndustryCheckItemDTO> listIndustryCheckItemByClassifyId(String nature) throws SearchException;
/**
* 我的检查项
*
* @param token
* @param params
* @return
*/
List<IndustryCheckItemDTO> listOfMine(String token, Map<String, Object> params);
}

View File

@ -5,15 +5,18 @@ import com.cm.common.exception.SearchException;
import com.cm.common.pojo.ListPage;
import com.cm.common.result.SuccessResult;
import com.cm.common.result.SuccessResultList;
import com.cm.common.token.app.AppTokenManager;
import com.cm.common.utils.HashMapUtil;
import com.cm.common.utils.UUIDUtil;
import com.cm.inspection.dao.industrycheckitem.IIndustryCheckItemDao;
import com.cm.inspection.pojo.dtos.checkitemoption.CheckItemOptionDTO;
import com.cm.inspection.pojo.dtos.gridpersonnel.GridPersonnelDTO;
import com.cm.inspection.pojo.dtos.industrycheckitem.IndustryCheckItemDTO;
import com.cm.inspection.pojo.vos.industrycheckitem.IndustryCheckItemBindVO;
import com.cm.inspection.pojo.vos.industrycheckitem.IndustryCheckItemVO;
import com.cm.inspection.service.BaseService;
import com.cm.inspection.service.checkitemoption.ICheckItemOptionService;
import com.cm.inspection.service.gridpersonnel.IGridPersonnelService;
import com.cm.inspection.service.industrycheckitem.IIndustryCheckItemService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
@ -37,6 +40,8 @@ public class IndustryCheckItemServiceImpl extends BaseService implements IIndust
private IIndustryCheckItemDao industryCheckItemDao;
@Autowired
private ICheckItemOptionService checkItemOptionService;
@Autowired
private IGridPersonnelService gridPersonnelService;
@Override
public SuccessResult saveIndustryCheckItemByClassifyId(String classifyId, IndustryCheckItemBindVO industryCheckItemBindVO) throws Exception {
@ -165,12 +170,22 @@ public class IndustryCheckItemServiceImpl extends BaseService implements IIndust
}
@Override
public List<IndustryCheckItemDTO> listIndustryCheckItemByNatureId(String nature) throws SearchException {
public List<IndustryCheckItemDTO> listIndustryCheckItemByClassifyId(String nature) throws SearchException {
Map<String, Object> params = getHashMap(1);
params.put("classifyId", nature);
return listIndustryCheckItem(params);
}
@Override
public List<IndustryCheckItemDTO> listOfMine(String token, Map<String, Object> params) {
String userId = AppTokenManager.getInstance().getToken(token).getUserId();
GridPersonnelDTO gridPersonnelDTO = gridPersonnelService.getGridPersonnelByUserId(userId);
if (gridPersonnelDTO == null) {
throw new SearchException("您不是网格员或网格长,请联系管理员");
}
return listIndustryCheckItemByClassifyId(gridPersonnelDTO.getGridType());
}
/**
* 设置检查选项
*

View File

@ -45,26 +45,11 @@
<result column="user_id" property="userId"/>
<result column="user_name" property="userName"/>
<result column="area1" property="area1"/>
<result column="area1_dictionary_name" property="area1DictionaryName"/>
<result column="area2" property="area2"/>
<result column="area2_dictionary_name" property="area2DictionaryName"/>
<result column="area3" property="area3"/>
<result column="area3_dictionary_name" property="area3DictionaryName"/>
<result column="area4" property="area4"/>
<result column="area4_dictionary_name" property="area4DictionaryName"/>
<result column="area5" property="area5"/>
<result column="area5_dictionary_name" property="area5DictionaryName"/>
<result column="leader_user_id" property="leaderUserId"/>
<result column="user_id_join_by_leader_user_id" property="userIdJoinByLeaderUserId"/>
<result column="area1_join_by_leader_user_id" property="area1JoinByLeaderUserId"/>
<result column="area2_join_by_leader_user_id" property="area2JoinByLeaderUserId"/>
<result column="area3_join_by_leader_user_id" property="area3JoinByLeaderUserId"/>
<result column="area4_join_by_leader_user_id" property="area4JoinByLeaderUserId"/>
<result column="area5_join_by_leader_user_id" property="area5JoinByLeaderUserId"/>
<result column="leader_user_id_join_by_leader_user_id" property="leaderUserIdJoinByLeaderUserId"/>
<result column="is_grid_operator_join_by_leader_user_id" property="isGridOperatorJoinByLeaderUserId"/>
<result column="level_join_by_leader_user_id" property="levelJoinByLeaderUserId"/>
<result column="is_grid_operator" property="isGridOperator"/>
<result column="level" property="level"/>
</resultMap>
@ -158,7 +143,7 @@
</select>
<!-- 网格员的企业列表 -->
<select id="listEnterpriseOfGridOperator" parameterType="map" resultMap="enterpriseOfGridOperatorDTO" useCache="true">
<select id="listEnterpriseOfGridOperator" parameterType="map" resultMap="enterpriseOfGridOperatorDTO" useCache="false">
SELECT
t1.user_id,
t1.enterprise_id,
@ -245,86 +230,8 @@
</if>
</select>
<!-- 网格员的企业列表通过用户ID,性能问题废弃 -->
<select id="listEnterpriseOfGridOperatorByUserIdDiscard" parameterType="map" resultMap="enterpriseOfGridOperatorDTO" useCache="true">
SELECT
t1.enterprise_id,
t1.name name_join_by_enterprise_id,
t1.type type_join_by_enterprise_id,
t1.type_dictionary_name,
t1.area1 area1_join_by_enterprise_id,
t1.area1_dictionary_name,
t1.area2 area2_join_by_enterprise_id,
t1.area2_dictionary_name,
t1.area3 area3_join_by_enterprise_id,
t1.area3_dictionary_name,
t1.area4 area4_join_by_enterprise_id,
t1.area4_dictionary_name,
t1.area5 area5_join_by_enterprise_id,
t1.area5_dictionary_name,
t1.address address_join_by_enterprise_id,
t1.industry_type industry_type_join_by_enterprise_id,
t1.industry_type_dictionary_name,
t1.industry industry_join_by_enterprise_id,
t1.industry_dictionary_name,
t1.engaged_count engaged_count_join_by_enterprise_id,
t1.risk_operation risk_operation_join_by_enterprise_id,
t1.risk_operation_dictionary_name,
t1.legal_person,
t1.master master_join_by_enterprise_id,
t1.phone phone_join_by_enterprise_id,
t1.classify classify_by_enterprise_id,
t1.classify_dictionary_name,
t1.nature nature_by_enterprise_id,
t1.nature_dictionary_name,
t1.is_log_off is_log_off_by_enterprise_id,
jt1.user_id,
jt1.enterprise_of_grid_operator_id
FROM
gen_enterprise t1
LEFT JOIN
gen_enterprise_of_grid_operator jt1
ON
t1.enterprise_id = jt1.enterprise_id
WHERE
t1.is_delete = 0
AND (
jt1.user_id IS NULL
OR
jt1.user_id = #{userId}
)
<if test="area1 != null and area1 != ''">
AND
t1.area1 = #{area1}
</if>
<if test="area2 != null and area2 != ''">
AND
t1.area2 = #{area2}
</if>
<if test="area3 != null and area3 != ''">
AND
t1.area3 = #{area3}
</if>
<if test="area4 != null and area4 != ''">
AND
t1.area4 = #{area4}
</if>
<if test="area5 != null and area5 != ''">
AND
t1.area5 = #{area5}
</if>
<if test="keywords != null and keywords != ''">
AND
t1.name LIKE CONCAT('%', #{keywords}, '%')
</if>
<if test="type != null and type != ''">
AND
t1.type = #{type}
</if>
</select>
<!-- 网格员的企业列表通过用户ID -->
<select id="listEnterpriseOfGridOperatorByUserId" parameterType="map" resultMap="enterpriseOfGridOperatorDTO" useCache="true">
<select id="listEnterpriseOfGridOperatorByUserId" parameterType="map" resultMap="enterpriseOfGridOperatorDTO" useCache="false">
SELECT
t1.enterprise_id,
t1.name name_join_by_enterprise_id,
@ -418,7 +325,7 @@
</select>
<!-- 网格员的企业列表通过用户ID和企业ID -->
<select id="listEnterpriseOfGridOperatorByUserIdAndEnterpriseId" parameterType="map" resultMap="enterpriseOfGridOperatorDTO" useCache="true">
<select id="listEnterpriseOfGridOperatorByUserIdAndEnterpriseId" parameterType="map" resultMap="enterpriseOfGridOperatorDTO" useCache="false">
SELECT
user_id
enterprise_id
@ -431,7 +338,7 @@
</select>
<!-- 统计绑定的企业 -->
<select id="countEnterpriseOfGridOperator" parameterType="map" resultType="Integer" useCache="true">
<select id="countEnterpriseOfGridOperator" parameterType="map" resultType="Integer" useCache="false">
SELECT
COUNT(*)
FROM
@ -451,7 +358,7 @@
</select>
<!-- 网格员列表 -->
<select id="listGridPersonnel" parameterType="map" resultMap="gridPersonnelDTO" useCache="true">
<select id="listGridPersonnel" parameterType="map" resultMap="gridPersonnelDTO" useCache="false">
SELECT
jt1.user_id,
jt1.area1,
@ -480,7 +387,7 @@
</select>
<!-- 未认领企业列表 -->
<select id="listUnclaimedEnterprise" parameterType="map" resultMap="enterpriseOfGridOperatorDTO" useCache="true">
<select id="listUnclaimedEnterprise" parameterType="map" resultMap="enterpriseOfGridOperatorDTO" useCache="false">
SELECT
t1.enterprise_id,
t1.name name_join_by_enterprise_id,
@ -552,7 +459,7 @@
</select>
<!-- 统计未认领企业 -->
<select id="countUnclaimedEnterprise" parameterType="map" resultType="java.lang.Integer" useCache="true">
<select id="countUnclaimedEnterprise" parameterType="map" resultType="java.lang.Integer" useCache="false">
SELECT
COUNT(*)
FROM
@ -599,7 +506,7 @@
</select>
<!-- 统计认领企业 -->
<select id="countClaimedEnterprise" parameterType="map" resultType="java.lang.Integer" useCache="true">
<select id="countClaimedEnterprise" parameterType="map" resultType="java.lang.Integer" useCache="false">
SELECT
COUNT(*)
FROM
@ -646,7 +553,7 @@
</select>
<!-- 统计企业 -->
<select id="countEnterpriseOfGridOperatorSimple" parameterType="map" resultType="java.lang.Integer" useCache="true">
<select id="countEnterpriseOfGridOperatorSimple" parameterType="map" resultType="java.lang.Integer" useCache="false">
SELECT
COUNT(*)
FROM
@ -687,7 +594,7 @@
</select>
<!-- 企业ID列表 -->
<select id="listEnterpriseId" parameterType="map" resultType="java.lang.String" useCache="true">
<select id="listEnterpriseId" parameterType="map" resultType="java.lang.String" useCache="false">
SELECT
enterprise_id
FROM

View File

@ -54,7 +54,7 @@
var checkCheckItemIdArray = [];
for(var i = 0, item; item = data[i++];) {
checkCheckItemIdArray.push(item.checkItemId);
$('input[name="'+ item.checkItemId +'_type"][value='+ item.type +']').attr('checked', true);
$('input[name="'+ item.checkItemId +'_is_must_check"][value='+ item.isMustCheck +']').attr('checked', true);
}
treeTableObj.setChecked(checkCheckItemIdArray);
form.render('radio', 'dataTable');
@ -102,7 +102,7 @@
if(row.type != 2) {
return '无';
}
return '<input type="radio" name="'+ row.checkItemId +'_type" value="1" title="必查" checked><input type="radio" name="'+ row.checkItemId +'_type" value="2" title="选查">';
return '<input type="radio" name="'+ row.checkItemId +'_is_must_check" value="1" title="必查"><input type="radio" name="'+ row.checkItemId +'_is_must_check" value="2" title="选查" checked>';
}
},
]

View File

@ -102,7 +102,7 @@
if(row.type != 2) {
return '无';
}
return '<input type="radio" name="'+ row.checkItemId +'_is_must_check" value="2" title="选查" checked>';
return '<input type="radio" name="'+ row.checkItemId +'_is_must_check" value="1" title="必查"><input type="radio" name="'+ row.checkItemId +'_is_must_check" value="2" title="选查" checked>';
}
},
]

View File

@ -102,7 +102,7 @@
if(row.type != 2) {
return '无';
}
return '<input type="radio" name="'+ row.checkItemId +'_is_must_check" value="2" title="选查" checked>';
return '<input type="radio" name="'+ row.checkItemId +'_is_must_check" value="1" title="必查"><input type="radio" name="'+ row.checkItemId +'_is_must_check" value="2" title="选查" checked>';
}
},
]