zhangbin 1 tahun lalu
induk
melakukan
52857de4cc
46 mengubah file dengan 5324 tambahan dan 5 penghapusan
  1. 173 0
      nbjk-admin/src/main/java/com/miaxis/app/controller/gan/GanZhiController.java
  2. 1326 0
      nbjk-common/src/main/java/com/miaxis/common/config/ShiShenConfig.java
  3. 2 5
      nbjk-common/src/main/java/com/miaxis/common/core/domain/model/LoginUser.java
  4. 62 0
      nbjk-service/src/main/java/com/miaxis/birthday/domain/BirthdayLog.java
  5. 62 0
      nbjk-service/src/main/java/com/miaxis/birthday/dto/BirthdayLogDto.java
  6. 26 0
      nbjk-service/src/main/java/com/miaxis/birthday/mapper/BirthdayLogMapper.java
  7. 24 0
      nbjk-service/src/main/java/com/miaxis/birthday/service/IBirthdayLogService.java
  8. 56 0
      nbjk-service/src/main/java/com/miaxis/birthday/service/impl/BirthdayLogServiceImpl.java
  9. 53 0
      nbjk-service/src/main/java/com/miaxis/disease/domain/DiseasePart.java
  10. 36 0
      nbjk-service/src/main/java/com/miaxis/disease/dto/DiseasePartDto.java
  11. 24 0
      nbjk-service/src/main/java/com/miaxis/disease/mapper/DiseasePartMapper.java
  12. 23 0
      nbjk-service/src/main/java/com/miaxis/disease/service/IDiseasePartService.java
  13. 34 0
      nbjk-service/src/main/java/com/miaxis/disease/service/impl/DiseasePartServiceImpl.java
  14. 60 0
      nbjk-service/src/main/java/com/miaxis/gan/domain/GanZhi.java
  15. 61 0
      nbjk-service/src/main/java/com/miaxis/gan/dto/GanZhiDto.java
  16. 25 0
      nbjk-service/src/main/java/com/miaxis/gan/dto/LiuNianDto.java
  17. 29 0
      nbjk-service/src/main/java/com/miaxis/gan/mapper/GanZhiMapper.java
  18. 13 0
      nbjk-service/src/main/java/com/miaxis/gan/service/IGanReportService.java
  19. 120 0
      nbjk-service/src/main/java/com/miaxis/gan/service/IGanZhiService.java
  20. 15 0
      nbjk-service/src/main/java/com/miaxis/gan/service/impl/GanReportServiceImpl.java
  21. 2116 0
      nbjk-service/src/main/java/com/miaxis/gan/service/impl/GanZhiServiceImpl.java
  22. 27 0
      nbjk-service/src/main/java/com/miaxis/gan/vo/GanZhiDaYunVo.java
  23. 17 0
      nbjk-service/src/main/java/com/miaxis/gan/vo/GanZhiFiveVo.java
  24. 16 0
      nbjk-service/src/main/java/com/miaxis/gan/vo/GanZhiKongWangVo.java
  25. 16 0
      nbjk-service/src/main/java/com/miaxis/gan/vo/GanZhiNaYinVo.java
  26. 31 0
      nbjk-service/src/main/java/com/miaxis/gan/vo/GanZhiRowVo.java
  27. 94 0
      nbjk-service/src/main/java/com/miaxis/gan/vo/GanZhiVo.java
  28. 54 0
      nbjk-service/src/main/java/com/miaxis/ge/domain/GeJu.java
  29. 33 0
      nbjk-service/src/main/java/com/miaxis/ge/dto/GeJuDto.java
  30. 26 0
      nbjk-service/src/main/java/com/miaxis/ge/mapper/GeJuMapper.java
  31. 22 0
      nbjk-service/src/main/java/com/miaxis/ge/service/IGeJuService.java
  32. 33 0
      nbjk-service/src/main/java/com/miaxis/ge/service/impl/GeJuServiceImpl.java
  33. 91 0
      nbjk-service/src/main/java/com/miaxis/jie/domain/JieQi.java
  34. 28 0
      nbjk-service/src/main/java/com/miaxis/jie/mapper/JieQiMapper.java
  35. 33 0
      nbjk-service/src/main/java/com/miaxis/jie/service/IJieQiService.java
  36. 40 0
      nbjk-service/src/main/java/com/miaxis/jie/service/impl/JieQiServiceImpl.java
  37. 39 0
      nbjk-service/src/main/java/com/miaxis/jie/vo/JieQiVo.java
  38. 41 0
      nbjk-service/src/main/java/com/miaxis/number/domain/NumberYun.java
  39. 25 0
      nbjk-service/src/main/java/com/miaxis/number/mapper/NumberYunMapper.java
  40. 30 0
      nbjk-service/src/main/java/com/miaxis/number/service/INumberYunService.java
  41. 39 0
      nbjk-service/src/main/java/com/miaxis/number/service/impl/NumberYunServiceImpl.java
  42. 37 0
      nbjk-service/src/main/resources/mapper/disease/DiseasePartMapper.xml
  43. 70 0
      nbjk-service/src/main/resources/mapper/gan/GanZhiMapper.xml
  44. 50 0
      nbjk-service/src/main/resources/mapper/ge/GeJuMapper.xml
  45. 55 0
      nbjk-service/src/main/resources/mapper/jie/JieQiMapper.xml
  46. 37 0
      nbjk-service/src/main/resources/mapper/number/NumberYunMapper.xml

+ 173 - 0
nbjk-admin/src/main/java/com/miaxis/app/controller/gan/GanZhiController.java

@@ -0,0 +1,173 @@
+package com.miaxis.app.controller.gan;
+
+import com.miaxis.common.constant.Constants;
+import com.miaxis.common.core.controller.BaseController;
+import com.miaxis.common.core.domain.Response;
+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.*;
+import com.nlf.calendar.Lunar;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
+
+/**
+ * 【天干地支】Controller
+ *
+ * @author miaxis
+ * @date 2023-11-16
+ */
+@RestController
+@RequestMapping(Constants.OPEN_PREFIX + "/gan/zhi")
+@Api(tags = {"【app-天干地支】"})
+public class GanZhiController extends BaseController {
+    @Autowired
+    private IGanZhiService ganZhiService;
+
+
+    /**
+     * 查询天干地支列表
+
+     @GetMapping("/list")
+     @ApiOperation("查询天干地支列表")
+     @ApiImplicitParams({
+     @ApiImplicitParam(name = "pageNum", value = "当前页码", dataType = "int", paramType = "query", required = false),
+     @ApiImplicitParam(name = "pageSize", value = "每页数据量", dataType = "int", paramType = "query", required = false),
+     })
+     public ResponsePageInfo<GanZhi> list(@ModelAttribute GanZhi ganZhi) {
+     startPage();
+     List<GanZhi> list = ganZhiService.selectGanZhiList(ganZhi);
+     return toResponsePageInfo(list);
+     }
+     */
+
+    /**
+     * 查询天干地支列表
+     */
+    @GetMapping("/get8ziByDate")
+    @ApiOperation("干支查询8字")
+    public Response<GanZhiVo> get8ziByDate(@ModelAttribute GanZhiDto ganZhiDto) {
+
+        Map<String, String> reportMap = new TreeMap<String, String>();
+
+
+        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() + "时");
+
+
+        System.out.println(lunar.getYear());   //年
+        System.out.println(lunar.getMonth());   //月
+        System.out.println(lunar.getDay());     //日
+        String time = lunar.getTime().toString().substring(lunar.getTime().toString().length() - 1); //时
+        System.out.println(time);
+
+
+        // 获取干支纪年
+        ganZhiDto.setYearGan(lunar.getYearGan());
+        ganZhiDto.setYearZhi(lunar.getYearZhi());
+
+        ganZhiDto.setMonthGan(lunar.getMonthGan());
+        ganZhiDto.setMonthZhi(lunar.getMonthZhi());
+
+        ganZhiDto.setDayGan(lunar.getDayGan());
+        ganZhiDto.setDayZhi(lunar.getDayZhi());
+
+        ganZhiDto.setTimeGan(lunar.getTimeGan());
+        ganZhiDto.setTimeZhi(lunar.getTimeZhi());
+
+        ganZhiDaYunVo = ganZhiService.getDaYun(ganZhiDto, ganZhiDaYunVo); //月柱节气矫正 取出90年大运
+        List<GanZhiRowVo> ganZhiRowVoList = ganZhiService.selectGanZhiRowVoList(ganZhiDto); //拼装
+        Map<String, Integer> fiveCountMap = ganZhiService.getGanZhiRowVoCount(ganZhiRowVoList, reportMap); //五行数量
+        Map<String, Object> riYuanQrMap = ganZhiService.getRiYuanQr(ganZhiRowVoList, fiveCountMap);  //查出日元强弱
+        String xifangWei = ganZhiService.getXiFangWei(ganZhiDaYunVo.getLunar()); //喜用的方位
+        Map<String, String> chenGuMap = ganZhiService.getChenGu(ganZhiDaYunVo.getLunar(), ganZhiDto.getSex());
+
+
+        String guiren = ganZhiService.getGuiren(ganZhiRowVoList);  //贵人
+
+        int maxTianGan = ganZhiService.getMaxTianGan(ganZhiDto);  //最出能量最强的天干
+        Map<String, String> geJuMap = ganZhiService.getGeJu(ganZhiRowVoList, maxTianGan, riYuanQrMap.get("qr").toString()); //查出八字常见格局
+        String geju = geJuMap.get("geju");
+
+        String industry = ganZhiService.getIndustry(riYuanQrMap, geju); //行业
+
+        Map<Integer, String> guoGuanMap = ganZhiService.getGuo3Guan(ganZhiRowVoList, riYuanQrMap.get("qr").toString()); //过三关
+
+
+        Map<String, Integer> shiShenCountMap = ganZhiService.getShiShenCount(ganZhiRowVoList, reportMap);
+        List<GanZhiNaYinVo> ganZhiNaYinVoList = ganZhiService.selectGanZhiNaYinList(ganZhiDto);
+        List<GanZhiKongWangVo> ganZhiKongWangVoList = ganZhiService.selectGanZhiKongWangList(ganZhiDto);
+        Map<String, Object> numberYunMap = ganZhiService.getNumberYun(riYuanQrMap);  //喜用数字
+        Map<String, Integer> zaoShiCount = ganZhiService.getZaoShiCount(ganZhiRowVoList, fiveCountMap, reportMap);
+        List<DiseasePart> diseasePartList = ganZhiService.getJiBing(ganZhiRowVoList, fiveCountMap);
+
+        String caiYun = ganZhiService.getCaiYun(ganZhiRowVoList, riYuanQrMap, shiShenCountMap);
+
+        String qingGan = ganZhiService.getQingGanYun(ganZhiRowVoList,riYuanQrMap, shiShenCountMap, fiveCountMap); //情感
+        String piQi = ganZhiService.getPiQi(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);
+
+        ganZhiVo.setUsername(ganZhiDto.getUsername());
+        ganZhiVo.setSex(ganZhiDto.getSex());
+        ganZhiVo.setRiYuan(riYuanQrMap);
+        ganZhiVo.setNumberYunMap(numberYunMap);
+        ganZhiVo.setZaoShiMap(zaoShiCount);
+        ganZhiVo.setDiseasePartList(diseasePartList);
+        ganZhiVo.setDaYunList(ganZhiDaYunVo.getDaYunList());
+        ganZhiVo.setGeJuMap(geJuMap);
+        ganZhiVo.setGuoGuanMap(guoGuanMap);
+        ganZhiVo.setXiFangWei(xifangWei);
+        ganZhiVo.setIndustry(industry);
+        ganZhiVo.setGuiren(guiren);
+        ganZhiVo.setChenGuMap(chenGuMap);
+        ganZhiVo.setPiQi(piQi);
+        ganZhiVo.setQingGan(qingGan);
+
+        reportMap.put("财运",caiYun);
+        ganZhiVo.setReportMap(reportMap);
+
+
+        // 输出结果
+        return Response.success(ganZhiVo);
+    }
+
+
+    /**
+     * 输入大运时间返回流年
+     */
+    @GetMapping("/getLiuNian")
+    @ApiOperation("输入大运时间返回流年")
+    public Response<List<Map<String, String>>> getLiuNian(@ModelAttribute LiuNianDto liuNianDto) {
+
+        List<Map<String, String>> liuNianList = ganZhiService.getLiuNian(liuNianDto);
+
+        // 输出结果
+        return Response.success(liuNianList);
+    }
+
+
+}

+ 1326 - 0
nbjk-common/src/main/java/com/miaxis/common/config/ShiShenConfig.java

