|
@@ -5,23 +5,19 @@ import cn.hutool.core.date.DateUtil;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
|
|
-import com.huimv.eartag2.manage2.mapper.BaseFarmerMapper;
|
|
|
-import com.huimv.eartag2.manage2.mapper.EartagDeviceRegisterMapper;
|
|
|
-import com.huimv.eartag2.manage2.mapper.EartagEartagRegister2Mapper;
|
|
|
-import com.huimv.eartag2.manage2.mapper.EartagResetMapper;
|
|
|
-import com.huimv.eartag2.manage2.pojo.BaseFarmer;
|
|
|
-import com.huimv.eartag2.manage2.pojo.EartagDeviceRegister;
|
|
|
-import com.huimv.eartag2.manage2.pojo.EartagEartagRegister2;
|
|
|
-import com.huimv.eartag2.manage2.pojo.SysBaseConfig;
|
|
|
+import com.huimv.eartag2.manage2.mapper.*;
|
|
|
+import com.huimv.eartag2.manage2.pojo.*;
|
|
|
import com.huimv.eartag2.manage2.service.EartagDeviceRegisterService;
|
|
|
import com.huimv.eartag2.manage2.service.IEartagService;
|
|
|
import com.huimv.eartag2.manage2.service.SysBaseConfigService;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.context.annotation.Configuration;
|
|
|
import org.springframework.scheduling.annotation.EnableScheduling;
|
|
|
import org.springframework.scheduling.annotation.Scheduled;
|
|
|
|
|
|
import java.io.IOException;
|
|
|
+import java.math.BigDecimal;
|
|
|
import java.sql.Timestamp;
|
|
|
import java.text.ParseException;
|
|
|
import java.util.Date;
|
|
@@ -54,22 +50,27 @@ public class EartagTask {
|
|
|
private BaseFarmerMapper baseFarmerMapper;
|
|
|
@Autowired
|
|
|
private EartagDeviceRegisterMapper eartagDeviceRegisterMapper;
|
|
|
+ @Autowired
|
|
|
+ private FarmerAssetMapper farmerAssetMapper;
|
|
|
+ @Value("${farmer.pig.price}")
|
|
|
+ private String pigPrice;
|
|
|
+ @Autowired
|
|
|
+ private FarmerDayageWeightMapper farmerDayageWeightMapper;
|
|
|
|
|
|
/**
|
|
|
- * @Method : countEartagOnlineTimes
|
|
|
+ * @Method : countEartagOnlineTimes
|
|
|
* @Description : 判断耳标离线状态
|
|
|
- * @Params : []
|
|
|
- * @Return : void
|
|
|
- *
|
|
|
- * @Author : ZhuoNing
|
|
|
- * @Date : 2022/8/20
|
|
|
- * @Time : 19:35
|
|
|
+ * @Params : []
|
|
|
+ * @Return : void
|
|
|
+ * @Author : ZhuoNing
|
|
|
+ * @Date : 2022/8/20
|
|
|
+ * @Time : 19:35
|
|
|
*/
|
|
|
// 10分钟
|
|
|
@Scheduled(cron = "0 0/10 * * * ? ")
|
|
|
private void countEartagOnlineTimes() throws IOException, ParseException {
|
|
|
Timestamp nowTimestamp = new Timestamp(new java.util.Date().getTime());
|
|
|
- System.out.println("时间戳="+nowTimestamp);
|
|
|
+// System.out.println("时间戳="+nowTimestamp);
|
|
|
|
|
|
// ExecutorService service = Executors.newFixedThreadPool(5);
|
|
|
// ExecutorService service = Executors.newSingleThreadExecutor();
|
|
@@ -81,40 +82,39 @@ public class EartagTask {
|
|
|
|
|
|
|
|
|
/**
|
|
|
- * @Method : updateDevice
|
|
|
+ * @Method : updateDevice
|
|
|
* @Description : 判断设备离线状态
|
|
|
- * @Params : []
|
|
|
- * @Return : void
|
|
|
- *
|
|
|
- * @Author : ZhuoNing
|
|
|
- * @Date : 2022/8/20
|
|
|
- * @Time : 19:36
|
|
|
+ * @Params : []
|
|
|
+ * @Return : void
|
|
|
+ * @Author : ZhuoNing
|
|
|
+ * @Date : 2022/8/20
|
|
|
+ * @Time : 19:36
|
|
|
*/
|
|
|
// 5分钟
|
|
|
@Scheduled(cron = "0 0/5 * * * ? ")
|
|
|
- private void updateDevice() {
|
|
|
+ private void updateDevice() {
|
|
|
SysBaseConfig baseConfig = baseConfigService.getById(60);
|
|
|
|
|
|
String configValueStr = baseConfig.getConfigValue();
|
|
|
- if (StringUtils.isNotBlank(configValueStr)){
|
|
|
+ if (StringUtils.isNotBlank(configValueStr)) {
|
|
|
int configValueInt = Integer.parseInt(configValueStr);
|
|
|
DateTime dateTime = DateUtil.offsetMinute(new Date(), -configValueInt);
|
|
|
|
|
|
UpdateWrapper<EartagDeviceRegister> wrapper = new UpdateWrapper<>();
|
|
|
- wrapper.ge("last_time",dateTime);
|
|
|
+ wrapper.ge("last_time", dateTime);
|
|
|
EartagDeviceRegister deviceRegister = new EartagDeviceRegister();
|
|
|
//未离线
|
|
|
deviceRegister.setActiveStatus(1);
|
|
|
deviceRegister.setDeviceStatus(1);
|
|
|
- deviceRegisterService.update(deviceRegister,wrapper);
|
|
|
+ deviceRegisterService.update(deviceRegister, wrapper);
|
|
|
|
|
|
//离线
|
|
|
deviceRegister.setActiveStatus(2);
|
|
|
deviceRegister.setDeviceStatus(0);
|
|
|
wrapper.clear();
|
|
|
- wrapper.le("last_time",dateTime);
|
|
|
- deviceRegisterService.update(deviceRegister,wrapper);
|
|
|
- }else {
|
|
|
+ wrapper.le("last_time", dateTime);
|
|
|
+ deviceRegisterService.update(deviceRegister, wrapper);
|
|
|
+ } else {
|
|
|
System.out.println("未设置定时时长");
|
|
|
}
|
|
|
|
|
@@ -122,48 +122,80 @@ public class EartagTask {
|
|
|
}
|
|
|
|
|
|
@Scheduled(cron = "0/5 * * * * ? ")
|
|
|
- private void countAssetInEveryMonth() {
|
|
|
- com.huimv.eartag2.common.utils.DateUtil dateUtil = new com.huimv.eartag2.common.utils.DateUtil();
|
|
|
- String month = dateUtil.getThisMonth();
|
|
|
-// eartagResetMapper.
|
|
|
-// eartagEartagRegister2Mapper.get
|
|
|
+ private void countAssetInEveryMonth() throws ParseException {
|
|
|
//--读取所有农户和采集器
|
|
|
List<BaseFarmer> baseFarmerList = baseFarmerMapper.getFarmer();
|
|
|
-
|
|
|
//--用采集器读取所有数据计算可售和不可售资源
|
|
|
- for(BaseFarmer baseFarmer:baseFarmerList){
|
|
|
- //--
|
|
|
+ for (BaseFarmer baseFarmer : baseFarmerList) {
|
|
|
+ //--计算每个农户的生物资产
|
|
|
_countAssetByFarmer(baseFarmer);
|
|
|
}
|
|
|
-
|
|
|
- System.out.println("month="+month);
|
|
|
}
|
|
|
|
|
|
//--
|
|
|
- private void _countAssetByFarmer(BaseFarmer baseFarmer) {
|
|
|
+ private void _countAssetByFarmer(BaseFarmer baseFarmer) throws ParseException {
|
|
|
//------------------------------------------------------------------------
|
|
|
- // 读取采集器
|
|
|
- // 根据采集器读取所有耳标
|
|
|
- // 对读取耳标进行计算可售和非可售,并归到当月
|
|
|
+ // 读取采集器.
|
|
|
+ // 根据采集器读取所有耳标.
|
|
|
+ // 对读取耳标进行计算可售和非可售,并归到当月.
|
|
|
//------------------------------------------------------------------------
|
|
|
|
|
|
+ com.huimv.eartag2.common.utils.DateUtil dateUtil = new com.huimv.eartag2.common.utils.DateUtil();
|
|
|
Integer farmerId = baseFarmer.getId();
|
|
|
- System.out.println("farmerId="+farmerId);
|
|
|
//--读取采集器
|
|
|
String deviceCode = eartagDeviceRegisterMapper.getDeviceIdByFarmerId(String.valueOf(farmerId));
|
|
|
- System.out.println("deviceCode="+deviceCode);
|
|
|
+ java.sql.Date todayDate = new java.sql.Date(new java.util.Date().getTime());
|
|
|
//--读取注册耳标
|
|
|
List<EartagEartagRegister2> eartagEartagRegister2List = eartagEartagRegister2Mapper.getEartagByDeviceCode(deviceCode);
|
|
|
- System.out.println("eartagEartagRegister2List.size=============="+eartagEartagRegister2List.size());
|
|
|
- for(EartagEartagRegister2 eartagEartagRegister2:eartagEartagRegister2List){
|
|
|
- System.out.println(""+eartagEartagRegister2.getCreateDate());
|
|
|
+ String year = dateUtil.getThisYear();
|
|
|
+ String month = dateUtil.getThisMonth();
|
|
|
+ if(eartagEartagRegister2List.size()>0){
|
|
|
+ //--
|
|
|
+ List<FarmerDayageWeight> farmerDayageWeightList = farmerDayageWeightMapper.getAllDayageWeight();
|
|
|
+ BigDecimal availTotalBd = new BigDecimal(0);
|
|
|
+ BigDecimal unavailTotalBd = new BigDecimal(0);
|
|
|
+ for (EartagEartagRegister2 eartagEartagRegister2 : eartagEartagRegister2List) {
|
|
|
+ long diff = todayDate.getTime() - eartagEartagRegister2.getCreateDate().getTime();
|
|
|
+ long days = diff / (1000 * 60 * 60 * 24);
|
|
|
+ if (days < 180) {
|
|
|
+ for (FarmerDayageWeight farmerDayageWeight : farmerDayageWeightList) {
|
|
|
+ if (farmerDayageWeight.getStartDayage() <= days && days <= farmerDayageWeight.getEndDayage()) {
|
|
|
+ availTotalBd = availTotalBd.add(farmerDayageWeight.getWeight().multiply(new BigDecimal(pigPrice)).setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if (180 <= days && days < 210) {
|
|
|
+ for (FarmerDayageWeight farmerDayageWeight : farmerDayageWeightList) {
|
|
|
+ if (farmerDayageWeight.getStartDayage() <= days && days <= farmerDayageWeight.getEndDayage()) {
|
|
|
+ unavailTotalBd = unavailTotalBd.add(farmerDayageWeight.getWeight().multiply(new BigDecimal(pigPrice)).setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //--保存生物资产
|
|
|
+ saveFarmerAsset(farmerId, year, month, availTotalBd, unavailTotalBd);
|
|
|
+ }else{
|
|
|
+ saveFarmerAsset(farmerId, year, month, new BigDecimal(0), new BigDecimal(0));
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
-
|
|
|
-// System.out.println("deviceCodeList.size="+deviceCodeList.size());
|
|
|
-// for(int a=0;a<deviceCodeList.size();a++)
|
|
|
-// {
|
|
|
-// System.out.println(""+deviceCodeList.get(a)+"");
|
|
|
-// }
|
|
|
+ //--保存生物资产
|
|
|
+ private void saveFarmerAsset(Integer farmerId, String year, String month, BigDecimal availTotalBd, BigDecimal unavailTotalBd) {
|
|
|
+ //--
|
|
|
+ FarmerAsset farmerAsset = farmerAssetMapper.getAssetByFarmerIdAndYearAndMonth(farmerId, year, month);
|
|
|
+ if (farmerAsset == null) {
|
|
|
+ FarmerAsset farmerAssetEntity = new FarmerAsset();
|
|
|
+ farmerAssetEntity.setFarmCode(String.valueOf(farmerId));
|
|
|
+ farmerAssetEntity.setYear(Integer.parseInt(year));
|
|
|
+ farmerAssetEntity.setMonth(Integer.parseInt(month));
|
|
|
+ farmerAssetEntity.setAvailAsset(availTotalBd);
|
|
|
+ farmerAssetEntity.setUnavailAsset(unavailTotalBd);
|
|
|
+ farmerAssetMapper.insert(farmerAssetEntity);
|
|
|
+ } else {
|
|
|
+ farmerAsset.setAvailAsset(availTotalBd);
|
|
|
+ farmerAsset.setUnavailAsset(unavailTotalBd);
|
|
|
+ farmerAssetMapper.updateById(farmerAsset);
|
|
|
+ }
|
|
|
}
|
|
|
}
|