zhangbin hai 1 ano
pai
achega
21a6c32021

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

@@ -8,10 +8,7 @@ import com.miaxis.disease.domain.DiseasePart;
 import com.miaxis.gan.dto.GanZhiDto;
 import com.miaxis.gan.dto.LiuNianDto;
 import com.miaxis.gan.service.IGanZhiService;
-import com.miaxis.gan.vo.GanZhiKongWangVo;
-import com.miaxis.gan.vo.GanZhiNaYinVo;
-import com.miaxis.gan.vo.GanZhiRowVo;
-import com.miaxis.gan.vo.GanZhiVo;
+import com.miaxis.gan.vo.*;
 import com.nlf.calendar.Lunar;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -64,6 +61,8 @@ public class GanZhiController extends BaseController {
 
         Date birthDay = ganZhiDto.getBirthDay();
         Lunar lunar = Lunar.fromDate(birthDay);
+        GanZhiDaYunVo ganZhiDaYunVo = new GanZhiDaYunVo();
+        ganZhiDaYunVo.setLunar(lunar);
         System.out.println("农历:" + lunar.getYear() + "年(生肖" + lunar.getYearShengXiao() + ")" + lunar.getMonth() + "月" + lunar.getDay() + "日" + lunar.getTime() + "时");
 
         // 获取干支纪年
@@ -79,12 +78,11 @@ 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);  //查出日元强弱
+        ganZhiDaYunVo = ganZhiService.getDaYun(ganZhiDto,ganZhiDaYunVo); //月柱节气矫正 取出90年大运
         List<GanZhiRowVo> ganZhiRowVoList = ganZhiService.selectGanZhiRowVoList(ganZhiDto);
+        Map<String, Object> riYuanQrMap = ganZhiService.getRiYuanQr(ganZhiRowVoList);  //查出日元强弱
 
-        String xifangWei = ganZhiService.getXiFangWei(ganZhiDto.getLunar());
+        String xifangWei = ganZhiService.getXiFangWei(ganZhiDaYunVo.getLunar());
 
 
 
