Parcourir la source

整理工单后台代码

Memory_LG il y a 7 mois
Parent
commit
8da18c9501

+ 3 - 1
lawenforcement-ui/src/views/lawenforcement/user/index.vue

@@ -148,6 +148,7 @@
 
     <!-- 添加或修改林长管理对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="1200px" class="form-style">
+      <div style="padding:20px 30px;">
       <el-form ref="form" :model="form" :rules="rules" label-width="100px">
         <el-row :gutter="24">
           <el-col :span="12">
@@ -247,6 +248,7 @@
           </el-col>
         </el-row>
       </el-form>
+      </div>
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="submitForm">确 定</el-button>
         <el-button @click="cancel">取 消</el-button>
@@ -540,4 +542,4 @@ export default {
 .people .vue-treeselect__control{
   width: 440px !important;
 }
-</style>
+</style>

+ 1 - 1
src/main/java/com/sooka/sponest/lawenforcement/lawCase/service/impl/LawenforcementCaseServiceImpl.java

@@ -155,7 +155,7 @@ public class LawenforcementCaseServiceImpl extends BaseService implements ILawen
             centerdataTFile.setCreateName(SecurityUtils.getLoginUser().getSysUser().getNickName());
             lawenforcementAttachMapper.insertLawenforcementAttach(centerdataTFile);
         }
-        recordMapper.updateRecordToLiAn(lawenforcementCase.getCaseNumber(), "lawenforcement_type_8");
+        recordMapper.updateRecordState(lawenforcementCase.getCaseNumber(), "lawenforcement_type_8");
 
         return inserted;
     }

+ 71 - 32
src/main/java/com/sooka/sponest/lawenforcement/record/controller/LawenforcementRecordController.java

@@ -1,5 +1,6 @@
 package com.sooka.sponest.lawenforcement.record.controller;
 
+import com.alibaba.fastjson.JSONArray;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.utils.SpringUtils;
 import com.ruoyi.common.core.utils.poi.ExcelUtil;
@@ -14,8 +15,8 @@ import com.sooka.sponest.lawenforcement.record.domain.LawenforcementRecord;
 import com.sooka.sponest.lawenforcement.record.domain.bo.LawenforcementFillFormBO;
 import com.sooka.sponest.lawenforcement.record.service.ILawenforcementRecordService;
 import com.sooka.sponest.monitor.api.RemoteDeviceService;
-import com.sooka.sponest.monitor.api.domain.CenterdataTCamera;
 import com.sooka.sponest.monitor.api.domain.VisuForestCloudCameraBO;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -30,11 +31,29 @@ import java.util.List;
  */
 @RestController
 @RequestMapping("/record")
