zhangbin 1 rok pred
rodič
commit
9e028cc635

+ 5 - 0
xpgx-admin/src/main/java/com/miaxis/app/controller/gan/GanZhiController.java

@@ -79,10 +79,14 @@ public class GanZhiController extends BaseController {
         ganZhiDto.setTimeGan(lunar.getTimeGan());
         ganZhiDto.setTimeZhi(lunar.getTimeZhi());
 
+        ganZhiDto.setLunar(lunar);
         ganZhiDto = ganZhiService.getDaYun(ganZhiDto); //月柱节气矫正 取出90年大运
         Map<String, Object> riYuanQrMap = ganZhiService.getRiYuanQr(ganZhiDto);  //查出日元强弱
         List<GanZhiRowVo> ganZhiRowVoList = ganZhiService.selectGanZhiRowVoList(ganZhiDto);
 
+        String xifangWei = ganZhiService.getXiFangWei(ganZhiDto.getLunar());
+
+
 
         int maxTianGan = ganZhiService.getMaxTianGan(ganZhiDto);  //最出能量最强的天干
         Map<String,String> geJuMap = ganZhiService.getGeJu(ganZhiRowVoList,maxTianGan,riYuanQrMap.get("qr").toString()); //查出八字常见格局
@@ -113,6 +117,7 @@ public class GanZhiController extends BaseController {
         ganZhiVo.setDaYunList(ganZhiDto.getDaYunList());
         ganZhiVo.setGeJuMap(geJuMap);
         ganZhiVo.setGuoGuanMap(guoGuanMap);
+        ganZhiVo.setXiFangWei(xifangWei);
 
         // 输出结果
         return Response.success(ganZhiVo);

+ 105 - 0
xpgx-admin/src/test/java/com/miaxis/test/TestBaziDate.java

@@ -0,0 +1,105 @@
+package com.miaxis.test;
+
+import com.miaxis.common.config.ShiShenConfig;
+import com.miaxis.common.utils.DateUtils;
+import com.nlf.calendar.Lunar;
+import com.nlf.calendar.Solar;
+import com.nlf.calendar.util.LunarUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.Date;
+
+public class TestBaziDate {
+
+    @Autowired
+    private ShiShenConfig shiShenConfig;
+
+
+    public static void main(String[] args) {
+        // 输入八字的年月日时
+        String yearGan = "戊";
+        String yearZhi = "辰";
+        String monthGan = "癸";
+        String monthZhi = "亥";
+        String dayGan = "壬";
+        String dayZhi = "午";
+        String hourGan = "己";
+        String hourZhi = "酉";
+
+        // 计算年月日时对应的年份
+        int year = calculateYear(yearGan, yearZhi);
+        int month = calculateMonth(monthGan, monthZhi);
+        int day = calculateDay(dayGan, dayZhi);
+        int hour = calculateHour(hourGan, hourZhi);
+
+        // 输出结果
+        System.out.println("转换后的年份:" + year);
+        System.out.println("转换后的月份:" + month);
+        System.out.println("转换后的日期:" + day);
+        System.out.println("转换后的小时:" + hour);
+    }
+
+    // 根据干支计算年份
+    private static int calculateYear(String gan, String zhi) {
+        // 这里使用一个简单的规则,实际计算可能需要更多的细节
+        // 例如,甲子年为1984年
+        int baseYear = 1984;
+        int ganIndex = getGanIndex(gan);
+        int zhiIndex = getZhiIndex(zhi);
+        return baseYear + ganIndex * 10 + zhiIndex;
+    }
+
+    // 根据干支计算月份
+    private static int calculateMonth(String gan, String zhi) {
+        // 这里使用一个简单的规则,实际计算可能需要更多的细节
+        // 例如,甲子月为1月
+        int baseMonth = 1;
+        int ganIndex = getGanIndex(gan);
+        int zhiIndex = getZhiIndex(zhi);
+        return baseMonth + ganIndex * 2 + zhiIndex;
+    }
+
+    // 根据干支计算日期
+    private static int calculateDay(String gan, String zhi) {
+        // 这里使用一个简单的规则,实际计算可能需要更多的细节
+        // 例如,甲子日为1号
+        int baseDay = 1;
+        int ganIndex = getGanIndex(gan);
+        int zhiIndex = getZhiIndex(zhi);
+        return baseDay + ganIndex * 2 + zhiIndex;
+    }
+
+    // 根据干支计算小时
+    private static int calculateHour(String gan, String zhi) {
+        // 这里使用一个简单的规则,实际计算可能需要更多的细节
+        // 例如,甲子时为0时
+        int baseHour = 0;
+        int ganIndex = getGanIndex(gan);
+        int zhiIndex = getZhiIndex(zhi);
+        return baseHour + ganIndex * 2 + zhiIndex;
+    }
+
+    // 获取干的索引
+    private static int getGanIndex(String gan) {
+        // 这里简单地假设甲为0,乙为1,以此类推
+        String[] ganArray = {"甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸"};
+        for (int i = 0; i < ganArray.length; i++) {
+            if (gan.equals(ganArray[i])) {
+                return i;
+            }
+        }
+        return -1; // 如果找不到,返回-1
+    }
+
+    // 获取支的索引
+    private static int getZhiIndex(String zhi) {
+        // 这里简单地假设子为0,丑为1,以此类推
+        String[] zhiArray = {"子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥"};
+        for (int i = 0; i < zhiArray.length; i++) {
+            if (zhi.equals(zhiArray[i])) {
+                return i;
+            }
+        }
+        return -1; // 如果找不到,返回-1
+    }
+}

+ 2 - 4
xpgx-admin/src/test/java/com/miaxis/test/TestYear.java

@@ -24,13 +24,14 @@ public class TestYear {
         // 假设使用 cn.6tail 的 lunar 库来转换日期
         Date d1 = DateUtils.parseDate("1996-11-10 11:47:00");
         Lunar lunar = Lunar.fromDate(d1);
+
         //      System.out.println(lunar.toFullString());
         // System.out.println(lunar.getSolar().toFullString());
 
         String str = lunar.toFullString();
         String[] s = str.split(" ");
         for (int i = 0; i < s.length; i++) {
-            System.out.println(s[i]);
+          //  System.out.println(s[i]);
         }
 
         System.out.println(ShiShenConfig.fangWei(s[14]));
@@ -40,7 +41,6 @@ public class TestYear {
         System.out.println(ShiShenConfig.fangWei(s[18]));
         System.out.println(ShiShenConfig.fangWei(s[20]));
 
-
         if (lunar.getJieQi() != null && !"".equals(lunar.getJieQi())) {
             System.out.println("节气:" + lunar.getJieQi());
             //存在节气,判断是否在节气点前
@@ -49,7 +49,6 @@ public class TestYear {
             //不存在节气,正常判断
         }
 
-
         //    System.out.println("公历:"+lunar.getSolar().getYear()+","+lunar.getSolar().getMonth()+","+lunar.getSolar().getDay()+","+lunar.getSolar().getHour());
 
         //   System.out.println("农历:"+lunar.getYear()+","+lunar.getMonth()+","+lunar.getDay()+","+lunar.getTime());
@@ -74,7 +73,6 @@ public class TestYear {
 
         Lunar lunar1 = Lunar.fromYmdHms(1996, 8, 5, 12, 12, 33);
 
-
         System.out.println(lunar1.getMonth());
         System.out.println(lunar.getMonth());
 

+ 1 - 2
xpgx-common/pom.xml

@@ -283,11 +283,10 @@
         <dependency>
             <groupId>cn.6tail</groupId>
             <artifactId>lunar</artifactId>
-            <version>1.2.28</version>
+            <version>1.6.3</version>
         </dependency>
 
 
-
     </dependencies>
 
 </project>

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

@@ -1,6 +1,7 @@
 package com.miaxis.gan.dto;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.nlf.calendar.Lunar;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -63,5 +64,7 @@ public class GanZhiDto {
     @ApiModelProperty(value = "大运",hidden = true)
     private List<Map<String, String>> daYunList;
 
+    @ApiModelProperty(value = "农历对象",hidden = true)
+    private Lunar lunar;
 
 }

+ 3 - 0
xpgx-service/src/main/java/com/miaxis/gan/service/IGanZhiService.java

@@ -8,6 +8,7 @@ import com.miaxis.gan.dto.LiuNianDto;
 import com.miaxis.gan.vo.GanZhiKongWangVo;
 import com.miaxis.gan.vo.GanZhiNaYinVo;
 import com.miaxis.gan.vo.GanZhiRowVo;
+import com.nlf.calendar.Lunar;
 
 import java.util.List;
 import java.util.Map;
@@ -95,4 +96,6 @@ public interface IGanZhiService extends IService<GanZhi>{
     Map<String,String> getGeJu(List<GanZhiRowVo> list, int maxTianGan, String qr);
 
     Map<Integer, String> getGuo3Guan(List<GanZhiRowVo> list, String qr);
+
+    String getXiFangWei(Lunar lunar);
 }

+ 47 - 0
xpgx-service/src/main/java/com/miaxis/gan/service/impl/GanZhiServiceImpl.java

@@ -698,10 +698,31 @@ public class GanZhiServiceImpl extends ServiceImpl<GanZhiMapper, GanZhi> impleme
                 Lunar lunar2 = Lunar.fromDate(d2);
                 ganZhiDto.setMonthGan(lunar2.getMonthGan());
                 ganZhiDto.setMonthZhi(lunar2.getMonthZhi());
+                System.out.println(lunar2.getYearGan()+","+lunar2.getYearZhi()+","+lunar2.getMonthGan()+","+lunar2.getMonthZhi()+","+lunar2.getDayGan()+","+lunar2.getDayZhi()+","+lunar2.getTimeGan()+","+lunar2.getTimeZhi());
+
             }
         }
         System.out.println(ganZhiDto.getYearGan() + "," + ganZhiDto.getYearZhi() + "," + ganZhiDto.getMonthGan() + "," + ganZhiDto.getMonthZhi() + "," + ganZhiDto.getDayGan() + "," + ganZhiDto.getDayZhi() + "," + ganZhiDto.getTimeGan() + "," + ganZhiDto.getTimeZhi());
 
+
+        //在子时生的人,系统直接算到下一天
+        int hours = d1.toInstant().atZone(java.time.ZoneId.systemDefault()).toLocalTime().getHour();
+        if (hours >= 23 || hours < 0) {
+            //判断输入的时间是否是23点以后
+            Calendar calendar = Calendar.getInstance();
+            calendar.setTime(d1);
+            calendar.add(Calendar.HOUR, 1);
+            Date d3 = calendar.getTime();
+            //重新导入
+            Lunar lunar3 = Lunar.fromDate(d3);
+            ganZhiDto.setDayGan(lunar3.getDayGan());
+            ganZhiDto.setDayZhi(lunar3.getDayZhi());
+            ganZhiDto.setLunar(lunar3);
+            System.out.println(lunar3.getYearGan()+","+lunar3.getYearZhi()+","+lunar3.getMonthGan()+","+lunar3.getMonthZhi()+","+lunar3.getDayGan()+","+lunar3.getDayZhi()+","+lunar3.getTimeGan()+","+lunar3.getTimeZhi());
+        }
+
+
+
         if (daYun == 1) { //大运顺
             int daYunCount = 0;
             double dayDiff = Math.abs(list.get(1).getDaysDifference());
@@ -777,6 +798,7 @@ public class GanZhiServiceImpl extends ServiceImpl<GanZhiMapper, GanZhi> impleme
         return ganZhiDto;
     }
 
+
     @Override
     public List<Map<String, String>> getLiuNian(LiuNianDto linNianDto) {
         //yyyy-MM-dd HH:mm:ss
@@ -1439,4 +1461,29 @@ public class GanZhiServiceImpl extends ServiceImpl<GanZhiMapper, GanZhi> impleme
     }
 
 
+    @Override
+    public String getXiFangWei(Lunar lunar) {
+        String str = lunar.toFullString();
+        String[] s = str.split(" ");
+        StringBuffer fangWei = new StringBuffer();
+
+        System.out.println(str);
+
+        System.out.println(s[14]);
+        System.out.println(s[15]);
+        System.out.println(s[16]);
+
+//        fangWei.append(ShiShenConfig.fangWei(s[14]));
+//        fangWei.append(ShiShenConfig.fangWei(s[15]));
+//        fangWei.append(ShiShenConfig.fangWei(s[16]));
+//        fangWei.append(ShiShenConfig.fangWei(s[17]));
+//        fangWei.append(ShiShenConfig.fangWei(s[18]));
+//        fangWei.append(ShiShenConfig.fangWei(s[20]));
+
+        return fangWei.toString();
+
+    }
+
+
+
 }

+ 2 - 0
xpgx-service/src/main/java/com/miaxis/gan/vo/GanZhiVo.java

@@ -67,6 +67,8 @@ public class GanZhiVo {
     @ApiModelProperty(value = "疾病集合")
     private List<DiseasePart> diseasePartList;
 
+    @ApiModelProperty(value = "喜用方位")
+    private String xiFangWei;
 
 
 }