|
@@ -50,12 +50,58 @@ public class ProdAnalysisController {
|
|
public Result add(HttpServletRequest httpServletRequest, @RequestBody ProdAnalysisVo prodAnalysis) {
|
|
public Result add(HttpServletRequest httpServletRequest, @RequestBody ProdAnalysisVo prodAnalysis) {
|
|
String farmId = prodAnalysis.getFarmId();
|
|
String farmId = prodAnalysis.getFarmId();
|
|
ProdAnalysis feed = prodAnalysis.getFeed();
|
|
ProdAnalysis feed = prodAnalysis.getFeed();
|
|
|
|
+ ProdAnalysis drug = prodAnalysis.getDrug();
|
|
|
|
+ ProdAnalysis share = prodAnalysis.getShare();
|
|
|
|
+ double feedCost = Double.parseDouble(feed.getZcb());
|
|
|
|
+ double drugCost = Double.parseDouble(drug.getZcb());
|
|
|
|
+ double shareCost = Double.parseDouble(share.getZcb());
|
|
|
|
+
|
|
|
|
+ double feedRate = 0;
|
|
|
|
+ double drugRate = 0;
|
|
|
|
+ double shareRate = 0;
|
|
|
|
+
|
|
|
|
+ double totalCost = feedCost + drugCost + shareCost;
|
|
|
|
+
|
|
|
|
+ if (totalCost != 0.0) {
|
|
|
|
+ // 计算每个比例(乘以100后四舍五入到整数)
|
|
|
|
+ feedRate = Math.round((feedCost / totalCost) * 100);
|
|
|
|
+ drugRate = Math.round((drugCost / totalCost) * 100);
|
|
|
|
+ shareRate = Math.round((shareCost / totalCost) * 100);
|
|
|
|
+
|
|
|
|
+ // 确保比例的总和为100
|
|
|
|
+ double sum = feedRate + drugRate + shareRate;
|
|
|
|
+
|
|
|
|
+ if (sum != 100.0) {
|
|
|
|
+ // 如果总和不为100,调整比例以使其总和等于100
|
|
|
|
+ double diff = 100.0 - sum;
|
|
|
|
+
|
|
|
|
+ // 将差异添加到小数部分最大的比例
|
|
|
|
+ if (feedRate % 1 > drugRate % 1 && feedRate % 1 > shareRate % 1) {
|
|
|
|
+ feedRate += diff;
|
|
|
|
+ } else if (drugRate % 1 > feedRate % 1 && drugRate % 1 > shareRate % 1) {
|
|
|
|
+ drugRate += diff;
|
|
|
|
+ } else {
|
|
|
|
+ shareRate += diff;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
feed.setCreatTime(new Date());
|
|
feed.setCreatTime(new Date());
|
|
feed.setFarmId(Integer.valueOf(farmId));
|
|
feed.setFarmId(Integer.valueOf(farmId));
|
|
- ProdAnalysis drug = prodAnalysis.getDrug();
|
|
|
|
|
|
+ feed.setFeedCost(String.valueOf(feedRate));
|
|
|
|
+ feed.setShareCost(String.valueOf(shareRate));
|
|
|
|
+ feed.setVaccineCost(String.valueOf(drugRate));
|
|
|
|
+
|
|
drug.setFarmId(Integer.valueOf(farmId));
|
|
drug.setFarmId(Integer.valueOf(farmId));
|
|
drug.setCreatTime(new Date());
|
|
drug.setCreatTime(new Date());
|
|
- ProdAnalysis share = prodAnalysis.getShare();
|
|
|
|
|
|
+ drug.setFeedCost(String.valueOf(feedRate));
|
|
|
|
+ drug.setShareCost(String.valueOf(shareRate));
|
|
|
|
+ drug.setVaccineCost(String.valueOf(drugRate));
|
|
|
|
+
|
|
|
|
+ share.setFeedCost(String.valueOf(feedRate));
|
|
|
|
+ share.setShareCost(String.valueOf(shareRate));
|
|
|
|
+ share.setVaccineCost(String.valueOf(drugRate));
|
|
share.setFarmId(Integer.valueOf(farmId));
|
|
share.setFarmId(Integer.valueOf(farmId));
|
|
share.setCreatTime(new Date());
|
|
share.setCreatTime(new Date());
|
|
List<ProdAnalysis> prodAnalyses = new ArrayList<>();
|
|
List<ProdAnalysis> prodAnalyses = new ArrayList<>();
|
|
@@ -66,4 +112,5 @@ public class ProdAnalysisController {
|
|
prodAnalysisService.saveBatch(prodAnalyses);
|
|
prodAnalysisService.saveBatch(prodAnalyses);
|
|
return Result.SUCCESS();
|
|
return Result.SUCCESS();
|
|
}
|
|
}
|
|
|
|
+
|
|
}
|
|
}
|