Browse Source

空亡处理

zhangbin 1 year ago
parent
commit
47fadc01b5

+ 10 - 0
xpgx-admin/src/test/java/com/miaxis/test/ReadFileNameTest3.java

@@ -1,9 +1,19 @@
 package com.miaxis.test;
 
+import com.miaxis.common.config.ShiShenConfig;
+
 public class ReadFileNameTest3 {
 
     public static void main(String[] args) {
 
+
+        String dayZhi= "子";
+        String timeZhi = "午";
+
+        boolean flag = ShiShenConfig.areZodiacsChong(dayZhi,timeZhi);
+
+
+        System.out.println(flag);
     }
 
 }

+ 114 - 33
xpgx-common/src/main/java/com/miaxis/common/config/ShiShenConfig.java

@@ -28,6 +28,9 @@ public class ShiShenConfig {
     private final Map<String, String> zhengCai = new TreeMap<String, String>();
     //七杀
     private final Map<String, String> qiSha = new TreeMap<String, String>();
+    private final Map<String, String> qiShaBenQi = new TreeMap<String, String>();
+    private final Map<String, String> qiShaZhongQi = new TreeMap<String, String>();
+    private final Map<String, String> qiShaYuQi = new TreeMap<String, String>();
     //偏印
     private final Map<String, String> pianYin = new TreeMap<String, String>();
     //伤官
@@ -57,6 +60,14 @@ public class ShiShenConfig {
     //藏干 余气
     private final Map<String, String> yuQi = new TreeMap<String, String>();
 
+    //藏干 本气 反查
+    private final Map<String, String> benQiF = new TreeMap<String, String>();
+    //藏干 中气 反查
+    private final Map<String, String> zhongQiF = new TreeMap<String, String>();
+    //藏干 余气 反查
+    private final Map<String, String> yuQiF = new TreeMap<String, String>();
+
+
     //空亡
     private final Map<String, String> kongWang = new TreeMap<String, String>();
 
@@ -137,7 +148,7 @@ public class ShiShenConfig {
     private final List<String> zhangXiangCha = new ArrayList<String>();
 
     //配偶比自己年龄大还是年龄小
-    private final Map<String,String> peiouOld = new TreeMap<String, String>();
+    private final Map<String, String> peiouOld = new TreeMap<String, String>();
 
     //12地支
     private final List<String> dizhi = new ArrayList<String>();
@@ -148,6 +159,7 @@ public class ShiShenConfig {
     //方位对向
     private final Map<String, String> fangWeiDui = new TreeMap<String, String>();
 
+
     @PostConstruct
     public void init() {
 
@@ -262,6 +274,7 @@ public class ShiShenConfig {
         qiSha.put("戊", "壬");
         qiSha.put("己", "癸");
 
+
         //偏印
         pianYin.put("壬", "甲");
         pianYin.put("癸", "乙");
@@ -337,6 +350,19 @@ public class ShiShenConfig {
         benQi.put("酉", "辛");
         benQi.put("戌", "戊");
         benQi.put("亥", "壬");
+        //本气 反查
+        benQiF.put("癸", "子");
+        benQiF.put("己", "丑");
+        benQiF.put("甲", "寅");
+        benQiF.put("乙", "卯");
+        benQiF.put("戊", "辰");
+        benQiF.put("丙", "巳");
+        benQiF.put("丁", "午");
+        benQiF.put("己", "未");
+        benQiF.put("庚", "申");
+        benQiF.put("辛", "酉");
+        benQiF.put("戊", "戌");
+        benQiF.put("壬", "亥");
 
         //中气
         zhongQi.put("丑", "辛");
@@ -348,6 +374,16 @@ public class ShiShenConfig {
         zhongQi.put("申", "壬");
         zhongQi.put("戌", "辛");
         zhongQi.put("亥", "甲");
+        //中气 反查
+        zhongQiF.put("辛", "丑");
+        zhongQiF.put("丙", "寅");
+        zhongQiF.put("乙", "辰");
+        zhongQiF.put("戊", "巳");
+        zhongQiF.put("己", "午");
+        zhongQiF.put("丁", "未");
+        zhongQiF.put("壬", "申");
+        zhongQiF.put("辛", "戌");
+        zhongQiF.put("甲", "亥");
 
         //余气
         yuQi.put("丑", "癸");
@@ -358,6 +394,15 @@ public class ShiShenConfig {
         yuQi.put("申", "戊");
         yuQi.put("戌", "丁");
 
+        //余气 反查
+        yuQiF.put("癸", "丑");
+        yuQiF.put("戊", "寅");
+        yuQiF.put("癸", "辰");
+        yuQiF.put("庚", "巳");
+        yuQiF.put("乙", "未");
+        yuQiF.put("戊", "申");
+        yuQiF.put("丁", "戌");
+
 
         //空亡
         //1甲子旬
@@ -1234,16 +1279,16 @@ public class ShiShenConfig {
         //five.add("金");
         //five.add("水");
 
-        peiouOld.put("伤官","伤官代表了外向才华和才气的发挥,性格外向多情,多才多艺,往往不受世谷礼法的约束,常常违返伦理,不授受长辈批评,我行我素,因此一般来说伤官旺的人,特别喜欢接近年龄差距大的人,一般来说你的另一半年龄要比你大。");
-        peiouOld.put("食神","食神虽没有伤官的那种叛逆,但也不喜欢受到束缚,可以说不论男女都不喜欢官杀的克制,会比较喜欢选择年龄差距大的人来相处。");
-        peiouOld.put("偏财","偏财个性慷慨而圆滑,风流多情,特别是男生,容易接触外面的女性,这些年来的包二奶和婚外情很多是一些贪财旺而透合的人,因些偏财旺的人,其配偶的年龄一般比自己小很多岁。");
-        peiouOld.put("七杀","七杀代表了权威和冒险,有魄力,但也有刚愎自用的一面,在女生中七杀为夫星,适合找年长的丈夫,用兄长般爱护弟妹的感情,使感情上更充实,否则在你的生涯中,在感情方面难免多有纷争或波折,正因为七杀有冒险并且独断专行的一面,反传统,因此你的配偶和你之间的年龄会有较大的差距,对方年龄上会比你大很多。");
-        peiouOld.put("偏印","偏印代表学士才华,虽然十神有偏印的人思想带点奇怪,挑选配偶有点与众不同,不过偏印是克制食神和伤官的,所以你的配偶年龄和你之间差距是比较小的,你们之间一般相差2-3岁。");
-        peiouOld.put("劫财","劫财代表对外的感情,经常隐藏自己的真面目,自我本性潜在,是一种复杂的性格,男人婚后对妻子不够体贴,对外面女人却慷慨。因此寻找配偶的年龄不宜太小,但也不宜太大,2-3岁比较适合。");
-        peiouOld.put("正印","正印代表信誉与学问,虽然温文尔雅,确实容易养成依赖心里,有懒惰的习惯,凡事不愿动手,因此印星旺的人,寻找配偶年龄差距较小,甚至男人的配偶有比自己年纪大的倾向。");
-        peiouOld.put("正官","正官代表地位名望,约束力,做事一板一眼,因此正官较为成熟,你和配偶的年龄差距也不会很大,而你往往会有比配偶大的倾向。");
-        peiouOld.put("正财","正财重视信用,勤劳节俭,安守本分,因此你和配偶年龄差距会很小,同岁或大一岁左右。");
-        peiouOld.put("比肩","比肩代表着对内的感情友谊,性情光明,不过六亲缘分浅薄,男女都不宜早婚,配偶年龄差距也不会很大,一般是在一两岁之间。");
+        peiouOld.put("伤官", "伤官代表了外向才华和才气的发挥,性格外向多情,多才多艺,往往不受世谷礼法的约束,常常违返伦理,不授受长辈批评,我行我素,因此一般来说伤官旺的人,特别喜欢接近年龄差距大的人,一般来说你的另一半年龄要比你大。");
+        peiouOld.put("食神", "食神虽没有伤官的那种叛逆,但也不喜欢受到束缚,可以说不论男女都不喜欢官杀的克制,会比较喜欢选择年龄差距大的人来相处。");
+        peiouOld.put("偏财", "偏财个性慷慨而圆滑,风流多情,特别是男生,容易接触外面的女性,这些年来的包二奶和婚外情很多是一些贪财旺而透合的人,因些偏财旺的人,其配偶的年龄一般比自己小很多岁。");
+        peiouOld.put("七杀", "七杀代表了权威和冒险,有魄力,但也有刚愎自用的一面,在女生中七杀为夫星,适合找年长的丈夫,用兄长般爱护弟妹的感情,使感情上更充实,否则在你的生涯中,在感情方面难免多有纷争或波折,正因为七杀有冒险并且独断专行的一面,反传统,因此你的配偶和你之间的年龄会有较大的差距,对方年龄上会比你大很多。");
+        peiouOld.put("偏印", "偏印代表学士才华,虽然十神有偏印的人思想带点奇怪,挑选配偶有点与众不同,不过偏印是克制食神和伤官的,所以你的配偶年龄和你之间差距是比较小的,你们之间一般相差2-3岁。");
+        peiouOld.put("劫财", "劫财代表对外的感情,经常隐藏自己的真面目,自我本性潜在,是一种复杂的性格,男人婚后对妻子不够体贴,对外面女人却慷慨。因此寻找配偶的年龄不宜太小,但也不宜太大,2-3岁比较适合。");
+        peiouOld.put("正印", "正印代表信誉与学问,虽然温文尔雅,确实容易养成依赖心里,有懒惰的习惯,凡事不愿动手,因此印星旺的人,寻找配偶年龄差距较小,甚至男人的配偶有比自己年纪大的倾向。");
+        peiouOld.put("正官", "正官代表地位名望,约束力,做事一板一眼,因此正官较为成熟,你和配偶的年龄差距也不会很大,而你往往会有比配偶大的倾向。");
+        peiouOld.put("正财", "正财重视信用,勤劳节俭,安守本分,因此你和配偶年龄差距会很小,同岁或大一岁左右。");
+        peiouOld.put("比肩", "比肩代表着对内的感情友谊,性情光明,不过六亲缘分浅薄,男女都不宜早婚,配偶年龄差距也不会很大,一般是在一两岁之间。");
 
         dizhi.add("子");
         dizhi.add("丑");
@@ -1258,28 +1303,27 @@ public class ShiShenConfig {
         dizhi.add("戌");
         dizhi.add("亥");
 
-        dizhiFangWei.put("子","北");
-        dizhiFangWei.put("丑","东北");
-        dizhiFangWei.put("寅","东北");
-        dizhiFangWei.put("卯","东");
-        dizhiFangWei.put("辰","东南");
-        dizhiFangWei.put("巳","东南");
-        dizhiFangWei.put("午","南");
-        dizhiFangWei.put("未","西南");
-        dizhiFangWei.put("申","西南");
-        dizhiFangWei.put("酉","西");
-        dizhiFangWei.put("戌","西北");
-        dizhiFangWei.put("亥","西北");
-
-        fangWeiDui.put("北","南");
-        fangWeiDui.put("南","北");
-        fangWeiDui.put("西","东");
-        fangWeiDui.put("东","西");
-        fangWeiDui.put("东北","西南");
-        fangWeiDui.put("西南","东北");
-        fangWeiDui.put("东南","西北");
-        fangWeiDui.put("西北","东南");
-
+        dizhiFangWei.put("子", "北");
+        dizhiFangWei.put("丑", "东北");
+        dizhiFangWei.put("寅", "东北");
+        dizhiFangWei.put("卯", "东");
+        dizhiFangWei.put("辰", "东南");
+        dizhiFangWei.put("巳", "东南");
+        dizhiFangWei.put("午", "南");
+        dizhiFangWei.put("未", "西南");
+        dizhiFangWei.put("申", "西南");
+        dizhiFangWei.put("酉", "西");
+        dizhiFangWei.put("戌", "西北");
+        dizhiFangWei.put("亥", "西北");
+
+        fangWeiDui.put("北", "南");
+        fangWeiDui.put("南", "北");
+        fangWeiDui.put("西", "东");
+        fangWeiDui.put("东", "西");
+        fangWeiDui.put("东北", "西南");
+        fangWeiDui.put("西南", "东北");
+        fangWeiDui.put("东南", "西北");
+        fangWeiDui.put("西北", "东南");
 
 
     }
@@ -1482,5 +1526,42 @@ public class ShiShenConfig {
         return keWo;
     }
 
+    // 判断两个地支是否相冲
+    public static boolean areZodiacsChong(String zodiac1, String zodiac2) {
+        // 定义相冲关系的数组
+        String[][] chongArray = {
+                {"子", "午"}, {"卯", "酉"}, {"寅", "申"},
+                {"巳", "亥"}, {"辰", "戌"}, {"丑", "未"}
+        };
+
+        // 遍历数组,判断传入的两个地支是否在相冲关系中
+        for (String[] chongPair : chongArray) {
+            if ((chongPair[0].equals(zodiac1) && chongPair[1].equals(zodiac2)) ||
+                    (chongPair[0].equals(zodiac2) && chongPair[1].equals(zodiac1))) {
+                return true; // 相冲关系成立
+            }
+        }
+
+        return false; // 相冲关系不成立
+    }
+
+    // 判断两个天干是否相冲
+    public static boolean areTianGanChong(String tianGan1, String tianGan2) {
+        // 定义相冲关系的数组
+        String[][] chongArray = {
+                {"甲", "庚"}, {"乙", "辛"},
+                {"丙", "壬"}, {"丁", "癸"}
+        };
+
+        // 遍历数组,判断传入的两个地支是否在相冲关系中
+        for (String[] chongPair : chongArray) {
+            if ((chongPair[0].equals(tianGan1) && chongPair[1].equals(tianGan2)) ||
+                    (chongPair[0].equals(tianGan2) && chongPair[1].equals(tianGan1))) {
+                return true; // 相冲关系成立
+            }
+        }
+
+        return false; // 相冲关系不成立
+    }
 
 }

+ 30 - 6
xpgx-service/src/main/java/com/miaxis/gan/service/impl/GanZhiServiceImpl.java

@@ -2542,22 +2542,46 @@ public class GanZhiServiceImpl extends ServiceImpl<GanZhiMapper, GanZhi> impleme
         List<String> xiYongOld = (List<String>) riYuanQrMap.get("xiYongOld");
         List<String> xiYongShiShen = (List<String>) riYuanQrMap.get("xiYongShiShen");
 
+        int x = 1;  //序号
+        Map<Integer, String> ziNvMap = new TreeMap<Integer, String>();
 
         String sex = ganZhiRowVoList.get(4).getShiShen1();
-        String five = ganZhiRowVoList.get(4).getName();
-        if ("元男".equals(sex)) {  //正官=女儿 七杀=儿子
+        String dayGan = ganZhiRowVoList.get(4).getName();
+
+        String dayZhi = ganZhiRowVoList.get(5).getName();
+        String timeZhi = ganZhiRowVoList.get(7).getName();
+
+        boolean dayZhiAndTimeZhi = ShiShenConfig.areZodiacsChong(dayZhi, timeZhi);
+        //时支与日支相冲
+        if (dayZhiAndTimeZhi) {
+            ziNvMap.put(x++,"时支与日支相冲,与子女缘薄");
+        }
+
 
 
-        } else if ("元女".equals(sex)) { //食神
+        if ("元男".equals(sex)) {  //正官=女儿 七杀=儿子
+
 
+        } else if ("元女".equals(sex)) { //食神=女儿 伤官=儿子
+            String dayZhiShiShen1 = ganZhiRowVoList.get(7).getShiShen1();
+            String dayZhiShiShen2 = ganZhiRowVoList.get(7).getShiShen2();
+            String dayZhiShiShen3 = ganZhiRowVoList.get(7).getShiShen3();
+            //劫财
+            if (dayZhiShiShen1 != null && dayZhiShiShen1.contains("劫财")) {
+                ziNvMap.put(x++,"时支落羊刃,子女剖腹产不是顺产");
+            }
+            if (dayZhiShiShen2 != null && dayZhiShiShen2.contains("劫财")) {
+                ziNvMap.put(x++,"时支落羊刃,子女剖腹产不是顺产");
+            }
+            if (dayZhiShiShen3 != null && dayZhiShiShen3.contains("劫财")) {
+                ziNvMap.put(x++,"时支落羊刃,子女剖腹产不是顺产");
+            }
         }
 
 
-        int x = 1;  //序号
         //以下带了三条以上,都不好要孩子。
-        Map<Integer, String> ziNvMap = new TreeMap<Integer, String>();
         //1.子女星空亡 与子女缘薄
-        String dayGan = ganZhiRowVoList.get(5).getName();
+        //    String dayGan = ganZhiRowVoList.get(5).getName();
 
 
         //2.时柱两个字空亡 与子女缘薄