@@ -93,18 +91,20 @@ public class GanZhiController extends BaseController {
 
         Map<Integer,String> guoGuanMap = ganZhiService.getGuo3Guan(ganZhiRowVoList,riYuanQrMap.get("qr").toString());
 
-        Map<String, Integer> fiveCountMap = ganZhiService.getGanZhiRowVoCount(ganZhiDto);
+        Map<String, Integer> fiveCountMap = ganZhiService.getGanZhiRowVoCount(ganZhiRowVoList);
+        Map<String, Integer> shiShenCountMap = ganZhiService.getShiShenCount(ganZhiRowVoList);
         List<GanZhiNaYinVo> ganZhiNaYinVoList = ganZhiService.selectGanZhiNaYinList(ganZhiDto);
         List<GanZhiKongWangVo> ganZhiKongWangVoList = ganZhiService.selectGanZhiKongWangList(ganZhiDto);
         Map<String, Object> numberYunMap = ganZhiService.getNumberYun(riYuanQrMap);
-        Map<String, Object> zaoShiCount = ganZhiService.getZaoShiCount(ganZhiDto);
-        List<DiseasePart> diseasePartList = ganZhiService.getJiBing(ganZhiDto);
+        Map<String, Object> zaoShiCount = ganZhiService.getZaoShiCount(ganZhiRowVoList);
+        List<DiseasePart> diseasePartList = ganZhiService.getJiBing(ganZhiRowVoList);
 
         GanZhiVo ganZhiVo = new GanZhiVo();
         ganZhiVo.setNongDay(lunar.getYear() + "年(生肖" + lunar.getYearShengXiao() + ")" + lunar.getMonth() + "月" + lunar.getDay() + "日" + lunar.getTime() + "时");
         ganZhiVo.setBirthDay(ganZhiDto.getBirthDay());
         ganZhiVo.setGanZhiRowVoList(ganZhiRowVoList);
         ganZhiVo.setFiveCountMap(fiveCountMap);
+        ganZhiVo.setShiShenCountMap(shiShenCountMap);
         ganZhiVo.setGanZhiNaYinVoList(ganZhiNaYinVoList);
         ganZhiVo.setGanZhiKongWangVoList(ganZhiKongWangVoList);
 
@@ -114,7 +114,7 @@ public class GanZhiController extends BaseController {
         ganZhiVo.setNumberYunMap(numberYunMap);
         ganZhiVo.setZaoShiMap(zaoShiCount);
         ganZhiVo.setDiseasePartList(diseasePartList);
-        ganZhiVo.setDaYunList(ganZhiDto.getDaYunList());
+        ganZhiVo.setDaYunList(ganZhiDaYunVo.getDaYunList());
         ganZhiVo.setGeJuMap(geJuMap);
         ganZhiVo.setGuoGuanMap(guoGuanMap);
         ganZhiVo.setXiFangWei(xifangWei);

+ 0 - 1
xpgx-admin/src/test/java/com/miaxis/test/GanTest.java

@@ -66,7 +66,6 @@ public class GanTest {
 
         System.out.println(shiShenConfig.getLiushijiazi().get(119));
 
-        ganZhiService.getDaYun(ganZhiDto);
 
     }
 

+ 26 - 81
xpgx-admin/src/test/java/com/miaxis/test/TestBaziDate.java

@@ -15,91 +15,36 @@ public class TestBaziDate {
     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;
+    public static String calculateWuxing(char c) {
+        int code = (int) c;
+
+        // Unicode范围对应五行属性
+        if (code >= 0x4e00 && code <= 0x9fff) {
+            if (code >= 0x4e00 && code <= 0x5fff) {
+                return "木";
+            } else if (code >= 0x6000 && code <= 0x7fff) {
+                return "火";
+            } else if (code >= 0x8000 && code <= 0x9fff) {
+                return "土";
+            } else if (code >= 0x20000 && code <= 0x2a6df) {
+                return "金";
+            } else if (code >= 0x2a700 && code <= 0x2b73f) {
+                return "水";
             }
         }
-        return -1; // 如果找不到,返回-1
+
+        // 其他字符或非汉字返回空
+        return "";
     }
 
-    // 获取支的索引
-    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;
-            }
+    public static void main(String[] args) {
+        char ch = '锴';
+        String wuxing = calculateWuxing(ch);
+        if (!wuxing.isEmpty()) {
+            System.out.println(ch + " 的五行属性是:" + wuxing);
+        } else {
+            System.out.println(ch + " 不是汉字或不在支持的范围内。");
         }
-        return -1; // 如果找不到,返回-1
     }
+
 }

+ 18 - 0
xpgx-common/src/main/java/com/miaxis/common/config/ShiShenConfig.java

@@ -80,6 +80,9 @@ public class ShiShenConfig {
     //八字方位位置坐标
     private Map<Integer,String> position = new TreeMap<Integer,String>();
 
+    //十神缺失
+    private Map<String,String> zeroShiShen = new TreeMap<String,String>();
+
     @PostConstruct
     public void init() {
 
@@ -782,6 +785,21 @@ public class ShiShenConfig {
         position.put(5,"北方");
         position.put(6,"西南方");
         position.put(7,"西北方");
+
+        //缺失十神的性格
+        zeroShiShen.put("正印", "缺少正印,记忆力不太好");
+        zeroShiShen.put("食神", "缺少食神,口才不好,不会放松与吃喝玩乐");
+        zeroShiShen.put("正官", "缺少正官,管不住自己,不好当领导");
+        zeroShiShen.put("正财", "缺少正财,收入不稳定");
+        zeroShiShen.put("七杀", "缺少七杀,执行力差,拖延症");
+        zeroShiShen.put("偏印", "缺少偏印,分析能力较差");
+        zeroShiShen.put("偏财", "缺少偏财,比较吝啬");
+        zeroShiShen.put("伤官", "缺少伤官,上进心不强");
+        zeroShiShen.put("劫财", "缺少劫财,不会利用人,总被人利用");
+        zeroShiShen.put("比肩", "缺少比肩,朋友少,性格孤僻,有点社交恐惧症");
+
+
+
     }
 
 

+ 10 - 15
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.fasterxml.jackson.annotation.JsonIgnore;
 import com.nlf.calendar.Lunar;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -34,37 +35,31 @@ public class GanZhiDto {
     @ApiModelProperty(value = "是否保存 0:不保存 1保存")
     private Integer isSave;
 
-    @ApiModelProperty(value = "年干",hidden = true)
+    @ApiModelProperty(value = "年干", hidden = true)
     private String yearGan;
 
-    @ApiModelProperty(value = "年支",hidden = true)
+    @ApiModelProperty(value = "年支", hidden = true)
     private String yearZhi;
 
-    @ApiModelProperty(value = "月干",hidden = true)
+    @ApiModelProperty(value = "月干", hidden = true)
     private String monthGan;
 
-    @ApiModelProperty(value = "月支",hidden = true)
+    @ApiModelProperty(value = "月支", hidden = true)
     private String monthZhi;
 
-    @ApiModelProperty(value = "日干",hidden = true)
+    @ApiModelProperty(value = "日干", hidden = true)
     private String dayGan;
 
-    @ApiModelProperty(value = "日支",hidden = true)
+    @ApiModelProperty(value = "日支", hidden = true)
     private String dayZhi;
 
-    @ApiModelProperty(value = "时干",hidden = true)
+    @ApiModelProperty(value = "时干", hidden = true)
     private String timeGan;
 
-    @ApiModelProperty(value = "时支",hidden = true)
+    @ApiModelProperty(value = "时支", hidden = true)
     private String timeZhi;
 
-    @ApiModelProperty(value = "最强能量的天干",hidden = true)
+    @ApiModelProperty(value = "最强能量的天干", hidden = true)
     private int maxGan;
 
-    @ApiModelProperty(value = "大运",hidden = true)
-    private List<Map<String, String>> daYunList;
-
-    @ApiModelProperty(value = "农历对象",hidden = true)
-    private Lunar lunar;
-
 }

+ 18 - 10
xpgx-service/src/main/java/com/miaxis/gan/service/IGanZhiService.java

@@ -5,6 +5,7 @@ import com.miaxis.disease.domain.DiseasePart;
 import com.miaxis.gan.domain.GanZhi;
 import com.miaxis.gan.dto.GanZhiDto;
 import com.miaxis.gan.dto.LiuNianDto;
+import com.miaxis.gan.vo.GanZhiDaYunVo;
 import com.miaxis.gan.vo.GanZhiKongWangVo;
 import com.miaxis.gan.vo.GanZhiNaYinVo;
 import com.miaxis.gan.vo.GanZhiRowVo;
@@ -37,17 +38,17 @@ public interface IGanZhiService extends IService<GanZhi>{
 
     /**
      * 日元的强
-     * @param ganZhiDto
+     * @param ganZhiRowVoList
      * @return
      */
-    Map<String,Object> getRiYuanQr(GanZhiDto ganZhiDto);
+    Map<String,Object> getRiYuanQr(List<GanZhiRowVo> ganZhiRowVoList);
 
     /**
      * 疾病
-     * @param ganZhiDto
+     * @param ganZhiRowVoList
      * @return
      */
-    List<DiseasePart> getJiBing(GanZhiDto ganZhiDto);
+    List<DiseasePart> getJiBing(List<GanZhiRowVo> ganZhiRowVoList);
 
     /**
      * 返回喜用数字
@@ -59,18 +60,25 @@ public interface IGanZhiService extends IService<GanZhi>{
 
     /**
      * 获取种五行数量
-     * @param ganZhiDto
+     * @param ganZhiRowVoList
      * @return
      */
-    Map<String,Integer> getGanZhiRowVoCount(GanZhiDto ganZhiDto);
+    Map<String,Integer> getGanZhiRowVoCount(List<GanZhiRowVo> ganZhiRowVoList);
 
+    /**
+     * 获取十神数量
+     * @param ganZhiRowVoList
+     * @return
+     */
+    Map<String, Integer> getShiShenCount(List<GanZhiRowVo> ganZhiRowVoList);
 
     /**
      * 潮湿平衡
-     * @param ganZhiDto
+     * @param ganZhiRowVoList
      * @return
      */
-    Map<String, Object> getZaoShiCount(GanZhiDto ganZhiDto);
+    Map<String, Object> getZaoShiCount(List<GanZhiRowVo> ganZhiRowVoList);
+
 
 
     /**
@@ -78,10 +86,10 @@ public interface IGanZhiService extends IService<GanZhi>{
      * (阳年男子,大运顺行,阴年男子,大运逆行)
      * (阳年女子,大运逆行,阴年女子,大运顺行)
      * @param ganZhiDto
+     * @param ganZhiDaYunVo
      * @return
      */
-    GanZhiDto getDaYun(GanZhiDto ganZhiDto);
-
+    GanZhiDaYunVo getDaYun(GanZhiDto ganZhiDto, GanZhiDaYunVo ganZhiDaYunVo);
 
     /**
      * 根据大运开始查流年

+ 205 - 34
xpgx-service/src/main/java/com/miaxis/gan/service/impl/GanZhiServiceImpl.java

@@ -10,6 +10,7 @@ import com.miaxis.disease.dto.DiseasePartDto;
 import com.miaxis.disease.mapper.DiseasePartMapper;
 import com.miaxis.gan.dto.GanZhiDto;
 import com.miaxis.gan.dto.LiuNianDto;
+import com.miaxis.gan.vo.GanZhiDaYunVo;
 import com.miaxis.gan.vo.GanZhiKongWangVo;
 import com.miaxis.gan.vo.GanZhiNaYinVo;
 import com.miaxis.gan.vo.GanZhiRowVo;
@@ -364,9 +365,8 @@ public class GanZhiServiceImpl extends ServiceImpl<GanZhiMapper, GanZhi> impleme
     }
 
     @Override
-    public Map<String, Object> getRiYuanQr(GanZhiDto ganZhiDto) {
+    public Map<String, Object> getRiYuanQr(List<GanZhiRowVo> list) {
         /*-------------------日元身强身弱---------------------*/
-        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());
@@ -411,7 +411,7 @@ public class GanZhiServiceImpl extends ServiceImpl<GanZhiMapper, GanZhi> impleme
         String xi1 = xiYong.get(0);
         String xi2 = xiYong.get(1);
 
-        Map<String, Integer> fiveCountMap = this.getGanZhiRowVoCount(ganZhiDto);
+        Map<String, Integer> fiveCountMap = this.getGanZhiRowVoCount(list);
         int xi1Count = fiveCountMap.get(xi1);
         int xi2Count = fiveCountMap.get(xi2);
 
@@ -434,8 +434,7 @@ public class GanZhiServiceImpl extends ServiceImpl<GanZhiMapper, GanZhi> impleme
 
 
     @Override
-    public List<DiseasePart> getJiBing(GanZhiDto ganZhiDto) {
-        List<GanZhiRowVo> ganZhiRowVoList = this.selectGanZhiRowVoList(ganZhiDto);
+    public List<DiseasePart> getJiBing(List<GanZhiRowVo> ganZhiRowVoList) {
         String sex = ganZhiRowVoList.get(4).getShiShen1();
 
         String gender = null;
@@ -605,7 +604,7 @@ public class GanZhiServiceImpl extends ServiceImpl<GanZhiMapper, GanZhi> impleme
 
         //五行得出疾病
         List<DiseasePart> fivePartList = new ArrayList<DiseasePart>();
-        Map<String, Integer> fiveCount = this.getGanZhiRowVoCount(ganZhiDto);
+        Map<String, Integer> fiveCount = this.getGanZhiRowVoCount(ganZhiRowVoList);
         for (String key : fiveCount.keySet()) {
             int count = fiveCount.get(key);
             if (count >= 3) {
@@ -658,8 +657,7 @@ public class GanZhiServiceImpl extends ServiceImpl<GanZhiMapper, GanZhi> impleme
      * @return
      */
     @Override
-    public GanZhiDto getDaYun(GanZhiDto ganZhiDto) {
-
+    public GanZhiDaYunVo getDaYun(GanZhiDto ganZhiDto, GanZhiDaYunVo ganZhiDaYunVo) {
         int daYun = 0;
         String tianGan = ganZhiDto.getYearGan();
         String yy = shiShenConfig.getTianGanYY().get(tianGan);
@@ -698,7 +696,7 @@ 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(lunar2.getYearGan() + "," + lunar2.getYearZhi() + "," + lunar2.getMonthGan() + "," + lunar2.getMonthZhi() + "," + lunar2.getDayGan() + "," + lunar2.getDayZhi() + "," + lunar2.getTimeGan() + "," + lunar2.getTimeZhi());
 
             }
         }
@@ -717,12 +715,11 @@ public class GanZhiServiceImpl extends ServiceImpl<GanZhiMapper, GanZhi> impleme
             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());
+            ganZhiDaYunVo.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());
@@ -759,7 +756,7 @@ public class GanZhiServiceImpl extends ServiceImpl<GanZhiMapper, GanZhi> impleme
                     flag = true;
                 }
             }
-            ganZhiDto.setDaYunList(daYunList);
+            ganZhiDaYunVo.setDaYunList(daYunList);
         } else if (daYun == 2) { //大运逆
             int daYunCount = 0;
             double dayDiff = Math.abs(list.get(0).getDaysDifference());
@@ -793,9 +790,9 @@ public class GanZhiServiceImpl extends ServiceImpl<GanZhiMapper, GanZhi> impleme
                     flag = true;
                 }
             }
-            ganZhiDto.setDaYunList(daYunList);
+            ganZhiDaYunVo.setDaYunList(daYunList);
         }
