| | |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; |
| | | import io.swagger.annotations.ApiImplicitParam; |
| | | import io.swagger.annotations.ApiImplicitParams; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import io.swagger.annotations.ApiParam; |
| | | import lombok.AllArgsConstructor; |
| | | import org.springblade.core.boot.ctrl.BladeController; |
| | | import org.springblade.core.mp.support.Condition; |
| | | import org.springblade.core.mp.support.Query; |
| | | import org.springblade.core.secure.BladeUser; |
| | | import org.springblade.core.secure.annotation.PreAuth; |
| | | import org.springblade.core.tool.api.R; |
| | | import org.springblade.core.tool.constant.BladeConstant; |
| | | import org.springblade.core.tool.constant.RoleConstant; |
| | | import org.springblade.core.tool.utils.Func; |
| | | import org.springblade.modules.farm.entity.FarmingRecord; |
| | | import org.springblade.modules.farm.service.FarmingRecordService; |
| | | import org.springblade.modules.farmplant.entity.FarmPlant; |
| | | import org.springblade.modules.farmplant.service.FarmPlantService; |
| | | import org.springblade.modules.farmplant.vo.FarmPlantVO; |
| | | import org.springblade.modules.farmplant.vo.StrainVO; |
| | | import org.springblade.modules.lang.entity.Land; |
| | | import org.springblade.modules.lang.service.ILandService; |
| | | import org.springblade.modules.system.entity.User; |
| | | import org.springblade.modules.system.vo.UserVO; |
| | | import org.springblade.modules.system.wrapper.UserWrapper; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.web.bind.annotation.*; |
| | | import springfox.documentation.annotations.ApiIgnore; |
| | | |
| | | import javax.validation.Valid; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.math.BigDecimal; |
| | | import java.text.DecimalFormat; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.*; |
| | | |
| | | /** |
| | | * 农场养殖记录表控制器 |
| | | * @since 2022-05-12 |
| | | * |
| | | * @author zhongrj |
| | | * @since 2022-05-12 |
| | | */ |
| | | @RestController |
| | | @AllArgsConstructor |
| | |
| | | return R.data(pages); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 查询种养记录列表(不分页) |
| | | * @param farmPlant |
| | | * @return |
| | | */ |
| | | @GetMapping("/getFarmPlantList") |
| | | public R getFarmPlantList(FarmPlantVO farmPlant) { |
| | | return R.data(farmplantService.getFarmPlantList(farmPlant)); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 分页统计 |
| | | */ |
| | | @GetMapping("/pageCount") |
| | | @ApiOperationSupport(order = 3) |
| | | @ApiOperation(value = "分页", notes = "传入farmPlant") |
| | | public R<List<FarmPlantVO>> pageCount(FarmPlantVO farmPlant, Query query) { |
| | | IPage<FarmPlantVO> pages = farmplantService.selectFarmPlantPage(Condition.getPage(query), farmPlant); |
| | | List<FarmPlantVO> res = pages.getRecords(); |
| | | List<FarmPlantVO> count = new ArrayList<>(); |
| | | //按种类合并种植物 |
| | | for (int i = 0; i < res.size(); i++) { |
| | | if (i == 0){ |
| | | count.add(res.get(0)); |
| | | }else { |
| | | boolean type = false; |
| | | for (int j = 0; j < count.size(); j++) { |
| | | if (res.get(i).getStrainId().equals(count.get(j).getStrainId())){ |
| | | FarmPlantVO data = new FarmPlantVO(); |
| | | data.setStrainId(res.get(i).getStrainId()); |
| | | BigDecimal b1 = new BigDecimal(res.get(i).getArea()); |
| | | BigDecimal b2 = new BigDecimal(count.get(j).getArea()); |
| | | data.setArea(b1.add(b2).doubleValue()+""); |
| | | data.setStrainName(res.get(i).getStrainName()); |
| | | count.set(j,data); |
| | | type = false; |
| | | break; |
| | | }else{ |
| | | type = true; |
| | | } |
| | | } |
| | | if (type){ |
| | | count.add(res.get(i)); |
| | | } |
| | | } |
| | | } |
| | | |
| | | return R.data(count); |
| | | } |
| | | |
| | | /** |
| | | * 新增 |
| | | */ |
| | |
| | | public R save(@Valid @RequestBody FarmPlant farmPlant) { |
| | | farmPlant.setCreateTime(new Date()); |
| | | boolean save = farmplantService.save(farmPlant); |
| | | if (save){ |
| | | if (save) { |
| | | //同时生成农事记录 |
| | | FarmingRecord record = new FarmingRecord(); |
| | | record.setCreateTime(new Date()); |
| | | record.setJobWay(farmPlant.getJobWay()); |
| | | record.setTime(farmPlant.getTransplanTime()); |
| | | if(farmPlant.getPlantingWay().equals("0")){ |
| | | record.setDeptId(farmPlant.getDeptId()); |
| | | record.setTenantId(farmPlant.getTenantId()); |
| | | if (farmPlant.getPlantingWay().equals("0")) { |
| | | //移栽 |
| | | record.setType("10"); |
| | | } |
| | | if(farmPlant.getPlantingWay().equals("1")){ |
| | | if (farmPlant.getPlantingWay().equals("1")) { |
| | | //直播 |
| | | record.setType("11"); |
| | | } |
| | | record.setLandId(farmPlant.getLandId()); |
| | | record.setOperator(farmPlant.getCreateUser()); |
| | | record.setRemarks("品种: "+farmPlant.getVarieties()); |
| | | record.setContent("品种: " + farmPlant.getVarieties()); |
| | | //新增 |
| | | farmingRecordService.save(record); |
| | | |
| | |
| | | @PostMapping("/update") |
| | | @ApiOperationSupport(order = 5) |
| | | @ApiOperation(value = "修改", notes = "传入farmPlant") |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public R update(@Valid @RequestBody FarmPlant farmPlant) { |
| | | boolean status = false; |
| | | //如果是结束 |
| | | if (farmPlant.getStatus().equals("2")){ |
| | | if (farmPlant.getStatus().equals("2")) { |
| | | //更新 |
| | | status = farmplantService.updateById(farmPlant); |
| | | //判断该地块是否还有种植的农产品 |
| | | FarmPlant farmPlant2 = farmplantService.getById(farmPlant.getId()); |
| | | FarmPlant farmPlant1 = new FarmPlant(); |
| | | farmPlant1.setLandId(farmPlant.getLandId()); |
| | | farmPlant1.setLandId(farmPlant2.getLandId()); |
| | | farmPlant1.setStatus("1"); |
| | | List<FarmPlant> list = farmplantService.list(new QueryWrapper<>(farmPlant1)); |
| | | if (list.size()<1){ |
| | | if (list.size() < 1) { |
| | | //更新该地块的耕种状态 |
| | | Land land = new Land(); |
| | | land.setType(1); |
| | | land.setId(Long.parseLong(farmPlant.getLandId())); |
| | | land.setId(Long.parseLong(farmPlant2.getLandId())); |
| | | landService.updateById(land); |
| | | } |
| | | } else { |
| | | //更新 |
| | | status = farmplantService.updateById(farmPlant); |
| | | } |
| | | //更新并返回 |
| | | return R.status(status); |
| | |
| | | return R.status(farmplantService.removeByIds(Func.toLongList(ids))); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 农产品种养统计 |
| | | * |
| | | * @param farmPlantVO 农产品种植对象 |
| | | * @param query 分页查询对象 |
| | | * @return |
| | | */ |
| | | @GetMapping("/getFarmPlantStatistics") |
| | | public R<IPage<FarmPlantVO>> getFarmPlantStatistics(FarmPlantVO farmPlantVO, Query query) { |
| | | return R.data(farmplantService.getFarmPlantStatistics(Condition.getPage(query), farmPlantVO)); |
| | | } |
| | | |
| | | /** |
| | | * 农产品种养统计(累计和) |
| | | * |
| | | * @param farmPlantVO 农产品种植对象 |
| | | * @return |
| | | */ |
| | | @GetMapping("/getFarmPlantStatisticsCount") |
| | | public R<FarmPlantVO> getFarmPlantStatisticsCount(FarmPlantVO farmPlantVO) { |
| | | return R.data(farmplantService.getFarmPlantStatisticsCount(farmPlantVO)); |
| | | } |
| | | |
| | | /** |
| | | * 农产品列表 |
| | | * |
| | | * @param farm 农产品对象 |
| | | * @return |
| | | */ |
| | | @GetMapping("/strain-tree") |
| | | public R strainTree(FarmPlantVO farm) { |
| | | return R.data(farmplantService.strainTree(farm)); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 大屏种养品种接口 |
| | | * |
| | | * @param farmPlant |
| | | * @param query |
| | | * @return |
| | | */ |
| | | @GetMapping("/pagePalnt") |
| | | public R pagePalnt(FarmPlantVO farmPlant, Query query) { |
| | | int num = farmplantService.selectCount(farmPlant); |
| | | IPage<FarmPlantVO> pages = farmplantService.selectFarmPlantPage(Condition.getPage(query), farmPlant); |
| | | List<FarmPlantVO> res = pages.getRecords(); |
| | | List<FarmPlantVO> count = new ArrayList<>(); |
| | | //按种类合并种植物 |
| | | for (int i = 0; i < res.size(); i++) { |
| | | if (i == 0){ |
| | | count.add(res.get(0)); |
| | | }else { |
| | | boolean type = false; |
| | | for (int j = 0; j < count.size(); j++) { |
| | | if (res.get(i).getStrainId().equals(count.get(j).getStrainId())){ |
| | | FarmPlantVO data = new FarmPlantVO(); |
| | | data.setStrainId(res.get(i).getStrainId()); |
| | | BigDecimal b1 = new BigDecimal(res.get(i).getArea()); |
| | | BigDecimal b2 = new BigDecimal(count.get(j).getArea()); |
| | | data.setArea(b1.add(b2).doubleValue()+""); |
| | | data.setStrainName(res.get(i).getStrainName()); |
| | | data.setUrl(res.get(i).getUrl()); |
| | | count.set(j,data); |
| | | type = false; |
| | | break; |
| | | }else{ |
| | | type = true; |
| | | } |
| | | } |
| | | if (type){ |
| | | count.add(res.get(i)); |
| | | } |
| | | } |
| | | } |
| | | |
| | | Map map = new HashMap<>(); |
| | | map.put("num", num); |
| | | map.put("page", count); |
| | | return R.data(map); |
| | | } |
| | | |
| | | /** |
| | | * 种植品种监管 0:有机 1:绿色 2:无公害 3:普通 |
| | | * code=1(当天) =2(月) =3(年) |
| | | * |
| | | * @return |
| | | */ |
| | | @GetMapping("/selectPlant") |
| | | public R selectPlant(String code, String time) { |
| | | Map map1 = farmplantService.selectPlant(code, time); |
| | | Map map2 = farmplantService.selectPlantl(code, time); |
| | | Map map3 = farmplantService.selectPlantw(code, time); |
| | | Map map4 = farmplantService.selectPlantp(code, time); |
| | | Map map = new HashMap(); |
| | | map.put("yj", map1.get("num")); |
| | | map.put("ls", map2.get("num")); |
| | | map.put("wgh", map3.get("num")); |
| | | map.put("pt", map4.get("num")); |
| | | return R.data(map); |
| | | } |
| | | |
| | | /** |
| | | * 种植采收监管 产品等级(0:一等品 1:二等品 2:三等品 3:四等品4:五等品 code=1(当天) =2(月) =3(年) |
| | | * |
| | | * @return |
| | | */ |
| | | @GetMapping("/selectProduct") |
| | | public R selectProduct(String code, String time) { |
| | | //(0:一等品 |
| | | Map map1 = farmplantService.selectProduct(code, time); |
| | | //1:二等品 |
| | | Map map2 = farmplantService.selectProducty(code, time); |
| | | //2:三等品 |
| | | Map map3 = farmplantService.selectProductr(code, time); |
| | | //3:四等品 |
| | | Map map4 = farmplantService.selectProducts(code, time); |
| | | //4:五等品 |
| | | Map map5 = farmplantService.selectProductf(code, time); |
| | | Map map = new HashMap(); |
| | | map.put("yi", map1.get("num")); |
| | | map.put("er", map2.get("num")); |
| | | map.put("san", map3.get("num")); |
| | | map.put("shi", map4.get("num")); |
| | | map.put("wu", map5.get("num")); |
| | | return R.data(map); |
| | | } |
| | | |
| | | /** |
| | | * 小程序农产品种养统计(累计和) |
| | | * |
| | | * @return |
| | | */ |
| | | @GetMapping("/getFarmPlantStatisticsCountx") |
| | | public R getFarmPlantStatisticsCountx(FarmPlantVO farmPlant, Query query) { |
| | | Double num = 0.0; |
| | | IPage<FarmPlantVO> pages = farmplantService.getFarmPlantStatisticsCountz(Condition.getPage(query), farmPlant); |
| | | for (int i = 0; i < pages.getRecords().size(); i++) { |
| | | String area = pages.getRecords().get(i).getArea(); |
| | | Double a = Double.parseDouble(area); |
| | | DecimalFormat df = new DecimalFormat("#.00"); |
| | | String format = df.format(a); |
| | | pages.getRecords().get(i).setArea(format); |
| | | num += a; |
| | | } |
| | | Map map = new HashMap(); |
| | | List list = new ArrayList(); |
| | | DecimalFormat df = new DecimalFormat("#.00"); |
| | | String format = df.format(num); |
| | | map.put("znum", format); |
| | | list.add(map); |
| | | list.add(pages); |
| | | return R.data(list); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 自定义分页 |
| | | */ |
| | | @GetMapping("/pagex") |
| | | @ApiOperationSupport(order = 3) |
| | | @ApiOperation(value = "分页", notes = "传入farmPlant") |
| | | public R<IPage<FarmPlantVO>> pagex(FarmPlantVO farmPlant, Query query) { |
| | | IPage<FarmPlantVO> pages = farmplantService.selectFarmPlantPage(Condition.getPage(query), farmPlant); |
| | | for (int i = 0; i < pages.getRecords().size(); i++) { |
| | | //修改种养类型 |
| | | String plantingWay = pages.getRecords().get(i).getPlantingWay(); |
| | | if (plantingWay.equals("0")) { |
| | | pages.getRecords().get(i).setTy("移栽"); |
| | | } |
| | | else if (plantingWay.equals("1")) { |
| | | pages.getRecords().get(i).setTy("直播"); |
| | | } else { |
| | | pages.getRecords().get(i).setTy("秧苗"); |
| | | } |
| | | //计算天数 |
| | | Date transplanTime = pages.getRecords().get(i).getTransplanTime(); |
| | | Date date = new Date(); |
| | | Integer integer = daysBetween(transplanTime, date); |
| | | pages.getRecords().get(i).setFate(integer); |
| | | } |
| | | return R.data(pages); |
| | | } |
| | | |
| | | /** |
| | | * 根据时间阶段计算天数 |
| | | * @param smdate 开始时间 |
| | | * @param bdate 结束时间 |
| | | * @return |
| | | */ |
| | | public static Integer daysBetween(Date smdate,Date bdate){ |
| | | Calendar cal = Calendar.getInstance(); |
| | | cal.setTime(smdate); |
| | | long time1 = cal.getTimeInMillis(); |
| | | cal.setTime(bdate); |
| | | long time2 = cal.getTimeInMillis(); |
| | | long between_days=(time2-time1)/(1000*3600*24); |
| | | return Integer.parseInt(String.valueOf(between_days))+1; |
| | | } |
| | | } |