From 7342c944e24f884a2ef7826bd6c9e0442b06d2a7 Mon Sep 17 00:00:00 2001
From: Administrator <admin>
Date: Wed, 01 Jun 2022 17:18:09 +0800
Subject: [PATCH] 农事操作新增农产品绑定,采收修改,农产品种植修改,新增根据地块查询农产品

---
 src/main/java/org/springblade/modules/farmplant/mapper/FarmPlantMapper.xml                |    7 ++
 src/main/java/org/springblade/modules/recovery/mapper/RecoveryMapper.java                 |    7 ++
 src/main/java/org/springblade/modules/farmplant/controller/FarmPlantController.java       |   13 ++++
 src/main/java/org/springblade/modules/farmplant/mapper/FarmPlantMapper.java               |    9 +++
 src/main/java/org/springblade/modules/recovery/service/RecoveryService.java               |    7 ++
 src/main/java/org/springblade/modules/farmplant/service/FarmPlantService.java             |   11 +++
 src/main/java/org/springblade/modules/recovery/controller/RecoveryController.java         |    4 +
 src/main/java/org/springblade/modules/recovery/entity/Recovery.java                       |    5 -
 src/main/java/org/springblade/modules/traceability/mapper/TraceabilityMapper.xml          |    5 +
 src/main/java/org/springblade/modules/farmplant/service/impl/FarmPlantServiceImpl.java    |   13 ++++
 src/main/java/org/springblade/modules/traceability/entity/Traceability.java               |    5 +
 src/main/java/org/springblade/modules/recovery/service/impl/RecoveryServiceImpl.java      |   10 +++
 src/main/java/org/springblade/modules/farmplant/controller/StrainController.java          |    5 +
 src/main/java/org/springblade/modules/recovery/mapper/RecoveryMapper.xml                  |    6 ++
 src/main/java/org/springblade/modules/farm/entity/FarmingRecord.java                      |    5 +
 src/main/java/org/springblade/modules/traceability/controller/TraceabilityController.java |   36 ++++++++++++
 16 files changed, 141 insertions(+), 7 deletions(-)

diff --git a/src/main/java/org/springblade/modules/farm/entity/FarmingRecord.java b/src/main/java/org/springblade/modules/farm/entity/FarmingRecord.java
index e50f524..a016dea 100644
--- a/src/main/java/org/springblade/modules/farm/entity/FarmingRecord.java
+++ b/src/main/java/org/springblade/modules/farm/entity/FarmingRecord.java
@@ -77,4 +77,9 @@
 	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
 	private Date createTime;
 
+	/**
+	 * 农产品id
+	 */
+	private Integer strainId;
+
 }
diff --git a/src/main/java/org/springblade/modules/farmplant/controller/FarmPlantController.java b/src/main/java/org/springblade/modules/farmplant/controller/FarmPlantController.java
index b77b25e..d9a7a55 100644
--- a/src/main/java/org/springblade/modules/farmplant/controller/FarmPlantController.java
+++ b/src/main/java/org/springblade/modules/farmplant/controller/FarmPlantController.java
@@ -32,12 +32,15 @@
 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.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
+import java.text.DecimalFormat;
+import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.List;
 
@@ -197,4 +200,14 @@
 		return R.data(farmplantService.getFarmPlantStatistics(Condition.getPage(query),farmPlantVO));
 	}
 
+	/**
+	 * 农产品列表
+	 * @param farm 农产品对象
+	 * @return
+	 */
+	@GetMapping("/strain-tree")
+	public R strainTree(FarmPlantVO farm){
+		return R.data(farmplantService.strainTree(farm));
+	}
+
 }
diff --git a/src/main/java/org/springblade/modules/farmplant/controller/StrainController.java b/src/main/java/org/springblade/modules/farmplant/controller/StrainController.java
index 8136b65..7a808ee 100644
--- a/src/main/java/org/springblade/modules/farmplant/controller/StrainController.java
+++ b/src/main/java/org/springblade/modules/farmplant/controller/StrainController.java
@@ -105,6 +105,11 @@
 		return R.status(strainService.removeByIds(Func.toLongList(ids)));
 	}
 