-        return ganZhiDto;
+        return ganZhiDaYunVo;
     }
 
 
@@ -913,11 +910,11 @@ public class GanZhiServiceImpl extends ServiceImpl<GanZhiMapper, GanZhi> impleme
     /**
      * 获取五行数量
      *
-     * @param ganZhiDto
+     * @param list
      * @return
      */
     @Override
-    public Map<String, Integer> getGanZhiRowVoCount(GanZhiDto ganZhiDto) {
+    public Map<String, Integer> getGanZhiRowVoCount(List<GanZhiRowVo> list) {
 
         Map<String, Integer> fiveCount = new TreeMap<String, Integer>();
         fiveCount.put("木", 0);
@@ -926,7 +923,6 @@ public class GanZhiServiceImpl extends ServiceImpl<GanZhiMapper, GanZhi> impleme
         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;
@@ -935,18 +931,194 @@ public class GanZhiServiceImpl extends ServiceImpl<GanZhiMapper, GanZhi> impleme
         return fiveCount;
     }
 
+    /**
+     * 获取十神数量
+     *
+     * @param list
+     * @return
+     */
+    @Override
+    public Map<String, Integer> getShiShenCount(List<GanZhiRowVo> list) {
+
+        Map<String, Integer> shiShenCount = new TreeMap<String, Integer>();
+        shiShenCount.put("正印", 0);
+        shiShenCount.put("食神", 0);
+        shiShenCount.put("正官", 0);
+        shiShenCount.put("正财", 0);
+        shiShenCount.put("七杀", 0);
+        shiShenCount.put("偏印", 0);
+        shiShenCount.put("偏财", 0);
+        shiShenCount.put("伤官", 0);
+        shiShenCount.put("劫财", 0);
+        shiShenCount.put("比肩", 0);
+
+        for (int i = 0; i < list.size(); i++) {
+            String shiShen1 = list.get(i).getShiShen1();
+            String shiShen2 = list.get(i).getShiShen2();
+            String shiShen3 = list.get(i).getShiShen3();
+            //正印
+            if (shiShen1 != null && shiShen1.contains("正印")) {
+                Integer count = shiShenCount.get("正印") + 1;
+                shiShenCount.put("正印", count);
+            }
+            if (shiShen2 != null && shiShen2.contains("正印")) {
+                Integer count = shiShenCount.get("正印") + 1;
+                shiShenCount.put("正印", count);
+            }
+            if (shiShen3 != null && shiShen3.contains("正印")) {
+                Integer count = shiShenCount.get("正印") + 1;
+                shiShenCount.put("正印", count);
+            }
+            //食神
+            if (shiShen1 != null && shiShen1.contains("食神")) {
+                Integer count = shiShenCount.get("食神") + 1;
+                shiShenCount.put("食神", count);
+            }
+            if (shiShen2 != null && shiShen2.contains("食神")) {
+                Integer count = shiShenCount.get("食神") + 1;
+                shiShenCount.put("食神", count);
+            }
+            if (shiShen3 != null && shiShen3.contains("食神")) {
+                Integer count = shiShenCount.get("食神") + 1;
+                shiShenCount.put("食神", count);
+            }
+
+            //正官
+            if (shiShen1 != null && shiShen1.contains("正官")) {
+                Integer count = shiShenCount.get("正官") + 1;
+                shiShenCount.put("正官", count);
+            }
+            if (shiShen2 != null && shiShen2.contains("正官")) {
+                Integer count = shiShenCount.get("正官") + 1;
+                shiShenCount.put("正官", count);
+            }
+            if (shiShen3 != null && shiShen3.contains("正官")) {
+                Integer count = shiShenCount.get("正官") + 1;
+                shiShenCount.put("正官", count);
+            }
+
+            //正财
+            if (shiShen1 != null && shiShen1.contains("正财")) {
+                Integer count = shiShenCount.get("正财") + 1;
+                shiShenCount.put("正财", count);
+            }
+            if (shiShen2 != null && shiShen2.contains("正财")) {
+                Integer count = shiShenCount.get("正财") + 1;
+                shiShenCount.put("正财", count);
+            }
+            if (shiShen3 != null && shiShen3.contains("正财")) {
+                Integer count = shiShenCount.get("正财") + 1;
+                shiShenCount.put("正财", count);
+            }
+
+            //七杀
+            if (shiShen1 != null && shiShen1.contains("七杀")) {
+                Integer count = shiShenCount.get("七杀") + 1;
+                shiShenCount.put("七杀", count);
+            }
+            if (shiShen2 != null && shiShen2.contains("七杀")) {
+                Integer count = shiShenCount.get("七杀") + 1;
+                shiShenCount.put("七杀", count);
+            }
+            if (shiShen3 != null && shiShen3.contains("七杀")) {
+                Integer count = shiShenCount.get("七杀") + 1;
+                shiShenCount.put("七杀", count);
+            }
+
+            //偏印
+            if (shiShen1 != null && shiShen1.contains("偏印")) {
+                Integer count = shiShenCount.get("偏印") + 1;
+                shiShenCount.put("偏印", count);
+            }
+            if (shiShen2 != null && shiShen2.contains("偏印")) {
+                Integer count = shiShenCount.get("偏印") + 1;
+                shiShenCount.put("偏印", count);
+            }
+            if (shiShen3 != null && shiShen3.contains("偏印")) {
+                Integer count = shiShenCount.get("偏印") + 1;
+                shiShenCount.put("偏印", count);
+            }
+
+            //偏财
+            if (shiShen1 != null && shiShen1.contains("偏财")) {
+                Integer count = shiShenCount.get("偏财") + 1;
+                shiShenCount.put("偏财", count);
+            }
+            if (shiShen2 != null && shiShen2.contains("偏财")) {
+                Integer count = shiShenCount.get("偏财") + 1;
+                shiShenCount.put("偏财", count);
+            }
+            if (shiShen3 != null && shiShen3.contains("偏财")) {
+                Integer count = shiShenCount.get("偏财") + 1;
+                shiShenCount.put("偏财", count);
+            }
+
+            //伤官
+            if (shiShen1 != null && shiShen1.contains("伤官")) {
+                Integer count = shiShenCount.get("伤官") + 1;
+                shiShenCount.put("伤官", count);
+            }
+            if (shiShen2 != null && shiShen2.contains("伤官")) {
+                Integer count = shiShenCount.get("伤官") + 1;
+                shiShenCount.put("伤官", count);
+            }
+            if (shiShen3 != null && shiShen3.contains("伤官")) {
+                Integer count = shiShenCount.get("伤官") + 1;
+                shiShenCount.put("伤官", count);
+            }
+
+            //劫财
+            if (shiShen1 != null && shiShen1.contains("劫财")) {
+                Integer count = shiShenCount.get("劫财") + 1;
+                shiShenCount.put("劫财", count);
+            }
+            if (shiShen2 != null && shiShen2.contains("劫财")) {
+                Integer count = shiShenCount.get("劫财") + 1;
+                shiShenCount.put("劫财", count);
+            }
+            if (shiShen3 != null && shiShen3.contains("劫财")) {
+                Integer count = shiShenCount.get("劫财") + 1;
+                shiShenCount.put("劫财", count);
+            }
+
+            //比肩
+            if (shiShen1 != null && shiShen1.contains("比肩")) {
+                Integer count = shiShenCount.get("比肩") + 1;
+                shiShenCount.put("比肩", count);
+            }
+            if (shiShen2 != null && shiShen2.contains("比肩")) {
+                Integer count = shiShenCount.get("比肩") + 1;
+                shiShenCount.put("比肩", count);
+            }
+            if (shiShen3 != null && shiShen3.contains("比肩")) {
+                Integer count = shiShenCount.get("比肩") + 1;
+                shiShenCount.put("比肩", count);
+            }
+
+        }
+        StringBuffer zeroCotent = new StringBuffer();
+        shiShenCount.forEach((key, value) -> {
+            if (value == 0) {
+                zeroCotent.append(shiShenConfig.getZeroShiShen().get(key));
+                zeroCotent.append(";");
+            }
+        });
+        System.out.println(zeroCotent.toString());
+
+        return shiShenCount;
+    }
+
 
     /**
      * 潮湿平衡
      *
-     * @param ganZhiDto
+     * @param list
      * @return
      */
     @Override
-    public Map<String, Object> getZaoShiCount(GanZhiDto ganZhiDto) {
-        List<GanZhiRowVo> list = this.getGanZhiRowVoList(ganZhiDto);
+    public Map<String, Object> getZaoShiCount(List<GanZhiRowVo> list) {
 
-        Map<String, Integer> fiveCount = this.getGanZhiRowVoCount(ganZhiDto);
+        Map<String, Integer> fiveCount = this.getGanZhiRowVoCount(list);
         int huoCount = fiveCount.get("火");
         int shuiCount = fiveCount.get("水");
 
@@ -1468,22 +1640,21 @@ public class GanZhiServiceImpl extends ServiceImpl<GanZhiMapper, GanZhi> impleme
         StringBuffer fangWei = new StringBuffer();
 
         System.out.println(str);
+        str = str.substring(str.indexOf("喜神方位"));
 
-        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]));
+        System.out.println(str);
 