@@ -0,0 +1,1326 @@
+package com.miaxis.common.config;
+
+
+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;
+
+@Data
+@Component
+public class ShiShenConfig {
+
+    //天干地支颜色
+    private final Map<String, String> ganZhiColor = new TreeMap<String, String>();
+    //天干地支五行
+    private final Map<String, String> ganZhiFive = new TreeMap<String, String>();
+    //正印
+    private final Map<String, String> zhengYin = new TreeMap<String, String>();
+    //食神
+    private final Map<String, String> shiShen = new TreeMap<String, String>();
+    //正官
+    private final Map<String, String> zhengGuan = new TreeMap<String, String>();
+    //正财
+    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> pianYin = new TreeMap<String, String>();
+    //伤官
+    private final Map<String, String> shangGuan = new TreeMap<String, String>();
+    //劫财
+    private final Map<String, String> jieCai = new TreeMap<String, String>();
+    //比肩
+    private final Map<String, String> biJian = new TreeMap<String, String>();
+    //偏财
+    private final Map<String, String> pianCai = new TreeMap<String, String>();
+
+    //身强喜用十神
+    private final List<String> xiYongShiShenQ = new ArrayList<String>();
+    //身弱喜用十神
+    private final List<String> xiYongShiShenR = new ArrayList<String>();
+
+    //身强忌凶十神
+    private final List<String> jiXiongShiShenQ = new ArrayList<String>();
+    //身弱忌凶十神
+    private final List<String> jiXiongShiShenR = new ArrayList<String>();
+
+
+    //藏干 本气
+    private final Map<String, String> benQi = new TreeMap<String, String>();
+    //藏干 中气
+    private final Map<String, String> zhongQi = new TreeMap<String, String>();
+    //藏干 余气
+    private final Map<String, String> yuQi = new TreeMap<String, String>();
+
+    //空亡
+    private final Map<String, String> kongWang = new TreeMap<String, String>();
+
+    //纳音
+    private final Map<String, String> naYin = new TreeMap<String, String>();
+
+    //喜用
+    private final Map<String, List> xiYong = new TreeMap<String, List>();
+
+    //喜用的数字
+    private final Map<String, List> xiNumber = new TreeMap<String, List>();
+
+    //数字文案
+    private final Map<String, String> numberWenAn = new TreeMap<String, String>();
+
+    //五行与身体部位
+    private final Map<String, List> fiveBuWei = new TreeMap<String, List>();
+
+    //燥湿平衡
+    private final Map<String, String> zaoShi = new TreeMap<String, String>();
+
+    //大运六十甲子
+    private final List<String> liushijiazi = new ArrayList<String>();
+
+    //天干阴阳关系
+    private final Map<String, String> tianGanYY = new TreeMap<String, String>();
+
+    //八字身体位置坐标
+    private final Map<Integer, String> body = new TreeMap<Integer, String>();
+
+    //八字方位位置坐标
+    private final Map<Integer, String> position = new TreeMap<Integer, String>();
+
+    //十神缺失
+    private final Map<String, String> zeroShiShen = new TreeMap<String, String>();
+
+    //五行缺失
+    private final Map<String, String> zeroFive = new TreeMap<String, String>();
+
+    //五行与行业
+    private final Map<String, String> fiveIndustry = new TreeMap<String, String>();
+
+    //十神与行业
+    private final Map<String, String> shiShenIndustry = new TreeMap<String, String>();
+
+    //天乙贵人
+    private final Map<String, String> tianyiGuiren = new TreeMap<String, String>();
+
+    //天乙贵人 生肖
+    private final Map<String, String> tianyiGuirenShengXiao = new TreeMap<String, String>();
+
+    //袁天罡骨算命
+    private final Map<String, Integer> guZhong = new TreeMap<String, Integer>();
+
+    //袁天罡骨算命评语(男)
+    private final Map<String, String> guZhongPingYuMan = new TreeMap<String, String>();
+
+    //袁天罡骨算命评语(女)
+    private final Map<String, String> guZhongPingYuWoman = new TreeMap<String, String>();
+
+    //脾气
+    private final Map<String, String> piQi = new TreeMap<String, String>();
+
+    //五鬼运财
+    private final Map<String, String> wuGui = new TreeMap<String, String>();
+
+    //五鬼运财 生肖
+    private final Map<String, String> wuGuiShengXiao = new TreeMap<String, String>();
+
+    //容易出桃花的八字
+    private final List<String> taoHuaZi = new ArrayList<String>();
+
+
+    @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("壬", "乙");
+        zhengYin.put("乙", "丙");
+        zhengYin.put("甲", "丁");
+        zhengYin.put("丁", "戊");
+        zhengYin.put("丙", "己");
+        zhengYin.put("己", "庚");
+        zhengYin.put("戊", "辛");
+        zhengYin.put("辛", "壬");
+        zhengYin.put("庚", "癸");
+
+        //食神
+        shiShen.put("丙", "甲");
+        shiShen.put("丁", "乙");
+        shiShen.put("戊", "丙");
+        shiShen.put("己", "丁");
+        shiShen.put("庚", "戊");
+        shiShen.put("辛", "己");
+        shiShen.put("壬", "庚");
+        shiShen.put("癸", "辛");
+        shiShen.put("甲", "壬");
+        shiShen.put("乙", "癸");
+
+        //正官
+        zhengGuan.put("辛", "甲");
+        zhengGuan.put("庚", "乙");
+        zhengGuan.put("癸", "丙");
+        zhengGuan.put("壬", "丁");
+        zhengGuan.put("乙", "戊");
+        zhengGuan.put("甲", "己");
+        zhengGuan.put("丁", "庚");
+        zhengGuan.put("丙", "辛");
+        zhengGuan.put("己", "壬");
+        zhengGuan.put("戊", "癸");
+
+        //正财
+        zhengCai.put("己", "甲");
+        zhengCai.put("戊", "乙");
+        zhengCai.put("辛", "丙");
+        zhengCai.put("庚", "丁");
+        zhengCai.put("癸", "戊");
+        zhengCai.put("壬", "己");
+        zhengCai.put("乙", "庚");
+        zhengCai.put("甲", "辛");
+        zhengCai.put("丁", "壬");
+        zhengCai.put("丙", "癸");
+
+
+        //七杀
+        qiSha.put("庚", "甲");
+        qiSha.put("辛", "乙");
+        qiSha.put("壬", "丙");
+        qiSha.put("癸", "丁");
+        qiSha.put("甲", "戊");
+        qiSha.put("乙", "己");
+        qiSha.put("丙", "庚");
+        qiSha.put("丁", "辛");
+        qiSha.put("戊", "壬");
+        qiSha.put("己", "癸");
+
+        //偏印
+        pianYin.put("壬", "甲");
+        pianYin.put("癸", "乙");
+        pianYin.put("甲", "丙");
+        pianYin.put("乙", "丁");
+        pianYin.put("丙", "戊");
+        pianYin.put("丁", "己");
+        pianYin.put("戊", "庚");
+        pianYin.put("己", "辛");
+        pianYin.put("庚", "壬");
+        pianYin.put("辛", "癸");
+
+        //伤官
+        shangGuan.put("丁", "甲");
+        shangGuan.put("丙", "乙");
+        shangGuan.put("己", "丙");
+        shangGuan.put("戊", "丁");
+        shangGuan.put("辛", "戊");
+        shangGuan.put("庚", "己");
+        shangGuan.put("癸", "庚");
+        shangGuan.put("壬", "辛");
+        shangGuan.put("乙", "壬");
+        shangGuan.put("甲", "癸");
+
+        //劫财
+        jieCai.put("乙", "甲");
+        jieCai.put("甲", "乙");
+        jieCai.put("丁", "丙");
+        jieCai.put("丙", "丁");
+        jieCai.put("己", "戊");
+        jieCai.put("戊", "己");
+        jieCai.put("辛", "庚");
+        jieCai.put("庚", "辛");
+        jieCai.put("癸", "壬");
+        jieCai.put("壬", "癸");
+
+        //比肩
+        biJian.put("甲", "甲");
+        biJian.put("乙", "乙");
+        biJian.put("丙", "丙");
+        biJian.put("丁", "丁");
+        biJian.put("戊", "戊");
+        biJian.put("己", "己");
+        biJian.put("庚", "庚");
+        biJian.put("辛", "辛");
+        biJian.put("壬", "壬");
+        biJian.put("癸", "癸");
+
+
+        //偏财
+        pianCai.put("戊", "甲");
+        pianCai.put("己", "乙");
+        pianCai.put("庚", "丙");
+        pianCai.put("辛", "丁");
+        pianCai.put("壬", "戊");
+        pianCai.put("癸", "己");
+        pianCai.put("甲", "庚");
+        pianCai.put("乙", "辛");
+        pianCai.put("丙", "壬");
+        pianCai.put("丁", "癸");
+
+
+        //本气
+        benQi.put("子", "癸");
+        benQi.put("丑", "己");
+        benQi.put("寅", "甲");
+        benQi.put("卯", "乙");
+        benQi.put("辰", "戊");
+        benQi.put("巳", "丙");
+        benQi.put("午", "丁");
+        benQi.put("未", "己");
+        benQi.put("申", "庚");
+        benQi.put("酉", "辛");
+        benQi.put("戌", "戊");
+        benQi.put("亥", "壬");
+
+        //中气
+        zhongQi.put("丑", "辛");
+        zhongQi.put("寅", "丙");
+        zhongQi.put("辰", "乙");
+        zhongQi.put("巳", "戊");
+        zhongQi.put("午", "己");
+        zhongQi.put("未", "丁");
+        zhongQi.put("申", "壬");
+        zhongQi.put("戌", "辛");
+        zhongQi.put("亥", "甲");
+
+        //余气
+        yuQi.put("丑", "癸");
+        yuQi.put("寅", "戊");
+        yuQi.put("辰", "癸");
+        yuQi.put("巳", "庚");
+        yuQi.put("未", "乙");
+        yuQi.put("申", "戊");
+        yuQi.put("戌", "丁");
+
+
+        //空亡
+        //1甲子旬
+        kongWang.put("甲子", "戌亥");
+        kongWang.put("乙丑", "戌亥");
+        kongWang.put("丙寅", "戌亥");
+        kongWang.put("丁卯", "戌亥");
+        kongWang.put("戊辰", "戌亥");
+        kongWang.put("己巳", "戌亥");
+        kongWang.put("庚午", "戌亥");
+        kongWang.put("辛未", "戌亥");
+        kongWang.put("壬申", "戌亥");
+        kongWang.put("癸酉", "戌亥");
+
+        //2甲戌旬
+        kongWang.put("甲戌", "申酉");
+        kongWang.put("乙亥", "申酉");
+        kongWang.put("丙子", "申酉");
+        kongWang.put("丁丑", "申酉");
+        kongWang.put("戊寅", "申酉");
+        kongWang.put("己卯", "申酉");
+        kongWang.put("庚辰", "申酉");
+        kongWang.put("辛巳", "申酉");
+        kongWang.put("壬午", "申酉");
+        kongWang.put("癸未", "申酉");
+
+        //3甲申旬
+        kongWang.put("甲申", "午未");
+        kongWang.put("乙酉", "午未");
+        kongWang.put("丙戌", "午未");
+        kongWang.put("丁亥", "午未");
+        kongWang.put("戊子", "午未");
+        kongWang.put("己丑", "午未");
+        kongWang.put("庚寅", "午未");
+        kongWang.put("辛卯", "午未");
+        kongWang.put("壬辰", "午未");
+        kongWang.put("癸巳", "午未");
+
+
+        //4甲午旬
+        kongWang.put("甲午", "辰巳");
+        kongWang.put("乙未", "辰巳");
+        kongWang.put("丙申", "辰巳");
+        kongWang.put("丁酉", "辰巳");
+        kongWang.put("戊戌", "辰巳");
+        kongWang.put("己亥", "辰巳");
+        kongWang.put("庚子", "辰巳");
+        kongWang.put("辛丑", "辰巳");
+        kongWang.put("壬寅", "辰巳");
+        kongWang.put("癸卯", "辰巳");
+
+
+        //5甲辰旬
+        kongWang.put("甲辰", "寅卯");
+        kongWang.put("乙巳", "寅卯");
+        kongWang.put("丙午", "寅卯");
+        kongWang.put("丁未", "寅卯");
+        kongWang.put("戊申", "寅卯");
+        kongWang.put("己酉", "寅卯");
+        kongWang.put("庚戌", "寅卯");
+        kongWang.put("辛亥", "寅卯");
+        kongWang.put("壬子", "寅卯");
+        kongWang.put("癸丑", "寅卯");
+
+        //6甲寅旬
+        kongWang.put("甲寅", "子丑");
+        kongWang.put("乙卯", "子丑");
+        kongWang.put("丙辰", "子丑");
+        kongWang.put("丁巳", "子丑");
+        kongWang.put("戊午", "子丑");
+        kongWang.put("己未", "子丑");
+        kongWang.put("庚申", "子丑");
+        kongWang.put("辛酉", "子丑");
+        kongWang.put("壬戌", "子丑");
+        kongWang.put("癸亥", "子丑");
+
+
+        //纳音
+        naYin.put("甲子", "海中金");
+        naYin.put("乙丑", "海中金");
+        naYin.put("丙寅", "炉中火");
+        naYin.put("丁卯", "炉中火");
+        naYin.put("戊辰", "大林木");
+        naYin.put("己巳", "大林木");
+        naYin.put("庚午", "路旁土");
+        naYin.put("辛未", "路帝土");
+        naYin.put("壬申", "剑锋金");
+        naYin.put("癸酉", "剑锋金");
+
+        naYin.put("甲戌", "山头火");
+        naYin.put("乙亥", "山头火");
+        naYin.put("丙子", "洞下水");
+        naYin.put("丁丑", "洞下水");
+        naYin.put("戊寅", "城墙土");
+        naYin.put("己卯", "城墙土");
+        naYin.put("庚辰", "白腊金");
+        naYin.put("辛巳", "白腊金");
+        naYin.put("壬午", "杨柳木");
+        naYin.put("癸未", "杨柳木");
+
+        naYin.put("甲申", "泉中水");
+        naYin.put("乙酉", "泉中水");
+        naYin.put("丙戌", "屋上土");
+        naYin.put("丁亥", "屋上土");
+        naYin.put("戊子", "霹雷火");
+        naYin.put("己丑", "霹雷火");
+        naYin.put("庚寅", "松柏木");
+        naYin.put("辛卯", "松柏木");
+        naYin.put("壬辰", "常流水");
+        naYin.put("癸巳", "常流水");
+
+        naYin.put("甲午", "沙中金");
+        naYin.put("乙未", "沙中金");
+        naYin.put("丙申", "山下火");
+        naYin.put("丁酉", "山下火");
+        naYin.put("戊戌", "平地木");
+        naYin.put("己亥", "平地木");
+        naYin.put("庚子", "壁上土");
+        naYin.put("辛丑", "壁上土");
+        naYin.put("壬寅", "金箔金");
+        naYin.put("癸卯", "金箔金");
+
+        naYin.put("甲辰", "佛灯火");
+        naYin.put("乙巳", "佛灯火");
+        naYin.put("丙午", "天河水");
+        naYin.put("丁未", "天河水");
+        naYin.put("戊申", "大驿土");
+        naYin.put("己酉", "大驿土");
+        naYin.put("庚戌", "钗钏金");
+        naYin.put("辛亥", "钗钏金");
+        naYin.put("壬子", "桑松木");
+        naYin.put("癸丑", "桑松木");
+
+        naYin.put("甲寅", "大溪水");
+        naYin.put("乙卯", "大溪水");
+        naYin.put("丙辰", "沙中土");
+        naYin.put("丁巳", "沙中土");
+        naYin.put("戊午", "天上火");
+        naYin.put("己未", "天上火");
+        naYin.put("庚申", "石榴木");
+        naYin.put("辛酉", "石榴木");
+        naYin.put("壬戌", "大海水");
+        naYin.put("癸亥", "大海水");
+
+        //一1旬
+        liushijiazi.add("甲子");
+        liushijiazi.add("乙丑");
+        liushijiazi.add("丙寅");
+        liushijiazi.add("丁卯");
+        liushijiazi.add("戊辰");
+        liushijiazi.add("己巳");
+        liushijiazi.add("庚午");
+        liushijiazi.add("辛未");
+        liushijiazi.add("壬申");
+        liushijiazi.add("癸酉");
+        //一2旬
+        liushijiazi.add("甲戌");
+        liushijiazi.add("乙亥");
+        liushijiazi.add("丙子");
+        liushijiazi.add("丁丑");
+        liushijiazi.add("戊寅");
+        liushijiazi.add("己卯");
+        liushijiazi.add("庚辰");
+        liushijiazi.add("辛巳");
+        liushijiazi.add("壬午");
+        liushijiazi.add("癸未");
+        //一3旬
+        liushijiazi.add("甲申");
+        liushijiazi.add("乙酉");
+        liushijiazi.add("丙戌");
+        liushijiazi.add("丁亥");
+        liushijiazi.add("戊子");
+        liushijiazi.add("己丑");
+        liushijiazi.add("庚寅");
+        liushijiazi.add("辛卯");
+        liushijiazi.add("壬辰");
+        liushijiazi.add("癸巳");
+        //一4旬
+        liushijiazi.add("甲午");
+        liushijiazi.add("乙未");
+        liushijiazi.add("丙申");
+        liushijiazi.add("丁酉");
+        liushijiazi.add("戊戌");
+        liushijiazi.add("己亥");
+        liushijiazi.add("庚子");
+        liushijiazi.add("辛丑");
+        liushijiazi.add("壬寅");
+        liushijiazi.add("癸卯");
+        //一5旬
+        liushijiazi.add("甲辰");
+        liushijiazi.add("乙巳");
+        liushijiazi.add("丙午");
+        liushijiazi.add("丁未");
+        liushijiazi.add("戊申");
+        liushijiazi.add("己酉");
+        liushijiazi.add("庚戌");
+        liushijiazi.add("辛亥");
+        liushijiazi.add("壬子");
+        liushijiazi.add("癸丑");
+        //一6旬
+        liushijiazi.add("甲寅");
+        liushijiazi.add("乙卯");
+        liushijiazi.add("丙辰");
+        liushijiazi.add("丁巳");
+        liushijiazi.add("戊午");
+        liushijiazi.add("己未");
+        liushijiazi.add("庚申");
+        liushijiazi.add("辛酉");
+        liushijiazi.add("壬戌");
+        liushijiazi.add("癸亥");
+        //二1旬
+        liushijiazi.add("甲子");
+        liushijiazi.add("乙丑");
+        liushijiazi.add("丙寅");
+        liushijiazi.add("丁卯");
+        liushijiazi.add("戊辰");
+        liushijiazi.add("己巳");
+        liushijiazi.add("庚午");
+        liushijiazi.add("辛未");
+        liushijiazi.add("壬申");
+        liushijiazi.add("癸酉");
+        //二2旬
+        liushijiazi.add("甲戌");
+        liushijiazi.add("乙亥");
+        liushijiazi.add("丙子");
+        liushijiazi.add("丁丑");
+        liushijiazi.add("戊寅");
+        liushijiazi.add("己卯");
+        liushijiazi.add("庚辰");
+        liushijiazi.add("辛巳");
+        liushijiazi.add("壬午");
+        liushijiazi.add("癸未");
+        //二3旬
+        liushijiazi.add("甲申");
+        liushijiazi.add("乙酉");
+        liushijiazi.add("丙戌");
+        liushijiazi.add("丁亥");
+        liushijiazi.add("戊子");
+        liushijiazi.add("己丑");
+        liushijiazi.add("庚寅");
+        liushijiazi.add("辛卯");
+        liushijiazi.add("壬辰");
+        liushijiazi.add("癸巳");
+        //二4旬
+        liushijiazi.add("甲午");
+        liushijiazi.add("乙未");
+        liushijiazi.add("丙申");
+        liushijiazi.add("丁酉");
+        liushijiazi.add("戊戌");
+        liushijiazi.add("己亥");
+        liushijiazi.add("庚子");
+        liushijiazi.add("辛丑");
+        liushijiazi.add("壬寅");
+        liushijiazi.add("癸卯");
+        //二5旬
+        liushijiazi.add("甲辰");
+        liushijiazi.add("乙巳");
+        liushijiazi.add("丙午");
+        liushijiazi.add("丁未");
+        liushijiazi.add("戊申");
+        liushijiazi.add("己酉");
+        liushijiazi.add("庚戌");
+        liushijiazi.add("辛亥");
+        liushijiazi.add("壬子");
+        liushijiazi.add("癸丑");
+        //二6旬
+        liushijiazi.add("甲寅");
+        liushijiazi.add("乙卯");
+        liushijiazi.add("丙辰");
+        liushijiazi.add("丁巳");
+        liushijiazi.add("戊午");
+        liushijiazi.add("己未");
+        liushijiazi.add("庚申");
+        liushijiazi.add("辛酉");
+        liushijiazi.add("壬戌");
+        liushijiazi.add("癸亥");
+        //三1旬
+        liushijiazi.add("甲子");
+        liushijiazi.add("乙丑");
+        liushijiazi.add("丙寅");
+        liushijiazi.add("丁卯");
+        liushijiazi.add("戊辰");
+        liushijiazi.add("己巳");
+        liushijiazi.add("庚午");
+        liushijiazi.add("辛未");
+        liushijiazi.add("壬申");
+        liushijiazi.add("癸酉");
+        //三2旬
+        liushijiazi.add("甲戌");
+        liushijiazi.add("乙亥");
+        liushijiazi.add("丙子");
+        liushijiazi.add("丁丑");
+        liushijiazi.add("戊寅");
+        liushijiazi.add("己卯");
+        liushijiazi.add("庚辰");
+        liushijiazi.add("辛巳");
+        liushijiazi.add("壬午");
+        liushijiazi.add("癸未");
+        //三3旬
+        liushijiazi.add("甲申");
+        liushijiazi.add("乙酉");
+        liushijiazi.add("丙戌");
+        liushijiazi.add("丁亥");
+        liushijiazi.add("戊子");
+        liushijiazi.add("己丑");
+        liushijiazi.add("庚寅");
+        liushijiazi.add("辛卯");
+        liushijiazi.add("壬辰");
+        liushijiazi.add("癸巳");
+        //三4旬
+        liushijiazi.add("甲午");
+        liushijiazi.add("乙未");
+        liushijiazi.add("丙申");
+        liushijiazi.add("丁酉");
+        liushijiazi.add("戊戌");
+        liushijiazi.add("己亥");
+        liushijiazi.add("庚子");
+        liushijiazi.add("辛丑");
+        liushijiazi.add("壬寅");
+        liushijiazi.add("癸卯");
+        //三5旬
+        liushijiazi.add("甲辰");
+        liushijiazi.add("乙巳");
+        liushijiazi.add("丙午");
+        liushijiazi.add("丁未");
+        liushijiazi.add("戊申");
+        liushijiazi.add("己酉");
+        liushijiazi.add("庚戌");
+        liushijiazi.add("辛亥");
+        liushijiazi.add("壬子");
+        liushijiazi.add("癸丑");
+        //三6旬
+        liushijiazi.add("甲寅");
+        liushijiazi.add("乙卯");
+        liushijiazi.add("丙辰");
+        liushijiazi.add("丁巳");
+        liushijiazi.add("戊午");
+        liushijiazi.add("己未");
+        liushijiazi.add("庚申");
+        liushijiazi.add("辛酉");
+        liushijiazi.add("壬戌");
+        liushijiazi.add("癸亥");
+
+
+        //天干阴阳
+        tianGanYY.put("甲", "阳");
+        tianGanYY.put("乙", "阴");
+        tianGanYY.put("丙", "阳");
+        tianGanYY.put("丁", "阴");
+        tianGanYY.put("戊", "阳");
+        tianGanYY.put("己", "阴");
+        tianGanYY.put("庚", "阳");
+        tianGanYY.put("辛", "阴");
+        tianGanYY.put("壬", "阳");
+        tianGanYY.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);
+
+        //喜用的号码
+        List<String> numberShui = new ArrayList<String>();
+        numberShui.add("1");
+        numberShui.add("6");
+        xiNumber.put("水", numberShui);
+
+        List<String> numberHuo = new ArrayList<String>();
+        numberHuo.add("2");
+        numberHuo.add("7");
+        xiNumber.put("火", numberHuo);
+
+        List<String> numberMu = new ArrayList<String>();
+        numberMu.add("3");
+        numberMu.add("8");
+        xiNumber.put("木", numberMu);
+
+        List<String> numberJin = new ArrayList<String>();
+        numberJin.add("4");
+        numberJin.add("9");
+        xiNumber.put("金", numberJin);
+
+        List<String> numberTu = new ArrayList<String>();
+        numberTu.add("5");
+        numberTu.add("0");
+        xiNumber.put("土", numberTu);
+
+        // 身强喜用神
+        xiYongShiShenQ.add("食神");
+        xiYongShiShenQ.add("伤官");
+        xiYongShiShenQ.add("正财");
+        xiYongShiShenQ.add("偏财");
+        xiYongShiShenQ.add("七杀");
+        xiYongShiShenQ.add("正官");
+        // 身弱喜用神
+        xiYongShiShenR.add("比肩");
+        xiYongShiShenR.add("劫财");
+        xiYongShiShenR.add("正印");
+        xiYongShiShenR.add("偏印");
+        //身强忌凶
+        jiXiongShiShenQ.add("比肩");
+        jiXiongShiShenQ.add("劫财");
+        jiXiongShiShenQ.add("正印");
+        jiXiongShiShenQ.add("偏印");
+        //身弱忌凶
+        jiXiongShiShenR.add("食神");
+        jiXiongShiShenR.add("伤官");
+        jiXiongShiShenR.add("正财");
+        jiXiongShiShenR.add("偏财");
+        jiXiongShiShenR.add("七杀");
+        jiXiongShiShenR.add("正官");
+
+
+        //五行对应身体部位
+        List<String> shuiBuWei = new ArrayList<String>();
+        shuiBuWei.add("肾");
+        shuiBuWei.add("膀胱");
+        fiveBuWei.put("水", shuiBuWei);
+
+        List<String> huoBuWei = new ArrayList<String>();
+        huoBuWei.add("小肠");
+        huoBuWei.add("心脏");
+        fiveBuWei.put("火", huoBuWei);
+
+        List<String> muBuWei = new ArrayList<String>();
+        muBuWei.add("肝");
+        muBuWei.add("胆");
+        fiveBuWei.put("木", muBuWei);
+
+        List<String> jinBuWei = new ArrayList<String>();
+        jinBuWei.add("大肠");
+        jinBuWei.add("肺");
+        fiveBuWei.put("金", jinBuWei);
+
+        List<String> tuBuWei = new ArrayList<String>();
+        tuBuWei.add("脾");
+        tuBuWei.add("胃");
+        fiveBuWei.put("土", tuBuWei);
+
+
+        //燥湿平衡
+        zaoShi.put("辰", "水");
+        zaoShi.put("丑", "水");
+        zaoShi.put("未", "火");
+        zaoShi.put("戌", "火");
+
+
+        //身体位置坐标
+        body.put(0, "头部");
+        body.put(1, "脖子");
+        body.put(2, "胸部");
+        body.put(3, "腹部");
+        body.put(4, "小腹");
+        body.put(5, "屁股");
+        body.put(6, "大腿");
+        body.put(7, "小腿-脚部");
+
+
+        //方位位置坐标
+        position.put(0, "东南方");
+        position.put(1, "东北方");
+        position.put(2, "南方");
+        position.put(3, "北方");
+        position.put(4, "南方");
+        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("比肩", "缺少比肩,朋友少,性格孤僻,有点社交恐惧症");
+
+        //缺失五行补法
+        zeroFive.put("木", "五行缺木:在家中摆放一些绿色植物,如绿萝、仙人掌等,增加木元素;选择一些绿色的装饰品,如青翠的窗帘、地毯等。");
+        zeroFive.put("火", "五行缺火:使用明亮的灯光,尤其是红色或橙色的灯具,有助于增加火元素;点燃一些香气怡人的蜡烛,既能提升室内氛围,又有助于补充火元素。");
+        zeroFive.put("土", "五行缺土:选择一些土黄、咖啡色的装饰品,如地毯、靠垫等;在家中使用一些陶瓷餐具或装饰品,有助于增加土元素。");
+        zeroFive.put("金", "五行缺金:放置一些金属质地的装饰品,如金色的花瓶、金属相框等;引入一些金属家具,如金属椅子、桌子等。");
+        zeroFive.put("水", "五行缺水:在家中挂一些水景画,如瀑布、湖泊等,能够引入水元素;摆放一些水晶饰品,如水晶灯、水晶摆件等,有助于补充水元素。");
+
+        //五行与行业
+        fiveIndustry.put("木", "事业属性与木有直接或间接关联者,五行便属木。如:木制业、家具业、木材行、室内设计业、纸业、花业、园艺店、树苗盆栽业、医药医疗事业。文化事业、教育用品业、出版业、公务员、政界、安亲班、补习班、训练机构、宗教用品、画廊、装潢材料业、精品店、水果业、食品制造业、人才培育事业、布业、服饰业、窗帘业、茶叶行、栽种业、休闲农场等。");
+        fiveIndustry.put("火", "事业属性与热度和光线有关的所有行业,五行便属火。如 : 加工修理业、灯光照明事业、灯具厨具业、高热或易燃物品事业、加油站、石油酒精业、瓦斯行、热食饮食业、理发美容业、化妆品业、雕刻业、心理学家、演说家、歌舞戏剧表演业、印制品业、服饰店、面包店、窑业、陶瓷店、照相馆、光学仪器行等。");
+        fiveIndustry.put("土", "事业属性与土地、稳固、信赖有关的所有行业,五行便属土。如:农产品业、食品加工业、畜牧业、宠物店、饲料业、大理石业、砂石业、土地开发业、水泥建筑业、房屋中介业、当铺古董业、殡葬业、农具行、古物珠宝鉴定业、会计师、律师法官、代书、医师、设计人员、顾问代理商标业、垃圾清理掩埋、病虫害防治业、 资源回收业等。");
+        fiveIndustry.put("金", "事业属性与金有直接或间接关联者,五行便属金。如:五金商、矿产业、汽车业、交通业、机车行、货运快递业、金融业、车料制造业、珠宝业、工具机械业、电子业、电器业、仪器制造业、钟表业、电机制造业、电缆业、电讯业、通讯器材业、网络业、资讯业、铸造业、铁窗业、金属饰品业、银楼、锁店、武术馆、保全业、屠宰业、民意代表、大法官、属于铁或金属的材料工具业或买卖或制造业等。");
+        fiveIndustry.put("水", "事业属性为奔波、漂游、流动或与水有直接或间接关系的所有行业,五行便属水。如 : 服务业、人力中介业、婚姻交友中心、征信社、化学用品业、雨衣雨鞋制造业、旅游业、旅馆业、特技表演业、记者、航海业、水产业、冷冻冷藏业、洗衣业、渔具业、钓虾场、游泳池、制酒业、酒吧、消防器材业、咖啡屋、饮料业、染料业传播业、娱乐业、清洁消毒业等。");
+
+
+        //十神与行业
+        shiShenIndustry.put("正财", "您为正财格则适合从事公职工作,就是上班打工求财。这种八字如果做生意,也只能开门市,从事一些稳定的行业,不合适投机的项目。依靠稳定的工作收入。");
+        shiShenIndustry.put("偏财", "您为偏财格则适合创业做老板,另外分析八字组合。食神旺,是交际型,靠交友得到商机求财。伤官旺,是靠自己型,有独特的技能,或者靠体力求财。依靠不停的折腾成功。");
+        shiShenIndustry.put("正印", "适合服务行业,幼师,导游,护士,文化,教育,书法,写作记录文职。依靠付出爱心的工作。");
+        shiShenIndustry.put("偏印", "适合做顾问,分析师,设计师,作家,音乐家,心理学家,参谋,下棋,秘书。依靠脑力分析的工作。");
+        shiShenIndustry.put("食神", "适合做事餐饮业,也适合当文学家,艺术,艺术家,音乐家,美学专家,艺术鉴赏家,经济学家。依靠演艺和艺术方面比较容易成功。");
+        shiShenIndustry.put("伤官", "很聪明,头脑都相当好,但是兴趣多却不精通,性格傲慢,好胜,卖弄,张扬说话带刺,不招人喜欢。适合做歌唱,影视演艺,卖艺,马戏难耍,特技运动,考古探险等。依靠一项专精的技艺比较容易成功。");
+        shiShenIndustry.put("正官", "公正、 廉洁,一生正气,人品质高尚,有领导才能爱操心,受人尊敬适合做公务员,团队领导,公司中高层。依靠管理事务的工作。");
+        shiShenIndustry.put("七杀", "适合做公检法执法单位,二把手,有杀气的行业依靠找个人辅佐的工作。");
+
+        //天乙贵人
+        tianyiGuiren.put("甲", "亥未");
+        tianyiGuiren.put("戊", "亥未");
+        tianyiGuiren.put("乙", "子申");
+        tianyiGuiren.put("己", "子申");
+        tianyiGuiren.put("丙", "亥酉");
+        tianyiGuiren.put("丁", "亥酉");
+        tianyiGuiren.put("壬", "巳卯");
+        tianyiGuiren.put("癸", "巳卯");
+        tianyiGuiren.put("庚", "午寅");
+        tianyiGuiren.put("辛", "午寅");
+
+        //天乙贵人 生肖
+        tianyiGuirenShengXiao.put("甲", "猪羊");
+        tianyiGuirenShengXiao.put("戊", "猪羊");
+        tianyiGuirenShengXiao.put("乙", "鼠猴");
+        tianyiGuirenShengXiao.put("己", "鼠猴");
+        tianyiGuirenShengXiao.put("丙", "猪鸡");
+        tianyiGuirenShengXiao.put("丁", "猪鸡");
+        tianyiGuirenShengXiao.put("壬", "蛇兔");
+        tianyiGuirenShengXiao.put("癸", "蛇兔");
+        tianyiGuirenShengXiao.put("庚", "马虎");
+        tianyiGuirenShengXiao.put("辛", "马虎");
+
+
+        //袁天罡称骨算命
+        guZhong.put("甲子", 12);
+        guZhong.put("丙子", 16);
+        guZhong.put("戊子", 15);
+        guZhong.put("庚子", 7);
+        guZhong.put("壬子", 5);
+
+        guZhong.put("乙丑", 9);
+        guZhong.put("丁丑", 8);
+        guZhong.put("己丑", 7);
+        guZhong.put("辛丑", 7);
+        guZhong.put("癸丑", 7);
+
+        guZhong.put("丙寅", 6);
+        guZhong.put("戊寅", 8);
+        guZhong.put("庚寅", 9);
+        guZhong.put("壬寅", 9);
+        guZhong.put("甲寅", 12);
+
+        guZhong.put("丁卯", 7);
+        guZhong.put("己卯", 19);
+        guZhong.put("辛卯", 12);
+        guZhong.put("癸卯", 12);
+        guZhong.put("乙卯", 8);
+
+        guZhong.put("戊辰", 12);
+        guZhong.put("庚辰", 12);
+        guZhong.put("壬辰", 10);
+        guZhong.put("甲辰", 8);
+        guZhong.put("丙辰", 8);
+
+        guZhong.put("己巳", 5);
+        guZhong.put("辛巳", 6);
+        guZhong.put("癸巳", 7);
+        guZhong.put("乙巳", 7);
+        guZhong.put("丁巳", 6);
+
+        guZhong.put("庚午", 9);
+        guZhong.put("壬午", 8);
+        guZhong.put("甲午", 15);
+        guZhong.put("丙午", 13);
+        guZhong.put("戊午", 19);
+
+        guZhong.put("辛未", 8);
+        guZhong.put("癸未", 7);
+        guZhong.put("乙未", 6);
+        guZhong.put("丁未", 5);
+        guZhong.put("己未", 6);
+
+        guZhong.put("壬申", 7);
+        guZhong.put("甲申", 5);
+        guZhong.put("丙申", 5);
+        guZhong.put("戊申", 14);
+        guZhong.put("庚申", 8);
+
+        guZhong.put("癸酉", 8);
+        guZhong.put("乙酉", 15);
+        guZhong.put("丁酉", 14);
+        guZhong.put("己酉", 5);
+        guZhong.put("辛酉", 16);
+
+        guZhong.put("甲戌", 15);
+        guZhong.put("丙戌", 6);
+        guZhong.put("戊戌", 14);
+        guZhong.put("庚戌", 9);
+        guZhong.put("壬戌", 10);
+
+        guZhong.put("乙亥", 9);
+        guZhong.put("丁亥", 16);
+        guZhong.put("己亥", 9);
+        guZhong.put("辛亥", 17);
+        guZhong.put("癸亥", 6);
+
+        guZhong.put("1月", 6);
+        guZhong.put("2月", 7);
+        guZhong.put("3月", 18);
+        guZhong.put("4月", 9);
+        guZhong.put("5月", 5);
+        guZhong.put("6月", 16);
+        guZhong.put("7月", 9);
+        guZhong.put("8月", 15);
+        guZhong.put("9月", 18);
+        guZhong.put("10月", 8);
+        guZhong.put("11月", 9);
+        guZhong.put("12月", 5);
+
+        guZhong.put("1日", 5);
+        guZhong.put("2日", 10);
+        guZhong.put("3日", 8);
+        guZhong.put("4日", 15);
+        guZhong.put("5日", 16);
+        guZhong.put("6日", 15);
+        guZhong.put("7日", 8);
+        guZhong.put("8日", 16);
+        guZhong.put("9日", 8);
+        guZhong.put("10日", 16);
+        guZhong.put("11日", 9);
+        guZhong.put("12日", 17);
+        guZhong.put("13日", 8);
+        guZhong.put("14日", 17);
+        guZhong.put("15日", 10);
+        guZhong.put("16日", 8);
+        guZhong.put("17日", 9);
+        guZhong.put("18日", 18);
+        guZhong.put("19日", 5);
+        guZhong.put("20日", 10);
+        guZhong.put("21日", 10);
+        guZhong.put("22日", 9);
+        guZhong.put("23日", 8);
+        guZhong.put("24日", 9);
+        guZhong.put("25日", 15);
+        guZhong.put("26日", 18);
+        guZhong.put("27日", 7);
+        guZhong.put("28日", 8);
+        guZhong.put("29日", 16);
+        guZhong.put("30日", 6);
+
+        guZhong.put("子", 16);
+        guZhong.put("丑", 6);
+        guZhong.put("寅", 7);
+        guZhong.put("午", 10);
+        guZhong.put("未", 8);
+        guZhong.put("申", 8);
+        guZhong.put("卯", 10);
+        guZhong.put("辰", 9);
+        guZhong.put("巳", 16);
+        guZhong.put("酉", 9);
+        guZhong.put("戌", 6);
+        guZhong.put("亥", 6);
+
+        //男
+        guZhongPingYuMan.put("21", "此命非业谓大凶,平生灾害事桑重。凶祸频临陷逆境,终世困苦事不成。");
+        guZhongPingYuMan.put("22", "身寒骨冷苦伶仃,此命推来真气人。碌碌巴巴无度日,终年打拱过平年。");
+        guZhongPingYuMan.put("23", "此命推来骨自轻,求谋作事事难成。妻儿兄弟应难许,别处他乡作散人。");
+        guZhongPingYuMan.put("24", "此命推来福禄无,门庭困苦总难营。六亲骨肉皆无靠,流到他乡作老翁。");
+        guZhongPingYuMan.put("25", "此命推来祖业微,门庭营度似稀奇。六亲骨肉如冰炭,一生勤劳自把持。");
+        guZhongPingYuMan.put("26", "平生衣禄苦中求,独自经营事不休。离祖出门宜早计,晚来衣禄自无忧。");
+        guZhongPingYuMan.put("27", "一生作事少商量,难靠祖宗作主张。独马单枪空做去,早来晚岁部无长。");
+        guZhongPingYuMan.put("28", "一生作事似飘蓬,祖宗产业在梦中。若不过房并改姓,也当移徙两三通。");
+        guZhongPingYuMan.put("29", "初年运限未曾享,纵有功名在后底。须过四旬绕可上,移居改姓始为良。");
+        guZhongPingYuMan.put("30", "劳劳碌碌苦中求,东走西奔何日休。若使终身勤与俭,老来稍可免忧愁。");
+        guZhongPingYuMan.put("31", "忙忙碌碌苦中求,何日云开见日头。难得祖基家可立,中年衣食渐无忧。");
+        guZhongPingYuMan.put("32", "初年运蹇事难谋,渐有财源如水流。到得中年衣食旺,那时名利一齐来。");
+        guZhongPingYuMan.put("33", "早年做事事难成,百计徒劳枉费心。半世自如流水去,后来运到得黄金。");
+        guZhongPingYuMan.put("34", "此命福气果如何,僧道门中衣禄多。离祖出家方得妙,终朝拜佛念涌陀。");
+        guZhongPingYuMan.put("35", "平生福量不周全,祖业根基觉少传。营业生涯宜守旧,时来衣食胜从前。");
+        guZhongPingYuMan.put("36", "不须劳碌过平生,独自成家福不轻。早有福星常照命,任君行去百般成。");
+        guZhongPingYuMan.put("37", "此命般般事不成,弟兄少力自孤成。虽然祖业须微有,来得明时去得明。");
+        guZhongPingYuMan.put("38", "一生骨肉最清高,早入黄门姓名标。待看看将三十六,蓝袍脱去换红袍。");
+        guZhongPingYuMan.put("39", "此命终身运不穷,劳劳作事尽皆空。苦心竭力成家计,到得那时在梦中。");
+        guZhongPingYuMan.put("40", "生平衣禄是绵长,件件心中自主张。前面风霜多受过,后来必定享安康。");
+        guZhongPingYuMan.put("41", "此命推来事不同,为人能干略凡庸。中年还有逍遥福,不比前年运未通。");
+        guZhongPingYuMan.put("42", "得宽怀处且宽怀,何用双眉皱不开。若使中年命运济,那时名利一齐来。");
+        guZhongPingYuMan.put("43", "为人心性最聪明,作事轩昂近贵人。衣禄一生天数定,不须劳碌是丰享。");
+        guZhongPingYuMan.put("44", "来事由天莫苦求,须知福禄胜前途。当年财帛难如意,晚景欣然便不忧。");
+        guZhongPingYuMan.put("45", "名利推来竟若何,前途辛苦后奔波。命中难养男与女,骨肉扶持也不多。");
+        guZhongPingYuMan.put("46", "东西南北尽皆空,出姓移名更觉隆。衣禄无亏天数定,中年晚景一般同。");
+        guZhongPingYuMan.put("47", "此命推来旺末年,妻荣子贵自怡然。平生原有滔滔福,可有财源如水源。");
+        guZhongPingYuMan.put("48", "幼年运道未曾享,若是蹉跎再不兴。兄弟六亲皆无靠,一身事业晚年成。");
+        guZhongPingYuMan.put("49", "此命推来福不轻,自成自立耀门庭。从来富贵人亲近,使婢差奴过一生。");
+        guZhongPingYuMan.put("50", "为名为利终日劳,中年福禄也多遭。老来是有财星照,不比前番日下高。");
+        guZhongPingYuMan.put("51", "一世荣华事事通,不须劳碌自享丰。弟兄叔侄皆如意,家业成时福禄宏。");
+        guZhongPingYuMan.put("52", "一世享通事事能,不须劳思自然能。家族欣然心皆好,家业丰享自称心。");
+        guZhongPingYuMan.put("53", "此格推来气像真,兴家发达在其中。一生福禄安排家,欲是人间一富翁。");
+        guZhongPingYuMan.put("54", "此命推来厚且清,诗画满腹看功成。丰衣足食自然稳,正是人间有福人。");
+        guZhongPingYuMan.put("55", "走马扬鞭争名利,少年做事费筹谋。一朝福禄源源至,富贵荣华耀六亲。");
+        guZhongPingYuMan.put("56", "此格推来礼义通,一生福禄用无穷。甜酸苦辣皆尝过,财源滚滚稳且丰。");
+        guZhongPingYuMan.put("57", "福禄丰盈万事全,一生荣耀显双亲。名扬威振人钦敬,处世逍遥似遇春。");
+        guZhongPingYuMan.put("58", "平生福禄自然来,名利双全福禄偕。雁塔题名为贵客,紫袍玉带走金阶。");
+        guZhongPingYuMan.put("59", "细推此格妙且清,必定财高礼义通。甲第之中应有分,扬鞭走马显威荣。");
+        guZhongPingYuMan.put("60", "一朝金榜快题名,显祖荣宗立大功。衣食定然原裕足,田园财帛更丰盛。");
+        guZhongPingYuMan.put("61", "不作朝中金榜客,定为世上一财翁。聪明天赋经书熟,名显高科自是荣。");
+        guZhongPingYuMan.put("62", "此命推来福不穷,读书必定显亲宗。紫衣金带为卿相,富贵荣华皆可同。");
+        guZhongPingYuMan.put("63", "命主为官福禄长,得来富贵定非常。名题雁塔传金榜,定中高科天下扬。");
+        guZhongPingYuMan.put("64", "此格威权不可挡,紫袍金带坐高望。荣华富贵虽能及,积玉堆金满储仓。");
+        guZhongPingYuMan.put("65", "细推此命福不轻,安国安邦极品人。文纷雕梁徽富贵,威声照耀四方闻。");
+        guZhongPingYuMan.put("66", "此格人间一福人,堆金积玉满堂春。从来富贵由天定,正勿垂绅谒圣君。");
+        guZhongPingYuMan.put("67", "此命生来福自宏,田园家业最高隆。平生衣禄丰盈足,一世荣华万事通。");
+        guZhongPingYuMan.put("68", "富贵由大莫苦求,万金家计不须谋。十年不比前番事,祖业根基水上舟。");
+        guZhongPingYuMan.put("69", "君是人间前禄星,一生富贵众人钦。纵然福禄由天定,安享荣华过一生。");
+        guZhongPingYuMan.put("70", "此命推来福不轻,不须愁虑苦劳心。一生天定衣与禄,富贵荣华主一生。");
+        guZhongPingYuMan.put("71", "此命生来大不同,公侯卿相在其中。一生自有逍遥福,富贵荣华极品隆。");
+
+        //女
+        guZhongPingYuWoman.put("21", "生身此命运不通,乌云盖月黑朦胧,莫向故园载花木,可来幽地种青松。");
+        guZhongPingYuWoman.put("22", "女命孤冷独凄身,此身推来路乞人,操心烦恼难度日,一生痛苦度光阴。");
+        guZhongPingYuWoman.put("23", "女命生来轻薄人,营谋事作难称心,六亲骨肉亦无靠,奔走劳碌困苦门。");
+        guZhongPingYuWoman.put("24", "女命推来福禄无,治家艰难辛苦多,丈夫儿女不亲爱,奔走他乡作游姑。");
+        guZhongPingYuWoman.put("25", "此命一身八字低,家庭艰辛多苦妻,娘家亲友冷如炭,一生勤劳多忧眉。");
+        guZhongPingYuWoman.put("26", "平生依禄但苦求,两次配夫带忧愁,咸酸苦辣他偿过,晚年衣食本无忧。");
+        guZhongPingYuWoman.put("27", "此格做事单独强,难告夫君作主张,心问口来口问心,晚景衣禄宜自生。");
+        guZhongPingYuWoman.put("28", "女命生来八字轻,为善作事也无因,你把别人当亲生,别人对你假殷情。");
+        guZhongPingYuWoman.put("29", "花支艳来硬性身,自奔自力不求人,若问求财方可止,在苦有甜度光阴。");
+        guZhongPingYuWoman.put("30", "女命推来比郎强,婚姻大事碍无障,中年走过坎坷地,末年渐经行前强。");
+        guZhongPingYuWoman.put("31", "早年行运在忙头,劳碌奔波苦勤求,费力劳心把家立,后来晚景名忧愁。");
+        guZhongPingYuWoman.put("32", "时逢运来带吉神,从有凶星转灰尘,真变假来假成真,结拜弟妹当亲生。");
+        guZhongPingYuWoman.put("33", "初限命中有变化,中年可比树落花,勤俭持家难度日,晚年成业享荣华。");
+        guZhongPingYuWoman.put("34", "矮巴勾枣难捞枝,看破红尘最相宜,谋望求财空费力,婚姻三娶两次离。");
+        guZhongPingYuWoman.put("35", "女子走冰怕冰薄,出行交易受残霜,婚姻周郎休此意,官司口舌须相加。");
+        guZhongPingYuWoman.put("36", "忧悉常锁两眉间,家业挂心不等闲,从今以后防口角,任意行移不相关。");
+        guZhongPingYuWoman.put("37", "此命推来费运多,若作摧群受折磨,山路崎岖吊下耳,左插右安心难留。");
+        guZhongPingYuWoman.put("38", "凤鸣岐山四方扬,女命逢此大吉昌,走失夫君音信有,晚年衣禄财盈箱。");
+        guZhongPingYuWoman.put("39", "女命推来运未能,劳碌奔波一场空,好似俊乌在笼锁,中年未限凄秋风。");
+        guZhongPingYuWoman.put("40", "目前月令运不良,千辛万苦受煎熬,女身受得多苦难,晚年福禄比密甜。");
+        guZhongPingYuWoman.put("41", "此命推来一般艰,女子为人很非凡,中年逍遥多自在,晚年更比中年超。");
+        guZhongPingYuWoman.put("42", "杜井破废已多年,今有泉水出来鲜,资生济竭人称美,中运来转喜安然。");
+        guZhongPingYuWoman.put("43", "推车靠涯道路通,女名求财也无穷,婚姻出配无阻碍,疾病口舌离身躬。");
+        guZhongPingYuWoman.put("44", "夜梦金银醒来空,立志谋业运不通,婚姻难成交易散,夫君趟失未见踪。");
+        guZhongPingYuWoman.put("45", "女命终身驳杂多,六亲骨肉不相助,命中男女都难养,劳碌辛苦还奔波。");
+        guZhongPingYuWoman.put("46", "孤舟行水离沙滩,离乡出外早过家,是非口舌皆无碍,婚姻合配紫微房。");
+        guZhongPingYuWoman.put("47", "时来运转喜开颜,多年枯木逢春花,枝叶重生多茂盛,凡人见得都赞夸。");
+        guZhongPingYuWoman.put("48", "一朵鲜花镜中开,看着极好取不来,劝你休把镜花想,此命推来主可癫。");
+        guZhongPingYuWoman.put("49", "一生为人福宏名,心兹随君显门庭,容貌美丽惹人爱,银钱富足万事成。");
+        guZhongPingYuWoman.put("50", "马氏太公不相和,好命逢此忧凝多,恩人无义反为仇,是非平地起风波。");
+        guZhongPingYuWoman.put("51", "肥羊一群入出场,防虎逢之把口张,适口充饥心欢喜,女命八字大吉昌。");
+        guZhongPingYuWoman.put("52", "顺风行舟扯起帆,上天又助一顺风,不用费力逍遥去,任意顺行大享通。");
+        guZhongPingYuWoman.put("53", "此命相貌眉目清,文武双全功名成,一生衣禄皆无缺,可算世上积福人。");
+        guZhongPingYuWoman.put("54", "运开满腹好文章,谋事求财大吉祥,出行交易多得稳,到处享通姓名扬。");
+        guZhongPingYuWoman.put("55", "发政旅仁志量高,女命求财任他乡,交舍婚姻多有意,无君出外有音耗。");
+        guZhongPingYuWoman.put("56", "明珠辉吐离埃来,女有口有清散开,走失郎君当两归,交易有成永无灾。");
+        guZhongPingYuWoman.put("57", "游鱼戏水被网惊,踊身变化入龙门,三根杨柳垂金钱,万朵桃花显价能。");
+        guZhongPingYuWoman.put("58", "此命推来转悠悠,时运未来莫强求,幸得今日重反点,自有好运在后头。");
+        guZhongPingYuWoman.put("59", "雨雪载途活泥泞,交易不安难出生,疾病还拉婚姻慢,谋望求财事难寻。");
+        guZhongPingYuWoman.put("60", "女命八字喜气和,谋事求财吉庆多,口舌渐消疾病少,夫君走别归老巢。");
+        guZhongPingYuWoman.put("61", "缘木求鱼事多难,虽不得鱼无害反,若是行险弄巧地,事不遂心枉安凡。");
+        guZhongPingYuWoman.put("62", "指日高升气象新,走失待人有信音,好命遇事遂心好,伺病口舌皆除根。");
+        guZhongPingYuWoman.put("63", "五官脱运难抬头,妇命须当把财求,交易少行有人助,一生衣禄不须愁。");
+        guZhongPingYuWoman.put("64", "俊乌曾得出胧中,脱离为难显威风,一朝得意福力至,东南西北任意通。");
+        guZhongPingYuWoman.put("65", "女命推来福非轻,兹善为事受人敬,天降文王开基业,八百年来富贵门。");
+        guZhongPingYuWoman.put("66", "时来运转闺阁楼,贤德淑女君子求,击鼓乐之大吉庆,女命逢此喜悠悠。");
+        guZhongPingYuWoman.put("67", "乱丝无头定有头,碰得亲事暂折磨,交易出行无好处,谋事求财心不遂。");
+        guZhongPingYuWoman.put("68", "水底明月不可捞,女命早限运未高,交易出行难获利,未运终得渐见好。");
+        guZhongPingYuWoman.put("69", "太公封祖不非凡,女子求财稳如山,交易合伙多吉庆,疾病口角遗天涯。");
+        guZhongPingYuWoman.put("70", "本命推断喜气新,恰遇郎君金遂心,坤身来交正当运,富贵衣禄乐平生。");
+        guZhongPingYuWoman.put("71", "此命推来宏运交,不须再愁苦劳难,一生身有衣禄福,安享荣华胜班超。");
+
+        piQi.put("七杀", "暴脾气大多数是坐下七杀地支,由于七杀呈现出一种压迫的态势,就好像长工和地主老财一样的紧张关系,说不得,一说就炸。最不喜欢被人批评,内心维系着自己可怜的小自尊,把别人对自己的看法看的很重要。所以坐下七杀的爱面子,不主动讨人厌,把自己的谦卑退缩当做了示爱的方式,时时都站在底限上说话,一旦触及底线,立马爆炸。所以处理问题比较粗暴,简单,不委婉,性子刚烈,脾气暴。严重的有暴力倾向,身太旺好打个仗,身太弱的话,又懦弱不成器。");
+        piQi.put("食神", "脾气急一般都体现在日坐食伤这种地支上,脾气上来的快,气撒的也快。由于食伤富有主观意识,爱憎分明,看不顺眼的就要说。所以,日坐食伤的嘴快,容易得罪人。大多数坐下食伤的都比较真诚,性格外向,热心肠。身弱的容易杂嘴子,唠唠叨叨的。");
+        piQi.put("伤官", "脾气急一般都体现在日坐食伤这种地支上,脾气上来的快,气撒的也快。由于食伤富有主观意识,爱憎分明,看不顺眼的就要说。所以,日坐食伤的嘴快,容易得罪人。大多数坐下食伤的都比较真诚,性格外向,热心肠。身弱的容易杂嘴子,唠唠叨叨的。");
+        piQi.put("正官", "脾气最好的大概是坐下正官。坐下正官的,克勤克俭,兢兢业业做事情。一般都很自律,不会因为个人的私欲去影响到别人。");
+        piQi.put("正印", "脾气最好的大概是坐下正印。而坐下正印的,通常缺乏积极性,危机意识不强,易于满足,相对乐观,所以也不会产生一种让人警惕和排挤的感觉,这两种大多都亲和力挺强,性格温和善良。也有好人主义思想,没有阶级对立意识,有爱心,因此脾气都相对好。");
+        piQi.put("偏印", "脾气最好的大概是坐下正印。而坐下正印的,通常缺乏积极性,危机意识不强,易于满足,相对乐观,所以也不会产生一种让人警惕和排挤的感觉,这两种大多都亲和力挺强,性格温和善良。也有好人主义思想,没有阶级对立意识,有爱心,因此脾气都相对好。");
+        piQi.put("比肩", "犟脾气一般都是坐下比劫日主的特点。关键一个词是‘不服’。由于坐下比劫旺地,自己意气用事的多,直来直去,考虑问题不会拐弯,听不出正反话。容易信以为真,轻信朋友,做事情鲁莽缺乏认真思考和缜密的观察。通常是撞到南墙之后才懂得原来是这么回事。更甚至,有一部分是装了南北东西四面墙之后,也不知道总结教训经验,下次照样。这种日主最喜身弱,尤其是喜财杀当头,这样的话就会认真面对成长,面对生活。要是身旺的话,简直就是个惹事的祖宗,吆五喝六东来西去的,没有一刻消停。");
+        piQi.put("劫财", "犟脾气一般都是坐下比劫日主的特点。关键一个词是‘不服’。由于坐下比劫旺地,自己意气用事的多,直来直去,考虑问题不会拐弯,听不出正反话。容易信以为真,轻信朋友,做事情鲁莽缺乏认真思考和缜密的观察。通常是撞到南墙之后才懂得原来是这么回事。更甚至,有一部分是装了南北东西四面墙之后,也不知道总结教训经验,下次照样。这种日主最喜身弱,尤其是喜财杀当头,这样的话就会认真面对成长,面对生活。要是身旺的话,简直就是个惹事的祖宗,吆五喝六东来西去的,没有一刻消停。");
+        piQi.put("正财", "日元正坐正财/偏财、脾气倔,是因为太主观,过于自信引起的。从不为别人改变自己,严重的会过度自信,自我放大。或者是从不承认错误,自以为是。由于坐下是财星,而日主为君,一副目空一切的样子,天王老子第一,我第二,所以很难接受意见和建议。如果是财旺的,又自命清高,视金钱如粪土。如果身旺的,又贪婪多欲,好色逞强。");
+        piQi.put("偏财", "日元正坐正财/偏财、脾气倔,是因为太主观,过于自信引起的。从不为别人改变自己,严重的会过度自信,自我放大。或者是从不承认错误,自以为是。由于坐下是财星,而日主为君,一副目空一切的样子,天王老子第一,我第二,所以很难接受意见和建议。如果是财旺的,又自命清高,视金钱如粪土。如果身旺的,又贪婪多欲,好色逞强。");
+
+        wuGui.put("子", "辰");
+        wuGui.put("丑", "巳");
+        wuGui.put("寅", "午");
+        wuGui.put("卯", "未");
+        wuGui.put("辰", "申");
+        wuGui.put("巳", "酉");
+        wuGui.put("午", "戌");
+        wuGui.put("未", "亥");
+        wuGui.put("申", "子");
+        wuGui.put("酉", "丑");
+        wuGui.put("戌", "寅");
+        wuGui.put("亥", "卯");
+
+        wuGuiShengXiao.put("子", "龙");
+        wuGuiShengXiao.put("丑", "蛇");
+        wuGuiShengXiao.put("寅", "马");
+        wuGuiShengXiao.put("卯", "羊");
+        wuGuiShengXiao.put("辰", "猴");
+        wuGuiShengXiao.put("巳", "鸡");
+        wuGuiShengXiao.put("午", "狗");
+        wuGuiShengXiao.put("未", "猪");
+        wuGuiShengXiao.put("申", "鼠");
+        wuGuiShengXiao.put("酉", "牛");
+        wuGuiShengXiao.put("戌", "虎");
+        wuGuiShengXiao.put("亥", "兔");
+
+        taoHuaZi.add("子");
+        taoHuaZi.add("午");
+        taoHuaZi.add("卯");
+        taoHuaZi.add("酉");
+
+    }
+
+
+    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;
+    }
+
+    public static String fangWei(String line) {
+        String result = "";
+
+        if (line.contains("喜神方位")) {
+            result += "喜神代表着喜庆和好运,方位位于";
+        } else if (line.contains("阳贵神方位")) {
+            result += "阳贵神有助于事业和权力,方位位于";
+        } else if (line.contains("阴贵神方位")) {
+            result += "阴贵神有助于家庭和人际关系,方位位于";
+        } else if (line.contains("福神方位")) {
+            result += "福神有助于吸引福气,方位位于";
+        } else if (line.contains("财神方位")) {
+            result += "财神有助于财富积累,方位位于";
+        } else if (line.contains("煞")) {
+            result += "而煞方位为";
+        } else {
+            result += line; // 如果不是以上情况,原样输出
+        }
+
+        if (line.contains("正东")) {
+            result += "正东";
+        } else if (line.contains("正西")) {
+            result += "正西";
+        } else if (line.contains("正南")) {
+            result += "正南";
+        } else if (line.contains("正北")) {
+            result += "正北";
+        } else if (line.contains("东北")) {
+            result += "东北";
+        } else if (line.contains("东南")) {
+            result += "东南";
+        } else if (line.contains("西南")) {
+            result += "西南";
+        } else if (line.contains("西北")) {
+            result += "西北";
+        } else if (line.contains("东")) {
+            result += "东";
+        } else if (line.contains("西")) {
+            result += "西";
+        } else if (line.contains("南")) {
+            result += "南";
+        } else if (line.contains("北")) {
+            result += "北";
+        }
+
+        return result;
+    }
+
+
+    // 定义一个方法,接收三个参数并返回最大值
+    public static int getMax(int num1, int num2, int num3) {
+        int max = num1;
+        // 比较 num2 和 max
+        if (num2 > max) {
+            max = num2;
+        }
+
+        // 再比较 num3 和 max
+        if (num3 > max) {
+            max = num3;
+        }
+
+        if (max == num1) {
+            return 1;
+        }
+        if (max == num2) {
+            return 2;
+        }
+        if (max == num3) {
+            return 3;
+        }
+        return 0;
+    }
+
+
+}

