diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/Prompt.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/Prompt.java
index f37fcd62..9d5b8600 100644
--- a/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/Prompt.java
+++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/Prompt.java
@@ -30,4 +30,8 @@ public interface Prompt {
     String PARAM_REQUIRED = "Param Is Required!";
 
     String PARAM_NOT_EMPTY = "Param Cat Not Be Empty!";
+
+    String EXEC_SUCC = "Task executed successfully!";
+
+    String EXEC_Faild = "Task executed Faild!";
 }
diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/dto/ItemDto.java b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/dto/ItemDto.java
index 4b9ac194..bfc3520c 100644
--- a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/dto/ItemDto.java
+++ b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/dto/ItemDto.java
@@ -2,6 +2,7 @@ package org.jeecg.modules.base.dto;
 
 import lombok.Data;
 import org.jeecg.modules.base.entity.monitor.Item;
+import org.jeecg.modules.base.entity.postgre.AlarmItem;
 
 import java.io.Serializable;
 
@@ -14,9 +15,9 @@ public class ItemDto implements Serializable{
 
     private String units;
 
-    public ItemDto(Item item) {
-        this.itemId = item.getItemId();
-        this.name = item.getName();
-        this.units = item.getUnits();
+    public ItemDto(AlarmItem alarmItem) {
+        this.itemId = alarmItem.getId();
+        this.name = alarmItem.getName();
+        this.units = alarmItem.getUnits();
     }
 }
diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/controller/AlarmAnalysisNuclideParamController.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/controller/AlarmAnalysisNuclideParamController.java
index 2c275f57..0bfb63a6 100644
--- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/controller/AlarmAnalysisNuclideParamController.java
+++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/controller/AlarmAnalysisNuclideParamController.java
@@ -20,8 +20,8 @@ public class AlarmAnalysisNuclideParamController extends JeecgController<AlarmAn
 
 	@GetMapping("refresh")
 	@ApiOperation(value = "定时刷新核素计算参数信息",notes = "定时刷新核素计算参数信息")
-	public void refreshParam(){
-		service.refresh();
+	public boolean refreshParam(){
+		return service.refresh();
 	}
 
 	@GetMapping("findInfo")
diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/controller/AlarmItemController.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/controller/AlarmItemController.java
index 0062a4bf..e23cf7e6 100644
--- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/controller/AlarmItemController.java
+++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/controller/AlarmItemController.java
@@ -1,20 +1,25 @@
 package org.jeecg.modules.controller;
 
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
 import org.jeecg.common.system.base.controller.JeecgController;
 import org.jeecg.modules.base.entity.postgre.AlarmItem;
 import org.jeecg.modules.service.IAlarmItemService;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 @Api(value = "监控项管理",tags = "监控项管理")
 @RestController
-@RequestMapping("/alarmitem")
+@RequestMapping("alarmItem")
 public class AlarmItemController extends JeecgController<AlarmItem, IAlarmItemService> {
 
-	@Autowired
-	private IAlarmItemService alarmItemService;
-
-
+	@GetMapping("syncItem")
+	@ApiOperation(value = "同步监控项信息",notes = "同步监控项信息")
+	public boolean syncItem(@RequestParam String type,
+							@RequestParam String code){
+		return service.syncItem(type,code);
+	}
 }
diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/controller/AlarmRuleController.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/controller/AlarmRuleController.java
index b85ac04a..80ab7fbd 100644
--- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/controller/AlarmRuleController.java
+++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/controller/AlarmRuleController.java
@@ -6,9 +6,11 @@ import org.jeecg.common.api.vo.Result;
 import org.jeecg.modules.base.dto.ItemDto;
 import org.jeecg.modules.base.entity.monitor.Host;
 import org.jeecg.modules.base.entity.monitor.Servers;
+import org.jeecg.modules.base.entity.postgre.AlarmItem;
 import org.jeecg.modules.base.entity.postgre.AlarmRule;
 import org.jeecg.modules.base.vo.AlarmRuleVo;
 import org.jeecg.modules.feignclient.MonitorAlarm;
+import org.jeecg.modules.service.IAlarmItemService;
 import org.jeecg.modules.service.IAlarmRuleService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -28,6 +30,9 @@ public class AlarmRuleController {
     @Autowired
     private IAlarmRuleService alarmRuleService;
 
+    @Autowired
+    private IAlarmItemService alarmItemService;
+
     @GetMapping("findPage")
     @ApiOperation(value = "分页查询报警规则", notes = "分页查询报警规则")
     public Result findPage(AlarmRuleVo alarmRuleVo){
@@ -66,17 +71,9 @@ public class AlarmRuleController {
 
     @GetMapping("getItems")
     @ApiOperation(value = "根据资源名称获取监控项",notes = "根据资源名称获取监控项")
-    public Result getItems(@RequestParam String sourceName){
-        Result<Servers> result = monitorAlarm.listBack(sourceName);
-        List<Host> hosts = result.getResult().getRecords();
-        List<ItemDto> itemDtos = new ArrayList<>();
-        for (Host host : hosts) {
-            boolean equals = host.getCode().equals(sourceName);
-            if(!equals)continue;
-            itemDtos = host.getItems().values().stream()
-                    .map(ItemDto::new)
-                    .collect(Collectors.toList());
-        }
+    public Result getItems(@RequestParam String sourceId){
+        List<AlarmItem> alarmItems = alarmItemService.alarmItems(sourceId);
+        List<ItemDto> itemDtos = alarmItems.stream().map(ItemDto::new).collect(Collectors.toList());
         return Result.OK(itemDtos);
     }
 
diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/controller/CalculateConcController.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/controller/CalculateConcController.java
index 0c6cafba..19462428 100644
--- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/controller/CalculateConcController.java
+++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/controller/CalculateConcController.java
@@ -19,8 +19,8 @@ public class CalculateConcController {
 
     @GetMapping("caclAndSave")
     @ApiOperation(value = "计算并保存核素浓度",notes = "计算并保存核素浓度")
-    public void caclAndSave(){
-        calculateConcService.calcAndSave();
+    public boolean caclAndSave(){
+        return calculateConcService.calcAndSave();
     }
 
 }
diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/feignclient/MonitorAlarm.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/feignclient/MonitorAlarm.java
index 737ceba4..40c5c5dc 100644
--- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/feignclient/MonitorAlarm.java
+++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/feignclient/MonitorAlarm.java
@@ -10,7 +10,7 @@ import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestParam;
 
 @Component
-@FeignClient(name = "monitorAlarm",url = "http://218.249.158.97:7008/mobile/monitor")
+@FeignClient(name = "monitorAlarm",url = "http://123.124.245.134:7008/mobile/monitor")
 public interface MonitorAlarm {
 
     // --------------------后端专用-------------------
diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/xml/AlarmRuleMapper.xml b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/xml/AlarmRuleMapper.xml
index 76caa1be..da9a1298 100644
--- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/xml/AlarmRuleMapper.xml
+++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/xml/AlarmRuleMapper.xml
@@ -38,10 +38,10 @@
                 AND source_id = #{sourceId}
             </if>
         </where>
+        ORDER BY enabled DESC, create_time DESC
         <if test="pageFlag == null">
             LIMIT #{pageSize} OFFSET #{pageStart}
         </if>
-        ORDER BY enabled DESC, create_time DESC
     </select>
 
     <select id="findInfo" parameterType="String" resultType="org.jeecg.modules.base.dto.AlarmRuleInfo">
diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/CalculateConcService.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/CalculateConcService.java
index 8df874da..f56bedb2 100644
--- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/CalculateConcService.java
+++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/CalculateConcService.java
@@ -8,7 +8,7 @@ import java.util.Map;
 
 public interface CalculateConcService {
 
-    void calcAndSave();
+    boolean calcAndSave();
 
     Map<String,String> calculate(List<ConcDto> concDtos, BigDecimal index);
 }
diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/IAlarmItemService.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/IAlarmItemService.java
index d866b58d..cd3d779b 100644
--- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/IAlarmItemService.java
+++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/IAlarmItemService.java
@@ -4,6 +4,10 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.modules.base.entity.postgre.AlarmItem;
 
+import java.util.List;
+
 public interface IAlarmItemService extends IService<AlarmItem> {
-    Result syncItem(String sourceType,String code);
+    boolean syncItem(String sourceType,String code);
+
+    List<AlarmItem> alarmItems(String sourceId);
 }
diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/AlarmAnalysisNuclideParamServiceImpl.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/AlarmAnalysisNuclideParamServiceImpl.java
index cebbcd4b..d1e516d7 100644
--- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/AlarmAnalysisNuclideParamServiceImpl.java
+++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/AlarmAnalysisNuclideParamServiceImpl.java
@@ -10,6 +10,9 @@ import org.springframework.stereotype.Service;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 
+import java.time.LocalDate;
+import java.time.ZoneId;
+
 @Service
 public class AlarmAnalysisNuclideParamServiceImpl extends ServiceImpl<AlarmAnalysisNuclideParamMapper, AlarmAnalysisNuclideParam> implements IAlarmAnalysisNuclideParamService {
 
@@ -22,11 +25,22 @@ public class AlarmAnalysisNuclideParamServiceImpl extends ServiceImpl<AlarmAnaly
 
     @Override
     public boolean refresh() {
-        AlarmAnalysisNuclideParam nuclideParam = new AlarmAnalysisNuclideParam();
-        CopyOptions options = CopyOptions.create()
-                .setIgnoreProperties("id","createTime");
-        BeanUtil.copyProperties(getLatest(),nuclideParam,options);
-        return save(nuclideParam);
+        try {
+            AlarmAnalysisNuclideParam nuclideParam = new AlarmAnalysisNuclideParam();
+            AlarmAnalysisNuclideParam latest = getLatest();
+            LocalDate localDate = latest.getCreateTime().toInstant()
+                    .atZone(ZoneId.systemDefault()).toLocalDate();
+            LocalDate today = LocalDate.now();
+            boolean isToday = today.equals(localDate);
+            if (isToday) return true;
+            CopyOptions options = CopyOptions.create()
+                    .setIgnoreProperties("id","createTime");
+            BeanUtil.copyProperties(latest,nuclideParam,options);
+            return save(nuclideParam);
+        }catch (Throwable e){
+            e.printStackTrace();
+            return false;
+        }
     }
 
     @Override
diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/AlarmItemServiceImpl.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/AlarmItemServiceImpl.java
index 0a064152..0c7143dd 100644
--- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/AlarmItemServiceImpl.java
+++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/AlarmItemServiceImpl.java
@@ -1,8 +1,10 @@
 package org.jeecg.modules.service.impl;
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.collection.ListUtil;
 import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.constant.Prompt;
@@ -17,6 +19,7 @@ import org.jeecg.modules.service.ISysDatabaseService;
 import org.jeecg.modules.service.ISysServerService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -38,41 +41,50 @@ public class AlarmItemServiceImpl extends ServiceImpl<AlarmItemMapper, AlarmItem
     private ISysDatabaseService databaseService;
 
     @Override
-    public Result syncItem(String type,String code) {
-        String sourceId = null;
-        if (SERVER.getType().equals(type)){
-            sourceId = serverService.getByName(code);
-        } else if (DATABASE.getType().equals(type)) {
+    public boolean syncItem(String type,String code) {
+        try {
+            String sourceId = null;
+            if (SERVER.getType().equals(type)){
+                sourceId = serverService.getByName(code);
+            } else if (DATABASE.getType().equals(type)) {
 
-        }else {
-            return Result.error("Soucrce Type Not Extis!");
+            }else {
+                return false;
+            }
+            if (StrUtil.isBlank(sourceId))
+                return false;
+
+            Result<Servers> result = monitorAlarm.listBack(code);
+            List<Host> hosts = result.getResult().getRecords();
+            List<Item> items = new ArrayList<>();
+            for (Host host : hosts) {
+                boolean equals = host.getCode().equals(code);
+                if(!equals) continue;
+                items = ListUtil.toList(host.getItems().values());
+            }
+            if (CollUtil.isEmpty(items))
+                return false;
+
+            List<AlarmItem> alarmItems = new ArrayList<>();
+            for (Item item : items) {
+                AlarmItem alarmItem = BeanUtil.copyProperties(item, AlarmItem.class);
+                alarmItem.setId(item.getItemId());
+                alarmItem.setSourceId(sourceId);
+                alarmItems.add(alarmItem);
+            }
+            return saveOrUpdateBatch(alarmItems);
+        }catch (Exception e){
+            e.printStackTrace();
+            return false;
         }
+    }
+
+    @Override
+    public List<AlarmItem> alarmItems(String sourceId) {
         if (StrUtil.isBlank(sourceId))
-            return Result.error(Prompt.DATA_NOT_EXITS);
-
-        Result<Servers> result = monitorAlarm.listBack(code);
-        List<Host> hosts = result.getResult().getRecords();
-        List<Item> items = new ArrayList<>();
-        for (Host host : hosts) {
-            boolean equals = host.getCode().equals(code);
-            if(!equals) continue;
-            items = ListUtil.toList(host.getItems().values());
-        }
-        if (CollUtil.isEmpty(items))
-            return Result.error(Prompt.DATA_IS_EMPTY);
-
-        List<AlarmItem> alarmItems = new ArrayList<>();
-        for (Item item : items) {
-            AlarmItem alarmItem = new AlarmItem();
-            alarmItem.setId(item.getItemId());
-            alarmItem.setName(item.getName());
-            alarmItem.setUnits(item.getUnits());
-            alarmItem.setSourceId(sourceId);
-            alarmItem.setDescription(item.getDescription());
-            alarmItems.add(alarmItem);
-        }
-        if(saveOrUpdateBatch(alarmItems))
-            return Result.OK(Prompt.UPDATE_SUCC);
-        return Result.error(Prompt.UPDATE_ERR);
+            return ListUtil.empty();
+        LambdaQueryWrapper<AlarmItem> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(AlarmItem::getSourceId,sourceId);
+        return list(wrapper);
     }
 }
diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/CalculateConcServiceImpl.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/CalculateConcServiceImpl.java
index 42f529ab..cc847da5 100644
--- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/CalculateConcServiceImpl.java
+++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/CalculateConcServiceImpl.java
@@ -46,54 +46,59 @@ public class CalculateConcServiceImpl implements CalculateConcService {
     private IAlarmAnalysisNuclideParamService nuclideParamService;
 
     @Override
-    public void calcAndSave() {
-        String comma = SymbolConstant.COMMA;
-        List<AlarmAnalysisRule> analysisRules = analysisRuleService.allAnalysisRule();
-        Set<String> nuclideNames = analysisRules.stream()
-                .filter(rule -> StrUtil.isNotBlank(rule.getNuclides()))
-                .map(AlarmAnalysisRule::getNuclides)
-                .flatMap(nuclides -> ListUtil.toList(nuclides.split(comma)).stream())
-                .collect(Collectors.toSet());
-        Map<String,Object> params = new HashMap<>();
-        params.put("nuclideName",nuclideNames);
-        AlarmAnalysisNuclideParam paramLatest = nuclideParamService.getLatest();
-        BigDecimal index = paramLatest.getIndex();
-        Integer days = paramLatest.getDays();
-        LocalDate dayAgo = LocalDate.now().minusDays(1);
-        LocalDate daysAgo = dayAgo.minusDays(days);
-        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DateConstant.DATE);
-        String startDate = daysAgo.format(formatter);
-        String endDate = dayAgo.format(formatter);
-        params.put("startDate",startDate + DateConstant.TIME_START);
-        params.put("endDate",endDate + DateConstant.TIME_END);
-        /* Auto自动处理 */
-        // beta-gamma
-        List<ConcDto> xeConcAuto = xeResultsAutoService.getConc(params);
-        // gamma
-        List<ConcDto> nuclConcAuto = nuclIdedAutoService.getConc(params);
-        Map<String,String> autoResult = new HashMap<>();
-        autoResult.putAll(calculate(xeConcAuto,index));
-        autoResult.putAll(calculate(nuclConcAuto,index));
-        List<AlarmAnalysisNuclideAvg> autoAvgs = autoResult.entrySet().stream()
-                .map(entry -> new AlarmAnalysisNuclideAvg(entry.getKey(), entry.getValue()))
-                .collect(Collectors.toList());
-        autoAvgs.forEach(item -> item.setDataSourceType(CommonConstant.ARMDARR));
-        /* Man人工交互 */
-        // beta-gamma
-        List<ConcDto> xeConcMan = xeResultsManService.getConc(params);
-        // gamma
-        List<ConcDto> nuclConcMan = nuclIdedManService.getConc(params);
-        Map<String,String> manResult = new HashMap<>();
-        manResult.putAll(calculate(xeConcMan,index));
-        manResult.putAll(calculate(nuclConcMan,index));
-        List<AlarmAnalysisNuclideAvg> manAvgs = manResult.entrySet().stream()
-                .map(entry -> new AlarmAnalysisNuclideAvg(entry.getKey(), entry.getValue()))
-                .collect(Collectors.toList());
-        manAvgs.forEach(item -> item.setDataSourceType(CommonConstant.ARMDRRR));
-        manAvgs.addAll(autoAvgs);
-        String cycle = startDate + SymbolConstant.WELL_NUMBER + endDate;
-        manAvgs.forEach(item -> item.setCycle(cycle).setCaclDate(dayAgo));
-        nuclideAvgService.saveBatch(manAvgs);
+    public boolean calcAndSave() {
+        try {
+            String comma = SymbolConstant.COMMA;
+            List<AlarmAnalysisRule> analysisRules = analysisRuleService.allAnalysisRule();
+            Set<String> nuclideNames = analysisRules.stream()
+                    .filter(rule -> StrUtil.isNotBlank(rule.getNuclides()))
+                    .map(AlarmAnalysisRule::getNuclides)
+                    .flatMap(nuclides -> ListUtil.toList(nuclides.split(comma)).stream())
+                    .collect(Collectors.toSet());
+            Map<String,Object> params = new HashMap<>();
+            params.put("nuclideName",nuclideNames);
+            AlarmAnalysisNuclideParam paramLatest = nuclideParamService.getLatest();
+            BigDecimal index = paramLatest.getIndex();
+            Integer days = paramLatest.getDays();
+            LocalDate dayAgo = LocalDate.now().minusDays(1);
+            LocalDate daysAgo = dayAgo.minusDays(days);
+            DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DateConstant.DATE);
+            String startDate = daysAgo.format(formatter);
+            String endDate = dayAgo.format(formatter);
+            params.put("startDate",startDate + DateConstant.TIME_START);
+            params.put("endDate",endDate + DateConstant.TIME_END);
+            /* Auto自动处理 */
+            // beta-gamma
+            List<ConcDto> xeConcAuto = xeResultsAutoService.getConc(params);
+            // gamma
+            List<ConcDto> nuclConcAuto = nuclIdedAutoService.getConc(params);
+            Map<String,String> autoResult = new HashMap<>();
+            autoResult.putAll(calculate(xeConcAuto,index));
+            autoResult.putAll(calculate(nuclConcAuto,index));
+            List<AlarmAnalysisNuclideAvg> autoAvgs = autoResult.entrySet().stream()
+                    .map(entry -> new AlarmAnalysisNuclideAvg(entry.getKey(), entry.getValue()))
+                    .collect(Collectors.toList());
+            autoAvgs.forEach(item -> item.setDataSourceType(CommonConstant.ARMDARR));
+            /* Man人工交互 */
+            // beta-gamma
+            List<ConcDto> xeConcMan = xeResultsManService.getConc(params);
+            // gamma
+            List<ConcDto> nuclConcMan = nuclIdedManService.getConc(params);
+            Map<String,String> manResult = new HashMap<>();
+            manResult.putAll(calculate(xeConcMan,index));
+            manResult.putAll(calculate(nuclConcMan,index));
+            List<AlarmAnalysisNuclideAvg> manAvgs = manResult.entrySet().stream()
+                    .map(entry -> new AlarmAnalysisNuclideAvg(entry.getKey(), entry.getValue()))
+                    .collect(Collectors.toList());
+            manAvgs.forEach(item -> item.setDataSourceType(CommonConstant.ARMDRRR));
+            manAvgs.addAll(autoAvgs);
+            String cycle = startDate + SymbolConstant.WELL_NUMBER + endDate;
+            manAvgs.forEach(item -> item.setCycle(cycle).setCaclDate(dayAgo));
+            return nuclideAvgService.saveBatch(manAvgs);
+        }catch (Throwable e){
+            e.printStackTrace();
+            return false;
+        }
     }
 
     @Override
diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/feignclient/AbnormalAlarmClient.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/feignclient/AbnormalAlarmClient.java
index 632992fa..f7412d84 100644
--- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/feignclient/AbnormalAlarmClient.java
+++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/feignclient/AbnormalAlarmClient.java
@@ -31,9 +31,14 @@ public interface AbnormalAlarmClient {
 
     /* CalculateConcController下相关接口 */
     @GetMapping("/calculateConc/caclAndSave")
-    void calculateConc();
+    boolean calculateConc();
 
     /* AlarmAnalysisNuclideParamController下相关接口 */
     @GetMapping("/nuclideParam/refresh")
-    void refreshParam();
+    boolean refreshParam();
+
+    /* AlarmItemController下相关接口 */
+    @GetMapping("/alarmItem/syncItem")
+    boolean syncItem(@RequestParam String type,
+                     @RequestParam String code);
 }
diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/controller/QuartzJobController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/controller/QuartzJobController.java
index d39686a1..59779905 100644
--- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/controller/QuartzJobController.java
+++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/controller/QuartzJobController.java
@@ -9,6 +9,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.constant.CommonConstant;
+import org.jeecg.common.constant.Prompt;
 import org.jeecg.common.constant.SymbolConstant;
 import org.jeecg.common.system.query.QueryGenerator;
 import org.jeecg.common.system.vo.LoginUser;
@@ -272,19 +273,17 @@ public class QuartzJobController {
 	//@RequiresRoles("admin")
     //@RequiresPermissions("system:quartzJob:execute")
 	@GetMapping("/execute")
-	public Result<?> execute(@RequestParam(name = "id", required = true) String id) {
+	public Result<?> execute(@RequestParam("id") String id) {
 		QuartzJob quartzJob = quartzJobService.getById(id);
 		if (quartzJob == null) {
-			return Result.error("未找到对应实体");
+			return Result.error("The specified task entity class was not found");
 		}
 		try {
-			quartzJobService.execute(quartzJob);
+			return quartzJobService.execute(quartzJob);
 		} catch (Exception e) {
-			//e.printStackTrace();
-			log.info("定时任务 立即执行失败>>"+e.getMessage());
-			return Result.error("执行失败!");
+			e.printStackTrace();
+			return Result.error(Prompt.EXEC_Faild);
 		}
-		return Result.ok("执行成功!");
 	}
 
 }
diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/job/NuclideParamJob.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/job/NuclideParamJob.java
index 6cd25e93..8d78719d 100644
--- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/job/NuclideParamJob.java
+++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/job/NuclideParamJob.java
@@ -1,5 +1,6 @@
 package org.jeecg.modules.quartz.job;
 
+import lombok.extern.slf4j.Slf4j;
 import org.jeecg.common.config.mqtoken.UserTokenContext;
 import org.jeecg.common.util.SpringContextUtils;
 import org.jeecg.modules.feignclient.AbnormalAlarmClient;
@@ -15,17 +16,27 @@ import static org.jeecg.common.util.TokenUtils.getTempToken;
 /**
  *  定时更新核素浓度计算参数
  */
+@Slf4j
 @DisallowConcurrentExecution
 @PersistJobDataAfterExecution
 public class NuclideParamJob implements Job {
 
     private AbnormalAlarmClient alarmClient;
 
+    private boolean success = true;
+
     @Override
     public void execute(JobExecutionContext context) throws JobExecutionException {
-        init();
-        alarmClient.refreshParam();
-        destroy();
+        try {
+            init();
+            success = alarmClient.refreshParam();
+        }catch (Exception e){
+            e.printStackTrace();
+            success = false;
+        }finally {
+            destroy();
+            context.getJobDetail().getJobDataMap().put("success",success);
+        }
     }
 
     private void init(){
diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/job/NucliedAvgJob.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/job/NucliedAvgJob.java
index 61175bb8..2e8742d9 100644
--- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/job/NucliedAvgJob.java
+++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/job/NucliedAvgJob.java
@@ -1,5 +1,6 @@
 package org.jeecg.modules.quartz.job;
 
+import lombok.extern.slf4j.Slf4j;
 import org.jeecg.common.config.mqtoken.UserTokenContext;
 import org.jeecg.common.util.SpringContextUtils;
 import org.jeecg.modules.feignclient.AbnormalAlarmClient;
@@ -15,23 +16,34 @@ import static org.jeecg.common.util.TokenUtils.getTempToken;
 /**
  *  定时计算核素浓度均值
  */
+@Slf4j
 @DisallowConcurrentExecution
 @PersistJobDataAfterExecution
 public class NucliedAvgJob implements Job {
 
     private AbnormalAlarmClient alarmClient;
 
+    private boolean success = true;
+
     @Override
     public void execute(JobExecutionContext context) throws JobExecutionException {
-        init();
-        alarmClient.calculateConc();
-        destroy();
+        try {
+            init();
+            success = alarmClient.calculateConc();
+        }catch (Exception e){
+            e.printStackTrace();
+            success = false;
+        }finally {
+            destroy();
+            context.getJobDetail().getJobDataMap().put("success",success);
+        }
     }
 
     private void init(){
         // start:生成临时Token到线程中
         UserTokenContext.setToken(getTempToken());
         alarmClient = SpringContextUtils.getBean(AbnormalAlarmClient.class);
+        throw new RuntimeException("test");
     }
 
     private void destroy(){
diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/job/SyncItemJob.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/job/SyncItemJob.java
new file mode 100644
index 00000000..711dc127
--- /dev/null
+++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/job/SyncItemJob.java
@@ -0,0 +1,53 @@
+package org.jeecg.modules.quartz.job;
+
+import lombok.NoArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.config.mqtoken.UserTokenContext;
+import org.jeecg.common.util.SpringContextUtils;
+import org.jeecg.modules.base.enums.SourceType;
+import org.jeecg.modules.feignclient.AbnormalAlarmClient;
+import org.quartz.*;
+
+import static org.jeecg.common.util.TokenUtils.getTempToken;
+
+/**
+ * 此处的同步是指:当定时任务的执行时间大于任务的时间
+ * 间隔时会等待第一个任务执行完成才会走第二个任务
+ */
+
+/**
+ *  监控项信息更新保存
+ */
+@DisallowConcurrentExecution
+@PersistJobDataAfterExecution
+public class SyncItemJob implements Job {
+
+    private AbnormalAlarmClient alarmClient;
+
+    private boolean success = true;
+
+    @Override
+    public void execute(JobExecutionContext context) throws JobExecutionException {
+        try {
+            init();
+            success = alarmClient.syncItem(SourceType.SERVER.getType(), "172.21.60.231");
+        }catch (Exception e){
+            e.printStackTrace();
+            success = false;
+        }finally {
+            destroy();
+            context.getJobDetail().getJobDataMap().put("success",success);
+        }
+    }
+
+    private void init(){
+        // start:生成临时Token到线程中
+        UserTokenContext.setToken(getTempToken());
+        alarmClient = SpringContextUtils.getBean(AbnormalAlarmClient.class);
+    }
+
+    private void destroy(){
+        // end:删除临时Token
+        UserTokenContext.remove();
+    }
+}
diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/service/IQuartzJobService.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/service/IQuartzJobService.java
index 78d18509..415a347d 100644
--- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/service/IQuartzJobService.java
+++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/service/IQuartzJobService.java
@@ -1,6 +1,7 @@
 package org.jeecg.modules.quartz.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.common.api.vo.Result;
 import org.jeecg.modules.quartz.entity.QuartzJob;
 import org.quartz.SchedulerException;
 
@@ -55,7 +56,7 @@ public interface IQuartzJobService extends IService<QuartzJob> {
 	 * @param quartzJob
      * @throws Exception
 	 */
-	void execute(QuartzJob quartzJob) throws Exception;
+	Result<?> execute(QuartzJob quartzJob) throws Exception;
 
 	/**
 	 * 暂停任务
diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/service/impl/QuartzJobServiceImpl.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/service/impl/QuartzJobServiceImpl.java
index 25de10fd..cdf13ff7 100644
--- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/service/impl/QuartzJobServiceImpl.java
+++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/service/impl/QuartzJobServiceImpl.java
@@ -1,8 +1,12 @@
 package org.jeecg.modules.quartz.service.impl;
 
+import cn.hutool.core.map.MapUtil;
+import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.constant.CommonConstant;
+import org.jeecg.common.constant.Prompt;
 import org.jeecg.common.exception.JeecgBootException;
 import org.jeecg.common.util.DateUtils;
 import org.jeecg.modules.quartz.entity.QuartzJob;
@@ -102,7 +106,7 @@ public class QuartzJobServiceImpl extends ServiceImpl<QuartzJobMapper, QuartzJob
 	}
 
 	@Override
-	public void execute(QuartzJob quartzJob) throws Exception {
+	public Result<?> execute(QuartzJob quartzJob) throws Exception {
 		String jobName = quartzJob.getJobClassName().trim();
 		Date startDate = new Date();
 		String ymd = DateUtils.date2Str(startDate,DateUtils.yyyymmddhhmmss.get());
@@ -117,11 +121,21 @@ public class QuartzJobServiceImpl extends ServiceImpl<QuartzJobMapper, QuartzJob
 				.startAt(startDate)
 				.build();
 		// 构建job信息
-		JobDetail jobDetail = JobBuilder.newJob(getClass(jobName).getClass()).withIdentity(identity).usingJobData("parameter", quartzJob.getParameter()).build();
+		JobDetail jobDetail = JobBuilder.newJob(getClass(jobName).getClass())
+				.withIdentity(identity)
+				.storeDurably()
+				.usingJobData("parameter", quartzJob.getParameter())
+				.build();
 		// 将trigger和 jobDetail 加入这个调度
 		scheduler.scheduleJob(jobDetail, trigger);
 		// 启动scheduler
 		scheduler.start();
+		// 获取 JobDetail 对象
+		JobDetail detail = scheduler.getJobDetail(new JobKey(identity));
+		if (ObjectUtil.isNull(detail))
+			return Result.OK(Prompt.EXEC_SUCC);
+		boolean success = detail.getJobDataMap().getBoolean("success");
+		return success ? Result.OK(Prompt.EXEC_SUCC) : Result.error(Prompt.EXEC_Faild);
 	}
 
 	@Override
diff --git a/jeecg-module-web-statistics/src/main/java/org/jeecg/modules/service/impl/GardsSohDataServiceImpl.java b/jeecg-module-web-statistics/src/main/java/org/jeecg/modules/service/impl/GardsSohDataServiceImpl.java
index 63f801da..a170667a 100644
--- a/jeecg-module-web-statistics/src/main/java/org/jeecg/modules/service/impl/GardsSohDataServiceImpl.java
+++ b/jeecg-module-web-statistics/src/main/java/org/jeecg/modules/service/impl/GardsSohDataServiceImpl.java
@@ -71,7 +71,7 @@ public class GardsSohDataServiceImpl extends ServiceImpl<GardsSohDataMapper, Gar
                     item.setDetectorName(detectorName);
                 }
                 if (Objects.nonNull(item.getStartTime())) {
-                    long endSecond = (item.getStartTime().getTime() / 1000) + Long.valueOf(item.getTime());
+                    long endSecond = (item.getStartTime().getTime() / 1000) + Math.round(item.getTime());
                     Date endDateTime = new Date();
                     endDateTime.setTime(endSecond*1000);
                     item.setEndTime(endDateTime);
@@ -162,7 +162,7 @@ public class GardsSohDataServiceImpl extends ServiceImpl<GardsSohDataMapper, Gar
             Date startT = sohDatum.getStartTime();
             if (ObjectUtil.isNotNull(startT)) {
                 long stratSecod = startT.getTime() / 1000;
-                long endSecond = stratSecod + Long.valueOf(sohDatum.getTime());
+                long endSecond = stratSecod + Math.round(sohDatum.getTime());
                 Date endDateTime = new Date(endSecond * 1000);
                 sohDatum.setEndTime(endDateTime);
             }
diff --git a/jeecg-server-cloud/jeecg-system-cloud-start/src/main/resources/application.yml b/jeecg-server-cloud/jeecg-system-cloud-start/src/main/resources/application.yml
index 26e79e88..1fe8ebd7 100644
--- a/jeecg-server-cloud/jeecg-system-cloud-start/src/main/resources/application.yml
+++ b/jeecg-server-cloud/jeecg-system-cloud-start/src/main/resources/application.yml
@@ -20,4 +20,4 @@ spring:
 monitor:
   username: wmhr
   password: Wmhr.123
-  url: http://218.249.158.97:7008/mobile/monitor
\ No newline at end of file
+  url: http://123.124.245.134:7008/mobile/monitor
\ No newline at end of file