Ver código fonte

空亡 纳音 十神 BUG 修改

zhangbin 1 ano atrás
pai
commit
9c6697e2b0

+ 13 - 2
xpgx-admin/src/main/java/com/miaxis/app/controller/gan/GanZhiController.java

@@ -19,6 +19,7 @@ import org.springframework.web.bind.annotation.*;
 import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 【天干地支】Controller
@@ -75,8 +76,12 @@ public class GanZhiController extends BaseController{
         ganZhiDto.setTimeGan(lunar.getTimeGan());
         ganZhiDto.setTimeZhi(lunar.getTimeZhi());
 
+
+        Integer score = ganZhiService.getRiYuanQr(ganZhiDto);
+
+
         List<GanZhiRowVo> ganZhiRowVoList = ganZhiService.selectGanZhiRowVoList(ganZhiDto);
-        List<GanZhiFiveVo> ganZhiFiveVoList = ganZhiService.selectGanZhiFiveVoCount(ganZhiDto);
+        Map<String,Integer> fiveCountMap = ganZhiService.getGanZhiRowVoCount(ganZhiDto);
         List<GanZhiNaYinVo> ganZhiNaYinVoList = ganZhiService.selectGanZhiNaYinList(ganZhiDto);
         List<GanZhiKongWangVo> ganZhiKongWangVoList = ganZhiService.selectGanZhiKongWangList(ganZhiDto);
 
@@ -85,12 +90,18 @@ public class GanZhiController extends BaseController{
         ganZhiVo.setNongDay(lunar.getYear()+"年(生肖"+lunar.getYearShengXiao()+")"+lunar.getMonth()+"月"+lunar.getDay()+"日"+lunar.getTime()+"时");
         ganZhiVo.setBirthDay(ganZhiDto.getBirthDay());
         ganZhiVo.setGanZhiRowVoList(ganZhiRowVoList);
-        ganZhiVo.setGanZhiFiveVoList(ganZhiFiveVoList);
+        ganZhiVo.setFiveCountMap(fiveCountMap);
         ganZhiVo.setGanZhiNaYinVoList(ganZhiNaYinVoList);
         ganZhiVo.setGanZhiKongWangVoList(ganZhiKongWangVoList);
 
         ganZhiVo.setUsername(ganZhiDto.getUsename());
         ganZhiVo.setSex(ganZhiDto.getSex());
+        ganZhiVo.setScore(score);
+        if(score>50){
+            ganZhiVo.setRiYuan("身强");
+        } else {
+            ganZhiVo.setRiYuan("身弱");
+        }
 
         // 输出结果
         return Response.success(ganZhiVo);

+ 56 - 0
xpgx-admin/src/test/java/com/miaxis/test/WuxingRelationship.java

@@ -0,0 +1,56 @@
+package com.miaxis.test;
+
+public class WuxingRelationship {
+
+    public static void main(String[] args) {
+
+        int result9 = generateRelationship("木", "火");
+        System.out.println(result9); // 输出:1
+    }
+
+    public static int generateRelationship(String element1, String element2) {
+        // 五行关系的映射关系
+        String[][] relationships = {
+                //木属性
+                {"木", "火", "1"},    //木生火 = 1
+                {"木", "土", "2"},    //木克土 = 2
+                {"木", "金", "3"},    //木被金克 = 3
+                {"木", "水", "4"},    //木被水生 = 4
+                {"木", "木", "0"},    //木被木生=  0
+                // 火属性
+                {"火", "土", "1"},    //火生土 = 1
+                {"火", "金", "2"},    //火克金 = 2
+                {"火", "水", "3"},    //火被水克 = 3
+                {"火", "木", "4"},    //火被木生 = 4
+                {"火", "火", "0"},    //火被火生 = 0
+                // 土属性的关系
+                {"土", "金", "1"},    //土生金 = 1
+                {"土", "水", "2"},    //土克水 = 2
+                {"土", "木", "3"},    //土被木克 = 3
+                {"土", "火", "4"},    //土被火生 = 4
+                {"土", "土", "0"},    //土被土生 = 0
+                // 金属性的关系
+                {"金", "水", "1"},    //金生水 = 1
+                {"金", "木", "2"},    //金克木 = 2
+                {"金", "火", "3"},    //金被火克 = 3
+                {"金", "土", "4"},    //金被土生 = 4
+                {"金", "金", "0"},    //金被金生 = 0
+                // 水属性的关系
+                {"水", "木", "1"},    //水生木 = 1
+                {"水", "火", "2"},    //水克火 = 2
+                {"水", "土", "3"},    //水被土克 = 3
+                {"水", "金", "4"},    //水被金生 = 4
+                {"水", "水", "0"},    //水被水生 = 0
+        };
+
+        // 查找两个元素之间的关系
+        for (String[] relationship : relationships) {
+            if (relationship[0].equals(element1) && relationship[1].equals(element2)) {
+                return Integer.parseInt(relationship[2]);
+            }
+        }
+
+        // 如果没有找到对应关系,可以返回一个默认值或抛出异常,这里简单返回 -1
+        return -99;
+    }
+}

+ 164 - 3
xpgx-common/src/main/java/com/miaxis/common/config/ShiShenConfig.java

@@ -5,6 +5,8 @@ import lombok.Data;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.PostConstruct;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Map;
 import java.util.TreeMap;
 
@@ -12,7 +14,10 @@ import java.util.TreeMap;
 @Component
 public class ShiShenConfig {
 
-
+    //天干地支颜色
+    private Map<String, String> ganZhiColor = new TreeMap<String, String>();
+    //天干地支五行
+    private Map<String, String> ganZhiFive = new TreeMap<String, String>();
     //正印
     private Map<String, String> zhengYin = new TreeMap<String, String>();
     //食神
@@ -49,9 +54,62 @@ public class ShiShenConfig {
     private Map<String, String> naYin = new TreeMap<String, String>();
 
 
+    //喜用
+    private Map<String, List> xiYong = new TreeMap<String, List>();
+
     @PostConstruct
     public void init() {
 
+        //天干地支颜色
+        ganZhiColor.put("甲","绿");
+        ganZhiColor.put("乙","绿");
+        ganZhiColor.put("丙","红");
+        ganZhiColor.put("丁","红");
+        ganZhiColor.put("戊","棕");
+        ganZhiColor.put("己","棕");
+        ganZhiColor.put("庚","橙");
+        ganZhiColor.put("辛","橙");
+        ganZhiColor.put("壬","蓝");
+        ganZhiColor.put("癸","蓝");
+
+        ganZhiColor.put("子","蓝");
+        ganZhiColor.put("丑","棕");
+        ganZhiColor.put("寅","绿");
+        ganZhiColor.put("卯","绿");
+        ganZhiColor.put("辰","棕");
+        ganZhiColor.put("巳","红");
+        ganZhiColor.put("午","红");
+        ganZhiColor.put("未","棕");
+        ganZhiColor.put("申","橙");
+        ganZhiColor.put("酉","橙");
+        ganZhiColor.put("戌","棕");
+        ganZhiColor.put("亥","蓝");
+
+        //天干地支五行
+        ganZhiFive.put("甲","木");
+        ganZhiFive.put("乙","木");
+        ganZhiFive.put("丙","火");
+        ganZhiFive.put("丁","火");
+        ganZhiFive.put("戊","土");
+        ganZhiFive.put("己","土");
+        ganZhiFive.put("庚","金");
+        ganZhiFive.put("辛","金");
+        ganZhiFive.put("壬","水");
+        ganZhiFive.put("癸","水");
+
+        ganZhiFive.put("子","水");
+        ganZhiFive.put("丑","土");
+        ganZhiFive.put("寅","木");
+        ganZhiFive.put("卯","木");
+        ganZhiFive.put("辰","土");
+        ganZhiFive.put("巳","火");
+        ganZhiFive.put("午","火");
+        ganZhiFive.put("未","土");
+        ganZhiFive.put("申","金");
+        ganZhiFive.put("酉","金");
+        ganZhiFive.put("戌","土");
+        ganZhiFive.put("亥","水");
+
         //正印
         zhengYin.put("癸", "甲");
         zhengYin.put("壬", "乙");
@@ -353,10 +411,113 @@ public class ShiShenConfig {
         naYin.put("壬戌", "大海水");
         naYin.put("癸亥", "大海水");
 
+
+        //喜用
+        List<String> muQ = new ArrayList<String>();
+        muQ.add("火");
+        muQ.add("土");
+        xiYong.put("木强",muQ);
+
+        List<String> muR = new ArrayList<String>();
+        muR.add("木");
+        muR.add("水");
+        xiYong.put("木弱",muR);
+
+        List<String> huoQ = new ArrayList<String>();
+        huoQ.add("土");
+        huoQ.add("金");
+        xiYong.put("火强",huoQ);
+
+        List<String> huoR = new ArrayList<String>();
+        huoR.add("火");
+        huoR.add("木");
+        xiYong.put("火弱",huoR);
+
+        List<String> tuQ = new ArrayList<String>();
+        tuQ.add("金");
+        tuQ.add("水");
+        xiYong.put("土强",tuQ);
+
+        List<String> tuR = new ArrayList<String>();
+        tuR.add("土");
+        tuR.add("火");
+        xiYong.put("土弱",tuR);
+
+        List<String> jinQ = new ArrayList<String>();
+        jinQ.add("水");
+        jinQ.add("木");
+        xiYong.put("金强",jinQ);
+
+        List<String> jinR = new ArrayList<String>();
+        jinR.add("金");
+        jinR.add("土");
+        xiYong.put("金弱",jinR);
+
+        List<String> shuiQ = new ArrayList<String>();
+        shuiQ.add("木");
+        shuiQ.add("火");
+        xiYong.put("水强",shuiQ);
+
+        List<String> shuiR = new ArrayList<String>();
+        shuiR.add("水");
+        shuiR.add("金");
+        xiYong.put("水弱",shuiR);
+
     }
 
-    public Map<String, String> getShiShen() {
-        return shiShen;
+
+
+
+    public static int generateRelationship(String element1, String element2) {
+        // 五行关系的映射关系
+        String[][] relationships = {
+                //木属性
+                {"木", "火", "1"},    //木生火 = 1
+                {"木", "土", "2"},    //木克土 = 2
+                {"木", "金", "3"},    //木被金克 = 3
+                {"木", "水", "4"},    //木被水生 = 4
+                {"木", "木", "0"},    //木被木生=  0
+                // 火属性
+                {"火", "土", "1"},    //火生土 = 1
+                {"火", "金", "2"},    //火克金 = 2
+                {"火", "水", "3"},    //火被水克 = 3
+                {"火", "木", "4"},    //火被木生 = 4
+                {"火", "火", "0"},    //火被火生 = 0
+                // 土属性的关系
+                {"土", "金", "1"},    //土生金 = 1
+                {"土", "水", "2"},    //土克水 = 2
+                {"土", "木", "3"},    //土被木克 = 3
+                {"土", "火", "4"},    //土被火生 = 4
+                {"土", "土", "0"},    //土被土生 = 0
+                // 金属性的关系
+                {"金", "水", "1"},    //金生水 = 1
+                {"金", "木", "2"},    //金克木 = 2
+                {"金", "火", "3"},    //金被火克 = 3
+                {"金", "土", "4"},    //金被土生 = 4
+                {"金", "金", "0"},    //金被金生 = 0
+                // 水属性的关系
+                {"水", "木", "1"},    //水生木 = 1
+                {"水", "火", "2"},    //水克火 = 2
+                {"水", "土", "3"},    //水被土克 = 3
+                {"水", "金", "4"},    //水被金生 = 4
+                {"水", "水", "0"},    //水被水生 = 0
+        };
+
+        // 查找两个元素之间的关系
+        for (String[] relationship : relationships) {
+            if (relationship[0].equals(element1) && relationship[1].equals(element2)) {
+                int result = Integer.parseInt(relationship[2]);
+                if(result == 1 || result == 2 || result == 3) { //减分
+                    return -1;
+                } else if(result == 4 || result == 0) {    //加减
+                    return 1;
+                }
+            }
+        }
+        // 如果没有找到对应关系,可以返回一个默认值或抛出异常,这里简单返回 -1
+        return -99;
     }
 
+
+
 }

+ 2 - 2
xpgx-service/src/main/java/com/miaxis/gan/dto/GanZhiDto.java

@@ -24,8 +24,8 @@ public class GanZhiDto {
     @ApiModelProperty(value = "性别 1:男  2:女")
     private Integer sex;
 
-    @ApiModelProperty(value = "出生日期")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss.SSS")
+    @ApiModelProperty(value = "出生日期 yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date birthDay;
 
     @ApiModelProperty(value = "是否保存 0:不保存 1保存")

+ 5 - 2
xpgx-service/src/main/java/com/miaxis/gan/service/IGanZhiService.java

@@ -1,6 +1,8 @@
 package com.miaxis.gan.service;
 
 import java.util.List;
+import java.util.Map;
+
 import com.miaxis.gan.domain.GanZhi;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.miaxis.gan.dto.GanZhiDto;
@@ -26,10 +28,11 @@ public interface IGanZhiService extends IService<GanZhi>{
 
     List<GanZhiRowVo> selectGanZhiRowVoList(GanZhiDto ganZhiDto);
 
-    List<GanZhiFiveVo> selectGanZhiFiveVoCount(GanZhiDto ganZhiDto);
-
     List<GanZhiNaYinVo> selectGanZhiNaYinList(GanZhiDto ganZhiDto);
 
     List<GanZhiKongWangVo> selectGanZhiKongWangList(GanZhiDto ganZhiDto);
 
+    Integer getRiYuanQr(GanZhiDto ganZhiDto);
+
+    Map<String,Integer> getGanZhiRowVoCount(GanZhiDto ganZhiDto);
 }

+ 226 - 53
xpgx-service/src/main/java/com/miaxis/gan/service/impl/GanZhiServiceImpl.java

@@ -1,6 +1,7 @@
 package com.miaxis.gan.service.impl;
 
 import java.util.*;
+import java.util.concurrent.atomic.AtomicBoolean;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.miaxis.common.config.ShiShenConfig;
@@ -44,19 +45,14 @@ public class GanZhiServiceImpl extends ServiceImpl<GanZhiMapper, GanZhi> impleme
     @Override
     public List<GanZhiRowVo> selectGanZhiRowVoList(GanZhiDto ganZhiDto) {
 
-
-        List<GanZhiRowVo> list = ganZhiMapper.selectGanZhiRowVoList(ganZhiDto);
-
-
-        if (ganZhiDto.getSex()==1) {
+        List<GanZhiRowVo> list = this.getGanZhiRowVoList(ganZhiDto);
+        System.out.println(list);
+        if (ganZhiDto.getSex() == 1) {
             list.get(4).setShiShen1("元男");
-        } else if (ganZhiDto.getSex()==2) {
+        } else if (ganZhiDto.getSex() == 2) {
             list.get(4).setShiShen1("元女");
         }
 
-
-
-
         /*-----------------------十神 开始-------------------*/
         for (int i = 0; i < list.size(); i++) {
 
@@ -106,7 +102,7 @@ public class GanZhiServiceImpl extends ServiceImpl<GanZhiMapper, GanZhi> impleme
 
             }
 
-            if ((i == 1 || i == 3 || i == 5 || i == 7) && i != 4){   //地支
+            if ((i == 1 || i == 3 || i == 5 || i == 7) && i != 4) {   //地支
 
                 String benQi = shiShenConfig.getBenQi().get(list.get(i).getName());    //戊
                 String zhongQi = shiShenConfig.getZhongQi().get(list.get(i).getName()); //乙
@@ -118,13 +114,13 @@ public class GanZhiServiceImpl extends ServiceImpl<GanZhiMapper, GanZhi> impleme
                 String zhengYinYuQi = (yuQi != null) ? shiShenConfig.getZhengYin().get(yuQi) : null; //正印余气
 
                 if (StringUtils.isNotEmpty(zhengYinBenQi) && list.get(4).getName().equals(zhengYinBenQi)) { //比对出正印
-                    list.get(i).setShiShen1(benQi+"(正印)");
+                    list.get(i).setShiShen1(benQi + "(正印)");
                 }
                 if (StringUtils.isNotEmpty(zhengYinZhongQi) && list.get(4).getName().equals(zhengYinZhongQi)) { //比对出正印
-                    list.get(i).setShiShen2(zhongQi+"(正印)");
+                    list.get(i).setShiShen2(zhongQi + "(正印)");
                 }
                 if (StringUtils.isNotEmpty(zhengYinYuQi) && list.get(4).getName().equals(zhengYinYuQi)) { //比对出正印
-                    list.get(i).setShiShen3(yuQi+"(正印)");
+                    list.get(i).setShiShen3(yuQi + "(正印)");
                 }
 
 
@@ -134,13 +130,13 @@ public class GanZhiServiceImpl extends ServiceImpl<GanZhiMapper, GanZhi> impleme
                 String shiShenYuQi = (yuQi != null) ? shiShenConfig.getShiShen().get(yuQi) : null; //食神余气
 
                 if (StringUtils.isNotEmpty(shiShenBenQi) && list.get(4).getName().equals(shiShenBenQi)) { //比对出食神
-                    list.get(i).setShiShen1(benQi+"(食神)");
+                    list.get(i).setShiShen1(benQi + "(食神)");
                 }
                 if (StringUtils.isNotEmpty(shiShenZhongQi) && list.get(4).getName().equals(shiShenZhongQi)) { //比对出食神
-                    list.get(i).setShiShen2(zhongQi+"(食神)");
+                    list.get(i).setShiShen2(zhongQi + "(食神)");
                 }
                 if (StringUtils.isNotEmpty(shiShenYuQi) && list.get(4).getName().equals(shiShenYuQi)) { //比对出食神
-                    list.get(i).setShiShen3(yuQi+"(食神)");
+                    list.get(i).setShiShen3(yuQi + "(食神)");
                 }
 
                 /*------------------------正官-----------------------------*/
@@ -149,13 +145,13 @@ public class GanZhiServiceImpl extends ServiceImpl<GanZhiMapper, GanZhi> impleme
                 String zhengGuanYuQi = (yuQi != null) ? shiShenConfig.getZhengGuan().get(yuQi) : null; //正官 余气
 
                 if (StringUtils.isNotEmpty(zhengGuanBenQi) && list.get(4).getName().equals(zhengGuanBenQi)) { //比对出正官
-                    list.get(i).setShiShen1(benQi+"(正官)");
+                    list.get(i).setShiShen1(benQi + "(正官)");
                 }
                 if (StringUtils.isNotEmpty(zhengGuanZhongQi) && list.get(4).getName().equals(zhengGuanZhongQi)) { //比对出正官
-                    list.get(i).setShiShen2(zhongQi+"(正官)");
+                    list.get(i).setShiShen2(zhongQi + "(正官)");
                 }
                 if (StringUtils.isNotEmpty(zhengGuanYuQi) && list.get(4).getName().equals(zhengGuanYuQi)) { //比对出正官
-                    list.get(i).setShiShen3(yuQi+"(正官)");
+                    list.get(i).setShiShen3(yuQi + "(正官)");
                 }
 
                 /*------------------------正财-----------------------------*/
@@ -164,13 +160,13 @@ public class GanZhiServiceImpl extends ServiceImpl<GanZhiMapper, GanZhi> impleme
                 String zhengCaiYuQi = (yuQi != null) ? shiShenConfig.getZhengCai().get(yuQi) : null; //正财余气
 
                 if (StringUtils.isNotEmpty(zhengCaiBenQi) && list.get(4).getName().equals(zhengCaiBenQi)) { //比对出正财
-                    list.get(i).setShiShen1(benQi+"(正财)");
+                    list.get(i).setShiShen1(benQi + "(正财)");
                 }
                 if (StringUtils.isNotEmpty(zhengCaiZhongQi) && list.get(4).getName().equals(zhengCaiZhongQi)) { //比对出正财
-                    list.get(i).setShiShen2(zhongQi+"(正财)");
+                    list.get(i).setShiShen2(zhongQi + "(正财)");
                 }
                 if (StringUtils.isNotEmpty(zhengCaiYuQi) && list.get(4).getName().equals(zhengCaiYuQi)) { //比对出正财
-                    list.get(i).setShiShen3(yuQi+"(正财)");
+                    list.get(i).setShiShen3(yuQi + "(正财)");
                 }
 
 
@@ -180,13 +176,13 @@ public class GanZhiServiceImpl extends ServiceImpl<GanZhiMapper, GanZhi> impleme
                 String qiShaYuQi = (yuQi != null) ? shiShenConfig.getQiSha().get(yuQi) : null; //七杀余气
 
                 if (StringUtils.isNotEmpty(qiShaBenQi) && list.get(4).getName().equals(qiShaBenQi)) { //比对出七杀
-                    list.get(i).setShiShen1(benQi+"(七杀)");
+                    list.get(i).setShiShen1(benQi + "(七杀)");
                 }
                 if (StringUtils.isNotEmpty(qiShaZhongQi) && list.get(4).getName().equals(qiShaZhongQi)) { //比对出七杀
-                    list.get(i).setShiShen2(zhongQi+"(七杀)");
+                    list.get(i).setShiShen2(zhongQi + "(七杀)");
                 }
                 if (StringUtils.isNotEmpty(qiShaYuQi) && list.get(4).getName().equals(qiShaYuQi)) { //比对出七杀
-                    list.get(i).setShiShen3(yuQi+"(七杀)");
+                    list.get(i).setShiShen3(yuQi + "(七杀)");
                 }
 
 
@@ -196,13 +192,13 @@ public class GanZhiServiceImpl extends ServiceImpl<GanZhiMapper, GanZhi> impleme
                 String pianYinYuQi = (yuQi != null) ? shiShenConfig.getPianYin().get(yuQi) : null; //偏印余气
 
                 if (StringUtils.isNotEmpty(pianYinBenQi) && list.get(4).getName().equals(pianYinBenQi)) { //比对出七杀
-                    list.get(i).setShiShen1(benQi+"(偏印)");
+                    list.get(i).setShiShen1(benQi + "(偏印)");
                 }
                 if (StringUtils.isNotEmpty(pianYinZhongQi) && list.get(4).getName().equals(pianYinZhongQi)) { //比对出七杀
-                    list.get(i).setShiShen2(zhongQi+"(偏印)");
+                    list.get(i).setShiShen2(zhongQi + "(偏印)");
                 }
                 if (StringUtils.isNotEmpty(pianYinYuQi) && list.get(4).getName().equals(pianYinYuQi)) { //比对出七杀
-                    list.get(i).setShiShen3(yuQi+"(偏印)");
+                    list.get(i).setShiShen3(yuQi + "(偏印)");
                 }
 
                 /*------------------------伤官-----------------------------*/
@@ -211,13 +207,13 @@ public class GanZhiServiceImpl extends ServiceImpl<GanZhiMapper, GanZhi> impleme
                 String shangGuanYuQi = (yuQi != null) ? shiShenConfig.getShangGuan().get(yuQi) : null; //伤官余气
 
                 if (StringUtils.isNotEmpty(shangGuanBenQi) && list.get(4).getName().equals(shangGuanBenQi)) { //比对出伤官
-                    list.get(i).setShiShen1(benQi+"(伤官)");
+                    list.get(i).setShiShen1(benQi + "(伤官)");
                 }
                 if (StringUtils.isNotEmpty(shangGuanZhongQi) && list.get(4).getName().equals(shangGuanZhongQi)) { //比对出伤官
-                    list.get(i).setShiShen2(zhongQi+"(伤官)");
+                    list.get(i).setShiShen2(zhongQi + "(伤官)");
                 }
                 if (StringUtils.isNotEmpty(shangGuanYuQi) && list.get(4).getName().equals(shangGuanYuQi)) { //比对出伤官
-                    list.get(i).setShiShen3(yuQi+"(伤官)");
+                    list.get(i).setShiShen3(yuQi + "(伤官)");
                 }
 
 
@@ -227,13 +223,13 @@ public class GanZhiServiceImpl extends ServiceImpl<GanZhiMapper, GanZhi> impleme
                 String jieCaiYuQi = (yuQi != null) ? shiShenConfig.getJieCai().get(yuQi) : null; //劫财余气
 
                 if (StringUtils.isNotEmpty(jieCaiBenQi) && list.get(4).getName().equals(jieCaiBenQi)) { //比对出劫财
-                    list.get(i).setShiShen1(benQi+"(劫财)");
+                    list.get(i).setShiShen1(benQi + "(劫财)");
                 }
                 if (StringUtils.isNotEmpty(jieCaiZhongQi) && list.get(4).getName().equals(jieCaiZhongQi)) { //比对出劫财
-                    list.get(i).setShiShen2(zhongQi+"(劫财)");
+                    list.get(i).setShiShen2(zhongQi + "(劫财)");
                 }
                 if (StringUtils.isNotEmpty(jieCaiYuQi) && list.get(4).getName().equals(jieCaiYuQi)) { //比对出劫财
-                    list.get(i).setShiShen3(yuQi+"(劫财)");
+                    list.get(i).setShiShen3(yuQi + "(劫财)");
                 }
 
                 /*------------------------比肩-----------------------------*/
@@ -242,13 +238,13 @@ public class GanZhiServiceImpl extends ServiceImpl<GanZhiMapper, GanZhi> impleme
                 String biJianYuQi = (yuQi != null) ? shiShenConfig.getBiJian().get(yuQi) : null; //比肩余气
 
                 if (StringUtils.isNotEmpty(biJianBenQi) && list.get(4).getName().equals(biJianBenQi)) {
-                    list.get(i).setShiShen1(benQi+"(比肩)");
+                    list.get(i).setShiShen1(benQi + "(比肩)");
                 }
                 if (StringUtils.isNotEmpty(biJianZhongQi) && list.get(4).getName().equals(biJianZhongQi)) {
-                    list.get(i).setShiShen2(zhongQi+"(比肩)");
+                    list.get(i).setShiShen2(zhongQi + "(比肩)");
                 }
                 if (StringUtils.isNotEmpty(biJianYuQi) && list.get(4).getName().equals(biJianYuQi)) {
-                    list.get(i).setShiShen3(yuQi+"(比肩)");
+                    list.get(i).setShiShen3(yuQi + "(比肩)");
                 }
 
                 /*------------------------偏财-----------------------------*/
@@ -257,13 +253,13 @@ public class GanZhiServiceImpl extends ServiceImpl<GanZhiMapper, GanZhi> impleme
                 String pianCaiYuQi = (yuQi != null) ? shiShenConfig.getPianCai().get(yuQi) : null; //偏财余气
 
                 if (StringUtils.isNotEmpty(pianCaiBenQi) && list.get(4).getName().equals(pianCaiBenQi)) { //比对出偏财
-                    list.get(i).setShiShen1(benQi+"(偏财)");
+                    list.get(i).setShiShen1(benQi + "(偏财)");
                 }
                 if (StringUtils.isNotEmpty(pianCaiZhongQi) && list.get(4).getName().equals(pianCaiZhongQi)) { //比对出偏财
-                    list.get(i).setShiShen2(zhongQi+"(偏财)");
+                    list.get(i).setShiShen2(zhongQi + "(偏财)");
                 }
                 if (StringUtils.isNotEmpty(pianCaiYuQi) && list.get(4).getName().equals(pianCaiYuQi)) { //比对出偏财
-                    list.get(i).setShiShen3(yuQi+"(偏财)");
+                    list.get(i).setShiShen3(yuQi + "(偏财)");
                 }
 
             }
@@ -271,21 +267,19 @@ public class GanZhiServiceImpl extends ServiceImpl<GanZhiMapper, GanZhi> impleme
 
         }
         /*-----------------------十神 结束-------------------*/
+
+
         return list;
     }
 
-    @Override
-    public List<GanZhiFiveVo> selectGanZhiFiveVoCount(GanZhiDto ganZhiDto) {
-        return ganZhiMapper.selectGanZhiFiveVoCount(ganZhiDto);
-    }
 
     @Override
     public List<GanZhiNaYinVo> selectGanZhiNaYinList(GanZhiDto ganZhiDto) {
 
-        String yearZhuNaYinKey = ganZhiDto.getYearGan()+ganZhiDto.getYearZhi();
-        String monthZhuNaYinKey = ganZhiDto.getMonthGan()+ganZhiDto.getMonthZhi();
-        String dayZhuNaYinKey = ganZhiDto.getDayGan()+ganZhiDto.getDayZhi();
-        String timeZhuNaYinKey = ganZhiDto.getTimeGan()+ganZhiDto.getTimeZhi();
+        String yearZhuNaYinKey = ganZhiDto.getYearGan() + ganZhiDto.getYearZhi();
+        String monthZhuNaYinKey = ganZhiDto.getMonthGan() + ganZhiDto.getMonthZhi();
+        String dayZhuNaYinKey = ganZhiDto.getDayGan() + ganZhiDto.getDayZhi();
+        String timeZhuNaYinKey = ganZhiDto.getTimeGan() + ganZhiDto.getTimeZhi();
 
         String yearZhuNaYin = shiShenConfig.getNaYin().get(yearZhuNaYinKey);
         String monthZhuNaYin = shiShenConfig.getNaYin().get(monthZhuNaYinKey);
@@ -317,10 +311,10 @@ public class GanZhiServiceImpl extends ServiceImpl<GanZhiMapper, GanZhi> impleme
     @Override
     public List<GanZhiKongWangVo> selectGanZhiKongWangList(GanZhiDto ganZhiDto) {
 
-        String yearZhuKongWangKey = ganZhiDto.getYearGan()+ganZhiDto.getYearZhi();
-        String monthZhuKongWangKey = ganZhiDto.getMonthGan()+ganZhiDto.getMonthZhi();
-        String dayZhuNaKongWangKey = ganZhiDto.getDayGan()+ganZhiDto.getDayZhi();
-        String timeZhuNaKongWangKey = ganZhiDto.getTimeGan()+ganZhiDto.getTimeZhi();
+        String yearZhuKongWangKey = ganZhiDto.getYearGan() + ganZhiDto.getYearZhi();
+        String monthZhuKongWangKey = ganZhiDto.getMonthGan() + ganZhiDto.getMonthZhi();
+        String dayZhuNaKongWangKey = ganZhiDto.getDayGan() + ganZhiDto.getDayZhi();
+        String timeZhuNaKongWangKey = ganZhiDto.getTimeGan() + ganZhiDto.getTimeZhi();
 
         String yearZhuKongWang = shiShenConfig.getKongWang().get(yearZhuKongWangKey);
         String monthZhuKongWang = shiShenConfig.getKongWang().get(monthZhuKongWangKey);
@@ -348,4 +342,183 @@ public class GanZhiServiceImpl extends ServiceImpl<GanZhiMapper, GanZhi> impleme
         return list;
     }
 
-}
+    @Override
+    public Integer getRiYuanQr(GanZhiDto ganZhiDto) {
+        /*-------------------日元身强身弱---------------------*/
+        List<GanZhiRowVo> list = this.getGanZhiRowVoList(ganZhiDto);
+        int yearGanQR = ShiShenConfig.generateRelationship(list.get(4).getFive(), list.get(0).getFive());
+        int yearZhiQR = ShiShenConfig.generateRelationship(list.get(4).getFive(), list.get(1).getFive());
+        int monthGanQR = ShiShenConfig.generateRelationship(list.get(4).getFive(), list.get(2).getFive());
+        int monthZhiQR = ShiShenConfig.generateRelationship(list.get(4).getFive(), list.get(3).getFive());
+        //     int dayGanQR = ShiShenConfig.generateRelationship(list.get(4).getFive(),list.get(4).getFive());
+        int dayZhiQR = ShiShenConfig.generateRelationship(list.get(4).getFive(), list.get(5).getFive());
+        int timeGanQR = ShiShenConfig.generateRelationship(list.get(4).getFive(), list.get(6).getFive());
+        int timeZhiQR = ShiShenConfig.generateRelationship(list.get(4).getFive(), list.get(7).getFive());
+
+        int score = 0;
+        if (yearGanQR > 0) {
+            score += 8;
+        }
+        if (yearZhiQR > 0) {
+            score += 4;
+        }
+        if (monthGanQR > 0) {
+            score += 12;
+        }
+        if (monthZhiQR > 0) {
+            score += 40;
+        }
+        if (dayZhiQR > 0) {
+            score += 12;
+        }
+        if (timeGanQR > 0) {
+            score += 12;
+        }
+        if (timeZhiQR > 0) {
+            score += 12;
+        }
+
+        List<String> xiYong = null;
+        if (score > 50) {
+            String fiveQr = list.get(4).getFive() + "强";
+            xiYong = shiShenConfig.getXiYong().get(fiveQr);
+        } else {
+            String fiveQr = list.get(4).getFive() + "弱";
+            xiYong = shiShenConfig.getXiYong().get(fiveQr);
+        }
+        String xi1 = xiYong.get(0);
+        String xi2 = xiYong.get(1);
+
+
+        Map<String,Integer> fiveCountMap = this.getGanZhiRowVoCount(ganZhiDto);
+        int xi1Count = fiveCountMap.get(xi1);
+        int xi2Count = fiveCountMap.get(xi2);
+
+        if(xi1Count>3){
+            xiYong.remove(xi1);
+        }
+        if(xi2Count>3){
+            xiYong.remove(xi2);
+        }
+
+        System.out.println("喜用:" + xiYong);
+
+        return score;
+    }
+
+
+    /**
+     * 干支组装
+     *
+     * @param ganZhiDto
+     * @return
+     */
+    private List<GanZhiRowVo> getGanZhiRowVoList(GanZhiDto ganZhiDto) {
+
+        String yearGanFive = shiShenConfig.getGanZhiFive().get(ganZhiDto.getYearGan());
+        String yearZhiFive = shiShenConfig.getGanZhiFive().get(ganZhiDto.getYearZhi());
+        String monthGanFive = shiShenConfig.getGanZhiFive().get(ganZhiDto.getMonthGan());
+        String monthZhiFive = shiShenConfig.getGanZhiFive().get(ganZhiDto.getMonthZhi());
+        String dayGanFive = shiShenConfig.getGanZhiFive().get(ganZhiDto.getDayGan());
+        String dayZhiFive = shiShenConfig.getGanZhiFive().get(ganZhiDto.getDayZhi());
+        String timeGanFive = shiShenConfig.getGanZhiFive().get(ganZhiDto.getTimeGan());
+        String timeZhiFive = shiShenConfig.getGanZhiFive().get(ganZhiDto.getTimeZhi());
+
+
+        String yearGanColor = shiShenConfig.getGanZhiColor().get(ganZhiDto.getYearGan());
+        String yearZhiColor = shiShenConfig.getGanZhiColor().get(ganZhiDto.getYearZhi());
+        String monthGanColor = shiShenConfig.getGanZhiColor().get(ganZhiDto.getMonthGan());
+        String monthZhiColor = shiShenConfig.getGanZhiColor().get(ganZhiDto.getMonthZhi());
+        String dayGanColor = shiShenConfig.getGanZhiColor().get(ganZhiDto.getDayGan());
+        String dayZhiColor = shiShenConfig.getGanZhiColor().get(ganZhiDto.getDayZhi());
+        String timeGanColor = shiShenConfig.getGanZhiColor().get(ganZhiDto.getTimeGan());
+        String timeZhiColor = shiShenConfig.getGanZhiColor().get(ganZhiDto.getTimeZhi());
+
+        GanZhiRowVo yearGan = new GanZhiRowVo();
+        yearGan.setGongWei("年干");
+        yearGan.setFive(yearGanFive);
+        yearGan.setColor(yearGanColor);
+        yearGan.setName(ganZhiDto.getYearGan());
+
+        GanZhiRowVo yearZhi = new GanZhiRowVo();
+        yearZhi.setGongWei("年支");
+        yearZhi.setFive(yearZhiFive);
+        yearZhi.setColor(yearZhiColor);
+        yearZhi.setName(ganZhiDto.getYearZhi());
+
+        GanZhiRowVo monthGan = new GanZhiRowVo();
+        monthGan.setGongWei("月干");
+        monthGan.setFive(monthGanFive);
+        monthGan.setColor(monthGanColor);
+        monthGan.setName(ganZhiDto.getMonthGan());
+
+
+        GanZhiRowVo monthZhi = new GanZhiRowVo();
+        monthZhi.setGongWei("月支");
+        monthZhi.setFive(monthZhiFive);
+        monthZhi.setColor(monthZhiColor);
+        monthZhi.setName(ganZhiDto.getMonthZhi());
+
+        GanZhiRowVo dayGan = new GanZhiRowVo();
+        dayGan.setGongWei("日干");
+        dayGan.setFive(dayGanFive);
+        dayGan.setColor(dayGanColor);
+        dayGan.setName(ganZhiDto.getDayGan());
+
+
+        GanZhiRowVo dayZhi = new GanZhiRowVo();
+        dayZhi.setGongWei("日支");
+        dayZhi.setFive(dayZhiFive);
+        dayZhi.setColor(dayZhiColor);
+        dayZhi.setName(ganZhiDto.getDayZhi());
+
+        GanZhiRowVo timeGan = new GanZhiRowVo();
+        timeGan.setGongWei("时干");
+        timeGan.setFive(timeGanFive);
+        timeGan.setColor(timeGanColor);
+        timeGan.setName(ganZhiDto.getTimeGan());
+
+        GanZhiRowVo timeZhi = new GanZhiRowVo();
+        timeZhi.setGongWei("时支");
+        timeZhi.setFive(timeZhiFive);
+        timeZhi.setColor(timeZhiColor);
+        timeZhi.setName(ganZhiDto.getDayZhi());
+
+        List<GanZhiRowVo> list = new ArrayList<GanZhiRowVo>();
+        list.add(yearGan);
+        list.add(yearZhi);
+        list.add(monthGan);
+        list.add(monthZhi);
+        list.add(dayGan);
+        list.add(dayZhi);
+        list.add(timeGan);
+        list.add(timeZhi);
+
+        return list;
+    }
+
+    /**
+     * 获取五行数量
+     * @param ganZhiDto
+     * @return
+     */
+    @Override
+    public Map<String,Integer> getGanZhiRowVoCount(GanZhiDto ganZhiDto) {
+
+        Map<String,Integer> fiveCount = new TreeMap<String,Integer>();
+        fiveCount.put("木",0);
+        fiveCount.put("火",0);
+        fiveCount.put("土",0);
+        fiveCount.put("金",0);
+        fiveCount.put("水",0);
+
+        List<GanZhiRowVo> list = this.getGanZhiRowVoList(ganZhiDto);
+        for (int i = 0; i < list.size() ; i++) {
+            String five = list.get(i).getFive();
+            Integer fiveC = fiveCount.get(five)+1;
+            fiveCount.put(five,fiveC);
+        }
+        return fiveCount;
+    }
+
+}

+ 2 - 4
xpgx-service/src/main/java/com/miaxis/gan/vo/GanZhiRowVo.java

@@ -7,6 +7,8 @@ import lombok.Data;
 @Data
 public class GanZhiRowVo {
 
+    @ApiModelProperty(value = "宫位")
+    private String gongWei;
     @ApiModelProperty(value = "干支名")
     private String name;
     @ApiModelProperty(value = "颜色")
@@ -25,9 +27,5 @@ public class GanZhiRowVo {
     @ApiModelProperty(value = "十神2",hidden = true)
     private String shiShen3;
 
-    @ApiModelProperty(value = "纳音",hidden = true)
-    private String naYin;
-    @ApiModelProperty(value = "空亡",hidden = true)
-    private String kongWang;
 
 }

+ 8 - 1
xpgx-service/src/main/java/com/miaxis/gan/vo/GanZhiVo.java

@@ -6,6 +6,7 @@ import lombok.Data;
 
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 天干地支对象 gan_zhi
@@ -32,11 +33,17 @@ public class GanZhiVo {
     @ApiModelProperty(value = "(农历)出生日期")
     private String nongDay;
 
+    @ApiModelProperty(value = "日元强弱分")
+    private Integer score;
+
+    @ApiModelProperty(value = "日元强弱")
+    private String riYuan;
+
     @ApiModelProperty(value = "八字五行集合")
     private List<GanZhiRowVo> ganZhiRowVoList;
 
     @ApiModelProperty(value = "八字五行个数集合")
-    private List<GanZhiFiveVo> ganZhiFiveVoList;
+    private Map<String,Integer> fiveCountMap;
 
     @ApiModelProperty(value = "八字纳音")
     private List<GanZhiNaYinVo> ganZhiNaYinVoList;