+ 2 - 5
nbjk-common/src/main/java/com/miaxis/common/core/domain/model/LoginUser.java

@@ -10,10 +10,7 @@ import org.springframework.security.core.GrantedAuthority;
 import org.springframework.security.core.authority.SimpleGrantedAuthority;
 import org.springframework.security.core.userdetails.UserDetails;
 
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
 
 /**
  * 登录用户身份权限
@@ -300,7 +297,7 @@ public class LoginUser implements UserDetails
             }
             return roleList;
         }else {
-            return null;
+            return Collections.emptyList();
         }
 
 

+ 62 - 0
nbjk-service/src/main/java/com/miaxis/birthday/domain/BirthdayLog.java

@@ -0,0 +1,62 @@
+package com.miaxis.birthday.domain;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.miaxis.common.annotation.Excel;
+import com.miaxis.common.core.domain.BaseBusinessEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 查询记录对象 birthday_log
+ *
+ * @author miaxis
+ * @date 2023-12-11
+ */
+@Data
+@TableName("birthday_log")
+@ApiModel(value = "BirthdayLog", description = "查询记录对象 birthday_log")
+public class BirthdayLog extends BaseBusinessEntity {
+    private static final long serialVersionUID = 1L;
+
+    /** $column.columnComment */
+    @TableId(value = "id")
+    @ApiModelProperty(value = "$column.columnComment")
+    private Long id;
+
+    /** 查询姓名 */
+    @Excel(name = "查询姓名")
+    @TableField("name")
+    @ApiModelProperty(value = "查询姓名")
+    private String name;
+
+    /** 性别 */
+    @Excel(name = "性别")
+    @TableField("sex")
+    @ApiModelProperty(value = "性别")
+    private String sex;
+
+    /** 生日 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "生日", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    @TableField("birthday")
+    @ApiModelProperty(value = "生日")
+    private Date birthday;
+
+    /** 查询用户ID */
+    @Excel(name = "查询用户ID")
+    @TableField("user_id")
+    @ApiModelProperty(value = "查询用户ID", hidden = true)
+    private Long userId;
+
+    /** 是否付费 0:未付费 1:基础版  2:高级版 */
+    @Excel(name = "是否付费 0:未付费 1:基础版  2:高级版")
+    @TableField("is_pay")
+    @ApiModelProperty(value = "是否付费 0:未付费 1:基础版  2:高级版")
+    private Long isPay;
+}

+ 62 - 0
nbjk-service/src/main/java/com/miaxis/birthday/dto/BirthdayLogDto.java

@@ -0,0 +1,62 @@
+package com.miaxis.birthday.dto;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.miaxis.common.annotation.Excel;
+import com.miaxis.common.core.domain.BaseBusinessEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 查询记录对象 birthday_log
+ *
+ * @author miaxis
+ * @date 2023-12-11
+ */
+@Data
+@TableName("birthday_log")
+@ApiModel(value = "BirthdayLog", description = "查询记录对象 birthday_log")
+public class BirthdayLogDto extends BaseBusinessEntity {
+    private static final long serialVersionUID = 1L;
+
+    /** $column.columnComment */
+    @TableId(value = "id")
+    @ApiModelProperty(value = "$column.columnComment")
+    private Long id;
+
+    /** 查询姓名 */
+    @Excel(name = "查询姓名")
+    @TableField("name")
+    @ApiModelProperty(value = "查询姓名")
+    private String name;
+
+    /** 性别 */
+    @Excel(name = "性别")
+    @TableField("sex")
+    @ApiModelProperty(value = "性别")
+    private String sex;
+
+    /** 生日 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "生日", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    @TableField("birthday")
+    @ApiModelProperty(value = "生日")
+    private Date birthday;
+
+    /** 查询用户ID */
+    @Excel(name = "查询用户ID")
+    @TableField("user_id")
+    @ApiModelProperty(value = "查询用户ID", hidden = true)
+    private Long userId;
+
+    /** 是否付费 0:未付费 1:基础版  2:高级版 */
+    @Excel(name = "是否付费 0:未付费 1:基础版  2:高级版")
+    @TableField("is_pay")
+    @ApiModelProperty(value = "是否付费 0:未付费 1:基础版  2:高级版")
+    private Long isPay;
+}

+ 26 - 0
nbjk-service/src/main/java/com/miaxis/birthday/mapper/BirthdayLogMapper.java

@@ -0,0 +1,26 @@
+package com.miaxis.birthday.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.miaxis.birthday.domain.BirthdayLog;
+
+import java.util.List;
+
+/**
+ * 查询记录Mapper接口
+ *
+ * @author miaxis
+ * @date 2023-12-11
+ */
+public interface BirthdayLogMapper extends BaseMapper<BirthdayLog> {
+    /**
+     * 查询查询记录列表
+     *
+     * @param birthdayLog 查询记录
+     * @return 查询记录集合
+     */
+    public List<BirthdayLog> selectBirthdayLogList(BirthdayLog birthdayLog);
+
+
+    public int selectBirthdayLogCount(BirthdayLog birthdayLog);
+
+}

+ 24 - 0
nbjk-service/src/main/java/com/miaxis/birthday/service/IBirthdayLogService.java

@@ -0,0 +1,24 @@
+package com.miaxis.birthday.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.miaxis.birthday.domain.BirthdayLog;
+
+import java.util.List;
+
+/**
+ * 查询记录Service接口
+ *
+ * @author miaxis
+ * @date 2023-12-11
+ */
+public interface IBirthdayLogService extends IService<BirthdayLog>{
+    /**
+     * 查询查询记录列表
+     *
+     * @param birthdayLog 查询记录
+     * @return 查询记录集合
+     */
+    public List<BirthdayLog> selectBirthdayLogList(BirthdayLog birthdayLog);
+
+    boolean saveBirthdayLog(BirthdayLog birthdayLog);
+}

