src/main/java/org/springblade/modules/farm/controller/FarmController.java
@@ -24,11 +24,13 @@ 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.tool.api.R; import org.springblade.core.tool.utils.Func; import org.springblade.modules.farm.entity.Farm; import org.springblade.modules.farm.service.FarmService; import org.springblade.modules.farm.vo.FarmVO; import org.springblade.modules.system.vo.RoleVO; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; @@ -178,5 +180,4 @@ map.put("rynum", integer1); return R.data(map); } } src/main/java/org/springblade/modules/farm/service/impl/FarmServiceImpl.java
@@ -5,6 +5,7 @@ import org.springblade.modules.farm.mapper.FarmMapper; import org.springblade.modules.farm.service.FarmService; import org.springblade.modules.farm.vo.FarmVO; import org.springblade.modules.system.entity.Dept; import org.springframework.stereotype.Service; import java.util.List; src/main/java/org/springblade/modules/lang/controller/LandController.java
@@ -123,29 +123,33 @@ //替换分号为逗号 String replaceAll = sNull.replaceAll(";", ","); land.setLandRange("'POLYGON((" + replaceAll + "))'"); } List<Point2D.Double> points = new ArrayList<Point2D.Double>(); double v1; String landRange = range; String[] s1 = landRange.split(";"); for (String ss : s1) { String[] temp = ss.split(","); Point2D.Double point = new Point2D.Double(Double.parseDouble(temp[0]), Double.parseDouble(temp[1])); points.add(point); } PolyginArea tp = new PolyginArea(); double area = tp.getAreaByxy(points); Integer landUnit = land.getLandUnit(); //(0: 亩 1:分 2:平方米 if (landUnit == 0) { double v = area * 0.0015; v1 = (double) Math.round(v * 100) / 100; } else if (landUnit == 1) { double v = area * 0.015; v1 = (double) Math.round(v * 100) / 100; } else { v1 = (double) Math.round(area * 100) / 100; List<Point2D.Double> points = new ArrayList<Point2D.Double>(); double v1; String landRange = range; String[] s1 = landRange.split(";"); for (String ss : s1) { String[] temp = ss.split(","); Point2D.Double point = new Point2D.Double(Double.parseDouble(temp[0]), Double.parseDouble(temp[1])); points.add(point); } PolyginArea tp = new PolyginArea(); double area = tp.getAreaByxy(points); Integer landUnit = land.getLandUnit(); //(0: 亩 1:分 2:平方米 if (landUnit == 0) { double v = area * 0.0015; v1 = (double) Math.round(v * 100) / 100; } else if (landUnit == 1) { double v = area * 0.015; v1 = (double) Math.round(v * 100) / 100; } else { v1 = (double) Math.round(area * 100) / 100; } land.setLandArea(String.valueOf(v1)); }else { land.setLandArea("0"); } //图片转换上传 @@ -159,7 +163,7 @@ e.printStackTrace(); } } land.setLandArea(String.valueOf(v1)); land.setType(1); return R.status(landService.saveLandInfo(land)); } src/main/java/org/springblade/modules/lang/entity/Land.java
@@ -54,6 +54,7 @@ * 地块面积 */ private String landArea; private String url; /** * 地块范围 @@ -72,4 +73,9 @@ */ private String deptId; /** * 农场id */ private String farmId; } src/main/java/org/springblade/modules/lang/mapper/LandMapper.xml
@@ -85,13 +85,18 @@ <insert id="saveLandInfo"> insert into sys_land (user_id,land_name,land_type,land_area,land_range,type,land_unit,dept_id,url) (user_id,land_name,land_type,land_area,land_range,type,land_unit,dept_id,url,farm_id) values (#{land.userId},#{land.landName},#{land.landType},#{land.landArea}, <if test="land.landRange!=null and land.landRange!=''"> ST_GeomFromText(${land.landRange}), </if> #{land.type},#{land.landUnit},#{land.deptId},#{land.url}) <choose> <when test="land.landRange!=null and land.landRange!=''"> ST_GeomFromText(${land.landRange}), </when> <otherwise> null, </otherwise> </choose> #{land.type},#{land.landUnit},#{land.deptId},#{land.url},#{land.farmId}) </insert> <!--详情信息(自定义查询)--> @@ -121,6 +126,7 @@ </if> type = #{land.type}, land_unit = #{land.landUnit}, farm_id = #{land.farmId}, url = #{land.url}, where id = #{land.id} </update> src/main/java/org/springblade/modules/system/entity/User.java
@@ -92,5 +92,10 @@ */ private String postId; /** * 农场id(负责的农场) */ private String farmId; } src/main/java/org/springblade/modules/traceability/controller/SweepRecordController.java
New file @@ -0,0 +1,121 @@ package org.springblade.modules.traceability.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; 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.tool.api.R; import org.springblade.core.tool.utils.Func; import org.springblade.modules.traceability.entity.SweepRecord; import org.springblade.modules.traceability.service.SweepRecordService; import org.springblade.modules.traceability.vo.SweepRecordVO; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.Date; /** * 溯源扫描记录控制器 * @since 2022-05-19 * @author zhongrj */ @RestController @AllArgsConstructor @RequestMapping("/sweepRecord") public class SweepRecordController extends BladeController { private final SweepRecordService sweepRecordService; /** * 详情 */ @GetMapping("/detail") @ApiOperationSupport(order = 1) @ApiOperation(value = "详情", notes = "传入sweepRecord") public R<SweepRecord> detail(SweepRecord sweepRecord) { SweepRecord detail = sweepRecordService.getOne(Condition.getQueryWrapper(sweepRecord)); return R.data(detail); } /** * 分页 */ @GetMapping("/list") @ApiOperationSupport(order = 2) @ApiOperation(value = "分页", notes = "传入sweepRecord") public R<IPage<SweepRecord>> list(SweepRecord sweepRecord, Query query) { IPage<SweepRecord> pages = sweepRecordService.page(Condition.getPage(query), Condition.getQueryWrapper(sweepRecord)); return R.data(pages); } /** * 自定义分页 */ @GetMapping("/page") @ApiOperationSupport(order = 3) @ApiOperation(value = "分页", notes = "传入sweepRecord") public R<IPage<SweepRecordVO>> page(SweepRecordVO sweepRecord, Query query) { IPage<SweepRecordVO> pages = sweepRecordService.selectSweepRecordPage(Condition.getPage(query), sweepRecord); return R.data(pages); } /** * 新增 */ @PostMapping("/save") @ApiOperationSupport(order = 4) @Transactional(rollbackFor = Exception.class) public R save(@Valid @RequestBody SweepRecord sweepRecord) { sweepRecord.setCreateTime(new Date()); //新增 return R.status(sweepRecordService.save(sweepRecord)); } /** * 修改 */ @PostMapping("/update") @ApiOperationSupport(order = 5) @ApiOperation(value = "修改", notes = "传入sweepRecord") @Transactional(rollbackFor = Exception.class) public R update(@Valid @RequestBody SweepRecord sweepRecord) { //更新并返回 return R.status(sweepRecordService.updateById(sweepRecord)); } /** * 新增或修改 */ @PostMapping("/submit") @ApiOperationSupport(order = 6) @ApiOperation(value = "新增或修改", notes = "传入sweepRecord") public R submit(@Valid @RequestBody SweepRecord sweepRecord) { return R.status(sweepRecordService.saveOrUpdate(sweepRecord)); } /** * 删除 */ @PostMapping("/remove") @ApiOperationSupport(order = 7) @ApiOperation(value = "逻辑删除", notes = "传入ids") public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) { return R.status(sweepRecordService.removeByIds(Func.toLongList(ids))); } /** * 获取扫描次数统计数据 * @param sweepRecord * @return */ @GetMapping("/getSweepRecordStatistics") public R getSweepRecordStatistics(SweepRecordVO sweepRecord){ return R.data(sweepRecordService.getSweepRecordStatistics(sweepRecord)); } } src/main/java/org/springblade/modules/traceability/dto/SweepRecordDTO.java
New file @@ -0,0 +1,42 @@ package org.springblade.modules.traceability.dto; import lombok.Data; import java.io.Serializable; /** * @author zhongrj */ @Data public class SweepRecordDTO implements Serializable { /** * 本日扫描总次数 */ private Integer todayNum; /** * 昨日扫描总次数 */ private Integer yesterdayNum; /** * 本周扫描总次数 */ private Integer thisWeekNum; /** * 去周扫描总次数 */ private Integer lastWeekNum; /** * 本月扫描总次数 */ private Integer thisMonthNum; /** * 上个月扫描总次数 */ private Integer lastMonthNum; } src/main/java/org/springblade/modules/traceability/entity/SweepRecord.java
New file @@ -0,0 +1,48 @@ package org.springblade.modules.traceability.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; import java.io.Serializable; import java.util.Date; /** * 溯源扫描记录表实体类 * @since 2022-07-11 * @author zhongrj */ @Data @TableName("sys_sweep_record") public class SweepRecord implements Serializable { private static final long serialVersionUID = 1L; /** * 主键id */ @TableId(value = "id",type = IdType.AUTO) private Integer id; /** * 溯源码编号 */ private String code; /** * 创建时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date createTime; /** * 单位id */ private String deptId; } src/main/java/org/springblade/modules/traceability/mapper/SweepRecordMapper.java
New file @@ -0,0 +1,34 @@ package org.springblade.modules.traceability.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import org.apache.ibatis.annotations.Param; import org.springblade.modules.traceability.dto.SweepRecordDTO; import org.springblade.modules.traceability.entity.SweepRecord; import org.springblade.modules.traceability.vo.SweepRecordVO; import java.util.List; /** * 溯源扫描记录Mapper 接口 * @since 2022-07-11 * @author zhongrj */ public interface SweepRecordMapper extends BaseMapper<SweepRecord> { /** * 自定义分页 * * @param page * @param sweepRecord * @return */ List<SweepRecordVO> selectSweepRecordPage(@Param("page") IPage page, @Param("sweepRecord") SweepRecordVO sweepRecord); /** * 获取扫描次数统计数据 * @param sweepRecord * @return */ List<Integer> getSweepRecordStatistics(@Param("sweepRecord") SweepRecordVO sweepRecord); } src/main/java/org/springblade/modules/traceability/mapper/SweepRecordMapper.xml
New file @@ -0,0 +1,49 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="org.springblade.modules.traceability.mapper.SweepRecordMapper"> <!--自定义查询溯源码扫描记录分页数据--> <select id="selectSweepRecordPage" resultType="org.springblade.modules.traceability.vo.SweepRecordVO"> select * from sys_sweep_record where 1=1 </select> <!--获取扫描次数统计数据--> <select id="getSweepRecordStatistics" resultType="java.lang.Integer"> select count(*) from sys_sweep_record ssr left join sys_traceability st on ssr.code = st.id left join sys_recovery sr on sr.id = st.recovery_id left join sys_land sl on sl.id = sr.land_id WHERE DAY(ssr.create_time) = NOW() and sl.farm_id = #{sweepRecord.farmId} union all select count(*) from sys_sweep_record ssr left join sys_traceability st on ssr.code = st.id left join sys_recovery sr on sr.id = st.recovery_id left join sys_land sl on sl.id = sr.land_id WHERE TO_DAYS( NOW( ) ) - TO_DAYS( ssr.create_time) = 1 and sl.farm_id = #{sweepRecord.farmId} union all select count(*) from sys_sweep_record ssr left join sys_traceability st on ssr.code = st.id left join sys_recovery sr on sr.id = st.recovery_id left join sys_land sl on sl.id = sr.land_id WHERE YEARWEEK(date_format(ssr.create_time,'%Y-%m-%d')) = YEARWEEK(now()) and sl.farm_id = #{sweepRecord.farmId} union all select count(*) from sys_sweep_record ssr left join sys_traceability st on ssr.code = st.id left join sys_recovery sr on sr.id = st.recovery_id left join sys_land sl on sl.id = sr.land_id WHERE YEARWEEK(date_format(ssr.create_time,'%Y-%m-%d')) = YEARWEEK(now())-1 and sl.farm_id = #{sweepRecord.farmId} union all select count(*) from sys_sweep_record ssr left join sys_traceability st on ssr.code = st.id left join sys_recovery sr on sr.id = st.recovery_id left join sys_land sl on sl.id = sr.land_id WHERE DATE_FORMAT( ssr.create_time, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' ) and sl.farm_id = #{sweepRecord.farmId} union all select count(*) from sys_sweep_record ssr left join sys_traceability st on ssr.code = st.id left join sys_recovery sr on sr.id = st.recovery_id left join sys_land sl on sl.id = sr.land_id WHERE PERIOD_DIFF( date_format( now( ) , '%Y%m' ) , date_format( ssr.create_time, '%Y%m' ) ) =1 and sl.farm_id = #{sweepRecord.farmId} </select> </mapper> src/main/java/org/springblade/modules/traceability/service/SweepRecordService.java
New file @@ -0,0 +1,32 @@ package org.springblade.modules.traceability.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import org.springblade.modules.traceability.dto.SweepRecordDTO; import org.springblade.modules.traceability.entity.SweepRecord; import org.springblade.modules.traceability.vo.SweepRecordVO; /** * 溯源码扫描记录表服务类 * @since 2022-07-11 * @author zhongrj */ public interface SweepRecordService extends IService<SweepRecord> { /** * 自定义分页 * * @param page * @param sweepRecord * @return */ IPage<SweepRecordVO> selectSweepRecordPage(IPage<SweepRecordVO> page, SweepRecordVO sweepRecord); /** * 获取扫描次数统计数据 * @param sweepRecord * @return */ SweepRecordDTO getSweepRecordStatistics(SweepRecordVO sweepRecord); } src/main/java/org/springblade/modules/traceability/service/impl/SweepRecordServiceImpl.java
New file @@ -0,0 +1,52 @@ package org.springblade.modules.traceability.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springblade.modules.traceability.dto.SweepRecordDTO; import org.springblade.modules.traceability.entity.SweepRecord; import org.springblade.modules.traceability.mapper.SweepRecordMapper; import org.springblade.modules.traceability.service.SweepRecordService; import org.springblade.modules.traceability.vo.SweepRecordVO; import org.springframework.stereotype.Service; import java.util.List; /** * 溯源码扫描记录表服务实现类 * @since 2022-05-19 * @author zhongrj */ @Service public class SweepRecordServiceImpl extends ServiceImpl<SweepRecordMapper, SweepRecord> implements SweepRecordService { /** * 自定义分页 * * @param page * @param sweepRecord * @return */ @Override public IPage<SweepRecordVO> selectSweepRecordPage(IPage<SweepRecordVO> page, SweepRecordVO sweepRecord) { return page.setRecords(baseMapper.selectSweepRecordPage(page, sweepRecord)); } /** * 获取扫描次数统计数据 * @param sweepRecord * @return */ @Override public SweepRecordDTO getSweepRecordStatistics(SweepRecordVO sweepRecord) { List<Integer> statistics = baseMapper.getSweepRecordStatistics(sweepRecord); //数据装换 SweepRecordDTO dto = new SweepRecordDTO(); dto.setTodayNum(statistics.get(0)); dto.setYesterdayNum(statistics.get(1)); dto.setThisWeekNum(statistics.get(2)); dto.setLastWeekNum(statistics.get(3)); dto.setThisMonthNum(statistics.get(4)); dto.setLastMonthNum(statistics.get(5)); //返回 return dto; } } src/main/java/org/springblade/modules/traceability/service/impl/TraceabilityServiceImpl.java
@@ -21,8 +21,10 @@ import org.springblade.modules.recovery.vo.RecoveryVO; import org.springblade.modules.traceability.dto.TraceabilityDTO; import org.springblade.modules.traceability.dto.TraceabilityDetailDTO; import org.springblade.modules.traceability.entity.SweepRecord; import org.springblade.modules.traceability.entity.Traceability; import org.springblade.modules.traceability.mapper.TraceabilityMapper; import org.springblade.modules.traceability.service.SweepRecordService; import org.springblade.modules.traceability.service.TraceabilityService; import org.springblade.modules.traceability.vo.TraceabilityVO; import org.springframework.beans.factory.annotation.Autowired; @@ -33,6 +35,7 @@ import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.Date; import java.util.List; /** @@ -57,6 +60,9 @@ @Autowired private ILandService landService; @Autowired private SweepRecordService sweepRecordService; /** * 自定义分页 @@ -114,10 +120,21 @@ */ @Override public TraceabilityDetailDTO getTraceabilityDetailInfo(Traceability traceability) { TraceabilityDetailDTO dto = new TraceabilityDetailDTO(); int count = 0; //根据溯源码编号查询溯源信息 Traceability traceability1 = baseMapper.selectOne(new QueryWrapper<>(traceability)); //记录扫描记录 if (null!=traceability.getBind() && traceability.equals("1")){ //插入扫描记录 SweepRecord sweepRecord = new SweepRecord(); sweepRecord.setCreateTime(new Date()); sweepRecord.setCode(traceability.getId().toString()); sweepRecord.setDeptId(traceability1.getDeptId()); //新增 sweepRecordService.save(sweepRecord); } //1. 查询农产品采收记录信息 RecoveryVO recoveryVO = recoveryService.getRecoveryDetail(traceability1.getRecoveryId()); //2. 查询相关检测信息 src/main/java/org/springblade/modules/traceability/vo/SweepRecordVO.java
New file @@ -0,0 +1,21 @@ package org.springblade.modules.traceability.vo; import lombok.Data; import org.springblade.modules.traceability.entity.SweepRecord; import org.springblade.modules.traceability.entity.Traceability; /** * 溯源码扫描记录表VO * @since 2022-07-11 * @author zhongrj */ @Data public class SweepRecordVO extends SweepRecord { private static final long serialVersionUID = 1L; /** * 农场id */ private String farmId; } src/main/resources/application.yml
@@ -207,6 +207,7 @@ - /strain/** - /blade-user/** - /traceability/** - /sweepRecord/** #授权认证配置 auth: - method: ALL