+@Slf4j
 public class LawenforcementRecordController extends BaseController {
+
     @Autowired
     private ILawenforcementRecordService lawenforcementRecordService;
 
     /**
+     * 远端调用:对接省平台数据
+     * @param records JSONArray类型
+     * @return AjaxResult
+     */
+    @PostMapping("/insertEnforceLawInfoByList")
+    public AjaxResult insertEnforceLawInfoByList(@RequestBody JSONArray records){
+        //判断数据是否为空
+        log.info("对接省平台数据:==》{}", records);
+        if(records.isEmpty()){
+            log.error("平台数据为空:==> {}", records);
+            return AjaxResult.error("数据为空");
+        }
+        return toAjax(lawenforcementRecordService.insertEnforceLawInfoByList(records));
+    }
+
+    /**
      * 查询任务数据列表
      */
     @RequiresPermissions("lawenforcement:record:list")
@@ -42,32 +61,20 @@ public class LawenforcementRecordController extends BaseController {
     public TableDataInfo list(LawenforcementRecord lawenforcementRecord) {
         startPage();
         List<LawenforcementRecord> list = lawenforcementRecordService.selectLawenforcementRecordList(lawenforcementRecord);
+        log.info("查询设备列表:==》{}", list);
         return getDataTable(list);
     }
 
     /**
-     * 导出任务数据列表
-     */
-    @RequiresPermissions("lawenforcement:record:export")
-    @Log(title = "任务数据", businessType = BusinessType.EXPORT)
-    @PostMapping("/export")
-    public void export(HttpServletResponse response, LawenforcementRecord lawenforcementRecord) {
-        List<LawenforcementRecord> list = lawenforcementRecordService.selectLawenforcementRecordList(lawenforcementRecord);
-        ExcelUtil<LawenforcementRecord> util = new ExcelUtil<LawenforcementRecord>(LawenforcementRecord.class);
-        util.exportExcel(response, list, "任务数据数据");
-    }
-
-    /**
      * 获取任务数据详细信息
      */
-    @RequiresPermissions("lawenforcement:record:query")
-    @GetMapping(value = "/{id}")
-    public AjaxResult getInfo(@PathVariable("id") String id) {
-        return AjaxResult.success(lawenforcementRecordService.selectLawenforcementRecordById(id));
+    @GetMapping("/getDetails/{id}")
+    public AjaxResult getDetailsById(@PathVariable("id") String id){
+        return AjaxResult.success(lawenforcementRecordService.getDeatilsById(id));
     }
 
     /**
-     * 新增任务数据
+     * 新增任务数据:平台创建数据
      */
     @RequiresPermissions("lawenforcement:record:add")
     @Log(title = "任务数据", businessType = BusinessType.INSERT)
@@ -77,6 +84,15 @@ public class LawenforcementRecordController extends BaseController {
     }
 
     /**
+     * 修改前查询信息
+     */
+    @RequiresPermissions("lawenforcement:record:query")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") String id) {
+        return AjaxResult.success(lawenforcementRecordService.selectLawenforcementRecordById(id));
+    }
+
+    /**
      * 修改任务数据
      */
     @RequiresPermissions("lawenforcement:record:edit")
@@ -87,40 +103,63 @@ public class LawenforcementRecordController extends BaseController {
     }
 
     /**
-     * 删除任务数据
+     * 获取设备列表
+     * @return R
      */
-    @RequiresPermissions("lawenforcement:record:remove")
-    @Log(title = "任务数据", businessType = BusinessType.DELETE)
-    @DeleteMapping("/{ids}")
-    public AjaxResult remove(@PathVariable String[] ids) {
-        return toAjax(lawenforcementRecordService.deleteLawenforcementRecordByIds(ids));
-    }
-
     @GetMapping("/getDeivceList")
     public R getDeivceList(){
-        System.out.println(" 获取设备列表 ");
         VisuForestCloudCameraBO visuForestCloudCameraBO = new VisuForestCloudCameraBO();
         visuForestCloudCameraBO.setDeptId(SecurityUtils.getLoginUser().getSysUser().getDeptId());
         return SpringUtils.getBean(RemoteDeviceService.class).selectByCameraId(visuForestCloudCameraBO);
     }
 
+    /**
+     * 创建工单执行日志
+     */
     @PostMapping("/addRecordLog")
     public AjaxResult addRecordLog(@RequestBody LawenforcementRecord record){
         return toAjax(lawenforcementRecordService.addRecordLog(record));
     }
 
+    /**
+     * 派发工单
+     * @param record
+     * @return
+     */
     @PostMapping("/distributeRecord")
     public AjaxResult distributeRecord(@RequestBody LawenforcementRecord record){
         return toAjax(lawenforcementRecordService.distributeRecord(record));
     }
 
-    @GetMapping("/getDetails/{id}")
-    public AjaxResult getDetailsById(@PathVariable("id") String id){
-        return AjaxResult.success(lawenforcementRecordService.getDeatilsById(id));
-    }
-
+    /**
+     * 工单填报
+     * @param bo
+     * @return
+     */
     @PostMapping("/recordFillForm")
     public AjaxResult recordFillForm(@RequestBody LawenforcementFillFormBO bo){
         return toAjax(lawenforcementRecordService.recordFillForm(bo));
     }
+
+    /**
+     * 删除任务数据
+     */
+    @RequiresPermissions("lawenforcement:record:remove")
+    @Log(title = "任务数据", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable String[] ids) {
+        return toAjax(lawenforcementRecordService.deleteLawenforcementRecordByIds(ids));
+    }
+
+    /**
+     * 导出任务数据列表
+     */
+    @RequiresPermissions("lawenforcement:record:export")
+    @Log(title = "任务数据", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, LawenforcementRecord lawenforcementRecord) {
+        List<LawenforcementRecord> list = lawenforcementRecordService.selectLawenforcementRecordList(lawenforcementRecord);
+        ExcelUtil<LawenforcementRecord> util = new ExcelUtil<LawenforcementRecord>(LawenforcementRecord.class);
+        util.exportExcel(response, list, "任务数据数据");
+    }
 }

+ 64 - 21
src/main/java/com/sooka/sponest/lawenforcement/record/mapper/LawenforcementRecordMapper.java

@@ -4,7 +4,10 @@ import com.sooka.sponest.lawenforcement.device.domain.DeviceBO;
 import com.sooka.sponest.lawenforcement.record.domain.LawenforcementRecord;
 import com.sooka.sponest.lawenforcement.record.domain.LawenforcementRecordLog;
 import com.sooka.sponest.lawenforcement.record.domain.bo.LawenforcementFillFormBO;
+import com.sooka.sponest.lawenforcement.record.domain.vo.LawenforcementPersonDetailVO;
 import com.sooka.sponest.lawenforcement.record.domain.vo.LawenforcementRecordDetailVO;
+import com.sooka.sponest.lawenforcement.record.domain.vo.LawenforcementStandardDetailVO;
+import com.sooka.sponest.lawenforcement.record.domain.vo.LawenforcementSubitemDetailVO;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -17,13 +20,48 @@ import java.util.Map;
  * @date 2024-10-10
  */
 public interface LawenforcementRecordMapper {
+
     /**
-     * 查询任务数据
-     *
-     * @param id 任务数据主键
-     * @return 任务数据
+     * 删除事项要点
+     * @param id
      */
-    LawenforcementRecord selectLawenforcementRecordById(String id);
+    void removeStandardInfoById(String id);
+
+    /**
+     * 删除子项数据
+     * @param id
+     */
+    void removeSubitemInfoById(String id);
+
+    /**
+     * 删除子项数据
+     * @param id
+     */
+    void removePersonInfoById(String id);
+
+    /**
+     * 写入事项要点集合
+     * @param standardAddList
+     */
+    void insertStandardByList(List<LawenforcementStandardDetailVO> standardAddList);
+
+    /**
+     * 写入子项集合
+     * @param subitemAddList
+     */
+    void insertSubitemByList(List<LawenforcementSubitemDetailVO> subitemAddList);
+
+    /**
+     * 写入执法人员集合
+     * @param personAddList
+     */
+    void insertPersonByList(List<LawenforcementPersonDetailVO> personAddList);
+
+    /**
+     * 写入执法人员集合
+     * @param recordAddList
+     */
+    int insertRecordByList(List<LawenforcementRecordDetailVO> recordAddList);
 
     /**
      * 查询任务数据列表
@@ -34,6 +72,13 @@ public interface LawenforcementRecordMapper {
     List<LawenforcementRecord> selectLawenforcementRecordList(LawenforcementRecord lawenforcementRecord);
 
     /**
+     * 查询详情
+     * @param id
+     * @return
+     */
+    LawenforcementRecordDetailVO getDetailById(String id);
+
+    /**
      * 新增任务数据
      *
      * @param lawenforcementRecord 任务数据
@@ -42,6 +87,13 @@ public interface LawenforcementRecordMapper {
     int insertLawenforcementRecord(LawenforcementRecord lawenforcementRecord);
 
     /**
+     * 查询任务数据
+     * @param id 任务数据主键
+     * @return 任务数据
+     */
+    LawenforcementRecord selectLawenforcementRecordById(String id);
+
+    /**
      * 修改任务数据
      *
      * @param lawenforcementRecord 任务数据
@@ -49,13 +101,13 @@ public interface LawenforcementRecordMapper {
      */
     int updateLawenforcementRecord(LawenforcementRecord lawenforcementRecord);
 
-    /**
-     * 删除任务数据
-     *
-     * @param id 任务数据主键
-     * @return 结果
-     */
-    int deleteLawenforcementRecordById(String id);
+    Map<String, String> getPersonCode(String id);
+
+    void addRecordLog(LawenforcementRecordLog recordLog);
+
+    void updateRecordState(@Param("id") String id, @Param("recordStatus") String recordStatus);
+
+    int recordFillForm(LawenforcementFillFormBO bo);
 
     /**
      * 批量删除任务数据
@@ -65,17 +117,8 @@ public interface LawenforcementRecordMapper {
      */
     int deleteLawenforcementRecordByIds(String[] ids);
 
-    void addRecordLog(LawenforcementRecordLog recordLog);
-
     void updateRecordLogEndTime(DeviceBO bo);
 
     void updateRecordStatus(DeviceBO bo);
 
-    Map<String, String> getPersonCode(String id);
-
-    LawenforcementRecordDetailVO getDetailById(String id);
-
-    void updateRecordToLiAn(@Param("id") String id, @Param("recordStatus") String recordStatus);
-
-    int recordFillForm(LawenforcementFillFormBO bo);
 }

+ 44 - 20
src/main/java/com/sooka/sponest/lawenforcement/record/service/ILawenforcementRecordService.java

@@ -1,5 +1,6 @@
 package com.sooka.sponest.lawenforcement.record.service;
 
+import com.alibaba.fastjson.JSONArray;
 import com.sooka.sponest.lawenforcement.device.domain.DeviceBO;
 import com.sooka.sponest.lawenforcement.record.domain.LawenforcementRecord;
 import com.sooka.sponest.lawenforcement.record.domain.bo.LawenforcementFillFormBO;
@@ -15,13 +16,13 @@ import java.util.Map;
  * @date 2024-10-10
  */
 public interface ILawenforcementRecordService {
+
     /**
-     * 查询任务数据
-     *
-     * @param id 任务数据主键
-     * @return 任务数据
+     * 对接省平台数据
+     * @param records
+     * @return
      */
-    LawenforcementRecord selectLawenforcementRecordById(String id);
+    int insertEnforceLawInfoByList(JSONArray records);
 
     /**
      * 查询任务数据列表
@@ -32,6 +33,13 @@ public interface ILawenforcementRecordService {
     List<LawenforcementRecord> selectLawenforcementRecordList(LawenforcementRecord lawenforcementRecord);
 
     /**
+     * 查询详情
+     * @param id
+     * @return
+     */
+    LawenforcementRecordDetailVO getDeatilsById(String id);
+
+    /**
      * 新增任务数据
      *
      * @param lawenforcementRecord 任务数据
@@ -40,6 +48,14 @@ public interface ILawenforcementRecordService {
     int insertLawenforcementRecord(LawenforcementRecord lawenforcementRecord);
 
     /**
+     * 查询任务数据
+     *
+     * @param id 任务数据主键
+     * @return 任务数据
+     */
+    LawenforcementRecord selectLawenforcementRecordById(String id);
+
+    /**
      * 修改任务数据
      *
      * @param lawenforcementRecord 任务数据
@@ -48,6 +64,27 @@ public interface ILawenforcementRecordService {
     int updateLawenforcementRecord(LawenforcementRecord lawenforcementRecord);
 
     /**
+     * 工单执行日志
+     * @param record
+     * @return
+     */
+    int addRecordLog(LawenforcementRecord record);
+
+    /**
+     * 派发工单
+     * @param record
+     * @return
+     */
+    int distributeRecord(LawenforcementRecord record);
+
+    /**
+     * 工单填报
+     * @param bo
+     * @return
+     */
+    int recordFillForm(LawenforcementFillFormBO bo);
+
+    /**
      * 批量删除任务数据
      *
      * @param ids 需要删除的任务数据主键集合
@@ -56,22 +93,9 @@ public interface ILawenforcementRecordService {
     int deleteLawenforcementRecordByIds(String[] ids);
 
     /**
-     * 删除任务数据信息
-     *
-     * @param id 任务数据主键
-     * @return 结果
+     * 工单执行结束
+     * @param bo
      */
-    int deleteLawenforcementRecordById(String id);
-
-    List<Map<String, Object>> getDeviceList();
-
-    int addRecordLog(LawenforcementRecord record);
-
     void updateRecordLogEndTime(DeviceBO bo);
 
-    int distributeRecord(LawenforcementRecord record);
-
-    LawenforcementRecordDetailVO getDeatilsById(String id);
-
-    int recordFillForm(LawenforcementFillFormBO bo);
 }

+ 189 - 70
src/main/java/com/sooka/sponest/lawenforcement/record/service/impl/LawenforcementRecordServiceImpl.java

@@ -1,5 +1,8 @@
 package com.sooka.sponest.lawenforcement.record.service.impl;
 
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.core.utils.uuid.IdUtils;
 import com.ruoyi.common.security.utils.SecurityUtils;
 import com.sooka.sponest.lawenforcement.device.domain.DeviceBO;
@@ -11,9 +14,13 @@ import com.sooka.sponest.lawenforcement.record.domain.LawenforcementRecordLog;
 import com.sooka.sponest.lawenforcement.record.domain.bo.LawenforcementFillFormBO;
 import com.sooka.sponest.lawenforcement.record.domain.vo.LawenforcementPersonDetailVO;
 import com.sooka.sponest.lawenforcement.record.domain.vo.LawenforcementRecordDetailVO;
+import com.sooka.sponest.lawenforcement.record.domain.vo.LawenforcementStandardDetailVO;
+import com.sooka.sponest.lawenforcement.record.domain.vo.LawenforcementSubitemDetailVO;
 import com.sooka.sponest.lawenforcement.record.mapper.LawenforcementRecordMapper;
 import com.sooka.sponest.lawenforcement.record.service.ILawenforcementRecordService;
+import com.sooka.sponest.lawenforcement.record.setter.RecordIdSetter;
 import com.sooka.sponest.lawenforcement.user.domain.LawenforcementUser;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.MapUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -32,7 +39,10 @@ import java.util.stream.Collectors;
  * @date 2024-10-10
  */
 @Service
+@Slf4j
 public class LawenforcementRecordServiceImpl implements ILawenforcementRecordService {
+
+
     @Autowired
     private LawenforcementRecordMapper recordMapper;
 
@@ -42,27 +52,56 @@ public class LawenforcementRecordServiceImpl implements ILawenforcementRecordSer
     @Autowired
     private LawenforcementPersonMapper personMapper;
 
+
     /**
-     * 查询任务数据
+     * 对接省平台数据
      *
-     * @param id 任务数据主键
-     * @return 任务数据
+     * @param records JSONArray
+     * @return 操作条数
      */
     @Override
-    public LawenforcementRecord selectLawenforcementRecordById(String id) {
-        LawenforcementRecord record = recordMapper.selectLawenforcementRecordById(id);
-        List<LawenforcementUser> personList = record.getPersonList();
-        personList.forEach(person->{
-            if("1".equals(person.getIsMainPerson())){
-                record.setMainPerson(person.getCertificateNumber());
-            }
-        });
-        return record;
+    public int insertEnforceLawInfoByList(JSONArray records) {
+        //创建转换结果集合
+        List<LawenforcementRecordDetailVO> remoteRecordList = JSONArray.parseArray(records.toJSONString(), LawenforcementRecordDetailVO.class);
+        //创建新增集合
+        List<LawenforcementRecordDetailVO> recordAddList = new ArrayList<>();
+        List<LawenforcementStandardDetailVO> standardAddList = new ArrayList<>();
+        List<LawenforcementSubitemDetailVO> subitemAddList = new ArrayList<>();
+        List<LawenforcementPersonDetailVO> personAddList = new ArrayList<>();
+
+        //判断转换是否异常
+        if (StringUtils.isNotEmpty(remoteRecordList)) {
+            //开始遍历数据集合
+            remoteRecordList.forEach(remoteRecord -> {
+                //判断通过主键获取数据是否为空
+                if (null != selectLawenforcementRecordById(remoteRecord.getId())) {
+                    //不为空则删除旧数据,写入新数据(删除子表信息:person、subitem、standard)
+                    recordMapper.removeStandardInfoById(remoteRecord.getId());
+                    recordMapper.removeSubitemInfoById(remoteRecord.getId());
+                    recordMapper.removePersonInfoById(remoteRecord.getId());
+                }
+                //将工单子表信息整理
+                JSONObject dataList = addRecordByRemote(remoteRecord);
+                //将工单信息放入集合,统一写入
+                standardAddList.addAll(JSONArray.parseArray(dataList.getJSONArray("standardAddList").toJSONString(), LawenforcementStandardDetailVO.class));
+                subitemAddList.addAll(JSONArray.parseArray(dataList.getJSONArray("subitemAddList").toJSONString(), LawenforcementSubitemDetailVO.class));
+                personAddList.addAll(JSONArray.parseArray(dataList.getJSONArray("personAddList").toJSONString(), LawenforcementPersonDetailVO.class));
+                recordAddList.add(remoteRecord);
+
+            });
+            //新增子表信息
+            recordMapper.insertStandardByList(standardAddList);
+            recordMapper.insertSubitemByList(subitemAddList);
+            recordMapper.insertPersonByList(personAddList);
+            //执行批量写入操作
+            return recordMapper.insertRecordByList(recordAddList);
+        }
+        log.error("数据转换后为空");
+        return 0;
     }
 
     /**
      * 查询任务数据列表
-     *
      * @param lawenforcementRecord 任务数据
      * @return 任务数据
      */
@@ -72,8 +111,29 @@ public class LawenforcementRecordServiceImpl implements ILawenforcementRecordSer
     }
 
     /**
-     * 新增任务数据
-     *
+     * 查询详情
+     * @param id
+     * @return
+     */
+    @Override
+    public LawenforcementRecordDetailVO getDeatilsById(String id) {
+        LawenforcementRecordDetailVO detailvo = recordMapper.getDetailById(id);
+        List<LawenforcementRecordLog> recordLogList = detailvo.getRecordLogList();
+        List<LawenforcementPersonDetailVO> persons = detailvo.getPersons();
+        recordLogList.forEach(logInfo -> {
+            persons.forEach(person -> {
+                if (logInfo.getPersonCode().equals(person.getPersonCode())) {
+                    logInfo.setPersonCode(person.getPersonName());
+                    logInfo.setDeptName(person.getDeptName());
+                }
+            });
+        });
+        return detailvo;
+    }
+
+    /**
+     * 新增任务数据:平台创建
+     * 暂定没有子级信息
      * @param record 任务数据
      * @return 结果
      */
@@ -91,50 +151,44 @@ public class LawenforcementRecordServiceImpl implements ILawenforcementRecordSer
     }
 
     /**
-     * 修改任务数据
-     *
-     * @param lawenforcementRecord 任务数据
-     * @return 结果
+     * 查询任务数据
+     * @param id 任务数据主键
+     * @return 任务数据
      */
     @Override
-    public int updateLawenforcementRecord(LawenforcementRecord lawenforcementRecord) {
-        return recordMapper.updateLawenforcementRecord(lawenforcementRecord);
+    public LawenforcementRecord selectLawenforcementRecordById(String id) {
+        LawenforcementRecord record = recordMapper.selectLawenforcementRecordById(id);
+        List<LawenforcementUser> personList = record.getPersonList();
+        personList.forEach(person -> {
+            if ("1".equals(person.getIsMainPerson())) {
+                record.setMainPerson(person.getCertificateNumber());
+            }
+        });
+        return record;
     }
 
     /**
-     * 批量删除任务数据
-     *
-     * @param ids 需要删除的任务数据主键
+     * 修改任务数据
+     * @param lawenforcementRecord 任务数据
      * @return 结果
      */
     @Override
-    public int deleteLawenforcementRecordByIds(String[] ids) {
-        return recordMapper.deleteLawenforcementRecordByIds(ids);
+    public int updateLawenforcementRecord(LawenforcementRecord lawenforcementRecord) {
+        return recordMapper.updateLawenforcementRecord(lawenforcementRecord);
     }
 
     /**
-     * 删除任务数据信息
-     *
-     * @param id 任务数据主键
-     * @return 结果
+     * 工单执行日志
+     * @param record
+     * @return
      */
     @Override
-    public int deleteLawenforcementRecordById(String id) {
-        return recordMapper.deleteLawenforcementRecordById(id);
-    }
-
-    @Override
-    public List<Map<String, Object>> getDeviceList() {
-        return new ArrayList<>();
-    }
-
-    @Override
     public int addRecordLog(LawenforcementRecord record) {
         //更新工单数据中的设备id和设备名称,以及任务开始时间
         int i = recordMapper.updateLawenforcementRecord(record);
         Map<String, String> personCode = recordMapper.getPersonCode(record.getId());
 
-        LawenforcementRecordLog lawenforcementRecordLog = new LawenforcementRecordLog(IdUtils.fastSimpleUUID(), MapUtils.getString(personCode, "personCode"),record.getId(),record.getDeviceId(),new Date(),null);
+        LawenforcementRecordLog lawenforcementRecordLog = new LawenforcementRecordLog(IdUtils.fastSimpleUUID(), MapUtils.getString(personCode, "personCode"), record.getId(), record.getDeviceId(), new Date(), null);
         //将工单执行记录,写入到日志表中:数据id、任务id、执法人编号、设备编号、开始时间
         recordMapper.addRecordLog(lawenforcementRecordLog);
         //绑定设备后关闭定时任务
@@ -144,16 +198,6 @@ public class LawenforcementRecordServiceImpl implements ILawenforcementRecordSer
     }
 
     @Override
-    public void updateRecordLogEndTime(DeviceBO bo) {
-        //设置任务完成状态
-        recordMapper.updateRecordStatus(bo);
-        //设置任务结束时间
-        recordMapper.updateRecordLogEndTime(bo);
-        //从正在执行任务的设备集合中移除信息
-        deviceService.removeOpenedDevice(bo.getCode());
-    }
-
-    @Override
     public int distributeRecord(LawenforcementRecord record) {
         List<LawenforcementUser> userList = record.getPersonList();
         String id = record.getId();
@@ -170,40 +214,115 @@ public class LawenforcementRecordServiceImpl implements ILawenforcementRecordSer
                     person.setDeptName(user.getDeptName());
                     person.setPersonType("0");
                     person.setRecordId(id);
-                    person.setMainPerson(person.getPersonCode().equals(record.getMainPerson())?"1":"0");
+                    person.setMainPerson(person.getPersonCode().equals(record.getMainPerson()) ? "1" : "0");
                     return person;
                 })
                 .collect(Collectors.toList()); // 收集结果 into a List
-        if(!personMapper.selectPersonByRecordId(id).isEmpty()){
+        if (!personMapper.selectPersonByRecordId(id).isEmpty()) {
             personMapper.deleteLawenforcementPersonByRecordId(id);
         }
         personMapper.insertLawenforcementPersonToList(personList);
         return recordMapper.updateLawenforcementRecord(record);
     }
 
-    @Override
-    public LawenforcementRecordDetailVO getDeatilsById(String id) {
-        LawenforcementRecordDetailVO detailvo = recordMapper.getDetailById(id);
-        List<LawenforcementRecordLog> recordLogList = detailvo.getRecordLogList();
-        List<LawenforcementPersonDetailVO> persons = detailvo.getPersons();
-        recordLogList.forEach(logInfo->{
-            persons.forEach(person->{
-                if(logInfo.getPersonCode().equals(person.getPersonCode())){
-                    logInfo.setPersonCode(person.getPersonName());
-                    logInfo.setDeptName(person.getDeptName());
-                }
-            });
-        });
-        return detailvo;
-    }
-
+    /**
+     * 工单填报
+     * @param bo
+     * @return
+     */
     @Override
     public int recordFillForm(LawenforcementFillFormBO bo) {
         bo.setId(IdUtils.fastSimpleUUID());
         bo.setCreateBy(SecurityUtils.getUserId().toString());
         bo.setCreateName(SecurityUtils.getUsername());
         bo.setCreateTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
-        recordMapper.updateRecordToLiAn(bo.getRecordId(), "lawenforcement_type_7");
+        recordMapper.updateRecordState(bo.getRecordId(), "lawenforcement_type_7");
         return recordMapper.recordFillForm(bo);
     }
+
+    /**
+     * 批量删除任务数据
+     * @param ids 需要删除的任务数据主键
+     * @return 结果
+     */
+    @Override
+    public int deleteLawenforcementRecordByIds(String[] ids) {
+        return recordMapper.deleteLawenforcementRecordByIds(ids);
+    }
+
+    /**
+     * 结束工单
+     * @param bo
+     */
+    @Override
+    public void updateRecordLogEndTime(DeviceBO bo) {
+        //设置任务完成状态
+        recordMapper.updateRecordStatus(bo);
+        //设置任务结束时间
+        recordMapper.updateRecordLogEndTime(bo);
+        //从正在执行任务的设备集合中移除信息
+        deviceService.removeOpenedDevice(bo.getCode());
+    }
+
+    /**
+     * 新增工单方法:对接省平台数据
+     *
+     * @param record
+     */
+    private JSONObject addRecordByRemote(LawenforcementRecordDetailVO record) {
+        //创建返回集合
+        List<LawenforcementStandardDetailVO> standardAddList = new ArrayList<>();
+        List<LawenforcementSubitemDetailVO> subitemAddList = new ArrayList<>();
+        List<LawenforcementPersonDetailVO> personAddList = new ArrayList<>();
+
+        //处理subitem信息
+        List<LawenforcementSubitemDetailVO> subitems = record.getSubitems();
+        if (StringUtils.isNotEmpty(subitems)) {
+            subitems.forEach(subitem -> {
+                //处理standard信息
+                List<LawenforcementStandardDetailVO> standards = subitem.getStandards();
+                //设置父id
+                if (StringUtils.isNotEmpty(standards)) {
+                    setSubItemId(subitem.getId(), standards);
+                    log.info("放入standards =》 {}", standards);
+                    standardAddList.addAll(standards);
+                }
+            });
+            setRecordIdToItems(record.getId(), subitems);
+            log.info("放入subitems =》 {}", subitems);
+            subitemAddList.addAll(subitems);
+        }
+
+        //处理person信息
+        List<LawenforcementPersonDetailVO> persons = record.getPersons();
+        if (StringUtils.isNotEmpty(persons)) {
+            setRecordIdToItems(record.getId(), persons);
+            log.info("放入persons =》 {}", persons);
+            personAddList.addAll(persons);
+        }
+        //创建返回对象
+        JSONObject result = new JSONObject();
+        //设置返回值
+        result.put("personAddList", personAddList);
+        result.put("subitemAddList", subitemAddList);
+        result.put("standardAddList", standardAddList);
+        return result;
+    }
+
+    /**
+     * 对standard 设置父id
+     *
+     * @param subItemId
+     * @param standards
+     */
+    private void setSubItemId(String subItemId, List<LawenforcementStandardDetailVO> standards) {
+        standards.forEach(standard -> {
+            standard.setSubitemId(subItemId);
+        });
+    }
+
+    // 对工单子级设置父id
+    private <T extends RecordIdSetter> void setRecordIdToItems(String recordId, List<T> items) {
+        items.forEach(item -> item.setRecordId(recordId));
+    }
 }

+ 266 - 211
src/main/resources/mapper/lawenforcement/LawenforcementRecordMapper.xml

@@ -59,6 +59,101 @@
         <result property="deptName" column="user_dept_name"/>
     </resultMap>
 
+    <resultMap id="detailMapResult" type="LawenforcementRecordDetailVO">
+        <result property="jobType" column="job_type"/>
+        <result property="creatorName" column="creator_name"/>
+        <result property="deptName" column="dept_name"/>
+        <result property="areaId" column="area_id"/>
+        <result property="jobName" column="job_name"/>
+        <result property="checkType" column="check_type"/>
+        <result property="checkObjectType" column="check_object_type"/>
+        <result property="checkObjectCode" column="check_object_code"/>
+        <result property="checkObjectName" column="check_object_name"/>
+        <result property="checkObjectPhone" column="check_object_phone"/>
+        <result property="checkStartTime" column="check_start_time"/>
+        <result property="checkEndTime" column="check_end_time"/>
+        <result property="subitemCount" column="subitem_count"/>
+        <result property="remark" column="remark"/>
+        <result property="verify" column="verify"/>
+        <result property="unableVerifyReason" column="unable_verify_reason"/>
+        <result property="scanId" column="scan_id"/>
+        <result property="scanName" column="scan_name"/>
+        <result property="scanTime" column="scan_time"/>
+        <result property="verifyPeopleId" column="verify_people_id"/>
+        <result property="verifyPeopleName" column="verify_people_name"/>
+        <result property="verifyTime" column="verify_time"/>
+        <result property="evaluation" column="evaluation"/>
+        <result property="evaluationContent" column="evaluation_content"/>
+        <result property="evaluationTime" column="evaluation_time"/>
+        <result property="result" column="result"/>
+        <result property="resultTime" column="result_time"/>
+        <result property="resultPersonId" column="result_person_id"/>
+        <result property="status" column="status"/>
+        <result property="createTime" column="create_time"/>
+        <result property="createBy" column="create_by"/>
+        <result property="isLast" column="is_last"/>
+        <result property="jobId" column="job_id"/>
+        <result property="lastJobType" column="lastJob_type"/>
+        <result property="source" column="source"/>
+        <result property="createMethod" column="create_method"/>
+        <result property="isCrossDept" column="is_cross_dept"/>
+        <result property="deviceName" column="device_name"/>
+        <result property="recordStatus" column="record_status"/>
+        <collection property="subitems" resultMap="subitemDetailResult"/>
+        <collection property="persons" resultMap="personDetailResult"/>
+        <collection property="recordLogList" resultMap="recordLogDetailResult"/>
+    </resultMap>
+
+    <resultMap id="subitemDetailResult" type="LawenforcementSubitemDetailVO">
+        <result property="subitemName" column="subitem_name"/>
+        <result property="subitemCode" column="subitem_code"/>
+        <result property="checkResult" column="check_result"/>
+        <result property="checkResultType" column="check_result_type"/>
+        <result property="decisionReason" column="decision_reason"/>
+        <result property="measures" column="measures"/>
+        <result property="measuresDetail" column="measures_detail"/>
+        <result property="fillTime" column="fill_time"/>
+        <result property="punishResult" column="punish_result"/>
+        <result property="punishContent" column="punish_content"/>
+        <result property="punishTime" column="punish_time"/>
+        <result property="timeout" column="timeout"/>
+        <result property="randomResult" column="random_result"/>
+        <result property="randomResultDetail" column="random_result_detail"/>
+        <result property="resultPersonId" column="subitem_result_person_id"/>
+        <result property="isProofOut" column="is_proof_out"/>
+        <result property="remark" column="subitem_remark"/>
+        <collection property="standards" resultMap="standardDetailResult"/>
+    </resultMap>
+
+    <resultMap id="personDetailResult" type="LawenforcementPersonDetailVO">
+        <result property="personName" column="person_name"/>
+        <result property="personCode" column="person_code"/>
+        <result property="personPhone" column="person_phone"/>
+        <result property="deptName" column="person_dept_name"/>
+        <result property="personType" column="person_type"/>
+        <result property="mainPerson" column="main_person"/>
+        <result property="remark" column="person_remark"/>
+    </resultMap>
+
+    <resultMap id="recordLogDetailResult" type="LawenforcementRecordLog">
+        <result property="personCode" column="log_person_code"/>
+        <result property="deviceName" column="log_device_name"/>
+        <result property="startTime" column="start_time"/>
+        <result property="endTime" column="end_time"/>
+    </resultMap>
+
+    <resultMap id="standardDetailResult" type="LawenforcementStandardDetailVO">
+        <result property="standardName" column="standard_name"/>
+        <result property="standardCode" column="standard_code"/>
+        <result property="checkResult" column="check_result"/>
+        <result property="checkResultType" column="check_result_type"/>
+        <result property="decisionReason" column="decision_reason"/>
+        <result property="resultPersonId" column="result_personId"/>
+        <result property="fillTime" column="standard_fill_time"/>
+        <result property="isProofOut" column="is_proof_out"/>
+        <result property="remark" column="standard_remark"/>
+    </resultMap>
+
     <sql id="selectLawenforcementRecordVo">
         select id,
                job_type,
@@ -107,6 +202,66 @@
         from lawenforcement_record
     </sql>
 
+    <delete id="removeStandardInfoById" parameterType="string">
+        delete from lawenforcement_standard
+        where subitem_id in (
+            select id from lawenforcement_subitem where record_id = #{id}
+        )
+    </delete>
+
+    <delete id="removeSubitemInfoById" parameterType="string">
+        delete from lawenforcement_subitem
+        where record_id = #{id}
+    </delete>
+
+    <delete id="removePersonInfoById" parameterType="string">
+        delete from lawenforcement_person
+        where record_id = #{id}
+    </delete>
+
+    <insert id="insertStandardByList" parameterType="list">
+        insert into lawenforcement_standard
+        (id, standard_name, standard_code, check_result, check_result_type, decision_reason, result_personId, fill_time, is_proof_out, remark, subitem_id)
+        values
+        <foreach collection="list" item="standard" open="(" separator="),(" close=")">
+            #{standard.id}, #{standard.standardName}, #{standard.standardCode}, #{standard.checkResult}, #{standard.checkResultType}, #{standard.decisionTeason}, #{standard.resultPersonId}, #{standard.fillTime}, #{standard.isProofOut}, #{standard.remark}, #{standard.subitemId}
+        </foreach>
+    </insert>
+
+    <insert id="insertSubitemByList" parameterType="list">
+        insert into lawenforcement_subitem
+        (id, subitem_name, subitem_code, check_result, check_result_type,
+         decision_reason, measures, measures_detail, fill_time, punish_result,
+         punish_content, punish_time, timeout, random_result, random_result_detail,
+         result_person_id, is_proof_out, remark, record_id )
+        values
+        <foreach collection="list" item="subitem" open="(" separator="),(" close=")">
+            #{subitem.id}, #{subitem.subitemName}, #{subitem.subitemCode}, #{subitem.checkResult}, #{subitem.checkResultType},
+            #{subitem.decisionReason}, #{subitem.measures}, #{subitem.measuresDetail}, #{subitem.fillTime}, #{subitem.punishResult},
+            #{subitem.punishContent}, #{subitem.punishTime}, #{subitem.timeout}, #{subitem.randomResult}, #{subitem.randomResultDetail},
+            #{subitem.resultPersonId}, #{subitem.isProofOut}, #{subitem.remark}, #{subitem.recordId}
+        </foreach>
+    </insert>
+
+    <insert id="insertPersonByList" parameterType="list">
+        insert into lawenforcement_person
+        (id, person_id, random_id, person_name, person_code, person_phone, dept_id, dept_name, person_type, main_person, remark, record_id )
+        values
+        <foreach collection="list" item="person" open="(" separator="),(" close=")">
+            #{person.id}, #{person.personId}, #{person.randomId}, #{person.personName}, #{person.personCode}, #{person.personPhone}, #{person.deptId}, #{person.deptName}, #{person.personType}, #{person.mainPerson}, #{person.remark}, #{person.recordId}
+        </foreach>
+    </insert>
+
+    <insert id="insertRecordByList" parameterType="list">
+        insert into lawenforcement_person
+        (id, person_id, random_id, person_name, person_code, person_phone, dept_id, dept_name, person_type, main_person, remark, record_id )
+        values
+        <foreach collection="list" item="person" open="(" separator="),(" close=")">
+            #{person.id}, #{person.personId}, #{person.randomId}, #{person.personName}, #{person.personCode}, #{person.personPhone}, #{person.deptId}, #{person.deptName}, #{person.personType}, #{person.mainPerson}, #{person.remark}, #{person.recordId}
+        </foreach>
+    </insert>
+
+
     <select id="selectLawenforcementRecordList" parameterType="LawenforcementRecord"
             resultMap="LawenforcementRecordResult">
         <include refid="selectLawenforcementRecordVo"/>
@@ -116,58 +271,29 @@
         order by create_time desc
     </select>
 
-    <select id="selectLawenforcementRecordById" parameterType="String" resultMap="LawenforcementRecordResult">
-        select lr.id,
-               lr.job_type,
-               lr.creator_id,
-               lr.creator_name,
-               lr.dept_id,
-               lr.dept_name,
-               lr.area_id,
-               lr.job_name,
-               lr.check_type,
-               lr.check_object_type,
-               lr.check_object_id,
-               lr.check_object_code,
-               lr.check_object_name,
-               lr.check_object_phone,
-               lr.check_start_time,
-               lr.check_end_time,
-               lr.subitem_count,
-               lr.remark,
-               lr.verify,
-               lr.unable_verify_reason,
-               lr.scan_id,
-               lr.scan_name,
-               lr.scan_time,
-               lr.verify_people_id,
-               lr.verify_people_name,
-               lr.verify_time,
-               lr.evaluation,
-               lr.evaluation_content,
-               lr.evaluation_time,
-               lr.result,
-               lr.result_time,
-               lr.result_person_id,
-               lr.status,
-               lr.create_time,
-               lr.create_by,
-               lr.is_last,
-               lr.job_id,
-               lr.last_job_type,
-               lr.source,
-               lr.create_method,
-               lr.is_cross_dept,
-               lr.device_id,
-               lr.device_name,
-               lr.record_status,
-               lp.person_code,
-               lp.main_person,
-               lp.dept_id user_dept_id,
-               lp.dept_name user_dept_name
-        from lawenforcement_record lr
-        LEFT JOIN lawenforcement_person lp on lr.id = lp.record_id
-        where lr.id = #{id}
+    <select id="getDetailById" parameterType="string" resultMap="detailMapResult">
+        select lr.job_type,lr.creator_name,lr.dept_name,lr.area_id,lr.job_name,lr.check_type,
+               lr.check_object_type,lr.check_object_code,lr.check_object_name,lr.check_object_phone,
+               lr.check_start_time,lr.check_end_time,lr.subitem_count,lr.remark,lr.verify,lr.unable_verify_reason,
+               lr.scan_id,lr.scan_name,lr.scan_time,lr.verify_people_id,lr.verify_people_name,lr.verify_time,
+               lr.evaluation,lr.evaluation_content,lr.evaluation_time,lr.result,lr.result_time,lr.result_person_id,
+               lr.status,lr.create_time,lr.create_by,lr.is_last,lr.job_id,lr.last_job_type,lr.source,lr.create_method,
+               lr.is_cross_dept,lr.device_name,lr.record_status,
+               lp.person_name,lp.person_code,lp.person_phone,lp.dept_name as person_dept_name,lp.person_type,lp.main_person,lp.remark as person_remark,
+               ls.subitem_name,ls.subitem_code,ls.check_result,ls.check_result_type,ls.decision_reason,ls.measures,
+               ls.measures_detail,ls.fill_time,ls.punish_result,ls.punish_content,ls.punish_time,ls.timeout,ls.random_result,
+               ls.random_result_detail,ls.result_person_id as subitem_result_person_id,ls.is_proof_out,ls.remark as subitem_remark,
+               lss.standard_name,lss.standard_code,lss.check_result,lss.check_result_type,lss.decision_reason,
+               lss.result_personId,lss.fill_time as standard_fill_time,lss.is_proof_out,lss.remark as standard_remark,
+               lrl.person_code as log_person_code,lrl.start_time,lrl.end_time,
+               crc.camera_name as log_device_name
+        FROM lawenforcement_record lr
+                 LEFT JOIN lawenforcement_person lp on lr.id = lp.record_id
+                 LEFT JOIN lawenforcement_subitem ls on lr.id = ls.record_id
+                 LEFT JOIN lawenforcement_standard lss on  ls.id = lss.subitem_id
+                 LEFT JOIN lawenforcement_record_log lrl on lr.id = lrl.record_id
+                 LEFT JOIN onest_monitor.centermonitor_t_camera crc on lrl.device_id = crc.camera_code
+        WHERE lr.id = #{id}
     </select>
 
     <insert id="insertLawenforcementRecord" parameterType="LawenforcementRecord">
@@ -266,6 +392,60 @@
         </trim>
     </insert>
 
+    <select id="selectLawenforcementRecordById" parameterType="String" resultMap="LawenforcementRecordResult">
+        select lr.id,
+               lr.job_type,
+               lr.creator_id,
+               lr.creator_name,
+               lr.dept_id,
+               lr.dept_name,
+               lr.area_id,
+               lr.job_name,
+               lr.check_type,
+               lr.check_object_type,
+               lr.check_object_id,
+               lr.check_object_code,
+               lr.check_object_name,
+               lr.check_object_phone,
+               lr.check_start_time,
+               lr.check_end_time,
+               lr.subitem_count,
+               lr.remark,
+               lr.verify,
+               lr.unable_verify_reason,
+               lr.scan_id,
+               lr.scan_name,
+               lr.scan_time,
+               lr.verify_people_id,
+               lr.verify_people_name,
+               lr.verify_time,
+               lr.evaluation,
+               lr.evaluation_content,
+               lr.evaluation_time,
+               lr.result,
+               lr.result_time,
+               lr.result_person_id,
+               lr.status,
+               lr.create_time,
+               lr.create_by,
+               lr.is_last,
+               lr.job_id,
+               lr.last_job_type,
+               lr.source,
+               lr.create_method,
+               lr.is_cross_dept,
+               lr.device_id,
+               lr.device_name,
+               lr.record_status,
+               lp.person_code,
+               lp.main_person,
+               lp.dept_id user_dept_id,
+               lp.dept_name user_dept_name
+        from lawenforcement_record lr
+                 LEFT JOIN lawenforcement_person lp on lr.id = lp.record_id
+        where lr.id = #{id}
+    </select>
+
     <update id="updateLawenforcementRecord" parameterType="LawenforcementRecord">
         update lawenforcement_record
         <trim prefix="SET" suffixOverrides=",">
@@ -316,18 +496,9 @@
         where id = #{id}
     </update>
 
-    <delete id="deleteLawenforcementRecordById" parameterType="String">
-        delete
-        from lawenforcement_record
-        where id = #{id}
-    </delete>
-
-    <delete id="deleteLawenforcementRecordByIds" parameterType="String">
-        delete from lawenforcement_record where id in
-        <foreach item="id" collection="array" open="(" separator="," close=")">
-            #{id}
-        </foreach>
-    </delete>
+    <select id="getPersonCode" parameterType="string" resultType="map">
+        select person_code as personCode from lawenforcement_person where record_id = #{id} and main_person = 1
+    </select>
 
     <insert id="addRecordLog" parameterType="LawenforcementRecordLog">
         insert into lawenforcement_record_log
@@ -349,145 +520,7 @@
         </trim>
     </insert>
 
-    <select id="getPersonCode" parameterType="string" resultType="map">
-        select person_code as personCode from lawenforcement_person where record_id = #{id} and main_person = 1
-    </select>
-
-    <update id="updateRecordLogEndTime" parameterType="DeviceBO">
-        update lawenforcement_record_log set end_time = NOW() WHERE device_id = #{code} and end_time is null
-    </update>
-
-    <update id="updateRecordStatus" parameterType="DeviceBO">
-        update lawenforcement_record
-        set record_status = 'lawenforcement_type_2'
-        where id = (
-            select record_id
-            from lawenforcement_record_log
-            where device_id = #{code} and end_time is null
-        )
-    </update>
-
-    <resultMap id="detailMapResult" type="LawenforcementRecordDetailVO">
-        <result property="jobType" column="job_type"/>
-        <result property="creatorName" column="creator_name"/>
-        <result property="deptName" column="dept_name"/>
-        <result property="areaId" column="area_id"/>
-        <result property="jobName" column="job_name"/>
-        <result property="checkType" column="check_type"/>
-        <result property="checkObjectType" column="check_object_type"/>
-        <result property="checkObjectCode" column="check_object_code"/>
-        <result property="checkObjectName" column="check_object_name"/>
-        <result property="checkObjectPhone" column="check_object_phone"/>
-        <result property="checkStartTime" column="check_start_time"/>
-        <result property="checkEndTime" column="check_end_time"/>
-        <result property="subitemCount" column="subitem_count"/>
-        <result property="remark" column="remark"/>
-        <result property="verify" column="verify"/>
-        <result property="unableVerifyReason" column="unable_verify_reason"/>
-        <result property="scanId" column="scan_id"/>
-        <result property="scanName" column="scan_name"/>
-        <result property="scanTime" column="scan_time"/>
-        <result property="verifyPeopleId" column="verify_people_id"/>
-        <result property="verifyPeopleName" column="verify_people_name"/>
-        <result property="verifyTime" column="verify_time"/>
-        <result property="evaluation" column="evaluation"/>
-        <result property="evaluationContent" column="evaluation_content"/>
-        <result property="evaluationTime" column="evaluation_time"/>
-        <result property="result" column="result"/>
-        <result property="resultTime" column="result_time"/>
-        <result property="resultPersonId" column="result_person_id"/>
-        <result property="status" column="status"/>
-        <result property="createTime" column="create_time"/>
-        <result property="createBy" column="create_by"/>
-        <result property="isLast" column="is_last"/>
-        <result property="jobId" column="job_id"/>
-        <result property="lastJobType" column="lastJob_type"/>
-        <result property="source" column="source"/>
-        <result property="createMethod" column="create_method"/>
-        <result property="isCrossDept" column="is_cross_dept"/>
-        <result property="deviceName" column="device_name"/>
-        <result property="recordStatus" column="record_status"/>
-        <collection property="subitems" resultMap="subitemDetailResult"/>
-        <collection property="persons" resultMap="personDetailResult"/>
-        <collection property="recordLogList" resultMap="recordLogDetailResult"/>
-    </resultMap>
-
-    <resultMap id="subitemDetailResult" type="LawenforcementSubitemDetailVO">
-        <result property="subitemName" column="subitem_name"/>
-        <result property="subitemCode" column="subitem_code"/>
-        <result property="checkResult" column="check_result"/>
-        <result property="checkResultType" column="check_result_type"/>
-        <result property="decisionReason" column="decision_reason"/>
-        <result property="measures" column="measures"/>
-        <result property="measuresDetail" column="measures_detail"/>
-        <result property="fillTime" column="fill_time"/>
-        <result property="punishResult" column="punish_result"/>
-        <result property="punishContent" column="punish_content"/>
-        <result property="punishTime" column="punish_time"/>
-        <result property="timeout" column="timeout"/>
-        <result property="randomResult" column="random_result"/>
-        <result property="randomResultDetail" column="random_result_detail"/>
-        <result property="resultPersonId" column="subitem_result_person_id"/>
-        <result property="isProofOut" column="is_proof_out"/>
-        <result property="remark" column="subitem_remark"/>
-        <collection property="standards" resultMap="standardDetailResult"/>
-    </resultMap>
-
-    <resultMap id="personDetailResult" type="LawenforcementPersonDetailVO">
-        <result property="personName" column="person_name"/>
-        <result property="personCode" column="person_code"/>
-        <result property="personPhone" column="person_phone"/>
-        <result property="deptName" column="person_dept_name"/>
-        <result property="personType" column="person_type"/>
-        <result property="mainPerson" column="main_person"/>
-        <result property="remark" column="person_remark"/>
-    </resultMap>
-
-    <resultMap id="recordLogDetailResult" type="LawenforcementRecordLog">
-        <result property="personCode" column="log_person_code"/>
-        <result property="deviceName" column="log_device_name"/>
-        <result property="startTime" column="start_time"/>
-        <result property="endTime" column="end_time"/>
-    </resultMap>
-
-    <resultMap id="standardDetailResult" type="LawenforcementStandardDetailVO">
-        <result property="standardName" column="standard_name"/>
-        <result property="standardCode" column="standard_code"/>
-        <result property="checkResult" column="check_result"/>
-        <result property="checkResultType" column="check_result_type"/>
-        <result property="decisionReason" column="decision_reason"/>
-        <result property="resultPersonId" column="result_personId"/>
-        <result property="fillTime" column="standard_fill_time"/>
-        <result property="isProofOut" column="is_proof_out"/>
-        <result property="remark" column="standard_remark"/>
-    </resultMap>
-
-    <select id="getDetailById" parameterType="string" resultMap="detailMapResult">
-        select lr.job_type,lr.creator_name,lr.dept_name,lr.area_id,lr.job_name,lr.check_type,
-               lr.check_object_type,lr.check_object_code,lr.check_object_name,lr.check_object_phone,
-               lr.check_start_time,lr.check_end_time,lr.subitem_count,lr.remark,lr.verify,lr.unable_verify_reason,
-               lr.scan_id,lr.scan_name,lr.scan_time,lr.verify_people_id,lr.verify_people_name,lr.verify_time,
-               lr.evaluation,lr.evaluation_content,lr.evaluation_time,lr.result,lr.result_time,lr.result_person_id,
-               lr.status,lr.create_time,lr.create_by,lr.is_last,lr.job_id,lr.last_job_type,lr.source,lr.create_method,
-               lr.is_cross_dept,lr.device_name,lr.record_status,
-               lp.person_name,lp.person_code,lp.person_phone,lp.dept_name as person_dept_name,lp.person_type,lp.main_person,lp.remark as person_remark,
-               ls.subitem_name,ls.subitem_code,ls.check_result,ls.check_result_type,ls.decision_reason,ls.measures,
-               ls.measures_detail,ls.fill_time,ls.punish_result,ls.punish_content,ls.punish_time,ls.timeout,ls.random_result,
-               ls.random_result_detail,ls.result_person_id as subitem_result_person_id,ls.is_proof_out,ls.remark as subitem_remark,
-               lss.standard_name,lss.standard_code,lss.check_result,lss.check_result_type,lss.decision_reason,
-               lss.result_personId,lss.fill_time as standard_fill_time,lss.is_proof_out,lss.remark as standard_remark,
-               lrl.person_code as log_person_code,lrl.start_time,lrl.end_time,
-               crc.camera_name as log_device_name
-        FROM lawenforcement_record lr
-                 LEFT JOIN lawenforcement_person lp on lr.id = lp.record_id
-                 LEFT JOIN lawenforcement_subitem ls on lr.id = ls.record_id
-                 LEFT JOIN lawenforcement_standard lss on  ls.id = lss.subitem_id
-                 LEFT JOIN lawenforcement_record_log lrl on lr.id = lrl.record_id
-                 LEFT JOIN onest_monitor.centermonitor_t_camera crc on lrl.device_id = crc.camera_code
-        WHERE lr.id = #{id}
-    </select>
-
-    <update id="updateRecordToLiAn">
+    <update id="updateRecordState">
         update lawenforcement_record set record_status = #{recordStatus}
         where id = #{id}
     </update>
@@ -495,14 +528,14 @@
     <insert id="recordFillForm" parameterType="LawenforcementFillFormBO">
         insert into lawenforcement_fillform
         <trim prefix="(" suffix=")" suffixOverrides=",">
-        <if test="id != null">id,</if>
-        <if test="recordId != null">record_id,</if>
-        <if test="createBy != null">create_by,</if>
-        <if test="createName != null">create_name,</if>
-        <if test="createTime != null">create_time,</if>
-        <if test="attachPath != null">attach_path,</if>
-        <if test="attachName != null">attach_name,</if>
-        <if test="describe != null">`describe`,</if>
+            <if test="id != null">id,</if>
+            <if test="recordId != null">record_id,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createName != null">create_name,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="attachPath != null">attach_path,</if>
+            <if test="attachName != null">attach_name,</if>
+            <if test="describe != null">`describe`,</if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="id != null">#{id},</if>
@@ -515,4 +548,26 @@
             <if test="describe != null">#{describe},</if>
         </trim>
     </insert>
+
+    <delete id="deleteLawenforcementRecordByIds" parameterType="String">
+        delete from lawenforcement_record where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+
+    <update id="updateRecordStatus" parameterType="DeviceBO">
+        update lawenforcement_record
+        set record_status = 'lawenforcement_type_2'
+        where id = (
+            select record_id
+            from lawenforcement_record_log
+            where device_id = #{code} and end_time is null
+        )
+    </update>
+
+    <update id="updateRecordLogEndTime" parameterType="DeviceBO">
+        update lawenforcement_record_log set end_time = NOW() WHERE device_id = #{code} and end_time is null
+    </update>
+
 </mapper>