+ 56 - 0
nbjk-service/src/main/java/com/miaxis/birthday/service/impl/BirthdayLogServiceImpl.java

@@ -0,0 +1,56 @@
+package com.miaxis.birthday.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.miaxis.birthday.domain.BirthdayLog;
+import com.miaxis.birthday.mapper.BirthdayLogMapper;
+import com.miaxis.birthday.service.IBirthdayLogService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 查询记录Service业务层处理
+ *
+ * @author miaxis
+ * @date 2023-12-11
+ */
+@Service
+@Slf4j
+public class BirthdayLogServiceImpl extends ServiceImpl<BirthdayLogMapper, BirthdayLog> implements IBirthdayLogService {
+    @Autowired
+    private BirthdayLogMapper birthdayLogMapper;
+
+    /**
+     * 查询查询记录列表
+     *
+     * @param birthdayLog 查询记录
+     * @return 查询记录
+     */
+    @Override
+    public List<BirthdayLog> selectBirthdayLogList(BirthdayLog birthdayLog){
+        return birthdayLogMapper.selectBirthdayLogList(birthdayLog);
+    }
+
+
+    /**
+     * 查询记录表
+     *
+     * @param birthdayLog 查询记录
+     * @return 查询记录
+     */
+    @Override
+    public boolean saveBirthdayLog(BirthdayLog birthdayLog){
+        int count = birthdayLogMapper.selectBirthdayLogCount(birthdayLog);
+
+        if(count>0) {
+            log.info("当前查询8字已存在");
+            return true;
+        } else {
+            return this.save(birthdayLog);
+        }
+
+    }
+
+}

+ 53 - 0
nbjk-service/src/main/java/com/miaxis/disease/domain/DiseasePart.java

@@ -0,0 +1,53 @@
+package com.miaxis.disease.domain;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.miaxis.common.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 疾病部位对象 disease_part
+ *
+ * @author miaxis
+ * @date 2023-11-24
+ */
+@Data
+@TableName("disease_part")
+@ApiModel(value = "DiseasePart", description = "疾病部位对象 disease_part")
+public class DiseasePart {
+    private static final long serialVersionUID = 1L;
+
+    /** ID */
+    @TableId(value = "id")
+    @ApiModelProperty(value = "ID")
+    private Long id;
+
+    /** 部位 */
+    @Excel(name = "部位")
+    @TableField("part")
+    @ApiModelProperty(value = "部位")
+    private String part;
+
+    /** 1男 2女 3不限 */
+    @Excel(name = "1男 2女 3不限")
+    @TableField("sex")
+    @ApiModelProperty(value = "1男 2女 3不限")
+    private Integer sex;
+
+    /** 症状 */
+    @Excel(name = "症状")
+    @TableField("symp")
+    @ApiModelProperty(value = "症状")
+    private String symp;
+
+    /** 1轻症、2严重 */
+    @Excel(name = "1轻症、2严重")
+    @TableField("degree")
+    @ApiModelProperty(value = "1轻症、2严重")
+    private String degree;
+
+
+}

+ 36 - 0
nbjk-service/src/main/java/com/miaxis/disease/dto/DiseasePartDto.java

@@ -0,0 +1,36 @@
+package com.miaxis.disease.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 疾病部位对象 disease_part
+ *
+ * @author miaxis
+ * @date 2023-11-24
+ */
+@Data
+@ApiModel(value = "DiseasePartDto", description = "疾病部位对象 disease_part")
+public class DiseasePartDto {
+
+    /** 部位 */
+    @ApiModelProperty(value = "部位")
+    private List<String> parts;
+
+    /** 1男 2女 3不限 */
+    @ApiModelProperty(value = "1男 2女 3不限")
+    private String sex;
+
+    /** 症状 */
+    @ApiModelProperty(value = "症状")
+    private String symptom;
+
+    /** 1轻症、2严重 */
+    @ApiModelProperty(value = "1轻症、2严重")
+    private String degree;
+
+
+}

+ 24 - 0
nbjk-service/src/main/java/com/miaxis/disease/mapper/DiseasePartMapper.java

@@ -0,0 +1,24 @@
+package com.miaxis.disease.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.miaxis.disease.domain.DiseasePart;
+import com.miaxis.disease.dto.DiseasePartDto;
+
+import java.util.List;
+
+/**
+ * 疾病部位Mapper接口
+ *
+ * @author miaxis
+ * @date 2023-11-24
+ */
+public interface DiseasePartMapper extends BaseMapper<DiseasePart> {
+    /**
+     * 查询疾病部位列表
+     *
+     * @param diseasePart 疾病部位
+     * @return 疾病部位集合
+     */
+    List<DiseasePart> selectDiseasePartList(DiseasePartDto diseasePart);
+
+}

+ 23 - 0
nbjk-service/src/main/java/com/miaxis/disease/service/IDiseasePartService.java

@@ -0,0 +1,23 @@
+package com.miaxis.disease.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.miaxis.disease.domain.DiseasePart;
+import com.miaxis.disease.dto.DiseasePartDto;
+
+import java.util.List;
+
+/**
+ * 疾病部位Service接口
+ *
+ * @author miaxis
+ * @date 2023-11-24
+ */
+public interface IDiseasePartService extends IService<DiseasePart>{
+    /**
+     * 查询疾病部位列表
+     *
+     * @param diseasePartDto 疾病部位
+     * @return 疾病部位集合
+     */
+    public List<DiseasePart> selectDiseasePartList(DiseasePartDto diseasePartDto);
+}

+ 34 - 0
nbjk-service/src/main/java/com/miaxis/disease/service/impl/DiseasePartServiceImpl.java

@@ -0,0 +1,34 @@
+package com.miaxis.disease.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.miaxis.disease.domain.DiseasePart;
+import com.miaxis.disease.dto.DiseasePartDto;
+import com.miaxis.disease.mapper.DiseasePartMapper;
+import com.miaxis.disease.service.IDiseasePartService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 疾病部位Service业务层处理
+ *
+ * @author miaxis
+ * @date 2023-11-24
+ */
+@Service
+public class DiseasePartServiceImpl extends ServiceImpl<DiseasePartMapper, DiseasePart> implements IDiseasePartService {
+    @Autowired
+    private DiseasePartMapper diseasePartMapper;
+
+    /**
+     * 查询疾病部位列表
+     *
+     * @param diseasePartDto 疾病部位
+     * @return 疾病部位
+     */
+    @Override
+    public List<DiseasePart> selectDiseasePartList(DiseasePartDto diseasePartDto){
+        return diseasePartMapper.selectDiseasePartList(diseasePartDto);
+    }
+}

+ 60 - 0
nbjk-service/src/main/java/com/miaxis/gan/domain/GanZhi.java

@@ -0,0 +1,60 @@
+package com.miaxis.gan.domain;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.miaxis.common.annotation.Excel;
+import com.miaxis.common.core.domain.BaseBusinessEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 天干地支对象 gan_zhi
+ *
+ * @author miaxis
+ * @date 2023-11-16
+ */
+@Data
+@TableName("gan_zhi")
+@ApiModel(value = "GanZhiDto", description = "天干地支对象 gan_zhi")
+public class GanZhi extends BaseBusinessEntity {
+    private static final long serialVersionUID = 1L;
+
+    /** $column.columnComment */
+    @TableId(value = "id")
+    @ApiModelProperty(value = "$column.columnComment")
+    private Long id;
+
+    /** 天干地支名   */
+    @Excel(name = "天干地支名  ")
+    @TableField("name")
+    @ApiModelProperty(value = "天干地支名  ")
+    private String name;
+
+    /** 颜色 */
+    @Excel(name = "颜色")
+    @TableField("color")
+    @ApiModelProperty(value = "颜色")
+    private String color;
+
+    /** 五行 */
+    @Excel(name = "五行")
+    @TableField("five")
+    @ApiModelProperty(value = "五行")
+    private String five;
+
+    /** 喜用 */
+    @Excel(name = "喜用")
+    @TableField("xi")
+    @ApiModelProperty(value = "喜用")
+    private String xi;
+
+    /** 忌用 */
+    @Excel(name = "忌用")
+    @TableField("ji")
+    @ApiModelProperty(value = "忌用")
+    private String ji;
+
+
+}

+ 61 - 0
nbjk-service/src/main/java/com/miaxis/gan/dto/GanZhiDto.java

@@ -0,0 +1,61 @@
+package com.miaxis.gan.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 天干地支对象 gan_zhi
+ *
+ * @author miaxis
+ * @date 2023-11-16
+ */
+@Data
+public class GanZhiDto {
+
+    private static final long serialVersionUID = 1L;
+
+
+    @ApiModelProperty(value = "姓名")
+    private String username;
+
+    @ApiModelProperty(value = "性别 1:男  2:女", required = true)
+    private Integer sex;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "出生日期 yyyy-MM-dd HH:mm:ss")
+    private Date birthDay;
+
+    @ApiModelProperty(value = "是否保存 0:不保存 1保存")
+    private Integer isSave;
+
+    @ApiModelProperty(value = "年干", hidden = true)
+    private String yearGan;
+
+    @ApiModelProperty(value = "年支", hidden = true)
+    private String yearZhi;
+
+    @ApiModelProperty(value = "月干", hidden = true)
+    private String monthGan;
+
+    @ApiModelProperty(value = "月支", hidden = true)
+    private String monthZhi;
+
+    @ApiModelProperty(value = "日干", hidden = true)
+    private String dayGan;
+
+    @ApiModelProperty(value = "日支", hidden = true)
+    private String dayZhi;
+
+    @ApiModelProperty(value = "时干", hidden = true)
+    private String timeGan;
+
+    @ApiModelProperty(value = "时支", hidden = true)
+    private String timeZhi;
+
+    @ApiModelProperty(value = "最强能量的天干", hidden = true)
+    private int maxGan;
+
+}

+ 25 - 0
nbjk-service/src/main/java/com/miaxis/gan/dto/LiuNianDto.java

@@ -0,0 +1,25 @@
+package com.miaxis.gan.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 天干地支对象 gan_zhi
+ *
+ * @author miaxis
+ * @date 2023-11-16
+ */
+@Data
+public class LiuNianDto {
+
+    private static final long serialVersionUID = 1L;
+
+
+    @ApiModelProperty(value = "起运年份", required = true)
+    private Integer year;
+
+    @ApiModelProperty(value = "起运年龄", required = true)
+    private Integer qiYunOld;
+
+
+}

+ 29 - 0
nbjk-service/src/main/java/com/miaxis/gan/mapper/GanZhiMapper.java

@@ -0,0 +1,29 @@
+package com.miaxis.gan.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.miaxis.gan.domain.GanZhi;
+import com.miaxis.gan.dto.GanZhiDto;
+import com.miaxis.gan.vo.GanZhiFiveVo;
+import com.miaxis.gan.vo.GanZhiRowVo;
+
+import java.util.List;
+
+/**
+ * 天干地支Mapper接口
+ *
+ * @author miaxis
+ * @date 2023-11-16
+ */
+public interface GanZhiMapper extends BaseMapper<GanZhi> {
+    /**
+     * 查询天干地支列表
+     *
+     * @param ganZhi 天干地支
+     * @return 天干地支集合
+     */
+    List<GanZhi> selectGanZhiList(GanZhi ganZhi);
+
+    List<GanZhiRowVo> selectGanZhiRowVoList(GanZhiDto ganZhiDto);
+
+    List<GanZhiFiveVo> selectGanZhiFiveVoCount(GanZhiDto ganZhiDto);
+}

+ 13 - 0
nbjk-service/src/main/java/com/miaxis/gan/service/IGanReportService.java

@@ -0,0 +1,13 @@
+package com.miaxis.gan.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.miaxis.gan.domain.GanZhi;
+
+/**
+ * 天干地支Service接口
+ *
+ * @author miaxis
+ * @date 2023-11-16
+ */
+public interface IGanReportService extends IService<GanZhi>{
+}

+ 120 - 0
nbjk-service/src/main/java/com/miaxis/gan/service/IGanZhiService.java

@@ -0,0 +1,120 @@
+package com.miaxis.gan.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+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;
+import com.nlf.calendar.Lunar;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 天干地支Service接口
+ *
+ * @author miaxis
+ * @date 2023-11-16
+ */
+public interface IGanZhiService extends IService<GanZhi>{
+    /**
+     * 查询天干地支列表
+     *
+     * @param ganZhi 天干地支
+     * @return 天干地支集合
+     */
+    List<GanZhi> selectGanZhiList(GanZhi ganZhi);
+
+    List<GanZhiRowVo> selectGanZhiRowVoList(GanZhiDto ganZhiDto);
+
+    List<GanZhiNaYinVo> selectGanZhiNaYinList(GanZhiDto ganZhiDto);
+
+    List<GanZhiKongWangVo> selectGanZhiKongWangList(GanZhiDto ganZhiDto);
+
+
+    /**
+     * 日元的强
+     * @param ganZhiRowVoList
+     * @return
+     */
+    Map<String,Object> getRiYuanQr(List<GanZhiRowVo> ganZhiRowVoList,Map<String,Integer> fiveCountMap);
+
+    /**
+     * 疾病
+     * @param ganZhiRowVoList
+     * @return
+     */
+    List<DiseasePart> getJiBing(List<GanZhiRowVo> ganZhiRowVoList, Map<String,Integer> fiveCountMap);
+
+    /**
+     * 返回喜用数字
+     * @param qr 日元强弱MAP
+     * @return
+     */
+    Map<String, Object> getNumberYun(Map<String, Object> qr);
+
+
+    /**
+     * 获取种五行数量
+     * @param ganZhiRowVoList
+     * @return
+     */
+    Map<String,Integer> getGanZhiRowVoCount(List<GanZhiRowVo> ganZhiRowVoList,Map<String,String> reportMap);
+
+    /**
+     * 获取十神数量
+     * @param ganZhiRowVoList
+     * @return
+     */
+    Map<String, Integer> getShiShenCount(List<GanZhiRowVo> ganZhiRowVoList,Map<String,String> reportMap);
+
+    /**
+     * 潮湿平衡
+     * @param ganZhiRowVoList
+     * @return
+     */
+    Map<String, Integer> getZaoShiCount(List<GanZhiRowVo> ganZhiRowVoList,Map<String, Integer> fiveCount,Map<String,String> reportMap);
+
+
+    /**
+     * 排大运
+     * (阳年男子,大运顺行,阴年男子,大运逆行)
+     * (阳年女子,大运逆行,阴年女子,大运顺行)
+     * @param ganZhiDto
+     * @param ganZhiDaYunVo
+     * @return
+     */
+    GanZhiDaYunVo getDaYun(GanZhiDto ganZhiDto, GanZhiDaYunVo ganZhiDaYunVo);
+
+    /**
+     * 根据大运开始查流年
+     * @param linNianDto
+     * @return
+     */
+    List<Map<String, String>> getLiuNian(LiuNianDto linNianDto);
+
+
+    int getMaxTianGan(GanZhiDto ganZhiDto);
+
+    Map<String,String> getGeJu(List<GanZhiRowVo> list, int maxTianGan, String qr);
+
+    Map<Integer, String> getGuo3Guan(List<GanZhiRowVo> list, String qr);
+
+    String getXiFangWei(Lunar lunar);
+
+    String getIndustry(Map<String, Object> riYuanQrMap,String geju);
+
+    String getGuiren(List<GanZhiRowVo> ganZhiRowVoList);
+
+    Map<String, String> getChenGu(Lunar lunar, Integer sex);
+
+    String getPiQi(List<GanZhiRowVo> ganZhiRowVoList);
+
+    String getCaiYun(List<GanZhiRowVo> ganZhiRowVoList, Map<String, Object> riYuanQrMap, Map<String, Integer> shiShenCountMap);
+
+    String getQingGanYun(List<GanZhiRowVo> ganZhiRowVoList, Map<String, Object> riYuanQrMap, Map<String, Integer> shiShenCountMap, Map<String, Integer> fiveCountMap);
+}

+ 15 - 0
nbjk-service/src/main/java/com/miaxis/gan/service/impl/GanReportServiceImpl.java

@@ -0,0 +1,15 @@
+package com.miaxis.gan.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.miaxis.gan.domain.GanZhi;
+import com.miaxis.gan.mapper.GanZhiMapper;
+import com.miaxis.gan.service.IGanReportService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class GanReportServiceImpl extends ServiceImpl<GanZhiMapper, GanZhi> implements IGanReportService {
+
+
+
+
+}

+ 2116 - 0
nbjk-service/src/main/java/com/miaxis/gan/service/impl/GanZhiServiceImpl.java

