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.mapper.SysRegionCounTownVillMapper;
import com.huimv.cattle.pojo.Stock;
import com.huimv.cattle.mapper.StockMapper;
import com.huimv.cattle.service.OverviewService;
import com.huimv.cattle.service.StockService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.huimv.cattle.token.TokenSign;
import com.huimv.common.utils.Result;
import com.huimv.common.utils.ResultCode;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
*
* 服务实现类
*
*
* @author zn
* @since 2022-12-14
*/
@Service
public class StockServiceImpl extends ServiceImpl implements StockService {
@Autowired
private StockMapper stockMapper;
@Autowired
private SysRegionCounTownVillMapper sysRegionCounTownVillMapper;
@Override
public Result getStock(HttpServletRequest httpServletRequest, Map paramsMap) {
// Stock stock = stockMapper.getList();
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq("farm_Code",0);
List stocks = stockMapper.selectList(queryWrapper);
JSONObject jsonObject = new JSONObject();
int count = 0;
int fatCount = 0;
int cowStock = 0;
int bullStock = 0;
if (stocks.size() == 0) {
jsonObject.put("fatStock", 0);
jsonObject.put("cowStock", 0);
jsonObject.put("bullStock", 0);
jsonObject.put("count", 0);
jsonObject.put("fat", 0);
jsonObject.put("cow", 0);
jsonObject.put("bull", 0);
jsonObject.put("farmCode", 0);
} else {
for (int i = 0; i < stocks.size(); i++) {
count = count + stocks.get(i).getFatStock() + stocks.get(i).getCowStock() + stocks.get(i).getBullStock();
fatCount = fatCount + stocks.get(i).getFatStock();
cowStock = cowStock + stocks.get(i).getCowStock();
bullStock = bullStock + stocks.get(i).getBullStock();
}
//创建一个数值格式化对象
NumberFormat numberFormat = NumberFormat.getInstance();
//设置精确到小数点后2位
numberFormat.setMaximumFractionDigits(2);
String fat = numberFormat.format((float) fatCount / (float) count * 100) + "%";
String cow = numberFormat.format((float) cowStock / (float) count * 100) + "%";
String bull = numberFormat.format((float) bullStock / (float) count * 100) + "%";
jsonObject.put("fatStock", fatCount);
jsonObject.put("cowStock", cowStock);
jsonObject.put("bullStock", bullStock);
jsonObject.put("count", count);
jsonObject.put("fat", fat);
jsonObject.put("cow", cow);
jsonObject.put("bull", bull);
}
return new Result(ResultCode.SUCCESS, jsonObject);
}
@Override
public Result add(HttpServletRequest httpServletRequest, Map paramsMap) {
String farmCode = paramsMap.get("farmCode");
if (farmCode == null) {
farmCode = TokenSign.getFarmCode(httpServletRequest);
}
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq("farm_code", farmCode);
Stock stock1 = stockMapper.selectOne(queryWrapper);
Integer fatStock = Integer.parseInt(paramsMap.get("fatStock"));
Integer cowStock = Integer.parseInt(paramsMap.get("cowStock"));
Integer bullStock = Integer.parseInt(paramsMap.get("bullStock"));
// Stock list = stockMapper.getList();
if (ObjectUtil.isEmpty(stock1)) {
Stock stock = new Stock();
stock.setFatStock(fatStock);
stock.setCowStock(cowStock);
stock.setBullStock(bullStock);
stock.setFarmCode(farmCode);
stockMapper.insert(stock);
return new Result(ResultCode.SUCCESS);
} else {
stock1.setFatStock(fatStock);
stock1.setCowStock(cowStock);
stock1.setBullStock(bullStock);
stock1.setFarmCode(farmCode);
stockMapper.updateById(stock1);
return new Result(ResultCode.SUCCESS);
}
}
@Override
public Result getListStock(HttpServletRequest httpServletRequest, Map paramsMap) {
String farmCode = paramsMap.get("farmCode");
if (farmCode == null) {
farmCode = TokenSign.getFarmCode(httpServletRequest);
}
JSONObject jsonObject = new JSONObject();
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq("farm_code", farmCode);
Stock stock = stockMapper.selectOne(queryWrapper);
if (ObjectUtil.isEmpty(stock)) {
jsonObject.put("fatStock", 0);
jsonObject.put("cowStock", 0);
jsonObject.put("bullStock", 0);
jsonObject.put("count", 0);
jsonObject.put("fat", 0);
jsonObject.put("cow", 0);
jsonObject.put("bull", 0);
jsonObject.put("farmCode", 0);
} else {
Integer count = stock.getFatStock() + stock.getBullStock() + stock.getCowStock();
//创建一个数值格式化对象
NumberFormat numberFormat = NumberFormat.getInstance();
//设置精确到小数点后2位
numberFormat.setMaximumFractionDigits(2);
String fat = numberFormat.format((float) stock.getFatStock() / (float) count * 100) + "%";
String cow = numberFormat.format((float) stock.getCowStock() / (float) count * 100) + "%";
String bull = numberFormat.format((float) stock.getBullStock() / (float) count * 100) + "%";
jsonObject.put("fatStock", stock.getFatStock());
jsonObject.put("cowStock", stock.getCowStock());
jsonObject.put("bullStock", stock.getBullStock());
jsonObject.put("count", count);
jsonObject.put("fat", fat);
jsonObject.put("cow", cow);
jsonObject.put("bull", bull);
}
return new Result(ResultCode.SUCCESS, jsonObject);
}
@Override
public Result getListStockScreen(HttpServletRequest httpServletRequest, Map paramsMap) {
String farmCode = paramsMap.get("farmCode");
if (farmCode == null) {
farmCode = TokenSign.getFarmCode(httpServletRequest);
}
JSONObject jsonObject = new JSONObject();
Stock stock = new Stock();
String cityCode ="";
if (farmCode == null || farmCode.equals("0")){
cityCode= sysRegionCounTownVillMapper.listSub(farmCode);
System.out.println(cityCode);
String[] city = cityCode.split(",");
stock = stockMapper.getListStock(city);
}else {
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq("farm_code", farmCode);
stock = stockMapper.selectOne(queryWrapper);
}
if (ObjectUtil.isEmpty(stock)) {
jsonObject.put("fatStock", 0);
jsonObject.put("cowStock", 0);
jsonObject.put("bullStock", 0);
jsonObject.put("count", 0);
jsonObject.put("fat", 0);
jsonObject.put("cow", 0);
jsonObject.put("bull", 0);
jsonObject.put("farmCode", 0);
} else {
Integer count = stock.getFatStock() + stock.getBullStock() + stock.getCowStock();
//创建一个数值格式化对象
NumberFormat numberFormat = NumberFormat.getInstance();
//设置精确到小数点后2位
numberFormat.setMaximumFractionDigits(2);
String fat = numberFormat.format((float) stock.getFatStock() / (float) count * 100) + "%";
String cow = numberFormat.format((float) stock.getCowStock() / (float) count * 100) + "%";
String bull = numberFormat.format((float) stock.getBullStock() / (float) count * 100) + "%";
jsonObject.put("fatStock", stock.getFatStock());
jsonObject.put("cowStock", stock.getCowStock());
jsonObject.put("bullStock", stock.getBullStock());
jsonObject.put("count", count);
jsonObject.put("fat", fat);
jsonObject.put("cow", cow);
jsonObject.put("bull", bull);
}
return new Result(ResultCode.SUCCESS, jsonObject);
}
@Override
public Result getListVillageStockScreen(HttpServletRequest httpServletRequest, Map paramsMap) {
String farmCode = paramsMap.get("farmCode");
if (farmCode == null) {
farmCode = TokenSign.getFarmCode(httpServletRequest);
}
JSONObject jsonObject = new JSONObject();
Stock stock = new Stock();
String cityCode ="";
String subCityCode="";
List subCityList = new ArrayList<>();
if (farmCode == null || farmCode.equals("0")){
cityCode= sysRegionCounTownVillMapper.listSub(farmCode);
String[] city = cityCode.split(",");
for (String s : city) {
subCityCode = sysRegionCounTownVillMapper.listSub(s);
String[] strings = subCityCode.split(",");
for (String string : strings) {
subCityList.add(string);
}
}
String[] subCity = subCityList.toArray(new String[subCityList.size()]);
stock = stockMapper.getListStock(subCity);
}else {
cityCode= sysRegionCounTownVillMapper.listSub(farmCode);
System.out.println(cityCode);
String[] city = cityCode.split(",");
stock = stockMapper.getListStock(city);
}
if (ObjectUtil.isEmpty(stock)) {
jsonObject.put("fatStock", 0);
jsonObject.put("cowStock", 0);
jsonObject.put("bullStock", 0);
jsonObject.put("count", 0);
jsonObject.put("fat", 0);
jsonObject.put("cow", 0);
jsonObject.put("bull", 0);
jsonObject.put("farmCode", 0);
} else {
Integer count = stock.getFatStock() + stock.getBullStock() + stock.getCowStock();
//创建一个数值格式化对象
NumberFormat numberFormat = NumberFormat.getInstance();
//设置精确到小数点后2位
numberFormat.setMaximumFractionDigits(2);
String fat = numberFormat.format((float) stock.getFatStock() / (float) count * 100) + "%";
String cow = numberFormat.format((float) stock.getCowStock() / (float) count * 100) + "%";
String bull = numberFormat.format((float) stock.getBullStock() / (float) count * 100) + "%";
jsonObject.put("fatStock", stock.getFatStock());
jsonObject.put("cowStock", stock.getCowStock());
jsonObject.put("bullStock", stock.getBullStock());
jsonObject.put("count", count);
jsonObject.put("fat", fat);
jsonObject.put("cow", cow);
jsonObject.put("bull", bull);
}
return new Result(ResultCode.SUCCESS, jsonObject);
}
@Resource
private OverviewService overviewService;
@Override
public Result getAllTownStock(HttpServletRequest request, JSONArray allTownsJa) {
for (int a = 0; a < allTownsJa.size(); a++) {
JSONObject townJo = allTownsJa.getJSONObject(a);
System.out.println("townJo=" + townJo);
//根据乡镇读取填报存栏数据
JSONObject stockJo = getStockByTown(townJo);
townJo.put("fatStock", stockJo.getString("fatStock"));
townJo.put("sowStock", stockJo.getString("cowStock"));
townJo.put("boarStock", stockJo.getString("bullStock"));
townJo.put("totalStock", stockJo.getString("totalStock"));
//根据乡镇读取填报出栏数据
Integer outStock = overviewService.getOutStock(townJo);
townJo.put("outStock", String.valueOf(outStock));
}
return new Result(ResultCode.SUCCESS, allTownsJa);
}
//获取一个城镇的存栏和出栏
private JSONObject getStockByTown(JSONObject townJo) {
System.out.println("farmCode==" + townJo.getString("farmCode"));
JSONObject jsonObject = new JSONObject();
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq("farm_code", townJo.getString("farmCode"));
Stock stock = stockMapper.selectOne(queryWrapper);
if (ObjectUtil.isEmpty(stock)) {
jsonObject.put("fatStock", 0);
jsonObject.put("cowStock", 0);
jsonObject.put("bullStock", 0);
jsonObject.put("totalStock", 0);
jsonObject.put("outStock", 0);
jsonObject.put("farmCode", 0);
} else {
Integer count = stock.getFatStock() + stock.getBullStock() + stock.getCowStock();
jsonObject.put("fatStock", stock.getFatStock());
jsonObject.put("cowStock", stock.getCowStock());
jsonObject.put("bullStock", stock.getBullStock());
jsonObject.put("totalStock", String.valueOf(count));
jsonObject.put("outStock", String.valueOf(0));
}
return jsonObject;
}
}