-        return fangWei.toString();
+        fangWei.append(s[14]).append(";");
+        fangWei.append(s[15]).append(";");
+        fangWei.append(s[16]).append(";");
+        fangWei.append(s[17]).append(";");
+        fangWei.append(s[18]).append(";");
+        fangWei.append(s[19]).append(";");
+        fangWei.append(s[20]);
+        System.out.println(fangWei.toString());
+        return str;
 
     }
 
 
-
 }

+ 30 - 0
xpgx-service/src/main/java/com/miaxis/gan/vo/GanZhiDaYunVo.java

@@ -0,0 +1,30 @@
+package com.miaxis.gan.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.miaxis.disease.domain.DiseasePart;
+import com.nlf.calendar.Lunar;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 天干地支对象 gan_zhi
+ *
+ * @author miaxis
+ * @date 2023-11-16
+ */
+@Data
+public class GanZhiDaYunVo {
+
+    private static final long serialVersionUID = 1L;
+
+
+    @ApiModelProperty(value = "大运")
+    private List<Map<String, String>> daYunList;
+
+    @ApiModelProperty(value = "农历对象")
+    private Lunar lunar;
+}

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

@@ -55,6 +55,9 @@ public class GanZhiVo {
     @ApiModelProperty(value = "八字五行个数集合")
     private Map<String,Integer> fiveCountMap;
 
+    @ApiModelProperty(value = "八字十神个数集合")
+    private Map<String,Integer> shiShenCountMap;
+
     @ApiModelProperty(value = "八字燥湿集合")
     private Map<String,Object> zaoShiMap;