ソースを参照

精准饲喂母猪修改5

wwh 1 年間 前
コミット
348791bf60

+ 27 - 24
snowy-web-app/src/main/java/vip/xiaonuo/modular/feed/feedingenv/service/impl/FeedingEnvServiceImpl.java

@@ -32,6 +32,7 @@ import vip.xiaonuo.modular.base.baseConfig.entity.BaseConfig;
 import vip.xiaonuo.modular.base.baseConfig.mapper.BaseConfigMapper;
 import vip.xiaonuo.modular.base.pigpen.mapper.BasePigpenMapper;
 import vip.xiaonuo.modular.env.envdevice.entity.EnvDevice;
+import vip.xiaonuo.modular.env.envdevice.entity.vo.EnvDeviceCountVo;
 import vip.xiaonuo.modular.env.envdevice.param.EnvDeviceOrgIdParam;
 import vip.xiaonuo.modular.feed.feedingenv.entity.FeedingEnv;
 import vip.xiaonuo.modular.feed.feedingenv.mapper.FeedingEnvMapper;
@@ -40,6 +41,7 @@ import vip.xiaonuo.modular.feed.feedingenv.service.FeedingEnvService;
 
 import javax.validation.constraints.NotBlank;
 import java.text.DecimalFormat;
+import java.text.NumberFormat;
 import java.util.List;
 
 /**
@@ -87,11 +89,13 @@ public class FeedingEnvServiceImpl extends ServiceImpl<FeedingEnvMapper, Feeding
     @Override
     public CommonResult edit(FeedingEnvEditParam feedingEnvEditParam) {
         if (this.count(new QueryWrapper<FeedingEnv>().lambda().eq(FeedingEnv::getOrgId, feedingEnvEditParam.getOrgId())
-                .eq(FeedingEnv::getUnitId, feedingEnvEditParam.getUnitId())) > 0) {
+                .eq(FeedingEnv::getUnitId, feedingEnvEditParam.getUnitId())
+                .ne(FeedingEnv::getId,feedingEnvEditParam.getId())) > 0) {
             return new CommonResult(500, "栋舍已被绑定", false);
         }
         if (this.count(new QueryWrapper<FeedingEnv>().lambda().eq(FeedingEnv::getOrgId, feedingEnvEditParam.getOrgId())
-                .eq(FeedingEnv::getDeviceCode, feedingEnvEditParam.getDeviceCode())) > 0) {
+                .eq(FeedingEnv::getDeviceCode, feedingEnvEditParam.getDeviceCode())
+                .ne(FeedingEnv::getId,feedingEnvEditParam.getId())) > 0) {
             return new CommonResult(500, "设备编号已存在!", false);
         }
         FeedingEnv feedingEnv = this.queryEntity(feedingEnvEditParam.getId().toString());
@@ -123,29 +127,28 @@ public class FeedingEnvServiceImpl extends ServiceImpl<FeedingEnvMapper, Feeding
 
     @Override
     public JSONObject listEnv(String orgId) {
-        QueryWrapper<FeedingEnv> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("org_id", orgId);
-        List<FeedingEnv> envs = envMapper.selectList(queryWrapper);
-        Integer onliveCount = 0;
-        Integer offliveCount = 0;
-        for (FeedingEnv env : envs) {
-            if (env.getDeviceStatus() == 1) {
-                //在线
-                onliveCount = onliveCount + 1;
-            }
-            if (env.getDeviceStatus() == 0) {
-                //离线
-                offliveCount = offliveCount + 1;
-            }
-        }
-        double v = Double.parseDouble(onliveCount.toString());
-        double rank = v / Double.parseDouble(String.valueOf(envs.size()));
-        DecimalFormat dft = new DecimalFormat("0.00");
         JSONObject jsonObject = new JSONObject();
-        jsonObject.put("envCount", envs.size());
-        jsonObject.put("onliveCount", onliveCount);
-        jsonObject.put("offliveCount", offliveCount);
-        jsonObject.put("rank", dft.format(rank));
+        long deviceNum = this.count(new QueryWrapper<FeedingEnv>().lambda().eq(FeedingEnv::getOrgId, orgId));
+        if (deviceNum == 0){
+            jsonObject.put("envCount", 0);
+            jsonObject.put("onliveCount", 0);
+            jsonObject.put("offliveCount", 0);
+            jsonObject.put("rank", "0%");
+        }else {
+            jsonObject.put("envCount",deviceNum);
+            long onDeviceNum = this.count(new QueryWrapper<FeedingEnv>().lambda().eq(FeedingEnv::getDeviceStatus,"1").eq(FeedingEnv::getOrgId, orgId));
+            jsonObject.put("onliveCount", onDeviceNum);
+
+            long offDeviceNum = this.count(new QueryWrapper<FeedingEnv>().lambda().eq(FeedingEnv::getDeviceStatus,"0").eq(FeedingEnv::getOrgId, orgId));
+            jsonObject.put("offliveCount", offDeviceNum);
+            //创建一个数值格式化对象
+            NumberFormat numberFormat = NumberFormat.getInstance();
+            //设置精确到小数点后两位
+            numberFormat.setMaximumFractionDigits(2);
+            String onlineRate = numberFormat.format((float)onDeviceNum / (float) deviceNum* 100) + "%";
+            jsonObject.put("rank", onlineRate);
+
+        }
         return jsonObject;
     }