+	/**
+	 * 农产品列表
+	 * @param strain
+	 * @return
+	 */
 	@GetMapping("/strain-tree")
 	public R strainTree(StrainVO strain){
 		return R.data(strainService.strainTree(strain));
diff --git a/src/main/java/org/springblade/modules/farmplant/mapper/FarmPlantMapper.java b/src/main/java/org/springblade/modules/farmplant/mapper/FarmPlantMapper.java
index e4a4b24..5fba690 100644
--- a/src/main/java/org/springblade/modules/farmplant/mapper/FarmPlantMapper.java
+++ b/src/main/java/org/springblade/modules/farmplant/mapper/FarmPlantMapper.java
@@ -4,7 +4,9 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.apache.ibatis.annotations.Param;
 import org.springblade.modules.farmplant.entity.FarmPlant;
+import org.springblade.modules.farmplant.entity.Strain;
 import org.springblade.modules.farmplant.vo.FarmPlantVO;
+import org.springblade.modules.farmplant.vo.StrainVO;
 
 import java.util.List;
 
@@ -31,4 +33,11 @@
 	 * @return
 	 */
     List<FarmPlantVO> getFarmPlantStatistics(@Param("page") IPage<FarmPlantVO> page,@Param("farmPlant") FarmPlantVO farm);
+
+	/**
+	 * 农产品列表
+	 * @param farm 农产品对象
+	 * @return
+	 */
+    List<Strain> strainTree(@Param("farm") FarmPlantVO farm);
 }
diff --git a/src/main/java/org/springblade/modules/farmplant/mapper/FarmPlantMapper.xml b/src/main/java/org/springblade/modules/farmplant/mapper/FarmPlantMapper.xml
index eff9b65..406c6df 100644
--- a/src/main/java/org/springblade/modules/farmplant/mapper/FarmPlantMapper.xml
+++ b/src/main/java/org/springblade/modules/farmplant/mapper/FarmPlantMapper.xml
@@ -52,4 +52,11 @@
         </if>
         group by sfp.strain_id,strain_name,land_unit
     </select>
+
+    <!--已种植农产品列表-->
+    <select id="strainTree" resultType="org.springblade.modules.farmplant.entity.Strain">
+        select ss.id,ss.strain_name strainName from sys_farm_plant sfp
+        left join sys_strain ss on ss.id = sfp.strain_id
+        where sfp.status = "1" and sfp.land_id = #{farm.landId}
+    </select>
 </mapper>
diff --git a/src/main/java/org/springblade/modules/farmplant/service/FarmPlantService.java b/src/main/java/org/springblade/modules/farmplant/service/FarmPlantService.java
index 559a7b2..3463e9a 100644
--- a/src/main/java/org/springblade/modules/farmplant/service/FarmPlantService.java
+++ b/src/main/java/org/springblade/modules/farmplant/service/FarmPlantService.java
@@ -4,7 +4,11 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.springblade.modules.farmplant.entity.FarmPlant;
+import org.springblade.modules.farmplant.entity.Strain;
 import org.springblade.modules.farmplant.vo.FarmPlantVO;
+import org.springblade.modules.farmplant.vo.StrainVO;
+
+import java.util.List;
 
 /**
  * 农场养殖记录表服务类
@@ -29,4 +33,11 @@
 	 * @return
 	 */
 	IPage<FarmPlantVO> getFarmPlantStatistics(IPage<FarmPlantVO> page,FarmPlantVO farmPlantVO);
+
+	/**
+	 * 农产品列表
+	 * @param farm 农产品对象
+	 * @return
+	 */
+    List<Strain> strainTree(FarmPlantVO farm);
 }
diff --git a/src/main/java/org/springblade/modules/farmplant/service/impl/FarmPlantServiceImpl.java b/src/main/java/org/springblade/modules/farmplant/service/impl/FarmPlantServiceImpl.java
index ddab157..346c179 100644
--- a/src/main/java/org/springblade/modules/farmplant/service/impl/FarmPlantServiceImpl.java
+++ b/src/main/java/org/springblade/modules/farmplant/service/impl/FarmPlantServiceImpl.java
@@ -2,9 +2,11 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springblade.modules.farmplant.entity.FarmPlant;
+import org.springblade.modules.farmplant.entity.Strain;
 import org.springblade.modules.farmplant.mapper.FarmPlantMapper;
 import org.springblade.modules.farmplant.service.FarmPlantService;
 import org.springblade.modules.farmplant.vo.FarmPlantVO;
+import org.springblade.modules.farmplant.vo.StrainVO;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
@@ -62,4 +64,15 @@
 		});
 		return page.setRecords(farmPlantVOS);
 	}
+
+
+	/**
+	 * 农产品列表
+	 * @param farm 农产品对象
+	 * @return
+	 */
+	@Override
+	public List<Strain> strainTree(FarmPlantVO farm) {
+		return baseMapper.strainTree(farm);
+	}
 }