@@ -0,0 +1,2116 @@
+package com.miaxis.gan.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.miaxis.common.config.ShiShenConfig;
+import com.miaxis.common.utils.DateUtils;
+import com.miaxis.disease.domain.DiseasePart;
+import com.miaxis.disease.dto.DiseasePartDto;
+import com.miaxis.disease.mapper.DiseasePartMapper;
+import com.miaxis.gan.domain.GanZhi;
+import com.miaxis.gan.dto.GanZhiDto;
+import com.miaxis.gan.dto.LiuNianDto;
+import com.miaxis.gan.mapper.GanZhiMapper;
+import com.miaxis.gan.service.IGanZhiService;
+import com.miaxis.gan.vo.GanZhiDaYunVo;
+import com.miaxis.gan.vo.GanZhiKongWangVo;
+import com.miaxis.gan.vo.GanZhiNaYinVo;
+import com.miaxis.gan.vo.GanZhiRowVo;
+import com.miaxis.ge.domain.GeJu;
+import com.miaxis.ge.mapper.GeJuMapper;
+import com.miaxis.jie.mapper.JieQiMapper;
+import com.miaxis.jie.vo.JieQiVo;
+import com.miaxis.number.domain.NumberYun;
+import com.miaxis.number.mapper.NumberYunMapper;
+import com.nlf.calendar.Lunar;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+
+/**
+ * 天干地支Service业务层处理
+ *
+ * @author miaxis
+ * @date 2023-11-16
+ */
+@Service
+public class GanZhiServiceImpl extends ServiceImpl<GanZhiMapper, GanZhi> implements IGanZhiService {
+    @Autowired
+    private GanZhiMapper ganZhiMapper;
+
+    @Autowired
+    private NumberYunMapper numberYunMapper;
+
+    @Autowired
+    private DiseasePartMapper diseasePartMapper;
+
+    @Autowired
+    private ShiShenConfig shiShenConfig;
+
+    @Autowired
+    private JieQiMapper jieQiMapper;
+
+    @Autowired
+    private GeJuMapper geJuMapper;
+
+
+    /**
+     * 查询天干地支列表
+     *
+     * @param ganZhi 天干地支
+     * @return 天干地支
+     */
+    @Override
+    public List<GanZhi> selectGanZhiList(GanZhi ganZhi) {
+        return ganZhiMapper.selectGanZhiList(ganZhi);
+    }
+
+    @Override
+    public List<GanZhiRowVo> selectGanZhiRowVoList(GanZhiDto ganZhiDto) {
+
+        List<GanZhiRowVo> list = this.getGanZhiRowVoList(ganZhiDto);
+        if (ganZhiDto.getSex() == 1) {
+            list.get(4).setShiShen1("元男");
+        } else if (ganZhiDto.getSex() == 2) {
+            list.get(4).setShiShen1("元女");
+        }
+
+        /*-----------------------十神 开始-------------------*/
+        for (int i = 0; i < list.size(); i++) {
+
+            if ((i == 0 || i == 2 || i == 6) && i != 4) {
+
+                String zhengYin = shiShenConfig.getZhengYin().get(list.get(i).getName()); //正印
+                String shiShen = shiShenConfig.getShiShen().get(list.get(i).getName());  //食神
+                String zhengGuan = shiShenConfig.getZhengGuan().get(list.get(i).getName()); //正官
+                String zhengCai = shiShenConfig.getZhengCai().get(list.get(i).getName()); //正财
+                String qiSha = shiShenConfig.getQiSha().get(list.get(i).getName());  //七杀
+                String pianYin = shiShenConfig.getPianYin().get(list.get(i).getName()); //偏印
+                String shangGuan = shiShenConfig.getShangGuan().get(list.get(i).getName()); // 伤官
+                String jieCai = shiShenConfig.getJieCai().get(list.get(i).getName()); // 劫财
+                String biJian = shiShenConfig.getBiJian().get(list.get(i).getName()); // 比肩
+                String pianCai = shiShenConfig.getPianCai().get(list.get(i).getName()); // 偏财
+
+                if (list.get(4).getName().equals(zhengYin)) { //比对出正印
+                    list.get(i).setShiShen1("正印");
+                }
+                if (list.get(4).getName().equals(shiShen)) { //比对出食神
+                    list.get(i).setShiShen1("食神");
+                }
+                if (list.get(4).getName().equals(zhengGuan)) { //比对出正官
+                    list.get(i).setShiShen1("正官");
+                }
+                if (list.get(4).getName().equals(zhengCai)) { //比对出正财
+                    list.get(i).setShiShen1("正财");
+                }
+                if (list.get(4).getName().equals(qiSha)) { //比对出七杀
+                    list.get(i).setShiShen1("七杀");
+                }
+                if (list.get(4).getName().equals(pianYin)) { //比对出偏印
+                    list.get(i).setShiShen1("偏印");
+                }
+                if (list.get(4).getName().equals(shangGuan)) { //比对出伤官
+                    list.get(i).setShiShen1("伤官");
+                }
+                if (list.get(4).getName().equals(jieCai)) { //比对出劫财
+                    list.get(i).setShiShen1("劫财");
+                }
+                if (list.get(4).getName().equals(biJian)) { //比对出比肩
+                    list.get(i).setShiShen1("比肩");
+                }
+                if (list.get(4).getName().equals(pianCai)) { //比对出偏财
+                    list.get(i).setShiShen1("偏财");
+                }
+
+            }
+
+            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()); //乙
+                String yuQi = shiShenConfig.getYuQi().get(list.get(i).getName());   //癸
+
+                /*------------------------正印--------------------------*/
+                String zhengYinBenQi = (benQi != null) ? shiShenConfig.getZhengYin().get(benQi) : null; //正印本气
+                String zhengYinZhongQi = (zhongQi != null) ? shiShenConfig.getZhengYin().get(zhongQi) : null; //正印中余
+                String zhengYinYuQi = (yuQi != null) ? shiShenConfig.getZhengYin().get(yuQi) : null; //正印余气
+
+                if (StringUtils.isNotEmpty(zhengYinBenQi) && list.get(4).getName().equals(zhengYinBenQi)) { //比对出正印
+                    list.get(i).setShiShen1(benQi + "(正印)");
+                }
+                if (StringUtils.isNotEmpty(zhengYinZhongQi) && list.get(4).getName().equals(zhengYinZhongQi)) { //比对出正印
+                    list.get(i).setShiShen2(zhongQi + "(正印)");
+                }
+                if (StringUtils.isNotEmpty(zhengYinYuQi) && list.get(4).getName().equals(zhengYinYuQi)) { //比对出正印
+                    list.get(i).setShiShen3(yuQi + "(正印)");
+                }
+
+
+                /*------------------------食神-----------------------------*/
+                String shiShenBenQi = (benQi != null) ? shiShenConfig.getShiShen().get(benQi) : null; //食神本气
+                String shiShenZhongQi = (zhongQi != null) ? shiShenConfig.getShiShen().get(zhongQi) : null; //食神中气
+                String shiShenYuQi = (yuQi != null) ? shiShenConfig.getShiShen().get(yuQi) : null; //食神余气
+
+                if (StringUtils.isNotEmpty(shiShenBenQi) && list.get(4).getName().equals(shiShenBenQi)) { //比对出食神
+                    list.get(i).setShiShen1(benQi + "(食神)");
+                }
+                if (StringUtils.isNotEmpty(shiShenZhongQi) && list.get(4).getName().equals(shiShenZhongQi)) { //比对出食神
+                    list.get(i).setShiShen2(zhongQi + "(食神)");
+                }
+                if (StringUtils.isNotEmpty(shiShenYuQi) && list.get(4).getName().equals(shiShenYuQi)) { //比对出食神
+                    list.get(i).setShiShen3(yuQi + "(食神)");
+                }
+
+                /*------------------------正官-----------------------------*/
+                String zhengGuanBenQi = (benQi != null) ? shiShenConfig.getZhengGuan().get(benQi) : null; //正官本气
+                String zhengGuanZhongQi = (zhongQi != null) ? shiShenConfig.getZhengGuan().get(zhongQi) : null; //正官中气
+                String zhengGuanYuQi = (yuQi != null) ? shiShenConfig.getZhengGuan().get(yuQi) : null; //正官 余气
+
+                if (StringUtils.isNotEmpty(zhengGuanBenQi) && list.get(4).getName().equals(zhengGuanBenQi)) { //比对出正官
+                    list.get(i).setShiShen1(benQi + "(正官)");
+                }
+                if (StringUtils.isNotEmpty(zhengGuanZhongQi) && list.get(4).getName().equals(zhengGuanZhongQi)) { //比对出正官
+                    list.get(i).setShiShen2(zhongQi + "(正官)");
+                }
+                if (StringUtils.isNotEmpty(zhengGuanYuQi) && list.get(4).getName().equals(zhengGuanYuQi)) { //比对出正官
+                    list.get(i).setShiShen3(yuQi + "(正官)");
+                }
+
+                /*------------------------正财-----------------------------*/
+                String zhengCaiBenQi = (benQi != null) ? shiShenConfig.getZhengCai().get(benQi) : null; //正财本气
+                String zhengCaiZhongQi = (zhongQi != null) ? shiShenConfig.getZhengCai().get(zhongQi) : null; //正财中气
+                String zhengCaiYuQi = (yuQi != null) ? shiShenConfig.getZhengCai().get(yuQi) : null; //正财余气
+
+                if (StringUtils.isNotEmpty(zhengCaiBenQi) && list.get(4).getName().equals(zhengCaiBenQi)) { //比对出正财
+                    list.get(i).setShiShen1(benQi + "(正财)");
+                }
+                if (StringUtils.isNotEmpty(zhengCaiZhongQi) && list.get(4).getName().equals(zhengCaiZhongQi)) { //比对出正财
+                    list.get(i).setShiShen2(zhongQi + "(正财)");
+                }
+                if (StringUtils.isNotEmpty(zhengCaiYuQi) && list.get(4).getName().equals(zhengCaiYuQi)) { //比对出正财
+                    list.get(i).setShiShen3(yuQi + "(正财)");
+                }
+
+
+                /*------------------------七杀-----------------------------*/
+                String qiShaBenQi = (benQi != null) ? shiShenConfig.getQiSha().get(benQi) : null; //七杀本气
+                String qiShaZhongQi = (zhongQi != null) ? shiShenConfig.getQiSha().get(zhongQi) : null; //七杀中气
+                String qiShaYuQi = (yuQi != null) ? shiShenConfig.getQiSha().get(yuQi) : null; //七杀余气
+
+                if (StringUtils.isNotEmpty(qiShaBenQi) && list.get(4).getName().equals(qiShaBenQi)) { //比对出七杀
+                    list.get(i).setShiShen1(benQi + "(七杀)");
+                }
+                if (StringUtils.isNotEmpty(qiShaZhongQi) && list.get(4).getName().equals(qiShaZhongQi)) { //比对出七杀
+                    list.get(i).setShiShen2(zhongQi + "(七杀)");
+                }
+                if (StringUtils.isNotEmpty(qiShaYuQi) && list.get(4).getName().equals(qiShaYuQi)) { //比对出七杀
+                    list.get(i).setShiShen3(yuQi + "(七杀)");
+                }
+
+
+                /*------------------------偏印-----------------------------*/
+                String pianYinBenQi = (benQi != null) ? shiShenConfig.getPianYin().get(benQi) : null; //偏印本气
+                String pianYinZhongQi = (zhongQi != null) ? shiShenConfig.getPianYin().get(zhongQi) : null; //偏印中气
+                String pianYinYuQi = (yuQi != null) ? shiShenConfig.getPianYin().get(yuQi) : null; //偏印余气
+
+                if (StringUtils.isNotEmpty(pianYinBenQi) && list.get(4).getName().equals(pianYinBenQi)) { //比对出七杀
+                    list.get(i).setShiShen1(benQi + "(偏印)");
+                }
+                if (StringUtils.isNotEmpty(pianYinZhongQi) && list.get(4).getName().equals(pianYinZhongQi)) { //比对出七杀
+                    list.get(i).setShiShen2(zhongQi + "(偏印)");
+                }
+                if (StringUtils.isNotEmpty(pianYinYuQi) && list.get(4).getName().equals(pianYinYuQi)) { //比对出七杀
+                    list.get(i).setShiShen3(yuQi + "(偏印)");
+                }
+
+                /*------------------------伤官-----------------------------*/
+                String shangGuanBenQi = (benQi != null) ? shiShenConfig.getShangGuan().get(benQi) : null; //伤官本气
+                String shangGuanZhongQi = (zhongQi != null) ? shiShenConfig.getShangGuan().get(zhongQi) : null; //伤官中气
+                String shangGuanYuQi = (yuQi != null) ? shiShenConfig.getShangGuan().get(yuQi) : null; //伤官余气
+
+                if (StringUtils.isNotEmpty(shangGuanBenQi) && list.get(4).getName().equals(shangGuanBenQi)) { //比对出伤官
+                    list.get(i).setShiShen1(benQi + "(伤官)");
+                }
+                if (StringUtils.isNotEmpty(shangGuanZhongQi) && list.get(4).getName().equals(shangGuanZhongQi)) { //比对出伤官
+                    list.get(i).setShiShen2(zhongQi + "(伤官)");
+                }
+                if (StringUtils.isNotEmpty(shangGuanYuQi) && list.get(4).getName().equals(shangGuanYuQi)) { //比对出伤官
+                    list.get(i).setShiShen3(yuQi + "(伤官)");
+                }
+
+
+                /*------------------------劫财-----------------------------*/
+                String jieCaiBenQi = (benQi != null) ? shiShenConfig.getJieCai().get(benQi) : null; //劫财本气
+                String jieCaiZhongQi = (zhongQi != null) ? shiShenConfig.getJieCai().get(zhongQi) : null; //劫财中气
+                String jieCaiYuQi = (yuQi != null) ? shiShenConfig.getJieCai().get(yuQi) : null; //劫财余气
+
+                if (StringUtils.isNotEmpty(jieCaiBenQi) && list.get(4).getName().equals(jieCaiBenQi)) { //比对出劫财
+                    list.get(i).setShiShen1(benQi + "(劫财)");
+                }
+                if (StringUtils.isNotEmpty(jieCaiZhongQi) && list.get(4).getName().equals(jieCaiZhongQi)) { //比对出劫财
+                    list.get(i).setShiShen2(zhongQi + "(劫财)");
+                }
+                if (StringUtils.isNotEmpty(jieCaiYuQi) && list.get(4).getName().equals(jieCaiYuQi)) { //比对出劫财
+                    list.get(i).setShiShen3(yuQi + "(劫财)");
+                }
+
+                /*------------------------比肩-----------------------------*/
+                String biJianBenQi = (benQi != null) ? shiShenConfig.getBiJian().get(benQi) : null; //比肩本气
+                String biJianZhongQi = (zhongQi != null) ? shiShenConfig.getBiJian().get(zhongQi) : null; //比肩中气
+                String biJianYuQi = (yuQi != null) ? shiShenConfig.getBiJian().get(yuQi) : null; //比肩余气
+
+                if (StringUtils.isNotEmpty(biJianBenQi) && list.get(4).getName().equals(biJianBenQi)) {
+                    list.get(i).setShiShen1(benQi + "(比肩)");
+                }
+                if (StringUtils.isNotEmpty(biJianZhongQi) && list.get(4).getName().equals(biJianZhongQi)) {
+                    list.get(i).setShiShen2(zhongQi + "(比肩)");
+                }
+                if (StringUtils.isNotEmpty(biJianYuQi) && list.get(4).getName().equals(biJianYuQi)) {
+                    list.get(i).setShiShen3(yuQi + "(比肩)");
+                }
+
+                /*------------------------偏财-----------------------------*/
+                String pianCaiBenQi = (benQi != null) ? shiShenConfig.getPianCai().get(benQi) : null; //偏财本气
+                String pianCaiZhongQi = (zhongQi != null) ? shiShenConfig.getPianCai().get(zhongQi) : null; //偏财中气
+                String pianCaiYuQi = (yuQi != null) ? shiShenConfig.getPianCai().get(yuQi) : null; //偏财余气
+
+                if (StringUtils.isNotEmpty(pianCaiBenQi) && list.get(4).getName().equals(pianCaiBenQi)) { //比对出偏财
+                    list.get(i).setShiShen1(benQi + "(偏财)");
+                }
+                if (StringUtils.isNotEmpty(pianCaiZhongQi) && list.get(4).getName().equals(pianCaiZhongQi)) { //比对出偏财
+                    list.get(i).setShiShen2(zhongQi + "(偏财)");
+                }
+                if (StringUtils.isNotEmpty(pianCaiYuQi) && list.get(4).getName().equals(pianCaiYuQi)) { //比对出偏财
+                    list.get(i).setShiShen3(yuQi + "(偏财)");
+                }
+
+            }
+
+
+        }
+        /*-----------------------十神 结束-------------------*/
+
+        return list;
+    }
+
+
+    @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 yearZhuNaYin = shiShenConfig.getNaYin().get(yearZhuNaYinKey);
+        String monthZhuNaYin = shiShenConfig.getNaYin().get(monthZhuNaYinKey);
+        String dayZhuNaYin = shiShenConfig.getNaYin().get(dayZhuNaYinKey);
+        String timeZhuNaYin = shiShenConfig.getNaYin().get(timeZhuNaYinKey);
+
+        GanZhiNaYinVo yearNaYinVo = new GanZhiNaYinVo();
+        yearNaYinVo.setZhu("年");
+        yearNaYinVo.setNaYin(yearZhuNaYin);
+        GanZhiNaYinVo monthNaYinVo = new GanZhiNaYinVo();
+        monthNaYinVo.setZhu("月");
+        monthNaYinVo.setNaYin(monthZhuNaYin);
+        GanZhiNaYinVo dayNaYinVo = new GanZhiNaYinVo();
+        dayNaYinVo.setZhu("日");
+        dayNaYinVo.setNaYin(dayZhuNaYin);
+        GanZhiNaYinVo timeNaYinVo = new GanZhiNaYinVo();
+        timeNaYinVo.setZhu("时");
+        timeNaYinVo.setNaYin(timeZhuNaYin);
+
+        List<GanZhiNaYinVo> list = new ArrayList<GanZhiNaYinVo>();
+        list.add(yearNaYinVo);
+        list.add(monthNaYinVo);
+        list.add(dayNaYinVo);
+        list.add(timeNaYinVo);
+        return list;
+    }
+
+
+    @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 yearZhuKongWang = shiShenConfig.getKongWang().get(yearZhuKongWangKey);
+        String monthZhuKongWang = shiShenConfig.getKongWang().get(monthZhuKongWangKey);
+        String dayZhuKongWang = shiShenConfig.getKongWang().get(dayZhuNaKongWangKey);
+        String timeZhuKongWang = shiShenConfig.getKongWang().get(timeZhuNaKongWangKey);
+
+        GanZhiKongWangVo yearKongWangVo = new GanZhiKongWangVo();
+        yearKongWangVo.setZhu("年");
+        yearKongWangVo.setKongWang(yearZhuKongWang);
+        GanZhiKongWangVo monthKongWangVo = new GanZhiKongWangVo();
+        monthKongWangVo.setZhu("月");
+        monthKongWangVo.setKongWang(monthZhuKongWang);
+        GanZhiKongWangVo dayKongWangVo = new GanZhiKongWangVo();
+        dayKongWangVo.setZhu("日");
+        dayKongWangVo.setKongWang(dayZhuKongWang);
+        GanZhiKongWangVo timeKongWangVo = new GanZhiKongWangVo();
+        timeKongWangVo.setZhu("时");
+        timeKongWangVo.setKongWang(timeZhuKongWang);
+
+        List<GanZhiKongWangVo> list = new ArrayList<GanZhiKongWangVo>();
+        list.add(yearKongWangVo);
+        list.add(monthKongWangVo);
+        list.add(dayKongWangVo);
+        list.add(timeKongWangVo);
+        return list;
+    }
+
+    @Override
+    public Map<String, Object> getRiYuanQr(List<GanZhiRowVo> list, Map<String, Integer> fiveCountMap) {
+        /*-------------------日元身强身弱---------------------*/
+        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;
+        List<String> xiYongShiShen = new ArrayList<String>();
+        String fiveQr = null;
+        if (score > 50) {
+            fiveQr = list.get(4).getFive() + "强";
+            xiYong = shiShenConfig.getXiYong().get(fiveQr);
+            xiYongShiShen.addAll(shiShenConfig.getXiYongShiShenQ());
+        } else {
+            fiveQr = list.get(4).getFive() + "弱";
+            xiYong = shiShenConfig.getXiYong().get(fiveQr);
+            xiYongShiShen.addAll(shiShenConfig.getXiYongShiShenR());
+        }
+        List<String> xiYongOld = new ArrayList<>();
+        xiYongOld.addAll(xiYong);
+
+        String xi1 = xiYong.get(0);
+        String xi2 = xiYong.get(1);
+
+        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);
+
+        Map<String, Object> qr = new TreeMap<String, Object>();
+        qr.put("score", score);
+        qr.put("qr", fiveQr);
+        qr.put("xiYong", xiYong);
+        qr.put("xiYongOld", xiYongOld);
+        qr.put("xiYongShiShen", xiYongShiShen);
+        return qr;
+    }
+
+
+    @Override
+    public List<DiseasePart> getJiBing(List<GanZhiRowVo> ganZhiRowVoList, Map<String, Integer> fiveCountMap) {
+        String sex = ganZhiRowVoList.get(4).getShiShen1();
+
+        String gender = null;
+        if ("元男".equals(sex)) {  //男性疾病
+            sex = "1,3";
+        } else if ("元女".equals(sex)) {  //女性疾病
+            sex = "2,3";
+        }
+
+        List<String> partZ = new ArrayList<String>();
+        List<String> partQ = new ArrayList<String>();
+
+
+
+        /*--------------------------年柱---------------------------*/
+        //天干 头
+        String yearGanShiShen = ganZhiRowVoList.get(0).getShiShen1();
+        if ("七杀".contains(yearGanShiShen)) { //存在七杀
+            partZ.add("头");
+        }
+        if ("偏印".contains(yearGanShiShen)) { //存在七杀
+            partQ.add("头");
+        }
+        //地支 脖子
+        String yearZhiShiShen1 = ganZhiRowVoList.get(1).getShiShen1(); //脖子
+        String yearZhiShiShen2 = ganZhiRowVoList.get(1).getShiShen2(); //脖子
+        String yearZhiShiShen3 = ganZhiRowVoList.get(1).getShiShen3(); //脖子
+        if (yearZhiShiShen1 != null && yearZhiShiShen1.contains("七杀")) { //存在七杀
+            partZ.add("脖子");
+        }
+        if (yearZhiShiShen2 != null && yearZhiShiShen2.contains("七杀")) { //存在七杀
+            partZ.add("脖子");
+        }
+        if (yearZhiShiShen3 != null && yearZhiShiShen3.contains("七杀")) { //存在七杀
+            partZ.add("脖子");
+        }
+        if (yearZhiShiShen1 != null && yearZhiShiShen1.contains("偏印")) { //存在偏印
+            partQ.add("脖子");
+        }
+        if (yearZhiShiShen2 != null && yearZhiShiShen2.contains("偏印")) { //存在偏印
+            partQ.add("脖子");
+        }
+        if (yearZhiShiShen3 != null && yearZhiShiShen3.contains("偏印")) { //存在偏印
+            partQ.add("脖子");
+        }
+
+        /*--------------------------月柱---------------------------*/
+
+        //天干 胸部
+        String monthGanShiShen = ganZhiRowVoList.get(2).getShiShen1();
+        if (monthGanShiShen != null && monthGanShiShen.contains("七杀")) { //存在七杀
+            partZ.add("胸部");
+        }
+        if (monthGanShiShen != null && monthGanShiShen.contains("偏印")) { //存在偏印
+            partQ.add("胸部");
+        }
+        //地支 脖子
+        String monthZhiShiShen1 = ganZhiRowVoList.get(3).getShiShen1();
+        String monthZhiShiShen2 = ganZhiRowVoList.get(3).getShiShen2();
+        String monthZhiShiShen3 = ganZhiRowVoList.get(3).getShiShen3();
+        if (monthZhiShiShen1 != null && monthZhiShiShen1.contains("七杀")) { //存在七杀
+            partZ.add("腹部");
+        }
+        if (monthZhiShiShen2 != null && monthZhiShiShen2.contains("七杀")) { //存在七杀
+            partZ.add("腹部");
+        }
+        if (monthZhiShiShen3 != null && monthZhiShiShen3.contains("七杀")) { //存在七杀
+            partZ.add("腹部");
+        }
+        if (monthZhiShiShen1 != null && monthZhiShiShen1.contains("偏印")) { //存在偏印
+            partQ.add("腹部");
+        }
+        if (monthZhiShiShen2 != null && monthZhiShiShen2.contains("偏印")) { //存在偏印
+            partQ.add("腹部");
+        }
+        if (monthZhiShiShen3 != null && monthZhiShiShen3.contains("偏印")) { //存在偏印
+            partQ.add("腹部");
+        }
+
+        /*--------------------------日柱---------------------------*/
+        //天干
+        String dayGanShiShen = ganZhiRowVoList.get(4).getShiShen1();
+        if (dayGanShiShen != null && "七杀".contains(dayGanShiShen)) { //存在七杀
+            partZ.add("小腹");
+        }
+        if (dayGanShiShen != null && "偏印".contains(dayGanShiShen)) { //存在七杀
+            partQ.add("小腹");
+        }
+        //地支 脖子
+        String dayZhiShiShen1 = ganZhiRowVoList.get(5).getShiShen1();
+        String dayZhiShiShen2 = ganZhiRowVoList.get(5).getShiShen2();
+        String dayZhiShiShen3 = ganZhiRowVoList.get(5).getShiShen3();
+        if (dayZhiShiShen1 != null && dayZhiShiShen1.contains("七杀")) { //存在七杀
+            partZ.add("屁股");
+        }
+        if (dayZhiShiShen2 != null && dayZhiShiShen2.contains("七杀")) { //存在七杀
+            partZ.add("屁股");
+        }
+        if (dayZhiShiShen3 != null && dayZhiShiShen3.contains("七杀")) { //存在七杀
+            partZ.add("屁股");
+        }
+        if (dayZhiShiShen1 != null && dayZhiShiShen1.contains("偏印")) { //存在偏印
+            partQ.add("屁股");
+        }
+        if (dayZhiShiShen2 != null && dayZhiShiShen2.contains("偏印")) { //存在偏印
+            partQ.add("屁股");
+        }
+        if (dayZhiShiShen3 != null && dayZhiShiShen3.contains("偏印")) { //存在偏印
+            partQ.add("屁股");
+        }
+
+        /*--------------------------时柱---------------------------*/
+        //天干
+        String timeGanShiShen = ganZhiRowVoList.get(6).getShiShen1();
+        if (timeGanShiShen != null && timeGanShiShen.contains("七杀")) { //存在七杀
+            partZ.add("小腹");
+        }
+        if (timeGanShiShen != null && timeGanShiShen.contains("偏印")) { //存在七杀
+            partQ.add("小腹");
+        }
+        //地支 脖子
+        String timeZhiShiShen1 = ganZhiRowVoList.get(7).getShiShen1();
+        String timeZhiShiShen2 = ganZhiRowVoList.get(7).getShiShen2();
+        String timeZhiShiShen3 = ganZhiRowVoList.get(7).getShiShen3();
+        if (timeZhiShiShen1 != null && timeZhiShiShen1.contains("七杀")) { //存在七杀
+            partZ.add("小腿");
+        }
+        if (timeZhiShiShen2 != null && timeZhiShiShen2.contains("七杀")) { //存在七杀
+            partZ.add("小腿");
+        }
+        if (timeZhiShiShen3 != null && timeZhiShiShen3.contains("七杀")) { //存在七杀
+            partZ.add("小腿");
+        }
+        if (timeZhiShiShen1 != null && timeZhiShiShen1.contains("偏印")) { //存在偏印
+            partQ.add("小腿");
+        }
+        if (timeZhiShiShen2 != null && timeZhiShiShen2.contains("偏印")) { //存在偏印
+            partQ.add("小腿");
+        }
+        if (timeZhiShiShen3 != null && timeZhiShiShen3.contains("偏印")) { //存在偏印
+            partQ.add("小腿");
+        }
+
+        DiseasePartDto diseasePartQDto = new DiseasePartDto();
+        diseasePartQDto.setSex(sex);
+        diseasePartQDto.setDegree("轻症");
+        diseasePartQDto.setParts(partQ);
+
+        DiseasePartDto diseasePartZDto = new DiseasePartDto();
+        diseasePartZDto.setSex(sex);
+        diseasePartZDto.setDegree("严重");
+        diseasePartZDto.setParts(partZ);
+
+        List<DiseasePart> diseasePartQList = new ArrayList<DiseasePart>();
+        List<DiseasePart> diseasePartZList = new ArrayList<DiseasePart>();
+        List<DiseasePart> diseasePartAllList = new ArrayList<DiseasePart>();
+        if (partQ.size() > 0) {
+            diseasePartQList = diseasePartMapper.selectDiseasePartList(diseasePartQDto);
+            diseasePartAllList.addAll(diseasePartQList);
+        }
+
+        if (partZ.size() > 0) {
+            diseasePartZList = diseasePartMapper.selectDiseasePartList(diseasePartZDto);
+            diseasePartAllList.addAll(diseasePartZList);
+        }
+
+        //五行得出疾病
+        List<DiseasePart> fivePartList = new ArrayList<DiseasePart>();
+        for (String key : fiveCountMap.keySet()) {
+            int count = 0;
+            if (fiveCountMap.get(key) instanceof Number) {
+                // 如果是数值类型,可以进行相应的操作
+                count = ((Number) fiveCountMap.get(key)).intValue(); // 通过 intValue() 转换成 int
+            } else {
+                continue;
+            }
+            if (count >= 3) {
+                List<String> partList = shiShenConfig.getFiveBuWei().get(key);
+                DiseasePartDto fivePartDto = new DiseasePartDto();
+                fivePartDto.setSex(sex);
+                fivePartDto.setParts(partList);
+                fivePartList = diseasePartMapper.selectDiseasePartList(fivePartDto);
+                diseasePartAllList.addAll(fivePartList);
+            }
+        }
+
+        return diseasePartAllList;
+    }
+
+
+    @Override
+    public Map<String, Object> getNumberYun(Map<String, Object> qr) {
+
+        List<String> numberList = new ArrayList<String>();
+        List<String> xiYong = (List<String>) qr.get("xiYong");
+
+        for (int i = 0; i < xiYong.size(); i++) {
+            List<String> numList = shiShenConfig.getXiNumber().get(xiYong.get(i));
+            numberList.addAll(numList);
+        }
+
+        List<NumberYun> numberYunList = numberYunMapper.getNumberYunByIds(numberList);
+
+
+        //转字符串
+        StringJoiner joiner = new StringJoiner(",");
+        for (String number : numberList) {
+            joiner.add(number);
+        }
+        String numbers = joiner.toString();
+
+
+        Map<String, Object> resultMap = new TreeMap<String, Object>();
+        resultMap.put("numberYuns", numbers);
+        resultMap.put("numberYunList", numberYunList);
+
+        return resultMap;
+    }
+
+
+    /**
+     * 判断出生日期是否在节气内
+     *
+     * @return
+     */
+    @Override
+    public GanZhiDaYunVo getDaYun(GanZhiDto ganZhiDto, GanZhiDaYunVo ganZhiDaYunVo) {
+        int daYun = 0;
+        String tianGan = ganZhiDto.getYearGan();
+        String yy = shiShenConfig.getTianGanYY().get(tianGan);
+
+        if ("阳".equals(yy)) {
+            if (ganZhiDto.getSex() == 1) {
+                //顺行
+                daYun = 1;
+            } else if (ganZhiDto.getSex() == 2) {
+                //逆行
+                daYun = 2;
+            }
+        } else if ("阴".equals(yy)) {
+            if (ganZhiDto.getSex() == 1) {
+                //逆行
+                daYun = 2;
+            } else if (ganZhiDto.getSex() == 2) {
+                //顺行
+                daYun = 1;
+            }
+        }
+
+        //判断当天是否是节气,如果在节前前, 月柱修改
+        Date d1 = ganZhiDto.getBirthDay();
+        Lunar lunar = Lunar.fromDate(d1);
+        List<JieQiVo> list = jieQiMapper.selectJiiQiFb(d1);
+        if (lunar.getJieQi() != null && !"".equals(lunar.getJieQi())) {
+            //存在节气,如果第二个节气刚好当天相同
+            if (list.get(1).getJieqiName().equals(lunar.getJieQi())) {
+                //把月时间清空,再取一次月柱
+                Calendar calendar = Calendar.getInstance();
+                calendar.setTime(d1);
+                calendar.add(Calendar.DAY_OF_MONTH, -1);
+                Date d2 = calendar.getTime();
+                //重新导入
+                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());
+            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());
+            double qiYunSuiDB = (dayDiff / 3);  //计算起运岁数
+            int qiYunSui = (int) Math.ceil(qiYunSuiDB);
+            System.out.println("大运顺起运岁数:" + qiYunSui);
+
+            int year = lunar.getYear() + qiYunSui;
+            System.out.println("大运顺起运岁年份数:" + year + "岁");
+
+            String monthZhu = ganZhiDto.getMonthGan() + ganZhiDto.getMonthZhi();
+            List<String> jiaziList = new ArrayList<String>(shiShenConfig.getLiushijiazi());
+
+            List<Map<String, String>> daYunList = new ArrayList<Map<String, String>>();
+            boolean flag = false;
+            for (int i = 60; i < jiaziList.size(); i++) {
+                if (flag) {
+                    daYunCount++;
+                    int daYunYear = year + (10 * daYunCount) - 10; //大运年份
+                    int daYunSui = qiYunSui + (10 * daYunCount) - 10; // 大运岁数
+
+                    Map<String, String> daYumMap = new TreeMap<String, String>();
+                    daYumMap.put("daYunYear", daYunYear + "");
+                    daYumMap.put("daYunSui", daYunSui + "岁");
+                    daYumMap.put("daYunGanZhi", jiaziList.get(i));
+
+                    daYunList.add(daYumMap);
+                    if (daYunList.size() >= 10) {
+                        break;
+                    }
+                    continue;
+                }
+                if (monthZhu.equals(jiaziList.get(i)) && flag == false) {
+                    flag = true;
+                }
+            }
+            ganZhiDaYunVo.setDaYunList(daYunList);
+        } else if (daYun == 2) { //大运逆
+            int daYunCount = 0;
+            double dayDiff = Math.abs(list.get(0).getDaysDifference());
+            double qiYunSuiDB = (dayDiff / 3);  //计算起运岁数
+            int qiYunSui = (int) Math.ceil(qiYunSuiDB);
+            System.out.println("大运顺起运岁数:" + qiYunSui);
+
+            int year = lunar.getYear() + qiYunSui;
+            System.out.println("大运顺起运岁年份数:" + year + "岁");
+
+            String monthZhu = ganZhiDto.getMonthGan() + ganZhiDto.getMonthZhi();
+            List<String> jiaziList = new ArrayList<String>(shiShenConfig.getLiushijiazi());
+            List<Map<String, String>> daYunList = new ArrayList<Map<String, String>>();
+            boolean flag = false;
+            for (int i = 119; i >= 0; i--) {
+                if (flag) {
+                    daYunCount++;
+                    int daYunYear = year + (10 * daYunCount) - 10; //大运年份
+                    int daYunSui = qiYunSui + (10 * daYunCount) - 10; // 大运岁数
+                    Map<String, String> daYumMap = new TreeMap<String, String>();
+                    daYumMap.put("daYunYear", daYunYear + "");
+                    daYumMap.put("daYunSui", daYunSui + "岁");
+                    daYumMap.put("daYunGanZhi", jiaziList.get(i));
+                    daYunList.add(daYumMap);
+                    if (daYunList.size() >= 9) {
+                        break;
+                    }
+                    continue;
+                }
+                if (monthZhu.equals(jiaziList.get(i)) && flag == false) {
+                    flag = true;
+                }
+            }
+            ganZhiDaYunVo.setDaYunList(daYunList);
+        }
+        return ganZhiDaYunVo;
+    }
+
+
+    @Override
+    public List<Map<String, String>> getLiuNian(LiuNianDto linNianDto) {
+        //yyyy-MM-dd HH:mm:ss
+        List<Map<String, String>> liuNianList = new ArrayList<Map<String, String>>();
+
+        int year = 0;
+        for (int i = 0; i < 10; i++) {
+            year = linNianDto.getYear() + i;
+            Map<String, String> liuNianMap = new TreeMap<String, String>();
+            String date = year + "-03-01 01:00:00";
+            Lunar lunar = Lunar.fromDate(DateUtils.parseDate(date));
+            liuNianMap.put("liuNianYear", year + "");
+            liuNianMap.put("liuNianSui", linNianDto.getQiYunOld() + i + "岁");
+            liuNianMap.put("liuNianGanZhi", lunar.getYearGan() + lunar.getYearZhi());
+            liuNianList.add(liuNianMap);
+        }
+        return liuNianList;
+    }
+
+
+    /**
+     * 干支组装
+     *
+     * @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.getTimeZhi());
+
+        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 list
+     * @return
+     */
+    @Override
+    public Map<String, Integer> getGanZhiRowVoCount(List<GanZhiRowVo> list, Map<String, String> reportMap) {
+
+        Map<String, Integer> fiveCount = new TreeMap<String, Integer>();
+        fiveCount.put("木", 0);
+        fiveCount.put("火", 0);
+        fiveCount.put("土", 0);
+        fiveCount.put("金", 0);
+        fiveCount.put("水", 0);
+
+        for (int i = 0; i < list.size(); i++) {
+            String five = list.get(i).getFive();
+            Integer fiveC = fiveCount.get(five) + 1;
+            fiveCount.put(five, fiveC);
+        }
+
+        StringBuffer zeroCotent = new StringBuffer();
+        fiveCount.forEach((key, value) -> {
+            if (value == 0) {
+                zeroCotent.append(shiShenConfig.getZeroFive().get(key));
+                zeroCotent.append(";");
+            }
+        });
+
+        if (zeroCotent.toString().length() > 0) {
+            zeroCotent.deleteCharAt(zeroCotent.length() - 1);
+            reportMap.put("缺失五行评语", zeroCotent.toString());
+        } else {
+            reportMap.put("缺失五行评语", "命格中五行没有缺失,五行比较全面。");
+        }
+
+        return fiveCount;
+    }
+
+    /**
+     * 获取十神数量
+     *
+     * @param list
+     * @return
+     */
+    @Override
+    public Map<String, Integer> getShiShenCount(List<GanZhiRowVo> list, Map<String, String> reportMap) {
+        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) -> {
+            System.out.println(key + " " + value);
+            if (value == 0) {
+                zeroCotent.append(shiShenConfig.getZeroShiShen().get(key));
+                zeroCotent.append(";");
+            }
+        });
+
+        if (zeroCotent.toString().length() > 0) {
+            zeroCotent.deleteCharAt(zeroCotent.length() - 1);
+            reportMap.put("缺失十神评语", zeroCotent.toString() + "。");
+        } else {
+            reportMap.put("缺失十神评语", "命格中十神没有缺失,性格比较全面。");
+        }
+        return shiShenCount;
+    }
+
+
+    /**
+     * 潮湿平衡
+     *
+     * @param list
+     * @return
+     */
+    @Override
+    public Map<String, Integer> getZaoShiCount(List<GanZhiRowVo> list, Map<String, Integer> fiveCount, Map<String, String> reportMap) {
+
+        Map<String, Integer> fiveCountMap = new TreeMap<String, Integer>();
+        fiveCountMap.putAll(fiveCount);
+
+        int huoCount = fiveCountMap.get("火");
+        int shuiCount = fiveCountMap.get("水");
+
+        for (int i = 1; i < list.size(); i += 2) {
+            String five = list.get(i).getFive();
+            if ("土".equals(five)) {
+                if (huoCount > shuiCount) {
+                    String name = list.get(i).getName();
+                    if ("戌".equals(name) || "未".equals(name)) {
+                        Integer fiveC = (Integer) fiveCountMap.get("火") + 1;
+                        fiveCountMap.put("火", fiveC);
+                    }
+                } else if (huoCount < shuiCount) {
+                    String name = list.get(i).getName();
+                    if ("辰".equals(name) || "丑".equals(name)) {
+                        Integer fiveC = (Integer) fiveCountMap.get("水") + 1;
+                        fiveCountMap.put("水", fiveC);
+                    }
+                }
+            }
+        }
+        fiveCountMap.remove("土");
+        fiveCountMap.remove("金");
+        fiveCountMap.remove("木");
+
+
+        int huoCount2 = fiveCountMap.get("火");
+        int shuiCoun2 = fiveCountMap.get("水");
+
+        Map<String, Integer> zaoShiMap = new TreeMap<String, Integer>();
+        zaoShiMap.putAll(fiveCountMap);
+
+
+        if (huoCount2 - shuiCoun2 >= 2) {  //火过旺
+            reportMap.put("潮湿平衡", "过于干燥,火特别多,性情比较暴躁,容易上火,内心上火容易产生无名火,容易被“点燃”生气,身体也容易上火。");
+        } else if (huoCount2 - shuiCoun2 == 1) { //火轻微过旺
+            reportMap.put("潮湿平衡", "偏干燥,火特别多,性情相对比较急躁。");
+        } else if (huoCount2 - shuiCoun2 <= -2) {
+            reportMap.put("潮湿平衡", "过于湿润,大便不成形,湿气太重了,比较会容易肚子,手脚冰凉,气血不活。");
+        } else if (huoCount2 - shuiCoun2 == -1) {
+            reportMap.put("潮湿平衡", "偏湿润,大便不成形,湿气较重,气血不活。");
+        } else if (huoCount2 - shuiCoun2 == 0) {
+            reportMap.put("潮湿平衡", "各个宫位,燥湿达到平衡。不会过湿,过燥。");
+        }
+
+        return zaoShiMap;
+    }
+
+
+    /**
+     * 返回能量最强的天干
+     *
+     * @param ganZhiDto
+     * @return 1 天干  2月干  3时干
+     */
+    @Override
+    public int getMaxTianGan(GanZhiDto ganZhiDto) {
+        /*-------------------能量最强天干---------------------*/
+        List<GanZhiRowVo> list = this.getGanZhiRowVoList(ganZhiDto);
+
+        //年干 得分
+//        int yearGanQR = ShiShenConfig.generateRelationship(list.get(0).getFive(), list.get(0).getFive());
+        int yearZhiQR1 = ShiShenConfig.generateRelationship(list.get(0).getFive(), list.get(1).getFive());
+        int monthGanQR1 = ShiShenConfig.generateRelationship(list.get(0).getFive(), list.get(2).getFive());
+        int monthZhiQR1 = ShiShenConfig.generateRelationship(list.get(0).getFive(), list.get(3).getFive());
+        int dayGanQR1 = ShiShenConfig.generateRelationship(list.get(0).getFive(), list.get(4).getFive());
+        int dayZhiQR1 = ShiShenConfig.generateRelationship(list.get(0).getFive(), list.get(5).getFive());
+        int timeGanQR1 = ShiShenConfig.generateRelationship(list.get(0).getFive(), list.get(6).getFive());
+        int timeZhiQR1 = ShiShenConfig.generateRelationship(list.get(0).getFive(), list.get(7).getFive());
+
+        int yearGanScore = 0;
+        if (yearZhiQR1 > 0) {
+            yearGanScore += 12;
+        }
+        if (monthGanQR1 > 0) {
+            yearGanScore += 12;
+        }
+        if (monthZhiQR1 > 0) {
+            yearGanScore += 40;
+        }
+        if (dayGanQR1 > 0) {
+            yearGanScore += 12;
+        }
+        if (dayZhiQR1 > 0) {
+            yearGanScore += 12;
+        }
+        if (timeGanQR1 > 0) {
+            yearGanScore += 8;
+        }
+        if (timeZhiQR1 > 0) {
+            yearGanScore += 4;
+        }
+
+        /*-------------------能量最强天干---------------------*/
+
+        //月干 得分
+        int yearGanQR2 = ShiShenConfig.generateRelationship(list.get(2).getFive(), list.get(0).getFive());
+        int yearZhiQR2 = ShiShenConfig.generateRelationship(list.get(2).getFive(), list.get(1).getFive());
+//        int monthGanQR2 = ShiShenConfig.generateRelationship(list.get(2).getFive(), list.get(2).getFive());
+        int monthZhiQR2 = ShiShenConfig.generateRelationship(list.get(2).getFive(), list.get(3).getFive());
+        int dayGanQR2 = ShiShenConfig.generateRelationship(list.get(2).getFive(), list.get(4).getFive());
+        int dayZhiQR2 = ShiShenConfig.generateRelationship(list.get(2).getFive(), list.get(5).getFive());
+        int timeGanQR2 = ShiShenConfig.generateRelationship(list.get(2).getFive(), list.get(6).getFive());
+        int timeZhiQR2 = ShiShenConfig.generateRelationship(list.get(2).getFive(), list.get(7).getFive());
+
+        int monthGanScore = 0;
+        if (yearGanQR2 > 0) {
+            monthGanScore += 12;
+        }
+        if (yearZhiQR2 > 0) {
+            monthGanScore += 12;
+        }
+        if (monthZhiQR2 > 0) {
+            monthGanScore += 40;
+        }
+        if (dayGanQR2 > 0) {
+            monthGanScore += 12;
+        }
+        if (dayZhiQR2 > 0) {
+            monthGanScore += 12;
+        }
+        if (timeGanQR2 > 0) {
+            monthGanScore += 8;
+        }
+        if (timeZhiQR2 > 0) {
+            monthGanScore += 4;
+        }
+
+
+        //时干 得分
+        int yearGanQR3 = ShiShenConfig.generateRelationship(list.get(6).getFive(), list.get(0).getFive());
+        int yearZhiQR3 = ShiShenConfig.generateRelationship(list.get(6).getFive(), list.get(1).getFive());
+        int monthGanQR3 = ShiShenConfig.generateRelationship(list.get(2).getFive(), list.get(2).getFive());
+        int monthZhiQR3 = ShiShenConfig.generateRelationship(list.get(6).getFive(), list.get(3).getFive());
+        int dayGanQR3 = ShiShenConfig.generateRelationship(list.get(6).getFive(), list.get(4).getFive());
+        int dayZhiQR3 = ShiShenConfig.generateRelationship(list.get(6).getFive(), list.get(5).getFive());
+        //int timeGanQR3 = ShiShenConfig.generateRelationship(list.get(6).getFive(), list.get(6).getFive());
+        int timeZhiQR3 = ShiShenConfig.generateRelationship(list.get(6).getFive(), list.get(7).getFive());
+
+        int timeGanScore = 0;
+        if (yearGanQR3 > 0) {
+            timeGanScore += 8;
+        }
+        if (yearZhiQR3 > 0) {
+            timeGanScore += 4;
+        }
+        if (monthGanQR3 > 0) {
+            timeGanScore += 40;
+        }
+        if (monthZhiQR3 > 0) {
+            timeGanScore += 12;
+        }
+        if (dayGanQR3 > 0) {
+            timeGanScore += 12;
+        }
+        if (dayZhiQR3 > 0) {
+            timeGanScore += 12;
+        }
+        if (timeZhiQR3 > 0) {
+            timeGanScore += 12;
+        }
+        int maxGan = ShiShenConfig.getMax(yearGanScore, monthGanScore, timeGanScore);
+        ganZhiDto.setMaxGan(maxGan);
+        return maxGan;
+    }
+
+
+    @Override
+    public Map<String, String> getGeJu(List<GanZhiRowVo> list, int maxTianGan, String qr) {
+
+        String yearGan = list.get(0).getShiShen1();
+        String monthGan = list.get(2).getShiShen1();
+        String timeGan = list.get(6).getShiShen1();
+
+        String geju = null;
+
+        if (list.get(3).getShiShen1() != null && list.get(3).getShiShen1().contains(yearGan)) { //月令十神1在 年干透出
+            geju = yearGan;
+        } else if (list.get(3).getShiShen1() != null && list.get(3).getShiShen1().contains(monthGan)) { //月令十神1在 月干透出
+            geju = monthGan;
+        } else if (list.get(3).getShiShen1() != null && list.get(3).getShiShen1().contains(timeGan)) { //月令十神1在 时干透出
+            geju = timeGan;
+        } else if (list.get(3).getShiShen2() != null && list.get(3).getShiShen2().contains(yearGan)) { //月令十神2在 年干透出
+            geju = yearGan;
+        } else if (list.get(3).getShiShen2() != null && list.get(3).getShiShen2().contains(monthGan)) { //月令十神2在 月干透出
+            geju = monthGan;
+        } else if (list.get(3).getShiShen2() != null && list.get(3).getShiShen2().contains(timeGan)) { //月令十神2在 时干透出
+            geju = timeGan;
+        } else if (list.get(3).getShiShen3() != null && list.get(3).getShiShen3().contains(yearGan)) { //月令十神3在 年干透出
+            geju = yearGan;
+        } else if (list.get(3).getShiShen3() != null && list.get(3).getShiShen3().contains(monthGan)) { //月令十神3在 月干透出
+            geju = monthGan;
+        } else if (list.get(3).getShiShen3() != null && list.get(3).getShiShen3().contains(timeGan)) { //月令十神3在 时干透出
+            geju = timeGan;
+        } else {
+            geju = null;
+        }
+
+        if (geju == null) {
+            if (maxTianGan == 1) {
+                geju = yearGan;
+            } else if (maxTianGan == 2) {
+                geju = monthGan;
+            } else if (maxTianGan == 3) {
+                geju = timeGan;
+            }
+        }
+        GeJu geJu = new GeJu();
+        geJu.setShiShen(geju);
+        if (qr.contains("强")) {
+            geJu.setQr("3,1");
+        } else if (qr.contains("弱")) {
+            geJu.setQr("3,2");
+        }
+
+        String sex = list.get(4).getShiShen1();
+        if ("元男".equals(sex)) {
+            geJu.setSex("1,3");
+        } else if ("元女".equals(sex)) {
+            geJu.setSex("2,3");
+        }
+
+        List<GeJu> geJuList = geJuMapper.selectGeJuList2(geJu);
+
+        StringBuffer content = new StringBuffer();
+        for (int i = 0; i < geJuList.size(); i++) {
+            content.append(geJuList.get(i).getContent());
+        }
+
+        Map<String, String> geJuMap = new TreeMap<String, String>();
+        geJuMap.put("geju", geju);
+        geJuMap.put("content", content.toString());
+        return geJuMap;
+    }
+
+    @Override
+    public Map<Integer, String> getGuo3Guan(List<GanZhiRowVo> list, String qr) {
+
+        int x = 1; //用来做序号
+        Map<Integer, String> guo3GuanMap = new TreeMap<Integer, String>();
+
+        //1.八字带午火脾气最不好
+        for (int i = 0; i < list.size(); i++) {
+            if ((i == 1 || i == 3 || i == 5 || i == 7) && i != 4) {   //地支
+                if ("午".equals(list.get(i).getName())) {
+                    guo3GuanMap.put(x++, "脾气比较大,容易发火。");
+                    break;
+                }
+            }
+        }
+        //2.身强身弱
+        if (qr.contains("强")) {
+            guo3GuanMap.put(x++, "容易破财,被人劫财。");
+        } else if (qr.contains("弱")) {
+            guo3GuanMap.put(x++, "不太好赚钱,看着别人发财,自己却不容易挣钱。");
+        }
+
+        //3.有甲有金,面部有伤或者头部有伤
+        boolean jia = false;
+        boolean jin = false;
+        for (int i = 0; i < list.size(); i++) {
+            if ("甲".equals(list.get(i).getName())) {
+                jia = true;
+            }
+            if ("庚".equals(list.get(i).getName())) {
+                jin = true;
+            }
+            if ("辛".equals(list.get(i).getName())) {
+                jin = true;
+            }
+            if ("申".equals(list.get(i).getName())) {
+                jin = true;
+            }
+            if ("酉".equals(list.get(i).getName())) {
+                jin = true;
+            }
+        }
+        if (jia == true && jin == true) {
+            guo3GuanMap.put(x++, "面部有伤或者头部有伤。");
+        }
+
+        //4.八字那个宫位有土,哪里有坑痕疤痣。
+        StringBuffer tuContent = new StringBuffer();
+        String tu = "戊己丑戌辰未";
+        for (int i = 0; i < list.size(); i++) {
+            if (tu.contains(list.get(i).getName())) {
+                tuContent.append(shiShenConfig.getBody().get(i));
+                tuContent.append("、");
+            }
+        }
+        if (tuContent.toString().length() > 0) {
+            tuContent.deleteCharAt(tuContent.length() - 1);
+            tuContent.append("身体部位存在伤疤或痣。");
+            guo3GuanMap.put(x++, tuContent.toString());
+        }
+
+        //5.卯为电脑,显示类的东西(需要住满3年以上)
+        StringBuffer maoContent = new StringBuffer();
+        StringBuffer maoC = new StringBuffer();
+        for (int i = 0; i < list.size(); i++) {
+            if ("卯".equals(list.get(i).getName())) {
+                maoC.append(shiShenConfig.getPosition().get(i));
+                maoC.append("、");
+            }
+        }
+        if (maoC.toString().length() > 0) {
+            maoC.deleteCharAt(maoC.length() - 1);
+            maoContent.append("如果在当前住所居住满3年以上,");
+            maoContent.append(maoC);
+            maoContent.append("存在电脑或显示器类的物品。");
+            guo3GuanMap.put(x++, maoContent.toString());
+        }
+
+        //6.偏印为翅膀,羽毛,会飞的东西(需要住满3年以上)
+        StringBuffer pianContent = new StringBuffer();
+        StringBuffer pianC = new StringBuffer();
+        for (int i = 0; i < list.size(); i++) {
+            if (list.get(i).getShiShen1().contains("偏印")
+                    || (list.get(i).getShiShen2() != null && list.get(i).getShiShen2().contains("偏印"))
+                    || (list.get(i).getShiShen3() != null && list.get(i).getShiShen3().contains("偏印"))) {
+                pianC.append(shiShenConfig.getPosition().get(i));
+                pianC.append("、");
+            }
+        }
+        if (pianC.toString().length() > 0) {
+            pianC.deleteCharAt(pianC.length() - 1);
+            pianContent.append("如果在当前住所居住满3年以上,");
+            pianContent.append(pianC);
+            pianContent.append("存在带有翅膀,羽毛,会飞的东西物品或摆件。");
+            guo3GuanMap.put(x++, pianContent.toString());
+        }
+
+
+        //7.正财代表女人,钱,珠宝
+        StringBuffer zhengcaiContent = new StringBuffer();
+        StringBuffer zhengcaiC = new StringBuffer();
+        for (int i = 0; i < list.size(); i++) {
+            if (list.get(i).getShiShen1().contains("正财")
+                    || (list.get(i).getShiShen2() != null && list.get(i).getShiShen2().contains("正财"))
+                    || (list.get(i).getShiShen3() != null && list.get(i).getShiShen3().contains("正财"))) {
+                zhengcaiC.append(shiShenConfig.getPosition().get(i));
+                zhengcaiC.append("、");
+            }
+        }
+        if (zhengcaiC.toString().length() > 0) {
+            zhengcaiC.deleteCharAt(zhengcaiC.length() - 1);
+            zhengcaiContent.append("如果在当前住所居住满3年以上,");
+            zhengcaiContent.append(zhengcaiC);
+            zhengcaiContent.append("存在带有女性照片,结婚证,金钱,珠宝,较有价值的物品。");
+            guo3GuanMap.put(x++, zhengcaiContent.toString());
+            System.out.println(zhengcaiContent.toString());
+        }
+
+
+        //8.正印代表文件,书籍
+        StringBuffer zhengyinContent = new StringBuffer();
+        StringBuffer zhengyinC = new StringBuffer();
+        for (int i = 0; i < list.size(); i++) {
+            if (list.get(i).getShiShen1().contains("正印")
+                    || (list.get(i).getShiShen2() != null && list.get(i).getShiShen2().contains("正印"))
+                    || (list.get(i).getShiShen3() != null && list.get(i).getShiShen3().contains("正印"))) {
+                zhengyinC.append(shiShenConfig.getPosition().get(i));
+                zhengyinC.append("、");
+            }
+        }
+        if (zhengyinC.toString().length() > 0) {
+            zhengyinC.deleteCharAt(zhengyinC.length() - 1);
+            zhengyinContent.append("如果在当前住所居住满3年以上,");
+            zhengyinContent.append(zhengyinC);
+            zhengyinContent.append("存在文件、书籍等物品。");
+            guo3GuanMap.put(x++, zhengyinContent.toString());
+            System.out.println(zhengyinContent.toString());
+        }
+
+
+        //9.丁火喜欢熬夜
+        if (list.get(4).getName().equals("丁")) {
+            guo3GuanMap.put(x++, "你比较喜欢熬夜,到晚上会比较有精神。");
+        }
+        if (list.get(6).getName().equals("丁")) {
+            guo3GuanMap.put(x++, "你的孩子比较喜欢熬夜,到晚上会比较有精神。");
+        }
+
+
+        //10.八字那个宫位有土,哪里有坑痕疤痣。
+        StringBuffer shenContent = new StringBuffer();
+        StringBuffer shenC = new StringBuffer();
+        String shen = "辰戌丑未";
+        for (int i = 0; i < list.size(); i++) {
+            if (shen.contains(list.get(i).getName())) {
+                shenC.append(shiShenConfig.getPosition().get(i));
+                shenC.append("、");
+            }
+        }
+        if (shenC.toString().length() > 0) {
+            shenC.deleteCharAt(shenC.length() - 1);
+            shenContent.append("如果在当前住所居住满3年以上,");
+            shenContent.append(shenC);
+            shenContent.append("存在神佛类物品或摆件(包含中西方诸神,佛主、耶稣等等)。");
+            guo3GuanMap.put(x++, shenContent.toString());
+        }
+
+
+        //11.酉金为瓶瓶罐罐,能发出声音的物品
+        StringBuffer youContent = new StringBuffer();
+        StringBuffer youC = new StringBuffer();
+        for (int i = 0; i < list.size(); i++) {
+            if ("酉".equals(list.get(i).getName())) {
+                youC.append(shiShenConfig.getBody().get(i));
+                youC.append("、");
+            }
+        }
+        if (youContent.toString().length() > 0) {
+            youC.deleteCharAt(youC.length() - 1);
+            youContent.append("如果在当前住所居住满3年以上,");
+            youContent.append(youC);
+            youContent.append("存在瓶瓶罐罐,能发出声音的物品,如耳机音箱之类。");
+            guo3GuanMap.put(x++, youContent.toString());
+        }
+
+
+        //12.酉金带食神
+        boolean sing = false;
+        for (int i = 0; i < list.size(); i++) {
+            if ("酉".equals(list.get(i).getName()) &&
+                    ((list.get(i).getShiShen1() != null && list.get(i).getShiShen1().contains("食神"))
+                            ||
+                            (list.get(i).getShiShen2() != null && list.get(i).getShiShen2().contains("食神"))
+                            ||
+                            (list.get(i).getShiShen3() != null && list.get(i).getShiShen3().contains("食神")))) {
+                sing = true;
+            }
+        }
+        if (sing) {
+            System.out.println("你在唱歌方面表现出色,嗓音优美动人,超越了一般水平。");
+            guo3GuanMap.put(x++, "你在唱歌方面表现出色,嗓音优美动人,超越了一般水平。");
+        }
+
+
+        //13.庚金暴力
+        StringBuffer genContent = new StringBuffer();
+        if (list.get(2).getName().equals("庚")) {
+            genContent.append("父亲比较有暴力倾向,可能有对母亲动手过。");
+        }
+        if (list.get(3).getName().equals("申")) {
+            genContent.append("母亲比较有暴力倾向,可能有对父亲动手过。");
+        }
+        if (list.get(4).getName().equals("庚")) {
+            //性别
+            if (list.get(4).getShiShen1().contains("男")) {
+                genContent.append("你比较有暴力倾向,可能对老婆家暴。");
+            } else if (list.get(4).getShiShen1().contains("女")) {
+                genContent.append("你比较有暴力倾向,可能对老公家暴。");
+            }
+        }
+        if (list.get(5).getName().equals("申")) {
+            //性别
+            if (list.get(4).getShiShen1().contains("男")) {
+                genContent.append("你的老婆比较暴力,可能对你家暴。");
+            } else if (list.get(4).getShiShen1().contains("女")) {
+                genContent.append("你的老公比较暴力,可能对你家暴。");
+            }
+        }
+        if (genContent.toString().length() > 0) {
+            genContent.insert(0, "较暴力,真发火时可能会动手。");
+            guo3GuanMap.put(x++, genContent.toString());
+        }
+
+
+        //14.有甲有金,面部有伤或者头部有伤
+        boolean bi = false;
+        boolean cai = false;
+        for (int i = 0; i < list.size(); i++) {
+            //性别
+            if (list.get(4).getShiShen1().contains("男")) {
+                if ((i == 1 || i == 3 || i == 5 || i == 7) && i != 4) {
+                    if (list.get(i).getShiShen1() != null && list.get(i).getShiShen1().contains("比肩") || list.get(i).getShiShen2() != null && list.get(i).getShiShen2().contains("比肩") || list.get(i).getShiShen3() != null && list.get(i).getShiShen3().contains("比肩")) {
+                        bi = true;
+                    }
+                    if (list.get(i).getShiShen1() != null && list.get(i).getShiShen1().contains("正财") || list.get(i).getShiShen2() != null && list.get(i).getShiShen2().contains("正财") || list.get(i).getShiShen3() != null && list.get(i).getShiShen3().contains("正财")) {
+                        cai = true;
+                    }
+                }
+            } else if (list.get(4).getShiShen1().contains("女")) {
+                if ((i == 1 || i == 3 || i == 5 || i == 7) && i != 4) {
+                    if (list.get(i).getShiShen1() != null && list.get(i).getShiShen1().contains("比肩") || list.get(i).getShiShen2() != null && list.get(i).getShiShen2().contains("比肩") || list.get(i).getShiShen3() != null && list.get(i).getShiShen3().contains("比肩")) {
+                        bi = true;
+                    }
+                    if (list.get(i).getShiShen1() != null && list.get(i).getShiShen1().contains("正官") || list.get(i).getShiShen2() != null && list.get(i).getShiShen2().contains("正官") || list.get(i).getShiShen3() != null && list.get(i).getShiShen3().contains("正官")) {
+                        cai = true;
+                    }
+                }
+            }
+        }
+        if (bi == true && cai == true) {
+            //性别
+            if (list.get(4).getShiShen1().contains("男")) {
+                guo3GuanMap.put(x++, "大概率跟老婆在一个公司或单位,一起工作过。(过去或未来)");
+            } else if (list.get(4).getShiShen1().contains("女")) {
+                guo3GuanMap.put(x++, "大概率跟老婆在一个公司或单位,一起工作过。(过去或未来)");
+            }
+        }
+
+        String dayZhu = list.get(4).getName() + list.get(5).getName();
+        if (dayZhu.equals("甲辰") || dayZhu.equals("乙巳") || dayZhu.equals("丙申") || dayZhu.equals("丁亥") || dayZhu.equals("庚辰")
+                || dayZhu.equals("戊戌") || dayZhu.equals("癸亥") || dayZhu.equals("辛巳") || dayZhu.equals("壬申") || dayZhu.equals("己丑")
+        ) {
+            guo3GuanMap.put(x++, "十恶大败日生人,入不敷出,花钱多,进钱少。可能欠有银行贷款等外债。");
+        }
+
+        return guo3GuanMap;
+    }
+
+
+    @Override
+    public String getXiFangWei(Lunar lunar) {
+        String str = lunar.toFullString();
+        String[] s = str.split(" ");
+        StringBuffer fangWei = new StringBuffer();
+
+        str = str.substring(str.indexOf("喜神方位"));
+
+        System.out.println(str);
+
+        return str;
+
+    }
+
+
+    @Override
+    public String getIndustry(Map<String, Object> riYuanQrMap, String geju) {
+
+        List<String> xiYongList = (List) riYuanQrMap.get("xiYong");
+        StringBuffer industry = new StringBuffer();
+        if (geju != null && !"".equals(geju)) {
+            industry.append("根据十神格局分析出推荐行业:");
+            industry.append(shiShenConfig.getShiShenIndustry().get(geju));
+        }
+
+
+        industry.append("根据五行喜用推荐行业:");
+        for (int i = 0; i < xiYongList.size(); i++) {
+            industry.append(shiShenConfig.getFiveIndustry().get(xiYongList.get(i)));
+        }
+
+        return industry.toString();
+    }
+
+    @Override
+    public String getGuiren(List<GanZhiRowVo> ganZhiRowVoList) {
+
+        ganZhiRowVoList.get(0).getName();
+        ganZhiRowVoList.get(4).getName();
+
+        String guiren = shiShenConfig.getTianyiGuiren().get(ganZhiRowVoList.get(0).getName());
+        String guiren2 = shiShenConfig.getTianyiGuiren().get(ganZhiRowVoList.get(4).getName());
+
+        String guirenShengXiao = shiShenConfig.getTianyiGuirenShengXiao().get(ganZhiRowVoList.get(0).getName());
+        String guirenShengXiao2 = shiShenConfig.getTianyiGuirenShengXiao().get(ganZhiRowVoList.get(4).getName());
+
+
+        StringBuffer guiRenStr = new StringBuffer();
+        guiRenStr.append("建议多与八字中带有");
+        guiRenStr.append(guiren + "、");
+        guiRenStr.append(guiren2);
+        guiRenStr.append("的人相处。或者属相为");
+        guiRenStr.append(guirenShengXiao + "、");
+        guiRenStr.append(guirenShengXiao2);
+        guiRenStr.append("的人相处,容易得到帮助。");
+
+        return guiRenStr.toString();
+    }
+
+    @Override
+    public Map<String, String> getChenGu(Lunar lunar, Integer sex) {
+
+        System.out.println(lunar.getYear());   //年
+        System.out.println(lunar.getMonth());   //月
+        System.out.println(lunar.getDay());     //日
+        // String time = lunar.getTime().toString().substring(lunar.getTime().toString().length() - 1); //时
+        // System.out.println(time);
+
+        int yearZhong = shiShenConfig.getGuZhong().get(lunar.getYearGan() + lunar.getYearZhi());
+        int monthZhong = shiShenConfig.getGuZhong().get(lunar.getMonth() + "月");
+        int dayZhong = shiShenConfig.getGuZhong().get(lunar.getDay() + "日");
+        String time = lunar.getTime().toString().substring(lunar.getTime().toString().length() - 1); //时
+        int timeZhong = shiShenConfig.getGuZhong().get(time);
+
+        System.out.println(yearZhong);
+        System.out.println(monthZhong);
+        System.out.println(dayZhong);
+        System.out.println(timeZhong);
+
+        int total = yearZhong + monthZhong + dayZhong + timeZhong;
+
+        Map<String, String> chenGuMap = new TreeMap<String, String>();
+        String chenGuContent = null;
+        if (sex == 1) {
+            chenGuContent = shiShenConfig.getGuZhongPingYuMan().get(String.valueOf(total));
+        } else if (sex == 2) {
+            chenGuContent = shiShenConfig.getGuZhongPingYuWoman().get(String.valueOf(total));
+        }
+
+
+        String liang = String.valueOf(total).substring(0, 1);
+        String qiang = String.valueOf(total).substring(1, 2);
+
+        String[] liangArray = {"零两", "一两", "二两", "三两", "四两", "五两", "六两", "七两", "八两", "九两"};
+        String[] qiangArray = {"零钱", "一钱", "二钱", "三钱", "四钱", "五钱", "六钱", "七钱", "八钱", "九钱"};
+
+        int shi = Integer.parseInt(liang);
+        int ge = Integer.parseInt(qiang);
+
+        String shiStr = liangArray[shi];
+        String geStr = qiangArray[ge];
+
+        chenGuMap.put("称骨重量", shiStr + geStr);
+        chenGuMap.put("称骨评语", chenGuContent);
+
+        return chenGuMap;
+    }
+
+
+    @Override
+    public String getPiQi(List<GanZhiRowVo> ganZhiRowVoList) {
+        String shiShen1 = ganZhiRowVoList.get(5).getShiShen1();
+        String shiShen = shiShen1.substring(2, 4);
+        String piqi = shiShenConfig.getPiQi().get(shiShen);
+        return piqi;
+    }
+
+    @Override
+    public String getCaiYun(List<GanZhiRowVo> ganZhiRowVoList, Map<String, Object> riYuanQrMap, Map<String, Integer> shiShenCountMap) {
+        String qr = (String) riYuanQrMap.get("qr");
+        List<String> xiYong = (List<String>) riYuanQrMap.get("xiYong");
+        List<String> xiYongOld = (List<String>) riYuanQrMap.get("xiYongOld");
+
+        StringBuffer caiContent = new StringBuffer();
+        if (qr.contains("强")) {
+            caiContent.append("身强");
+        } else if (qr.contains("弱")) {
+            caiContent.append("身弱");
+        }
+
+        int pianCaiCount = shiShenCountMap.get("偏财");
+        int zhengCaiCount = shiShenCountMap.get("正财");
+
+        int totalCount = pianCaiCount + zhengCaiCount;
+        if (totalCount >= 2) {
+            caiContent.append("财旺;");
+        } else if (totalCount >= 1) {
+            caiContent.append("财弱;");
+        } else if (totalCount == 0) {
+            caiContent.append("四柱无财;");
+        }
+        if (totalCount != 0) {
+            if (pianCaiCount == 0) {
+                caiContent.append("八字无偏财,尽量不要做投机性生意;");
+            }
+            if (zhengCaiCount == 0) {
+                caiContent.append("八字没有正财,有偏财,投资要谨慎,不要借贷;");
+            }
+        }
+
+
+        if (caiContent.toString().contains("身强") && caiContent.toString().contains("财旺")) {
+            caiContent.append("遇大运流年,见食伤财才则发大财。年份为" + xiYongOld.get(0) + "、" + xiYongOld.get(1) + "均带有食伤财才。");
+        } else if (caiContent.toString().contains("身强") && caiContent.toString().contains("财弱")) {
+            caiContent.append("遇大运流年,见食伤财才则发中财。年份为" + xiYongOld.get(0) + "、" + xiYongOld.get(1) + "均带有食伤财才。");
+        } else if (caiContent.toString().contains("身弱") && caiContent.toString().contains("财旺")) {
+            caiContent.append("遇大运流年,见印枭比劫则发大财。年份为" + xiYongOld.get(0) + "、" + xiYongOld.get(1) + "均带有印枭比劫。");
+        } else if (caiContent.toString().contains("身弱") && caiContent.toString().contains("财弱")) {
+            caiContent.append("遇大运流年,见印枭比劫则发中财。年份为" + xiYongOld.get(0) + "、" + xiYongOld.get(1) + "均带有印枭比劫。");
+        } else if (caiContent.toString().contains("身强") && caiContent.toString().contains("四柱无财")) {
+            caiContent.append("遇大运流年,见财则有钱进账,但不长久。");
+        } else if (caiContent.toString().contains("身弱") && caiContent.toString().contains("四柱无财")) {
+            caiContent.append("不好发财,俗称和尚命。");
+        }
+
+
+        String monthZhi = ganZhiRowVoList.get(3).getName();
+        String nian = shiShenConfig.getWuGui().get(monthZhi);
+        String shengXiao = shiShenConfig.getWuGuiShengXiao().get(monthZhi);
+
+        caiContent.append("遇到" + shengXiao + "年(" + nian + "年),遇五鬼神煞比较容易得到偏财,但是同时也较易惹上小人、是非和灾害等。五鬼煞入命,会出现莫名其妙无风起浪的危险,因此一定要防患于未然,于官府当中更应该提防,在交友方面也应该小心,否则会有刑讼官司、破财牢狱之灾。");
+
+        return caiContent.toString();
+    }
+
+
+    @Override
+    public String getQingGanYun(List<GanZhiRowVo> ganZhiRowVoList, Map<String, Object> riYuanQrMap, Map<String, Integer> shiShenCountMap, Map<String, Integer> fiveCountMap) {
+        String qr = (String) riYuanQrMap.get("qr");
+        List<String> xiYong = (List<String>) riYuanQrMap.get("xiYong");
+        List<String> xiYongOld = (List<String>) riYuanQrMap.get("xiYongOld");
+        List<String> xiYongShiShen = (List<String>) riYuanQrMap.get("xiYongShiShen");
+
+        StringBuffer qiangGanContent = new StringBuffer();
+
+        String sex = ganZhiRowVoList.get(4).getShiShen1();
+        String five = ganZhiRowVoList.get(5).getFive();
+        if ("元男".equals(sex)) {
+            //正财、偏财为男人的老婆
+            int zhengCaiCount = shiShenCountMap.get("正财");
+            int pianCaiCount = shiShenCountMap.get("偏财");
+            int total = zhengCaiCount + pianCaiCount;
+            if (total == 0) {
+                qiangGanContent.append("男人四柱无财,找老婆会比较困难,自己也可能不太想结婚。");
+            }
+
+            if (qr.contains("强")) {
+                qiangGanContent.append("夫妻星为喜用,婚后夫妻关系还不错;");
+            } else if (qr.contains("弱")) {
+                qiangGanContent.append("夫妻星为忌凶,婚后夫妻关系不是很幸福;");
+            }
+            if (qr.contains("强") && xiYongOld.contains(five)) {  //强喜
+                qiangGanContent.append("而且能够得到老婆家族的帮助。");
+            } else if (qr.contains("弱") && xiYongOld.contains(five)) {  //弱喜
+                qiangGanContent.append("不过是能够得到老婆家族的帮助。");
+            } else if (qr.contains("强") && !xiYongOld.contains(five)) {  //强忌
+                qiangGanContent.append("但能不太能够得到老婆家族的帮助。");
+            } else if (qr.contains("弱") && !xiYongOld.contains(five)) {   //弱忌
+                qiangGanContent.append("也能不太能够得到老婆家族的帮助。");
+            }
+
+            String dayGanShiShen1 = ganZhiRowVoList.get(5).getShiShen1();
+            String dayGanShiShen2 = ganZhiRowVoList.get(5).getShiShen2();
+            String dayGanShiShen3 = ganZhiRowVoList.get(5).getShiShen3();
+
+            if (dayGanShiShen1 != null && dayGanShiShen1.contains("劫财")) {
+                qiangGanContent.append("在夫妻宫本气坐落劫财,有克妻之相,会影响到夫妻感情。");
+            }
+            if (dayGanShiShen2 != null && dayGanShiShen2.contains("劫财")) {
+                qiangGanContent.append("在夫妻宫中气坐落劫财,有中度克妻之相,会影响到夫妻感情。");
+            }
+            if (dayGanShiShen3 != null && dayGanShiShen3.contains("劫财")) {
+                qiangGanContent.append("在夫妻宫余气坐落劫财,有轻微克妻之相,会影响到夫妻感情。");
+            }
+
+            if (dayGanShiShen1 != null && dayGanShiShen1.contains("伤官")) {
+                qiangGanContent.append("在夫妻宫本气坐落劫财,夫妻不和睦之相。");
+            }
+            if (dayGanShiShen2 != null && dayGanShiShen2.contains("伤官")) {
+                qiangGanContent.append("在夫妻宫中气坐落劫财,夫妻不和睦之相。");
+            }
+            if (dayGanShiShen3 != null && dayGanShiShen3.contains("伤官")) {
+                qiangGanContent.append("在夫妻宫余气坐落劫财,夫妻不和睦之相。");
+            }
+
+            if (dayGanShiShen1 != null && dayGanShiShen1.contains("偏印")) {
+                qiangGanContent.append("在夫妻宫本气坐落偏印,夫妻不和睦之相。");
+            }
+            if (dayGanShiShen2 != null && dayGanShiShen2.contains("偏印")) {
+                qiangGanContent.append("在夫妻宫中气坐落偏印,夫妻不和睦之相。");
+            }
+            if (dayGanShiShen3 != null && dayGanShiShen3.contains("偏印")) {
+                qiangGanContent.append("在夫妻宫余气坐落偏印,夫妻不和睦之相。");
+            }
+
+            String yearGan = ganZhiRowVoList.get(0).getName();
+            String monthGan = ganZhiRowVoList.get(2).getName();
+            String dayGan = ganZhiRowVoList.get(4).getName();
+            String timeGan = ganZhiRowVoList.get(6).getName();
+
+            String yearGanYY = shiShenConfig.getTianGanYY().get(yearGan);
+            String monthGanYY = shiShenConfig.getTianGanYY().get(monthGan);
+            String dayGanYY = shiShenConfig.getTianGanYY().get(dayGan);
+            String timeGanYY = shiShenConfig.getTianGanYY().get(timeGan);
+
+            if ("阴".equals(yearGanYY) && "阴".equals(monthGanYY) && "阴".equals(dayGanYY) && "阴".equals(timeGanYY)) {
+                qiangGanContent.append("男性四柱全阴,体现出较女性化,可能有同性取向的趋向。");
+            }
+
+            int fuqiGongBiCount = 0;  //夫妻宫比肩 劫财的数量
+            for (int i = 2; i < ganZhiRowVoList.size(); i++) {
+                String shiShen1 = ganZhiRowVoList.get(i).getShiShen1();
+                String shiShen2 = ganZhiRowVoList.get(i).getShiShen2();
+                String shiShen3 = ganZhiRowVoList.get(i).getShiShen3();
+                if (shiShen1 != null && (shiShen1.contains("比肩") || shiShen1.contains("劫财"))) {
+                    fuqiGongBiCount++;
+                }
+                if (shiShen2 != null && (shiShen2.contains("比肩") || shiShen2.contains("劫财"))) {
+                    fuqiGongBiCount++;
+                }
+                if (shiShen3 != null && (shiShen3.contains("比肩") || shiShen3.contains("劫财"))) {
+                    fuqiGongBiCount++;
+                }
+            }
+
+            if(fuqiGongBiCount>=3) {
+                qiangGanContent.append("男命夫妻宫周围过多的比劫,可能出现夫妻感情不和睦的情况。");
+            }
+
+
+        } else if ("元女".equals(sex)) {
+            //正官、七杀为女人的老公
+            int zhengCaiCount = shiShenCountMap.get("正官");
+            int pianCaiCount = shiShenCountMap.get("七杀");
+            int total = zhengCaiCount + pianCaiCount;
+            if (total == 0) {
+                qiangGanContent.append("女人四柱无官杀,找老公会比较困难,自己也不太愿意结婚。");
+            }
+            if (qr.contains("强")) {
+                qiangGanContent.append("夫妻星为喜用,婚后夫妻关系还不错;");
+            } else if (qr.contains("弱")) {
+                qiangGanContent.append("夫妻星为忌凶,婚后夫妻关系不是很幸福;");
+            }
+
+            if (qr.contains("强") && xiYong.contains(five)) {  //强喜
+                qiangGanContent.append("而且能够得到老公家族的帮助。");
+            } else if (qr.contains("弱") && xiYong.contains(five)) {  //弱喜
+                qiangGanContent.append("不过是能够得到老公家族的帮助。");
+            } else if (qr.contains("强") && !xiYong.contains(five)) {  //强忌
+                qiangGanContent.append("但能不太能够得到老公家族的帮助。");
+            } else if (qr.contains("弱") && !xiYong.contains(five)) {   //弱忌
+                qiangGanContent.append("也能不太能够得到老公家族的帮助。");
+            }
+
+            String dayGanShiShen1 = ganZhiRowVoList.get(5).getShiShen1();
+            String dayGanShiShen2 = ganZhiRowVoList.get(5).getShiShen2();
+            String dayGanShiShen3 = ganZhiRowVoList.get(5).getShiShen3();
+
+            if (dayGanShiShen1 != null && dayGanShiShen1.contains("伤官")) {
+                qiangGanContent.append("在夫妻宫本气坐落伤官,有克夫之相,会影响到夫妻感情。");
+            }
+            if (dayGanShiShen2 != null && dayGanShiShen2.contains("伤官")) {
+                qiangGanContent.append("在夫妻宫中气坐落伤官,有中度克夫之相,会影响到夫妻感情。");
+            }
+            if (dayGanShiShen3 != null && dayGanShiShen3.contains("伤官")) {
+                qiangGanContent.append("在夫妻宫余气坐落伤官,有轻微克夫之相,会影响到夫妻感情。");
+            }
+
+            if (dayGanShiShen1 != null && dayGanShiShen1.contains("偏印")) {
+                qiangGanContent.append("在夫妻宫本气坐落偏印,夫妻不和睦之相。");
+            }
+            if (dayGanShiShen2 != null && dayGanShiShen2.contains("偏印")) {
+                qiangGanContent.append("在夫妻宫中气坐落偏印,夫妻不和睦之相。");
+            }
+            if (dayGanShiShen3 != null && dayGanShiShen3.contains("偏印")) {
+                qiangGanContent.append("在夫妻宫余气坐落偏印,夫妻不和睦之相。");
+            }
+
+            String yearGan = ganZhiRowVoList.get(0).getName();
+            String monthGan = ganZhiRowVoList.get(2).getName();
+            String dayGan = ganZhiRowVoList.get(4).getName();
+            String timeGan = ganZhiRowVoList.get(6).getName();
+
+            String yearGanYY = shiShenConfig.getTianGanYY().get(yearGan);
+            String monthGanYY = shiShenConfig.getTianGanYY().get(monthGan);
+            String dayGanYY = shiShenConfig.getTianGanYY().get(dayGan);
+            String timeGanYY = shiShenConfig.getTianGanYY().get(timeGan);
+
+            if ("阳".equals(yearGanYY) && "阳".equals(monthGanYY) && "阳".equals(dayGanYY) && "阳".equals(timeGanYY)) {
+                qiangGanContent.append("女性四柱全阳,体现出较男性化,可能有同性取向的趋向。");
+            }
+
+            int fuqiGongShangCount = 0;  //夫妻宫伤官的数量
+            for (int i = 2; i < ganZhiRowVoList.size(); i++) {
+                String shiShen1 = ganZhiRowVoList.get(i).getShiShen1();
+                String shiShen2 = ganZhiRowVoList.get(i).getShiShen2();
+                String shiShen3 = ganZhiRowVoList.get(i).getShiShen3();
+                if (shiShen1 != null && shiShen1.contains("伤官")) {
+                    fuqiGongShangCount++;
+                }
+                if (shiShen2 != null && shiShen2.contains("伤官")) {
+                    fuqiGongShangCount++;
+                }
+                if (shiShen3 != null && shiShen3.contains("伤官")) {
+                    fuqiGongShangCount++;
+                }
+            }
+
+            if(fuqiGongShangCount>=3) {
+                qiangGanContent.append("女命夫妻宫周围过多的伤官,可能出现夫妻感情不和睦的情况。");
+            }
+
+
+        }
+
+
+        int taoHuaZiCount = 0;
+        if (shiShenConfig.getTaoHuaZi().contains(ganZhiRowVoList.get(1).getName())) {
+            taoHuaZiCount++;
+        }
+        if (shiShenConfig.getTaoHuaZi().contains(ganZhiRowVoList.get(2).getName())) {
+            taoHuaZiCount++;
+        }
+        if (shiShenConfig.getTaoHuaZi().contains(ganZhiRowVoList.get(3).getName())) {
+            taoHuaZiCount++;
+        }
+        if (shiShenConfig.getTaoHuaZi().contains(ganZhiRowVoList.get(4).getName())) {
+            taoHuaZiCount++;
+        }
+
+        if (taoHuaZiCount == 4) {
+            qiangGanContent.append("地支中子午卯酉,非常之旺。桃花非常多,俗称桃花命。要小心一定因桃花引发的灾祸。");
+        }
+        if (taoHuaZiCount == 3) {
+            qiangGanContent.append("地支中子午卯酉,比较旺。桃花非常多,要小心一定因桃花引发的灾祸。");
+        }
+        if (taoHuaZiCount == 2) {
+            qiangGanContent.append("地支中子午卯酉,相对比较旺。流年容易遇桃花之事。");
+        }
+
+        //性冷淡
+        String dayGanShiShen1 = ganZhiRowVoList.get(5).getShiShen1();
+        String dayGanShiShen2 = ganZhiRowVoList.get(5).getShiShen2();
+        String dayGanShiShen3 = ganZhiRowVoList.get(5).getShiShen3();
+
+        if (dayGanShiShen1 != null && dayGanShiShen1.contains("食神")) {
+            qiangGanContent.append("夫妻宫坐了食神,比较喜欢性爱之事。");
+        }
+        if (dayGanShiShen2 != null && dayGanShiShen2.contains("食神")) {
+            qiangGanContent.append("夫妻宫坐了食神,比较喜欢性爱之事。");
+        }
+        if (dayGanShiShen3 != null && dayGanShiShen3.contains("食神")) {
+            qiangGanContent.append("夫妻宫坐了食神,比较喜欢性爱之事。");
+        }
+
+        if (dayGanShiShen1 != null && (dayGanShiShen1.contains("正印") ||  dayGanShiShen1.contains("偏印"))) {
+            qiangGanContent.append("夫妻宫坐了印,性欲有被克制之相,会性较冷淡。");
+        }
+        if (dayGanShiShen2 != null && (dayGanShiShen2.contains("正印") ||  dayGanShiShen2.contains("偏印"))) {
+            qiangGanContent.append("夫妻宫坐了印,性欲有被克制之相,会性较冷淡。");
+        }
+        if (dayGanShiShen3 != null && (dayGanShiShen3.contains("正印") ||  dayGanShiShen3.contains("偏印"))) {
+            qiangGanContent.append("夫妻宫坐了印,性欲有被克制之相,会性较冷淡。");
+        }
+
+        String monthGanShiShen1 = ganZhiRowVoList.get(3).getShiShen1();
+        String monthGanShiShen2 = ganZhiRowVoList.get(3).getShiShen2();
+        String monthGanShiShen3 = ganZhiRowVoList.get(3).getShiShen3();
+
+        if (monthGanShiShen1 != null && monthGanShiShen1.contains("正印")) {
+            qiangGanContent.append("月令坐了正印,性欲有被克制之相,会性较冷淡,对学业工作会花较多精力。");
+        }
+        if (monthGanShiShen2 != null && monthGanShiShen2.contains("正印")) {
+            qiangGanContent.append("月令坐了正印,性欲有被克制之相,会性较冷淡,对学业工作会花较多精力。");
+        }
+        if (monthGanShiShen3 != null && monthGanShiShen3.contains("正印")) {
+            qiangGanContent.append("月令坐了正印,性欲有被克制之相,会性较冷淡,对学业工作会花较多精力。");
+        }
+
+        //水主肾
+        int shuiCount = fiveCountMap.get("水");
+
+        if(shuiCount>=4) {
+            qiangGanContent.append("八字中水主肾,水过旺,喜性爱,需要克制。");
+        }
+        if(shuiCount>=1 && shuiCount<=3) {
+            qiangGanContent.append("八字中水主肾,水占了1-3个肾功能强,喜性爱。");
+        }
+        if(shuiCount==0){
+            qiangGanContent.append("八字中无水,对性爱之事不是很上头,偶有乏力之相。");
+        }
+
+        return qiangGanContent.toString();
+    }
+
+
+}

