|
@@ -13,13 +13,17 @@ import com.huimv.guowei.admin.common.utils.Result;
|
|
|
import com.huimv.guowei.admin.common.utils.ResultCode;
|
|
|
import com.huimv.guowei.admin.common.utils.UploadImage;
|
|
|
import com.huimv.guowei.admin.entity.*;
|
|
|
+import com.huimv.guowei.admin.entity.vo.BaseDuckInfoImportData;
|
|
|
import com.huimv.guowei.admin.entity.vo.BaseDuckInfoVo;
|
|
|
import com.huimv.guowei.admin.entity.vo.EnvMoveCallVo;
|
|
|
import com.huimv.guowei.admin.entity.vo.EnvRegularCallFeedingVo;
|
|
|
import com.huimv.guowei.admin.mapper.*;
|
|
|
import com.huimv.guowei.admin.service.IBaseDuckInfoService;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.huimv.guowei.admin.utils.ExcelImportSheet;
|
|
|
import com.huimv.guowei.admin.utils.Print;
|
|
|
+import org.apache.poi.ss.usermodel.Sheet;
|
|
|
+import org.apache.poi.ss.usermodel.Workbook;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
@@ -27,6 +31,7 @@ import org.springframework.web.multipart.MultipartFile;
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
import java.io.IOException;
|
|
|
+import java.io.InputStream;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.text.DecimalFormat;
|
|
|
import java.text.ParseException;
|
|
@@ -63,11 +68,15 @@ public class BaseDuckInfoServiceImpl extends ServiceImpl<BaseDuckInfoMapper, Bas
|
|
|
private BaseDuckBreedImgMapper imgMapper;
|
|
|
@Autowired
|
|
|
private DepartureMapper departureMapper;
|
|
|
+ @Autowired
|
|
|
+ private BaseBuildingMapper buildingMapper;
|
|
|
+
|
|
|
|
|
|
@Override
|
|
|
public Result listDuck(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
|
|
|
- String location = paramsMap.get("duckCode");//前端传来的是编号
|
|
|
-// String location = paramsMap.get("location");//前端传来的是位置名字
|
|
|
+ String chiNum = paramsMap.get("chiNum");//前端传来的是编号
|
|
|
+ String jiaoNum = paramsMap.get("jiaoNum");
|
|
|
+ String location = paramsMap.get("location");//前端传来的是位置名字
|
|
|
String farmId = paramsMap.get("farmId");//场的编码
|
|
|
String pageNum = paramsMap.get("pageNum");
|
|
|
String pageSize = paramsMap.get("pageSize");
|
|
@@ -78,7 +87,7 @@ public class BaseDuckInfoServiceImpl extends ServiceImpl<BaseDuckInfoMapper, Bas
|
|
|
pageSize = "10";
|
|
|
}
|
|
|
QueryWrapper<BaseDuckInfo> queryWrapper = new QueryWrapper<>();
|
|
|
- queryWrapper/*.like(StringUtils.isNotBlank(code), "duck_num", code)*/
|
|
|
+ queryWrapper.like(StringUtils.isNotBlank(chiNum), "chi_num", chiNum).like(StringUtils.isNotBlank(jiaoNum), "jiao_num", jiaoNum)
|
|
|
.like(StringUtils.isNotBlank(location), "unit_name", location).eq("farm_id", farmId).orderByDesc("id");
|
|
|
Page<BaseDuckInfo> page = new Page<>(Integer.parseInt(pageNum), Integer.parseInt(pageSize));
|
|
|
return new Result(ResultCode.SUCCESS, duckInfoMapper.selectPage(page, queryWrapper));
|
|
@@ -87,7 +96,17 @@ public class BaseDuckInfoServiceImpl extends ServiceImpl<BaseDuckInfoMapper, Bas
|
|
|
@Override
|
|
|
public Result addDuck(HttpServletRequest httpServletRequest, Map<String, String> paramsMap, MultipartFile imgUrl) throws ParseException, IOException {
|
|
|
BaseDuckInfo baseDuckInfo = new BaseDuckInfo();
|
|
|
- baseDuckInfo.setDuckNum(paramsMap.get("duckCode"));
|
|
|
+ QueryWrapper<BaseDuckInfo> queryWrapper3 = new QueryWrapper<>();
|
|
|
+ queryWrapper3.eq("farm_id", paramsMap.get("farmId")).orderByDesc("id").last(" limit 1");
|
|
|
+ BaseDuckInfo info = duckInfoMapper.selectOne(queryWrapper3);
|
|
|
+ if (ObjectUtil.isNotEmpty(info)) {
|
|
|
+ baseDuckInfo.setDuckNum(String.valueOf(Integer.parseInt(info.getDuckNum()) + 1));
|
|
|
+ } else {
|
|
|
+ baseDuckInfo.setDuckNum("20231124");
|
|
|
+ }
|
|
|
+ baseDuckInfo.setBatchNum(paramsMap.get("batchNum"));
|
|
|
+ baseDuckInfo.setChiNum(paramsMap.get("chiNum"));
|
|
|
+ baseDuckInfo.setJiaoNum(paramsMap.get("jiaoNum"));
|
|
|
baseDuckInfo.setUnitList(paramsMap.get("unitList"));
|
|
|
baseDuckInfo.setUnitName(paramsMap.get("unitName"));
|
|
|
baseDuckInfo.setFarmId(Integer.parseInt(paramsMap.get("farmId")));
|
|
@@ -116,6 +135,10 @@ public class BaseDuckInfoServiceImpl extends ServiceImpl<BaseDuckInfoMapper, Bas
|
|
|
String fatherNum = paramsMap.get("fatherNum");
|
|
|
String motherNum = paramsMap.get("motherNum");
|
|
|
String duckCode = paramsMap.get("duckCode");
|
|
|
+ baseDuckInfo.setFatherChiNum(paramsMap.get("fatherChiNum"));
|
|
|
+ baseDuckInfo.setFatherJiaoNum(paramsMap.get("fatherJiaoNum"));
|
|
|
+ baseDuckInfo.setMotherChiNum(paramsMap.get("motherChiNum"));
|
|
|
+ baseDuckInfo.setMotherJiaoNum(paramsMap.get("motherJiaoNum"));
|
|
|
if (StringUtils.isNotBlank(fatherNum) && StringUtils.isNotBlank(motherNum)) {
|
|
|
if (fatherNum.equals(motherNum) ||
|
|
|
motherNum.equals(duckCode) ||
|
|
@@ -129,7 +152,7 @@ public class BaseDuckInfoServiceImpl extends ServiceImpl<BaseDuckInfoMapper, Bas
|
|
|
if (ObjectUtil.isEmpty(father)) {
|
|
|
return new Result(10001, "父亲编号不存在,请重新输入!", false);
|
|
|
} else {
|
|
|
- if (father.getDuckSex() == 1) {
|
|
|
+ if (father.getDuckSex()==1) {
|
|
|
return new Result(10001, "该编号为母亲编号,请重新填写!", false);
|
|
|
}
|
|
|
if (father.getDayAge() < 100) {
|
|
@@ -141,7 +164,7 @@ public class BaseDuckInfoServiceImpl extends ServiceImpl<BaseDuckInfoMapper, Bas
|
|
|
if (ObjectUtil.isEmpty(mother)) {
|
|
|
return new Result(10001, "母亲编号不存在,请重新输入!", false);
|
|
|
} else {
|
|
|
- if (mother.getDuckSex() == 0) {
|
|
|
+ if (mother.getDuckSex() ==0) {
|
|
|
return new Result(10001, "该编号为父亲编号,请重新填写!", false);
|
|
|
}
|
|
|
|
|
@@ -245,7 +268,7 @@ public class BaseDuckInfoServiceImpl extends ServiceImpl<BaseDuckInfoMapper, Bas
|
|
|
if (ObjectUtil.isEmpty(father)) {
|
|
|
return new Result(10001, "父亲编号不存在,请重新输入!", false);
|
|
|
} else {
|
|
|
- if (father.getDuckSex() == 1) {
|
|
|
+ if (father.getDuckSex() ==1) {
|
|
|
return new Result(10001, "该编号为母亲编号,请重新填写!", false);
|
|
|
}
|
|
|
|
|
@@ -258,7 +281,7 @@ public class BaseDuckInfoServiceImpl extends ServiceImpl<BaseDuckInfoMapper, Bas
|
|
|
if (ObjectUtil.isEmpty(mother)) {
|
|
|
return new Result(10001, "母亲编号不存在,请重新输入!", false);
|
|
|
} else {
|
|
|
- if (mother.getDuckSex() == 0) {
|
|
|
+ if (mother.getDuckSex() ==0) {
|
|
|
return new Result(10001, "该编号为父亲编号,请重新填写!", false);
|
|
|
}
|
|
|
|
|
@@ -329,11 +352,143 @@ public class BaseDuckInfoServiceImpl extends ServiceImpl<BaseDuckInfoMapper, Bas
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
+ public void printChi(HttpServletResponse response, Map<String, String> paramsMap) throws Exception {
|
|
|
+ String farmId = paramsMap.get("farmId");
|
|
|
+ QueryWrapper<BaseDuckInfo> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.eq("farm_id", farmId).eq("is_cage", 0);
|
|
|
+ List<BaseDuckInfo> baseDuckInfos = duckInfoMapper.selectList(queryWrapper);
|
|
|
+ Print.printChi(baseDuckInfos);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
public void updateDayAge() {
|
|
|
duckInfoMapper.updateDayAge();
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
+ public Result importData(HttpServletRequest httpServletRequest, Map<String,String> paramsMap,MultipartFile files) {
|
|
|
+ String farmId = paramsMap.get("farmId");
|
|
|
+ Map<String , String> map = new HashMap<>();
|
|
|
+ //表头与键值对的映射关系
|
|
|
+ map.put("翅号" , "chiNum");
|
|
|
+ map.put("脚号" , "jiaoNum");
|
|
|
+ map.put("代次号" , "batchNum");
|
|
|
+ map.put("性别" , "duckSex");
|
|
|
+ map.put("品种" , "duckBreed");
|
|
|
+ map.put("来源" , "duckBirthplace");
|
|
|
+ map.put("基因型" , "genotype");
|
|
|
+ map.put("出生日期" , "duckBirthday");
|
|
|
+ map.put("位置" , "unitName");
|
|
|
+ map.put("当前体重" , "nowWeight");
|
|
|
+ map.put("饲养环境" , "breedingEnv");
|
|
|
+ map.put("特殊需求" , "specialNeeds");
|
|
|
+ map.put("父亲翅号" , "fatherChiNum");
|
|
|
+ map.put("父亲脚号" , "fatherJiaoNum");
|
|
|
+ map.put("母亲翅号" , "motherChiNum");
|
|
|
+ map.put("母亲脚号" , "motherJiaoNum");
|
|
|
+ try(
|
|
|
+ //这里面的对象会自动关闭
|
|
|
+ InputStream in = files.getInputStream();
|
|
|
+ Workbook workbook = ExcelImportSheet.getTypeFromExtends(in , files.getOriginalFilename())
|
|
|
+ ) {
|
|
|
+
|
|
|
+ //根据名称获取单张表对象 也可以使用getSheetAt(int index)获取单张表的对象 获取第一张表
|
|
|
+ Sheet sheet = workbook.getSheetAt(0);
|
|
|
+ List<BaseDuckInfoImportData> list = ExcelImportSheet.getListFromExcel(sheet , BaseDuckInfoImportData.class , map);
|
|
|
+
|
|
|
+ for (BaseDuckInfoImportData breed : list) {
|
|
|
+ //底层数据库操作 insert什么的
|
|
|
+ QueryWrapper<BaseBuilding> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.eq("farm_id", farmId).eq("build_name", breed.getUnitName());
|
|
|
+ BaseBuilding baseBuilding = buildingMapper.selectOne(queryWrapper);
|
|
|
+ breed.setUnitId(baseBuilding.getId());
|
|
|
+ breed.setUnitList(baseBuilding.getParentId() + "," + baseBuilding.getId());
|
|
|
+ breed.setFarmId(Integer.parseInt(farmId));
|
|
|
+ if ("雄性".equals(breed.getDuckSex())) {
|
|
|
+ breed.setDuckSex("0");
|
|
|
+ }
|
|
|
+ if ("雌性".equals(breed.getDuckSex())) {
|
|
|
+ breed.setDuckSex("1");
|
|
|
+ }
|
|
|
+ QueryWrapper<BaseDuckBreedImg> queryWrapper1 = new QueryWrapper<>();
|
|
|
+ if ("北京鸭".equals(breed.getDuckBreed())) {
|
|
|
+ queryWrapper1.eq("duck_breed", 1);
|
|
|
+ BaseDuckBreedImg img = imgMapper.selectOne(queryWrapper1);
|
|
|
+ breed.setDuckBreed("1");
|
|
|
+ breed.setDuckImgUrl(img.getImgUrl());
|
|
|
+ }else if ("连城白鸭".equals(breed.getDuckBreed())) {
|
|
|
+ queryWrapper1.eq("duck_breed", 2);
|
|
|
+ BaseDuckBreedImg img = imgMapper.selectOne(queryWrapper1);
|
|
|
+ breed.setDuckBreed("2");
|
|
|
+ breed.setDuckImgUrl(img.getImgUrl());
|
|
|
+ }else if ("山麻鸭".equals(breed.getDuckBreed())) {
|
|
|
+ queryWrapper1.eq("duck_breed", 3);
|
|
|
+ BaseDuckBreedImg img = imgMapper.selectOne(queryWrapper1);
|
|
|
+ breed.setDuckBreed("3");
|
|
|
+ breed.setDuckImgUrl(img.getImgUrl());
|
|
|
+ } else if ("攸县麻鸭".equals(breed.getDuckBreed())) {
|
|
|
+ queryWrapper1.eq("duck_breed", 4);
|
|
|
+ BaseDuckBreedImg img = imgMapper.selectOne(queryWrapper1);
|
|
|
+ breed.setDuckBreed("4");
|
|
|
+ breed.setDuckImgUrl(img.getImgUrl());
|
|
|
+ }else if ("白改鸭".equals(breed.getDuckBreed())) {
|
|
|
+ queryWrapper1.eq("duck_breed", 5);
|
|
|
+ BaseDuckBreedImg img = imgMapper.selectOne(queryWrapper1);
|
|
|
+ breed.setDuckBreed("5");
|
|
|
+ breed.setDuckImgUrl(img.getImgUrl());
|
|
|
+ }else if ("缙云麻鸭".equals(breed.getDuckBreed())) {
|
|
|
+ queryWrapper1.eq("duck_breed", 6);
|
|
|
+ BaseDuckBreedImg img = imgMapper.selectOne(queryWrapper1);
|
|
|
+ breed.setDuckBreed("6");
|
|
|
+ breed.setDuckImgUrl(img.getImgUrl());
|
|
|
+ }else if ("绍兴鸭(带圈白翼梢)".equals(breed.getDuckBreed())) {
|
|
|
+ queryWrapper1.eq("duck_breed", 7);
|
|
|
+ BaseDuckBreedImg img = imgMapper.selectOne(queryWrapper1);
|
|
|
+ breed.setDuckBreed("7");
|
|
|
+ breed.setDuckImgUrl(img.getImgUrl());
|
|
|
+ }else if ("绍兴鸭(红毛绿翼梢)".equals(breed.getDuckBreed())) {
|
|
|
+ queryWrapper1.eq("duck_breed", 8);
|
|
|
+ BaseDuckBreedImg img = imgMapper.selectOne(queryWrapper1);
|
|
|
+ breed.setDuckBreed("8");
|
|
|
+ breed.setDuckImgUrl(img.getImgUrl());
|
|
|
+ } else if ("绍兴鸭(白羽绍鸭)".equals(breed.getDuckBreed())) {
|
|
|
+ queryWrapper1.eq("duck_breed", 9);
|
|
|
+ BaseDuckBreedImg img = imgMapper.selectOne(queryWrapper1);
|
|
|
+ breed.setDuckBreed("9");
|
|
|
+ breed.setDuckImgUrl(img.getImgUrl());
|
|
|
+ }
|
|
|
+ QueryWrapper<BaseDuckInfo> queryWrapper3 = new QueryWrapper<>();
|
|
|
+ queryWrapper3.eq("farm_id", farmId).orderByDesc("id").last(" limit 1");
|
|
|
+ BaseDuckInfo info = duckInfoMapper.selectOne(queryWrapper3);
|
|
|
+ if (ObjectUtil.isNotEmpty(info)) {
|
|
|
+ breed.setDuckNum(String.valueOf(Integer.parseInt(info.getDuckNum()) + 1));
|
|
|
+ } else {
|
|
|
+ breed.setDuckNum("20231124");
|
|
|
+ }
|
|
|
+ BaseDuckInfo baseDuckInfo = new BaseDuckInfo();
|
|
|
+ BeanUtil.copyProperties(breed, baseDuckInfo);
|
|
|
+
|
|
|
+ Date birthday = breed.getDuckBirthday();
|
|
|
+ Date date2 = new Date();
|
|
|
+ // 计算两个日期之间的天数
|
|
|
+ int between = daysBetween(birthday, date2);
|
|
|
+ baseDuckInfo.setDayAge(between);
|
|
|
+ baseDuckInfo.setDuckSex(Integer.parseInt(breed.getDuckSex()));
|
|
|
+ baseDuckInfo.setDuckBreed(Integer.parseInt(breed.getDuckBreed()));
|
|
|
+ baseDuckInfo.setIsCage(0);
|
|
|
+ baseMapper.insert(baseDuckInfo);
|
|
|
+ System.out.println(breed.toString());
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ return new Result(10001, "数据格式异常!", false);
|
|
|
+ }finally {
|
|
|
+ //写着好看的
|
|
|
+ }
|
|
|
+ return new Result(10000, "保存成功!", true);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
public Result listDuckByScreen(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
|
|
|
String farmId = paramsMap.get("farmId");
|
|
|
String duckNum = paramsMap.get("duckNum");//鸭只编号
|
|
@@ -579,5 +734,25 @@ public class BaseDuckInfoServiceImpl extends ServiceImpl<BaseDuckInfoMapper, Bas
|
|
|
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public Result listAppDuck(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
|
|
|
+ String chiNum = paramsMap.get("chiNum");
|
|
|
+ String jiaoNum = paramsMap.get("jiaoNum");
|
|
|
+ String farmId = paramsMap.get("farmId");//场的编码
|
|
|
+ String pageNum = paramsMap.get("pageNum");
|
|
|
+ String pageSize = paramsMap.get("pageSize");
|
|
|
+ if (pageNum == null || "".equals(pageNum)) {
|
|
|
+ pageNum = "1";
|
|
|
+ }
|
|
|
+ if (pageSize == null || "".equals(pageSize)) {
|
|
|
+ pageSize = "10";
|
|
|
+ }
|
|
|
+ QueryWrapper<BaseDuckInfo> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.like(StringUtils.isNotBlank(chiNum), "chi_num", chiNum)
|
|
|
+ .like(StringUtils.isNotBlank(jiaoNum), "jiao_num", jiaoNum).eq("farm_id", farmId).orderByDesc("id");
|
|
|
+ Page<BaseDuckInfo> page = new Page<>(Integer.parseInt(pageNum), Integer.parseInt(pageSize));
|
|
|
+ return new Result(ResultCode.SUCCESS, duckInfoMapper.selectPage(page, queryWrapper));
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
}
|