diff --git a/src/main/java/org/springblade/modules/recovery/controller/RecoveryController.java b/src/main/java/org/springblade/modules/recovery/controller/RecoveryController.java
index dfbeeaa..eed9c82 100644
--- a/src/main/java/org/springblade/modules/recovery/controller/RecoveryController.java
+++ b/src/main/java/org/springblade/modules/recovery/controller/RecoveryController.java
@@ -26,6 +26,8 @@
 
 import javax.validation.Valid;
 import java.math.BigDecimal;
+import java.text.DecimalFormat;
+import java.text.SimpleDateFormat;
 import java.util.Date;
 
 /**
@@ -88,6 +90,7 @@
 	@Transactional(rollbackFor = Exception.class)
 	public R save(@Valid @RequestBody Recovery recovery) {
 		recovery.setCreateTime(new Date());
+		//新增
 		boolean save = recoveryService.save(recovery);
 		if (save){
 			//同时生成农事记录和库存记录
@@ -136,6 +139,7 @@
 		return R.status(save);
 	}
 
+
 	/**
 	 * double 相加
 	 * @param d1
diff --git a/src/main/java/org/springblade/modules/recovery/entity/Recovery.java b/src/main/java/org/springblade/modules/recovery/entity/Recovery.java
index 02a70bf..af0d347 100644
--- a/src/main/java/org/springblade/modules/recovery/entity/Recovery.java
+++ b/src/main/java/org/springblade/modules/recovery/entity/Recovery.java
@@ -81,9 +81,4 @@
 	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
 	private Date createTime;
 
-	/**
-	 * 溯源码编号
-	 */
-	private String code;
-
 }
diff --git a/src/main/java/org/springblade/modules/recovery/mapper/RecoveryMapper.java b/src/main/java/org/springblade/modules/recovery/mapper/RecoveryMapper.java
index 39090e7..37babd3 100644
--- a/src/main/java/org/springblade/modules/recovery/mapper/RecoveryMapper.java
+++ b/src/main/java/org/springblade/modules/recovery/mapper/RecoveryMapper.java
@@ -24,4 +24,11 @@
 	 * @return
 	 */
 	List<RecoveryVO> selectRecoveryPage(@Param("page") IPage page, @Param("recovery") RecoveryVO recovery);
+
+	/**
+	 * 按前缀查询溯源码编号总数
+	 * @param pre
+	 * @return
+	 */
+    int getCodePreCount(@Param("pre") String pre);
 }
diff --git a/src/main/java/org/springblade/modules/recovery/mapper/RecoveryMapper.xml b/src/main/java/org/springblade/modules/recovery/mapper/RecoveryMapper.xml
index 7b2e2eb..fc5f121 100644
--- a/src/main/java/org/springblade/modules/recovery/mapper/RecoveryMapper.xml
+++ b/src/main/java/org/springblade/modules/recovery/mapper/RecoveryMapper.xml
@@ -24,4 +24,10 @@
             and sr.operator = #{recovery.operator}
         </if>
     </select>
+
+    <!--查询当前前缀已有的溯源码编号,取倒数7位的最大值-->
+    <select id="getCodePreCount" resultType="java.lang.Integer">
+        select ifnull(max(0+RIGHT(code,7)),0) from sys_traceability
+        where code like concat('%', #{pre},'%')
+    </select>
 </mapper>
diff --git a/src/main/java/org/springblade/modules/recovery/service/RecoveryService.java b/src/main/java/org/springblade/modules/recovery/service/RecoveryService.java
index acadb48..515bcbd 100644
--- a/src/main/java/org/springblade/modules/recovery/service/RecoveryService.java
+++ b/src/main/java/org/springblade/modules/recovery/service/RecoveryService.java
@@ -21,4 +21,11 @@
 	 * @return
 	 */
 	IPage<RecoveryVO> selectRecoveryPage(IPage<RecoveryVO> page, RecoveryVO recovery);
+
+	/**
+	 * 按前缀查询溯源码编号总数
+	 * @param pre
+	 * @return
+	 */
+    int getCodePreCount(String pre);
 }
diff --git a/src/main/java/org/springblade/modules/recovery/service/impl/RecoveryServiceImpl.java b/src/main/java/org/springblade/modules/recovery/service/impl/RecoveryServiceImpl.java
index b45f2d0..7f468d4 100644
--- a/src/main/java/org/springblade/modules/recovery/service/impl/RecoveryServiceImpl.java
+++ b/src/main/java/org/springblade/modules/recovery/service/impl/RecoveryServiceImpl.java
@@ -25,4 +25,14 @@
 	public IPage<RecoveryVO> selectRecoveryPage(IPage<RecoveryVO> page, RecoveryVO recovery) {
 		return page.setRecords(baseMapper.selectRecoveryPage(page, recovery));
 	}