+ 27 - 0
nbjk-service/src/main/java/com/miaxis/gan/vo/GanZhiDaYunVo.java

@@ -0,0 +1,27 @@
+package com.miaxis.gan.vo;
+
+import com.nlf.calendar.Lunar;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+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;
+}

+ 17 - 0
nbjk-service/src/main/java/com/miaxis/gan/vo/GanZhiFiveVo.java

@@ -0,0 +1,17 @@
+package com.miaxis.gan.vo;
+
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class GanZhiFiveVo {
+
+    @ApiModelProperty(value = "五行")
+    private String five;
+    @ApiModelProperty(value = "数量")
+    private Integer count;
+
+
+
+}

+ 16 - 0
nbjk-service/src/main/java/com/miaxis/gan/vo/GanZhiKongWangVo.java

@@ -0,0 +1,16 @@
+package com.miaxis.gan.vo;
+
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class GanZhiKongWangVo {
+
+    @ApiModelProperty(value = "柱")
+    private String zhu;
+    @ApiModelProperty(value = "空亡")
+    private String kongWang;
+
+
+}

+ 16 - 0
nbjk-service/src/main/java/com/miaxis/gan/vo/GanZhiNaYinVo.java

@@ -0,0 +1,16 @@
+package com.miaxis.gan.vo;
+
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class GanZhiNaYinVo {
+
+    @ApiModelProperty(value = "柱")
+    private String zhu;
+    @ApiModelProperty(value = "纳音")
+    private String naYin;
+
+
+}

