package com.huimv.cattle.service.impl;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.huimv.cattle.pojo.IndustryOutput;
import com.huimv.cattle.pojo.SubsidyCount;
import com.huimv.cattle.mapper.SubsidyCountMapper;
import com.huimv.cattle.service.SubsidyCountService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.huimv.cattle.token.TokenSign;
import com.huimv.cattle.utils.DateUtil;
import com.huimv.common.utils.Result;
import com.huimv.common.utils.ResultCode;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.util.*;
/**
*
* 服务实现类
*
*
* @author zn
* @since 2022-12-15
*/
@Service
public class SubsidyCountServiceImpl extends ServiceImpl implements SubsidyCountService {
@Autowired
private SubsidyCountMapper subsidyCountMapper;
@Autowired
private DateUtil dateUtil;
@Override
public Result getSubsidyCount(HttpServletRequest request, Map paramsMap) {
String farmCode = paramsMap.get("farmCode");
if (StringUtils.isBlank(farmCode)) {
farmCode = TokenSign.getFarmCode(request);
}
String yearNum = paramsMap.get("yearNum");
// if (StringUtils.isBlank(yearNum)){
// yearNum = "0";
// }
QueryWrapper queryWrapper = new QueryWrapper();
if(StringUtils.isNotBlank(yearNum)) {
queryWrapper.between("year", Integer.valueOf(dateUtil.getThisYear()) - Integer.valueOf(yearNum), Integer.valueOf(dateUtil.getThisYear()));
// queryWrapper.last("LIMIT "+yearNum);
}
queryWrapper.eq("farm_code", farmCode);
queryWrapper.orderByDesc("year");
List subsidyCounts = subsidyCountMapper.selectList(queryWrapper);
if (ObjectUtil.isEmpty(subsidyCounts)) {
SubsidyCount subsidyCount1 = new SubsidyCount();
subsidyCount1.setYear(Integer.valueOf(dateUtil.getThisYear()));
subsidyCount1.setSubsidyCount(BigDecimal.ZERO);
subsidyCount1.setFarmCode(farmCode);
subsidyCounts.add(subsidyCount1);
subsidyCountMapper.insert(subsidyCount1);
}
return new Result(ResultCode.SUCCESS, subsidyCounts);
}
@Override
public Result saveSubsidyCount(HttpServletRequest request, Map paramsMap) {
String farmCode = paramsMap.get("farmCode");
if (StringUtils.isBlank(farmCode)) {
farmCode = TokenSign.getFarmCode(request);
}
String list = paramsMap.get("list");
JSONArray listJa = JSONArray.parseArray(list);
List SubsidyCountList = listJa.toJavaList(SubsidyCount.class);
if (checkRepeat(SubsidyCountList)) {
return new Result(10001, "有重复年份", false);
} else {
subsidyCountMapper.deleteAll(farmCode);
}
for (int a = listJa.size() - 1; a >= 0; a--) {
JSONObject jsonObject = listJa.getJSONObject(a);
Integer year = jsonObject.getInteger("year");
SubsidyCount subsidyCount = new SubsidyCount();
subsidyCount.setYear(year);
subsidyCount.setSubsidyCount(jsonObject.getBigDecimal("subsidyCount"));
subsidyCount.setFarmCode(farmCode);
subsidyCountMapper.insert(subsidyCount);
}
return new Result(ResultCode.SUCCESS);
}
private Boolean checkRepeat(List list) {
List collectionOptionList = new ArrayList<>();
for (SubsidyCount a : list) {
collectionOptionList.add(a.getYear());
}
Set set = new HashSet<>(collectionOptionList);
return collectionOptionList.size() != set.size();
}
}