+
+	/**
+	 * 按前缀查询溯源码编号总数
+	 * @param pre
+	 * @return
+	 */
+	@Override
+	public int getCodePreCount(String pre) {
+		return baseMapper.getCodePreCount(pre);
+	}
 }
diff --git a/src/main/java/org/springblade/modules/traceability/controller/TraceabilityController.java b/src/main/java/org/springblade/modules/traceability/controller/TraceabilityController.java
index 420be2e..fc2d017 100644
--- a/src/main/java/org/springblade/modules/traceability/controller/TraceabilityController.java
+++ b/src/main/java/org/springblade/modules/traceability/controller/TraceabilityController.java
@@ -1,4 +1,5 @@
 package org.springblade.modules.traceability.controller;
+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.ApiOperation;
@@ -9,13 +10,18 @@
 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.recovery.entity.Recovery;
+import org.springblade.modules.recovery.service.RecoveryService;
 import org.springblade.modules.traceability.entity.Traceability;
 import org.springblade.modules.traceability.service.TraceabilityService;
 import org.springblade.modules.traceability.vo.TraceabilityVO;
+import org.springframework.retry.annotation.Recover;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
+import java.text.DecimalFormat;
+import java.text.SimpleDateFormat;
 import java.util.Date;
 
 /**
@@ -29,6 +35,9 @@
 public class TraceabilityController extends BladeController {
 
 	private final TraceabilityService traceabilityService;
+
+
+	private final RecoveryService recoveryService;
 
 	/**
 	 * 详情
@@ -71,7 +80,33 @@
 	@Transactional(rollbackFor = Exception.class)
 	public R save(@Valid @RequestBody Traceability traceability) {
 		traceability.setCreateTime(new Date());
+		//生成溯源码编号
+		//去生成保安证编号
+		String pre = getCodePre();
+		//查询当前前缀下最大的编号
+		int max = recoveryService.getCodePreCount(pre);
+		String result = null;
+		if (max == 0) {
+			result = pre + "0000001";
+		} else {
+			//格式化
+			DecimalFormat decimalFormat = new DecimalFormat("0000000");
+			max++;
+			result = pre + (decimalFormat.format(max));
+		}
+		traceability.setCode(result);
+		//新增
 		return R.status(traceabilityService.save(traceability));
+	}
+
+
+	/**
+	 * 编号前缀
+	 * @return
+	 */
+	private String getCodePre() {
+		String nowDate = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
+		return nowDate.substring(2,4)+nowDate.substring(5,7);
 	}
 
 	/**
@@ -80,6 +115,7 @@
 	@PostMapping("/update")
 	@ApiOperationSupport(order = 5)
 	@ApiOperation(value = "修改", notes = "传入traceability")
+	@Transactional(rollbackFor = Exception.class)
 	public R update(@Valid @RequestBody Traceability traceability) {
 		//更新并返回
 		return R.status(traceabilityService.updateById(traceability));
diff --git a/src/main/java/org/springblade/modules/traceability/entity/Traceability.java b/src/main/java/org/springblade/modules/traceability/entity/Traceability.java
index a9ed88b..02f553b 100644
--- a/src/main/java/org/springblade/modules/traceability/entity/Traceability.java
+++ b/src/main/java/org/springblade/modules/traceability/entity/Traceability.java
@@ -81,4 +81,9 @@
 	 */
 	private String print;
 
+	/**
+	 * 采收记录id
+	 */
+	private Integer recoveryId;
+
 }
diff --git a/src/main/java/org/springblade/modules/traceability/mapper/TraceabilityMapper.xml b/src/main/java/org/springblade/modules/traceability/mapper/TraceabilityMapper.xml
index b7e18f8..7860287 100644
--- a/src/main/java/org/springblade/modules/traceability/mapper/TraceabilityMapper.xml
+++ b/src/main/java/org/springblade/modules/traceability/mapper/TraceabilityMapper.xml
@@ -4,10 +4,11 @@
 
     <!--自定义查询农场养殖记录分页数据-->
     <select id="selectTraceabilityPage" resultType="org.springblade.modules.traceability.vo.TraceabilityVO">
-        select * from sys_traceability
+        select st.* from sys_traceability st
+        left join sys_recovery sr on st.recovery_id = sr.id
         where 1=1
         <if test="traceability.code!=null and traceability.code!=''">
-            and code = #{traceability.code}
+            and st.code = #{traceability.code}
         </if>
     </select>
 </mapper>

--
Gitblit v1.9.3