+ 31 - 0
nbjk-service/src/main/java/com/miaxis/gan/vo/GanZhiRowVo.java

@@ -0,0 +1,31 @@
+package com.miaxis.gan.vo;
+
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class GanZhiRowVo {
+
+    @ApiModelProperty(value = "宫位")
+    private String gongWei;
+    @ApiModelProperty(value = "干支名")
+    private String name;
+    @ApiModelProperty(value = "颜色")
+    private String color;
+    @ApiModelProperty(value = "五行")
+    private String five;
+    @ApiModelProperty(value = "喜用")
+    private String xi;
+    @ApiModelProperty(value = "忌用")
+    private String ji;
+
+    @ApiModelProperty(value = "十神1",hidden = true)
+    private String shiShen1;
+    @ApiModelProperty(value = "十神2",hidden = true)
+    private String shiShen2;
+    @ApiModelProperty(value = "十神2",hidden = true)
+    private String shiShen3;
+
+
+}

+ 94 - 0
nbjk-service/src/main/java/com/miaxis/gan/vo/GanZhiVo.java

@@ -0,0 +1,94 @@
+package com.miaxis.gan.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.miaxis.disease.domain.DiseasePart;
+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 GanZhiVo {
+
+    private static final long serialVersionUID = 1L;
+
+
+    @ApiModelProperty(value = "姓名")
+    private String username;
+
+    @ApiModelProperty(value = "性别")
+    private Integer sex;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "(公历)出生日期 yyyy-MM-dd HH:mm:ss")
+    private Date birthDay;
+
+    @ApiModelProperty(value = "(农历)出生日期")
+    private String nongDay;
+
+    @ApiModelProperty(value = "起运年龄")
+    private List<Map<String,String>> daYunList;
+
+    @ApiModelProperty(value = "日元强弱")
+    private Map<String,Object> riYuan;
+
+    @ApiModelProperty(value = "喜用数字")
+    private Map<String,Object> numberYunMap;
+
+    @ApiModelProperty(value = "八字格局")
+    private Map<String,String> geJuMap;
+
+    @ApiModelProperty(value = "三过关")
+    private Map<Integer,String> guoGuanMap;
+
+    @ApiModelProperty(value = "八字五行集合")
+    private List<GanZhiRowVo> ganZhiRowVoList;
+
+    @ApiModelProperty(value = "八字五行个数集合")
+    private Map<String,Integer> fiveCountMap;
+
+    @ApiModelProperty(value = "八字十神个数集合")
+    private Map<String,Integer> shiShenCountMap;
+
+    @ApiModelProperty(value = "八字燥湿集合")
+    private Map<String,Integer> zaoShiMap;
+
+    @ApiModelProperty(value = "八字纳音")
+    private List<GanZhiNaYinVo> ganZhiNaYinVoList;
+
+    @ApiModelProperty(value = "八字空亡")
+    private List<GanZhiKongWangVo> ganZhiKongWangVoList;
+
+    @ApiModelProperty(value = "疾病集合")
+    private List<DiseasePart> diseasePartList;
+
+    @ApiModelProperty(value = "喜用方位")
+    private String xiFangWei;
+
+    @ApiModelProperty(value = "推荐行业")
+    private String industry;
+
+    @ApiModelProperty(value = "贵人")
+    private String guiren;
+
+    @ApiModelProperty(value = "脾气")
+    private String piQi;
+
+    @ApiModelProperty(value = "情感")
+    private String qingGan;
+
+    @ApiModelProperty(value = "称骨评语")
+    private Map<String,String> chenGuMap;
+
+    @ApiModelProperty(value = "报告")
+    private Map<String,String> reportMap;
+
+}

+ 54 - 0
nbjk-service/src/main/java/com/miaxis/ge/domain/GeJu.java

@@ -0,0 +1,54 @@
+package com.miaxis.ge.domain;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.miaxis.common.annotation.Excel;
+import com.miaxis.common.core.domain.BaseBusinessEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 八字格局对象 ge_ju
+ *
+ * @author miaxis
+ * @date 2023-12-08
+ */
+@Data
+@TableName("ge_ju")
+@ApiModel(value = "GeJu", description = "八字格局对象 ge_ju")
+public class GeJu extends BaseBusinessEntity {
+    private static final long serialVersionUID = 1L;
+
+    /** $column.columnComment */
+    @TableId(value = "id")
+    @ApiModelProperty(value = "$column.columnComment")
+    private Long id;
+
+    /** 十神 */
+    @Excel(name = "十神")
+    @TableField("shi_shen")
+    @ApiModelProperty(value = "十神")
+    private String shiShen;
+
+    /** 性别:1男 2:女 3:不限 */
+    @Excel(name = "性别:1男 2:女 3:不限")
+    @TableField("sex")
+    @ApiModelProperty(value = "性别:1男 2:女 3:不限")
+    private String sex;
+
+    /** 内容 */
+    @Excel(name = "内容")
+    @TableField("content")
+    @ApiModelProperty(value = "内容")
+    private String content;
+
+    /** 身强 身弱 */
+    @Excel(name = "身强 身弱")
+    @TableField("qr")
+    @ApiModelProperty(value = "身强 身弱")
+    private String qr;
+
+
+}

+ 33 - 0
nbjk-service/src/main/java/com/miaxis/ge/dto/GeJuDto.java

@@ -0,0 +1,33 @@
+package com.miaxis.ge.dto;
+
+import com.miaxis.common.core.domain.BaseBusinessEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 八字格局对象 ge_ju
+ *
+ * @author miaxis
+ * @date 2023-12-08
+ */
+@Data
+@ApiModel(value = "GeJuDto", description = "八字格局对象")
+public class GeJuDto extends BaseBusinessEntity {
+    private static final long serialVersionUID = 1L;
+
+
+    /** 十神 */
+    @ApiModelProperty(value = "十神")
+    private String shiShen;
+
+    /** 性别:1男 2:女 3:不限 */
+    @ApiModelProperty(value = "性别:1男 2:女 3:不限")
+    private String sex;
+
+
+    /** 身强 身弱 */
+    @ApiModelProperty(value = "身强 身弱")
+    private String qr;
+
+}

+ 26 - 0
nbjk-service/src/main/java/com/miaxis/ge/mapper/GeJuMapper.java

@@ -0,0 +1,26 @@
+package com.miaxis.ge.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.miaxis.ge.domain.GeJu;
+
+import java.util.List;
+
+/**
+ * 八字格局Mapper接口
+ *
+ * @author miaxis
+ * @date 2023-12-08
+ */
+public interface GeJuMapper extends BaseMapper<GeJu> {
+    /**
+     * 查询八字格局列表
+     *
+     * @param geJu 八字格局
+     * @return 八字格局集合
+     */
+    public List<GeJu> selectGeJuList(GeJu geJu);
+
+
+    public List<GeJu> selectGeJuList2(GeJu geJu);
+
+}

+ 22 - 0
nbjk-service/src/main/java/com/miaxis/ge/service/IGeJuService.java

@@ -0,0 +1,22 @@
+package com.miaxis.ge.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.miaxis.ge.domain.GeJu;
+
+import java.util.List;
+
+/**
+ * 八字格局Service接口
+ *
+ * @author miaxis
+ * @date 2023-12-08
+ */
+public interface IGeJuService extends IService<GeJu>{
+    /**
+     * 查询八字格局列表
+     *
+     * @param geJu 八字格局
+     * @return 八字格局集合
+     */
+    public List<GeJu> selectGeJuList(GeJu geJu);
+}

+ 33 - 0
nbjk-service/src/main/java/com/miaxis/ge/service/impl/GeJuServiceImpl.java

@@ -0,0 +1,33 @@
+package com.miaxis.ge.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.miaxis.ge.domain.GeJu;
+import com.miaxis.ge.mapper.GeJuMapper;
+import com.miaxis.ge.service.IGeJuService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 八字格局Service业务层处理
+ *
+ * @author miaxis
+ * @date 2023-12-08
+ */
+@Service
+public class GeJuServiceImpl extends ServiceImpl<GeJuMapper, GeJu> implements IGeJuService {
+    @Autowired
+    private GeJuMapper geJuMapper;
+
+    /**
+     * 查询八字格局列表
+     *
+     * @param geJu 八字格局
+     * @return 八字格局
+     */
+    @Override
+    public List<GeJu> selectGeJuList(GeJu geJu){
+        return geJuMapper.selectGeJuList(geJu);
+    }
+}

+ 91 - 0
nbjk-service/src/main/java/com/miaxis/jie/domain/JieQi.java

@@ -0,0 +1,91 @@
+package com.miaxis.jie.domain;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.miaxis.common.annotation.Excel;
+import com.miaxis.common.core.domain.BaseBusinessEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 百年节气对象 jie_qi
+ *
+ * @author miaxis
+ * @date 2023-11-27
+ */
+@Data
+@TableName("jie_qi")
+@ApiModel(value = "JieQiVo", description = "百年节气对象 jie_qi")
+public class JieQi extends BaseBusinessEntity {
+    private static final long serialVersionUID = 1L;
+
+    /** id */
+    @TableId(value = "id")
+    @ApiModelProperty(value = "id")
+    private Long id;
+
+    /** 节气名称 */
+    @Excel(name = "节气名称")
+    @TableField("jieqi_name")
+    @ApiModelProperty(value = "节气名称")
+    private String jieqiName;
+
+    /** 节气开始时间点 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "节气开始时间点", width = 30, dateFormat = "yyyy-MM-dd")
+    @TableField("jieqi_time")
+    @ApiModelProperty(value = "节气开始时间点")
+    private Date jieqiTime;
+
+    /** 公历年份 */
+    @Excel(name = "公历年份")
+    @TableField("year")
+    @ApiModelProperty(value = "公历年份")
+    private Long year;
+
+    public void setId(Long id){
+        this.id = id;
+    }
+
+    public Long getId(){
+        return id;
+    }
+    public void setJieqiName(String jieqiName){
+        this.jieqiName = jieqiName;
+    }
+
+    public String getJieqiName(){
+        return jieqiName;
+    }
+    public void setJieqiTime(Date jieqiTime){
+        this.jieqiTime = jieqiTime;
+    }
+
+    public Date getJieqiTime(){
+        return jieqiTime;
+    }
+    public void setYear(Long year){
+        this.year = year;
+    }
+
+    public Long getYear(){
+        return year;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("jieqiName", getJieqiName())
+            .append("jieqiTime", getJieqiTime())
+            .append("year", getYear())
+            .toString();
+    }
+}

+ 28 - 0
nbjk-service/src/main/java/com/miaxis/jie/mapper/JieQiMapper.java

@@ -0,0 +1,28 @@
+package com.miaxis.jie.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.miaxis.jie.domain.JieQi;
+import com.miaxis.jie.vo.JieQiVo;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 百年节气Mapper接口
+ *
+ * @author miaxis
+ * @date 2023-11-27
+ */
+public interface JieQiMapper extends BaseMapper<JieQi> {
+    /**
+     * 查询百年节气列表
+     *
+     * @param jieQi 百年节气
+     * @return 百年节气集合
+     */
+    public List<JieQi> selectJieQiList(JieQi jieQi);
+
+
+    public List<JieQiVo> selectJiiQiFb(Date birthday);
+
+}

+ 33 - 0
nbjk-service/src/main/java/com/miaxis/jie/service/IJieQiService.java

@@ -0,0 +1,33 @@
+package com.miaxis.jie.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.miaxis.jie.domain.JieQi;
+import com.miaxis.jie.vo.JieQiVo;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 百年节气Service接口
+ *
+ * @author miaxis
+ * @date 2023-11-27
+ */
+public interface IJieQiService extends IService<JieQi>{
+    /**
+     * 查询百年节气列表
+     *
+     * @param jieQi 百年节气
+     * @return 百年节气集合
+     */
+    public List<JieQi> selectJieQiList(JieQi jieQi);
+
+
+    /**
+     * 查询最近前后两个节气
+     * @param birthday
+     * @return
+     */
+    List<JieQiVo> selectJiiQiFb(Date birthday);
+
+}

+ 40 - 0
nbjk-service/src/main/java/com/miaxis/jie/service/impl/JieQiServiceImpl.java

@@ -0,0 +1,40 @@
+package com.miaxis.jie.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.miaxis.jie.domain.JieQi;
+import com.miaxis.jie.mapper.JieQiMapper;
+import com.miaxis.jie.service.IJieQiService;
+import com.miaxis.jie.vo.JieQiVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 百年节气Service业务层处理
+ *
+ * @author miaxis
+ * @date 2023-11-27
+ */
+@Service
+public class JieQiServiceImpl extends ServiceImpl<JieQiMapper, JieQi> implements IJieQiService {
+    @Autowired
+    private JieQiMapper jieQiMapper;
+
+    /**
+     * 查询百年节气列表
+     *
+     * @param jieQi 百年节气
+     * @return 百年节气
+     */
+    @Override
+    public List<JieQi> selectJieQiList(JieQi jieQi){
+        return jieQiMapper.selectJieQiList(jieQi);
+    }
+
+    @Override
+    public List<JieQiVo> selectJiiQiFb(Date birthday) {
+        return jieQiMapper.selectJiiQiFb(birthday);
+    }
+}

+ 39 - 0
nbjk-service/src/main/java/com/miaxis/jie/vo/JieQiVo.java

@@ -0,0 +1,39 @@
+package com.miaxis.jie.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 百年节气对象 jie_qi
+ *
+ * @author miaxis
+ * @date 2023-11-27
+ */
+@Data
+@ApiModel(value = "JieQiVo", description = "百年节气对象 jie_qi")
+public class JieQiVo {
+    private static final long serialVersionUID = 1L;
+
+    /** 节气名称 */
+    @ApiModelProperty(value = "节气名称")
+    private String jieqiName;
+
+    /** 节气开始时间点 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "节气开始时间点")
+    private Date jieqiTime;
+
+    /** 公历年份 */
+    @ApiModelProperty(value = "公历年份")
+    private Long year;
+
+    /** 与输入时间相差多少天 */
+    @ApiModelProperty(value = "与输入时间相差多少天")
+    private int daysDifference;
+
+
+}

+ 41 - 0
nbjk-service/src/main/java/com/miaxis/number/domain/NumberYun.java

@@ -0,0 +1,41 @@
+package com.miaxis.number.domain;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.miaxis.common.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 数字运势对象 number_yun
+ *
+ * @author miaxis
+ * @date 2023-11-23
+ */
+@Data
+@TableName("number_yun")
+@ApiModel(value = "NumberYun", description = "数字运势对象 number_yun")
+public class NumberYun {
+    private static final long serialVersionUID = 1L;
+
+    /** id 数字 */
+    @TableId(value = "id")
+    @ApiModelProperty(value = "id 数字")
+    private String id;
+
+    /** 财运 */
+    @Excel(name = "财运")
+    @TableField("cai_yun")
+    @ApiModelProperty(value = "财运")
+    private String caiYun;
+
+    /** 桃花 */
+    @Excel(name = "桃花")
+    @TableField("tao_hua")
+    @ApiModelProperty(value = "桃花")
+    private String taoHua;
+
+
+}

+ 25 - 0
nbjk-service/src/main/java/com/miaxis/number/mapper/NumberYunMapper.java

@@ -0,0 +1,25 @@
+package com.miaxis.number.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.miaxis.number.domain.NumberYun;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 数字运势Mapper接口
+ *
+ * @author miaxis
+ * @date 2023-11-23
+ */
+public interface NumberYunMapper extends BaseMapper<NumberYun> {
+    /**
+     * 查询数字运势列表
+     *
+     * @param numberYun 数字运势
+     * @return 数字运势集合
+     */
+    List<NumberYun> selectNumberYunList(NumberYun numberYun);
+
+    List<NumberYun> getNumberYunByIds(@Param("ids")List<String> ids);
+}

+ 30 - 0
nbjk-service/src/main/java/com/miaxis/number/service/INumberYunService.java

@@ -0,0 +1,30 @@
+package com.miaxis.number.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.miaxis.number.domain.NumberYun;
+
+import java.util.List;
+
+/**
+ * 数字运势Service接口
+ *
+ * @author miaxis
+ * @date 2023-11-23
+ */
+public interface INumberYunService extends IService<NumberYun>{
+    /**
+     * 查询数字运势列表
+     *
+     * @param numberYun 数字运势
+     * @return 数字运势集合
+     */
+    List<NumberYun> selectNumberYunList(NumberYun numberYun);
+
+
+    /**
+     * 根据数字获取对象
+     * @param ids
+     * @return
+     */
+    List<NumberYun> getNumberYunByIds(List<String> ids);
+}

+ 39 - 0
nbjk-service/src/main/java/com/miaxis/number/service/impl/NumberYunServiceImpl.java

@@ -0,0 +1,39 @@
+package com.miaxis.number.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.miaxis.number.domain.NumberYun;
+import com.miaxis.number.mapper.NumberYunMapper;
+import com.miaxis.number.service.INumberYunService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 数字运势Service业务层处理
+ *
+ * @author miaxis
+ * @date 2023-11-23
+ */
+@Service
+public class NumberYunServiceImpl extends ServiceImpl<NumberYunMapper, NumberYun> implements INumberYunService {
+    @Autowired
+    private NumberYunMapper numberYunMapper;
+
+    /**
+     * 查询数字运势列表
+     *
+     * @param numberYun 数字运势
+     * @return 数字运势
+     */
+    @Override
+    public List<NumberYun> selectNumberYunList(NumberYun numberYun){
+        return numberYunMapper.selectNumberYunList(numberYun);
+    }
+
+
+    @Override
+    public List<NumberYun> getNumberYunByIds(List<String> ids) {
+        return numberYunMapper.getNumberYunByIds(ids);
+    }
+}

+ 37 - 0
nbjk-service/src/main/resources/mapper/disease/DiseasePartMapper.xml

@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.miaxis.disease.mapper.DiseasePartMapper">
+
+    <resultMap type="DiseasePart" id="DiseasePartResult">
+        <result property="id" column="id"/>
+        <result property="part" column="part"/>
+        <result property="sex" column="sex"/>
+        <result property="symp" column="symp"/>
+        <result property="degree" column="degree"/>
+    </resultMap>
+
+    <sql id="selectDiseasePartVo">
+        select * from disease_part
+    </sql>
+
+    <select id="selectDiseasePartList" parameterType="com.miaxis.disease.dto.DiseasePartDto" resultMap="DiseasePartResult">
+        <include refid="selectDiseasePartVo"/>
+        <where>
+            <if test="parts != null"> and part in
+                <foreach item="part" index="index" collection="parts" open="(" separator="," close=")">
+                    #{part}
+                </foreach>
+            </if>
+
+            <if test="sex != null and sex != '' "> and sex in
+                <foreach item="s" index="index" collection="sex.split(',')" open="(" separator="," close=")">
+                    #{s}
+                </foreach>
+             </if>
+            <if test="degree != null  and degree != ''"> and degree = #{degree}</if>
+        </where>
+    </select>
+
+</mapper>

+ 70 - 0
nbjk-service/src/main/resources/mapper/gan/GanZhiMapper.xml

@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.miaxis.gan.mapper.GanZhiMapper">
+
+    <resultMap type="com.miaxis.gan.domain.GanZhi" id="GanZhiResult">
+        <result property="id"    column="id"    />
+        <result property="name"    column="name"    />
+        <result property="color"    column="color"    />
+        <result property="five"    column="five"    />
+        <result property="xi"    column="xi"    />
+        <result property="ji"    column="ji"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateTime"    column="update_time"    />
+    </resultMap>
+
+
+    <resultMap type="com.miaxis.gan.vo.GanZhiRowVo" id="GanZhiRowVoResult">
+        <result property="name"    column="name"    />
+        <result property="color"    column="color"    />
+        <result property="five"    column="five"    />
+        <result property="xi"    column="xi"    />
+        <result property="ji"    column="ji"    />
+    </resultMap>
+
+
+    <resultMap type="com.miaxis.gan.vo.GanZhiFiveVo" id="GanZhiFiveVoResult">
+        <result property="five"    column="five"    />
+        <result property="count"    column="count"    />
+    </resultMap>
+
+
+    <sql id="selectGanZhiVo">
+        select * from gan_zhi
+    </sql>
+
+    <select id="selectGanZhiList" parameterType="com.miaxis.gan.domain.GanZhi" resultMap="GanZhiResult">
+        <include refid="selectGanZhiVo"/>
+        <where>
+            <if test="name != null  and name != ''"> and name like concat('%', #{name}, '%')</if>
+            <if test="color != null  and color != ''"> and color = #{color}</if>
+            <if test="five != null  and five != ''"> and five = #{five}</if>
+            <if test="xi != null  and xi != ''"> and xi = #{xi}</if>
+            <if test="ji != null  and ji != ''"> and ji = #{ji}</if>
+        </where>
+    </select>
+
+
+    <select id="selectGanZhiRowVoList" parameterType="com.miaxis.gan.dto.GanZhiDto" resultMap="GanZhiRowVoResult">
+        SELECT name,color,five,xi,ji FROM gan_zhi g
+        <where>
+            g.name IN (#{yearGan}, #{yearZhi}, #{monthGan}, #{monthZhi}, #{dayGan}, #{dayZhi}, #{timeGan}, #{timeZhi})
+            ORDER BY FIELD(g.name, #{yearGan}, #{yearZhi}, #{monthGan}, #{monthZhi}, #{dayGan}, #{dayZhi}, #{timeGan}, #{timeZhi})
+        </where>
+    </select>
+
+
+
+    <select id="selectGanZhiFiveVoCount" parameterType="com.miaxis.gan.dto.GanZhiDto" resultMap="GanZhiFiveVoResult">
+        SELECT five,count(1) as count FROM gan_zhi g
+        <where>
+            g.name IN (#{yearGan}, #{yearZhi}, #{monthGan}, #{monthZhi}, #{dayGan}, #{dayZhi}, #{timeGan}, #{timeZhi})
+        </where>
+        group by five
+    </select>
+
+
+
+</mapper>

+ 50 - 0
nbjk-service/src/main/resources/mapper/ge/GeJuMapper.xml

@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.miaxis.ge.mapper.GeJuMapper">
+
+    <resultMap type="GeJu" id="GeJuResult">
+        <result property="id"    column="id"    />
+        <result property="shiShen"    column="shi_shen"    />
+        <result property="sex"    column="sex"    />
+        <result property="content"    column="content"    />
+        <result property="qr"    column="qr"    />
+    </resultMap>
+
+    <sql id="selectGeJuVo">
+        select * from ge_ju
+    </sql>
+
+    <select id="selectGeJuList" parameterType="com.miaxis.ge.domain.GeJu" resultMap="GeJuResult">
+        <include refid="selectGeJuVo"/>
+        <where>
+            <if test="shiShen != null  and shiShen != ''"> and shi_shen = #{shiShen}</if>
+            <if test="sex != null  and sex != ''"> and sex = #{sex}</if>
+            <if test="content != null  and content != ''"> and content = #{content}</if>
+            <if test="qr != null  and qr != ''"> and qr = #{qr}</if>
+        </where>
+    </select>
+
+
+    <select id="selectGeJuList2" parameterType="com.miaxis.ge.domain.GeJu" resultMap="GeJuResult">
+        <include refid="selectGeJuVo"/>
+        <where>
+            <if test="shiShen != null  and shiShen != ''"> and shi_shen = #{shiShen}</if>
+            <if test="qr != null"> and qr in
+                <foreach item="q" index="index" collection="qr.split(',')" open="(" separator="," close=")">
+                    #{q}
+                </foreach>
+            </if>
+
+            <if test="sex != null and sex != '' "> and sex in
+                <foreach item="s" index="index" collection="sex.split(',')" open="(" separator="," close=")">
+                    #{s}
+                </foreach>
+            </if>
+        </where>
+        order by id
+    </select>
+
+
+</mapper>

+ 55 - 0
nbjk-service/src/main/resources/mapper/jie/JieQiMapper.xml

@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.miaxis.jie.mapper.JieQiMapper">
+
+    <resultMap type="JieQi" id="JieQiResult">
+        <result property="id"    column="id"    />
+        <result property="jieqiName"    column="jieqi_name"    />
+        <result property="jieqiTime"    column="jieqi_time"    />
+        <result property="year"    column="year"    />
+    </resultMap>
+
+
+    <resultMap type="JieQiVo" id="JieQiVoResult">
+        <result property="jieqiName"    column="jieqi_name"    />
+        <result property="jieqiTime"    column="jieqi_time"    />
+        <result property="daysDifference"    column="days_difference"    />
+        <result property="year"    column="year"    />
+    </resultMap>
+
+    <sql id="selectJieQiVo">
+        select * from jie_qi
+    </sql>
+
+    <select id="selectJieQiList" parameterType="JieQi" resultMap="JieQiResult">
+        <include refid="selectJieQiVo"/>
+        <where>
+            <if test="jieqiName != null  and jieqiName != ''"> and jieqi_name like concat('%', #{jieqiName}, '%')</if>
+            <if test="jieqiTime != null "> and jieqi_time = #{jieqiTime}</if>
+            <if test="year != null "> and year = #{year}</if>
+        </where>
+    </select>
+
+
+    <select id="selectJiiQiFb" parameterType="java.util.Date"  resultMap="JieQiVoResult">
+        SELECT *,
+            DATEDIFF(#{birthday}, jieqi_time) AS days_difference
+        FROM (
+        (SELECT *
+        FROM jie_qi
+        WHERE jieqi_time <![CDATA[ <= ]]> #{birthday}
+        ORDER BY jieqi_time DESC
+        LIMIT 1)
+        UNION
+        (SELECT *
+        FROM jie_qi
+        WHERE jieqi_time <![CDATA[ > ]]> #{birthday}
+        ORDER BY jieqi_time ASC
+        LIMIT 1)
+        ) AS db
+    </select>
+
+
+</mapper>

+ 37 - 0
nbjk-service/src/main/resources/mapper/number/NumberYunMapper.xml

@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.miaxis.number.mapper.NumberYunMapper">
+
+    <resultMap type="NumberYun" id="NumberYunResult">
+        <result property="id"    column="id"    />
+        <result property="caiYun"    column="cai_yun"    />
+        <result property="taoHua"    column="tao_hua"    />
+    </resultMap>
+
+    <sql id="selectNumberYunVo">
+        select * from number_yun
+    </sql>
+
+    <select id="selectNumberYunList" parameterType="NumberYun" resultMap="NumberYunResult">
+        <include refid="selectNumberYunVo"/>
+        <where>
+            <if test="caiYun != null  and caiYun != ''"> and cai_yun = #{caiYun}</if>
+            <if test="taoHua != null  and taoHua != ''"> and tao_hua = #{taoHua}</if>
+        </where>
+    </select>
+
+
+    <select id="getNumberYunByIds" parameterType="ArrayList" resultMap="NumberYunResult">
+        <include refid="selectNumberYunVo"/>
+        <where>
+            id in
+            <foreach item="num" index="index" collection="ids" open="(" separator="," close=")">
+                #{num}
+            </foreach>
+        </where>
+        order by id
+    </select>
+
+</mapper>