From ace7066780453a7a70dbaa3700de9a761f38ca87 Mon Sep 17 00:00:00 2001
From: bingbo <bingbo1993@126.com>
Date: 星期五, 24 十一月 2023 13:03:58 +0800
Subject: [PATCH] 管片修改时间

---
 hd/pipe/screen/src/main/java/com/thhy/screen/modules/biz/audio/controller/AudioController.java          |   32 ++
 hd/pipe/screen/src/main/java/com/thhy/screen/modules/biz/agv/controller/NettyServerHandler.java         |    1 
 hd/pipe/screen/src/main/java/com/thhy/screen/utils/HttpUtils.java                                       |  148 +++++++++++++
 hd/pipe/screen/src/main/java/com/thhy/screen/modules/biz/bigscreen/mapper/BigScreenMapper.java          |    5 
 hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/pipeinfo/mapper/PipeInfoMapper.java            |   18 +
 hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/cultivated/entity/PipeCultivated.java          |    4 
 hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/pipeinfo/service/impl/PipeInfoServiceImpl.java |  125 +++++++++++
 hd/pipe/screen/src/main/java/com/thhy/screen/modules/biz/audio/service/impl/AudioServiceImpl.java       |   31 ++
 hd/pipe/screen/src/main/java/com/thhy/screen/config/StartListener.java                                  |   34 +++
 hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/pipeinfo/entity/PipeDateDto.java               |   32 ++
 hd/pipe/screen/src/main/java/com/thhy/screen/modules/biz/audio/entity/AudioGroup.java                   |   20 +
 hd/pipe/screen/src/main/java/com/thhy/screen/modules/biz/audio/service/AudioService.java                |   13 +
 hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/pipeinfo/entity/PipeInfo.java                  |    6 
 hd/pipe/screen/src/main/java/com/thhy/screen/utils/AudioUtils.java                                      |   41 +++
 hd/pipe/common/src/main/java/com/thhy/general/common/BasicStatus.java                                   |    2 
 hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/pipeinfo/service/PipeInfoService.java          |    5 
 hd/pipe/screen/src/main/java/com/thhy/screen/modules/biz/audio/entity/AudioDto.java                     |   11 +
 hd/pipe/screen/src/main/resources/mapping/BigScreenMapper.xml                                           |   30 ++
 hd/pipe/mobile/src/main/resources/mapping/PipeInfoMapper.xml                                            |   82 +++++++
 hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/pipeinfo/controller/PipeInfoController.java    |   13 +
 20 files changed, 650 insertions(+), 3 deletions(-)

diff --git a/hd/pipe/common/src/main/java/com/thhy/general/common/BasicStatus.java b/hd/pipe/common/src/main/java/com/thhy/general/common/BasicStatus.java
index 97f89ef..787511c 100644
--- a/hd/pipe/common/src/main/java/com/thhy/general/common/BasicStatus.java
+++ b/hd/pipe/common/src/main/java/com/thhy/general/common/BasicStatus.java
@@ -127,6 +127,8 @@
     RING_NUM_IS_REPEAT("09934","环号已存在"),
 
     RING_NOT_DIS("09935","环号必须为整数,最多5位"),
+
+    RING_NOT_COMPLETE("09936","尚未成环"),
     ;
 
 
diff --git a/hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/cultivated/entity/PipeCultivated.java b/hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/cultivated/entity/PipeCultivated.java
index 7bcce79..d0a16a3 100644
--- a/hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/cultivated/entity/PipeCultivated.java
+++ b/hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/cultivated/entity/PipeCultivated.java
@@ -60,4 +60,8 @@
     private String waterCultivatedId;
 
     private String companyId;
+
+    private Integer outWater;
+
+    private Date outTime;
 }
diff --git a/hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/pipeinfo/controller/PipeInfoController.java b/hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/pipeinfo/controller/PipeInfoController.java
index debe517..1d490f4 100644
--- a/hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/pipeinfo/controller/PipeInfoController.java
+++ b/hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/pipeinfo/controller/PipeInfoController.java
@@ -24,6 +24,7 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @author zhang_xiao_bo
@@ -126,4 +127,16 @@
         return BasicResult.success();
     }
 
+    @RequestMapping("updateDateInfo")
+    public BasicResult updateDateInfo(@RequestBody PipeInfo pipeInfo){
+        Map<String, Object> map = pipeInfoService.updateDateInfo(pipeInfo);
+        return BasicResult.success(map);
+    }
+
+    @RequestMapping("updatePipeDate")
+    public BasicResult updatePipeDate(@RequestBody PipeDateDto pipeDateDto){
+        pipeInfoService.updatePipeDate(pipeDateDto);
+        return BasicResult.success();
+    }
+
 }
diff --git a/hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/pipeinfo/entity/PipeDateDto.java b/hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/pipeinfo/entity/PipeDateDto.java
new file mode 100644
index 0000000..54fcaff
--- /dev/null
+++ b/hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/pipeinfo/entity/PipeDateDto.java
@@ -0,0 +1,32 @@
+package com.thhy.mobile.modules.biz.pipeinfo.entity;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+public class PipeDateDto implements Serializable {
+
+    private String pipeNum;
+
+    private String ringNum;
+
+    private Date inModTime;
+
+    private Date outModTime;
+
+    private Date pouringTime;
+
+    private Date placingInTime;
+
+    private Date placingOutTime;
+
+    private Date checkTime;
+
+    private Date inWaterTime;
+
+    private Date outWaterTime;
+
+    private Date inRepoTime;
+}
diff --git a/hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/pipeinfo/entity/PipeInfo.java b/hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/pipeinfo/entity/PipeInfo.java
index bfaa2ec..e06687b 100644
--- a/hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/pipeinfo/entity/PipeInfo.java
+++ b/hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/pipeinfo/entity/PipeInfo.java
@@ -124,6 +124,12 @@
 
     private Integer createFlag;
 
+    private Date outModTime;
+
+    private Date placingInTime;
+
+    private Date placingOutTime;
+
     public PipeInfo() {}
 
     public PipeInfo(Mould mould, SteelProduce steelProduce) {
diff --git a/hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/pipeinfo/mapper/PipeInfoMapper.java b/hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/pipeinfo/mapper/PipeInfoMapper.java
index ba122b6..ff68acb 100644
--- a/hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/pipeinfo/mapper/PipeInfoMapper.java
+++ b/hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/pipeinfo/mapper/PipeInfoMapper.java
@@ -1,12 +1,14 @@
 package com.thhy.mobile.modules.biz.pipeinfo.mapper;
 
 import com.thhy.mobile.modules.biz.checkhistory.entity.*;
+import com.thhy.mobile.modules.biz.cultivated.entity.PipeCultivated;
 import com.thhy.mobile.modules.biz.cultivated.entity.PipeIntoListVo;
 import com.thhy.mobile.modules.biz.mouldcheck.entity.Mould;
 import com.thhy.mobile.modules.biz.mouldcheck.entity.MouldFree;
 import com.thhy.mobile.modules.biz.mouldcheck.entity.RingCompleteCheck;
 import com.thhy.mobile.modules.biz.pipecheckrecord.entity.MaterialStockRecord;
 import com.thhy.mobile.modules.biz.pipeinfo.entity.*;
+import com.thhy.mobile.modules.biz.repo.entity.RepoRecord;
 import com.thhy.mobile.modules.biz.steelproduce.entity.ProduceDto;
 import com.thhy.mobile.modules.biz.steelproduce.entity.ProduceMonthVo;
 import com.thhy.mobile.modules.biz.temdevice.entity.DeviceInfo;
@@ -151,4 +153,20 @@
     int queryMaxNumBySteelProduce();
 
     int countByRingNum(String ringNum);
+
+    Boolean compelteByRingNumAndPro(@Param("ringNum")String ringNum,@Param("proId")String proId);
+
+    List<PipeIntoListVo> queryByRingNumAndPro(@Param("ringNum") String ringNum,@Param("proId") String proId);
+
+    PipeCultivated queryWaterTimeByPipeNum(String pipeNum);
+
+    RepoRecord queryRepoDate(String pipeNum);
+
+    void updatePipeDateByNum(PipeDateDto pipeDateDto);
+
+    void updateInWaterTime(PipeCultivated pipeCultivated);
+
+    void updateOutWaterTime(PipeCultivated pipeCultivated);
+
+    void updateInRepoTime(RepoRecord repoRecord);
 }
diff --git a/hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/pipeinfo/service/PipeInfoService.java b/hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/pipeinfo/service/PipeInfoService.java
index a435a25..9cc442a 100644
--- a/hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/pipeinfo/service/PipeInfoService.java
+++ b/hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/pipeinfo/service/PipeInfoService.java
@@ -7,6 +7,7 @@
 import java.io.Serializable;
 import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  *  服务类
@@ -54,4 +55,8 @@
     List<MaterialInfo> materialTotalStock(String companyId);
 
     void updateRingNum(PipeInfo pipeInfo);
+
+    Map<String,Object> updateDateInfo(PipeInfo pipeInfo);
+
+    void updatePipeDate(PipeDateDto pipeDateDto);
 }
diff --git a/hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/pipeinfo/service/impl/PipeInfoServiceImpl.java b/hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/pipeinfo/service/impl/PipeInfoServiceImpl.java
index caaa054..19d0ea5 100644
--- a/hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/pipeinfo/service/impl/PipeInfoServiceImpl.java
+++ b/hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/pipeinfo/service/impl/PipeInfoServiceImpl.java
@@ -4,12 +4,16 @@
 import com.thhy.general.common.BasicStatus;
 import com.thhy.general.config.SysUserInfo;
 import com.thhy.general.exception.BasicException;
+import com.thhy.general.utils.DeepCopyUtils;
 import com.thhy.general.utils.UserInfoUtils;
+import com.thhy.mobile.modules.biz.cultivated.entity.PipeCultivated;
+import com.thhy.mobile.modules.biz.cultivated.entity.PipeIntoListVo;
 import com.thhy.mobile.modules.biz.pipecheckrecord.entity.PipeCheckRecord;
 import com.thhy.mobile.modules.biz.pipecheckrecord.mapper.PipeCheckRecordMapper;
 import com.thhy.mobile.modules.biz.pipeinfo.entity.*;
 import com.thhy.mobile.modules.biz.pipeinfo.mapper.PipeInfoMapper;
 import com.thhy.mobile.modules.biz.pipeinfo.service.PipeInfoService;
+import com.thhy.mobile.modules.biz.repo.entity.RepoRecord;
 import com.thhy.mobile.modules.biz.steelproduce.entity.ProduceDto;
 import com.thhy.mobile.modules.biz.steelproduce.entity.ProduceMonthVo;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -20,9 +24,7 @@
 import java.math.BigDecimal;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
+import java.util.*;
 
 /**
  *  服务实现类
@@ -226,4 +228,121 @@
         PipeInfo pipeInfo1 = pipeInfoMapper.queryByPipeNum(pipeInfo.getPipeNum());
         pipeInfoMapper.updateRingNum(pipeInfo1.getRingNum(), pipeInfo.getRingNum());
     }
+
+    @Override
+    public Map<String, Object> updateDateInfo(PipeInfo pipeInfo) {
+        Map<String, Object> map = new HashMap<>();
+        PipeInfo pinfos = pipeInfoMapper.queryByPipeNum(pipeInfo.getPipeNum());
+
+        Boolean result = pipeInfoMapper.compelteByRingNumAndPro(pinfos.getRingNum(), pinfos.getProId());
+        if(result==null||!result){
+            throw new BasicException(BasicStatus.RING_NOT_COMPLETE);
+        }
+        List<PipeIntoListVo> intoListVos = pipeInfoMapper.queryByRingNumAndPro(pinfos.getRingNum(),pinfos.getProId());
+
+        PipeInfo pinfo = pipeInfoMapper.queryByPipeNum(intoListVos.get(0).getPipeNum());
+        if(pinfo.getCheckResult().equals(0)){
+            //水养
+            //PipeCultivated pipeCultivated = pipeInfoMapper.queryWaterTimeByPipeNum(pipeInfo.getPipeNum());
+
+        }
+
+        map.put("inModTime",pinfo.getIntoModTime());
+        map.put("outModTime",pinfo.getOutModTime());
+        map.put("placingInTime",pinfo.getPlacingInTime());
+        map.put("placingOutTime",pinfo.getPlacingOutTime());
+        map.put("pouringTime",pinfo.getPouringTime());
+
+        map.put("checkTime",pinfo.getCheckTime());
+
+        PipeCultivated pipeCultivated = pipeInfoMapper.queryWaterTimeByPipeNum(pipeInfo.getPipeNum());
+        map.put("inWaterFlag",false);
+        map.put("OutWaterFlag",false);
+        map.put("inRepoFlag",false);
+        if(pipeCultivated!=null){
+            map.put("inWaterFlag",true);
+            map.put("inWaterTime",pipeCultivated.getCreateTime());
+
+            if(pipeCultivated.getOutWater()==2){
+                map.put("OutWaterFlag",true);
+                map.put("OutWaterTime",pipeCultivated.getOutTime());
+                RepoRecord repoRecord = pipeInfoMapper.queryRepoDate(pipeInfo.getPipeNum());
+                if(repoRecord!=null){
+                    map.put("inRepoFlag",true);
+                    map.put("inRepoTime",repoRecord.getCreateTime());
+                }
+                return map;
+            }else{
+                return map;
+            }
+        }else{
+            return map;
+        }
+    }
+
+    @Transactional
+    @Override
+    public void updatePipeDate(PipeDateDto pipeDateDto) {
+        PipeInfo pinfo = pipeInfoMapper.queryByPipeNum(pipeDateDto.getPipeNum());
+
+        Boolean result = pipeInfoMapper.compelteByRingNumAndPro(pinfo.getRingNum(), pinfo.getProId());
+        if(result==null||!result){
+            throw new BasicException(BasicStatus.RING_NOT_COMPLETE);
+        }
+        List<PipeIntoListVo> intoListVos = pipeInfoMapper.queryByRingNumAndPro(pinfo.getRingNum(),pinfo.getProId());
+
+        for(int i=0;i<intoListVos.size();i++){
+            PipeDateDto pd = createNewDate(pipeDateDto,i);
+            pd.setPipeNum(intoListVos.get(i).getPipeNum());
+            pipeInfoMapper.updatePipeDateByNum(pd);
+            //入模
+        }
+        PipeCultivated pipeCultivated = pipeInfoMapper.queryWaterTimeByPipeNum(pipeDateDto.getPipeNum());
+        if (pipeCultivated!=null) {
+            pipeCultivated.setCreateTime(pipeDateDto.getInWaterTime());
+            pipeInfoMapper.updateInWaterTime(pipeCultivated);
+            if(pipeCultivated.getOutWater()==2){
+                pipeCultivated.setOutTime(pipeDateDto.getOutWaterTime());
+                pipeInfoMapper.updateOutWaterTime(pipeCultivated);
+            }
+        }
+
+        RepoRecord repoRecord = pipeInfoMapper.queryRepoDate(pipeDateDto.getPipeNum());
+
+        if (repoRecord!=null) {
+            repoRecord.setCreateTime(pipeDateDto.getInRepoTime());
+            pipeInfoMapper.updateInRepoTime(repoRecord);
+        }
+    }
+
+    public PipeDateDto createNewDate(PipeDateDto pipeDateDto,int index){
+        PipeDateDto pd = new PipeDateDto();
+        if(index==0){
+            DeepCopyUtils.copy(pipeDateDto,pd);
+        }else{
+            pd.setInModTime(addMiu(pipeDateDto.getInModTime(),5*index));
+            pd.setOutModTime(addMiu(pipeDateDto.getOutModTime(),5*index));
+            pd.setPouringTime(addMiu(pipeDateDto.getPouringTime(),5*index));
+            pd.setCheckTime(addMiu(pipeDateDto.getCheckTime(),5*index));
+            pd.setPlacingInTime(addMiu(pipeDateDto.getPlacingInTime(),5*index));
+            pd.setPlacingOutTime(addMiu(pipeDateDto.getPlacingOutTime(),5*index));
+            if (pipeDateDto.getInRepoTime()!=null) {
+                pd.setInRepoTime(addMiu(pipeDateDto.getInRepoTime(),5*index));
+            }
+            if (pipeDateDto.getInWaterTime()!=null) {
+                pd.setInWaterTime(addMiu(pipeDateDto.getInWaterTime(),5*index));
+            }
+            if (pipeDateDto.getOutWaterTime()!=null) {
+                pd.setOutWaterTime(addMiu(pipeDateDto.getOutWaterTime(),5*index));
+            }
+        }
+        return pd;
+    }
+
+    public Date addMiu(Date oldTime,int amount){
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(oldTime);
+        calendar.add(Calendar.MINUTE,amount);
+        return calendar.getTime();
+    }
 }
diff --git a/hd/pipe/mobile/src/main/resources/mapping/PipeInfoMapper.xml b/hd/pipe/mobile/src/main/resources/mapping/PipeInfoMapper.xml
index ead721b..442cde4 100644
--- a/hd/pipe/mobile/src/main/resources/mapping/PipeInfoMapper.xml
+++ b/hd/pipe/mobile/src/main/resources/mapping/PipeInfoMapper.xml
@@ -840,4 +840,86 @@
     <select id="countByRingNum" resultType="int">
         select count(pipe_id) from t_pipe_info where ring_num = #{ringNum}
     </select>
+
+    <select id="compelteByRingNumAndPro" resultType="boolean">
+        select (a.pipeBlock=b.proBlock) as result from
+            (
+                select GROUP_CONCAT(block_num order by sd.dict_value) as pipeBlock,tpi.pro_id
+                from t_pipe_info tpi
+                         left join sys_dict sd on sd.dict_id = tpi.block_num
+                where tpi.ring_num = #{ringNum} and tpi.pro_id = #{proId} and tpi.check_result = 1
+                group by tpi.ring_num,tpi.pro_id
+            ) a
+                left join
+            (
+                select GROUP_CONCAT(block_num order by sd1.dict_value) as proBlock,spb.pro_id
+                from sys_pro_blok spb
+                         left join sys_dict sd1 on sd1.dict_id = spb.block_num
+                where spb.pro_id = #{proId}
+                group by spb.pro_id
+            ) b on a.pro_id = b.pro_id
+    </select>
+
+    <select id="queryByRingNumAndPro" resultType="com.thhy.mobile.modules.biz.cultivated.entity.PipeIntoListVo">
+        select t.ring_num as ringNum,t.pipe_num as pipeNum,t.check_time as checkTime,sd.dict_name as blockNum,sp.pro_name as proName
+        from t_pipe_info t
+                 left join sys_dict sd on sd.dict_id = t.block_num
+                 left join sys_project sp on sp.pro_id = t.pro_id
+        where t.ring_num = #{ringNum} and t.pro_id = #{proId}
+        order by t.pipe_num
+    </select>
+
+    <select id="queryWaterTimeByPipeNum" resultType="com.thhy.mobile.modules.biz.cultivated.entity.PipeCultivated">
+        select pc.id,pc.ring_num as ringNum,pc.create_time as createTime,pc.out_time as outTime,pc.out_water as outWater
+        from t_pipe_cultivated_pi pcp
+                 left join t_pipe_cultivated pc on pcp.cultivated_id = pc.id
+        where pipe_num = #{pipeNum}
+    </select>
+
+    <select id="queryRepoDate" resultType="com.thhy.mobile.modules.biz.repo.entity.RepoRecord">
+        select rr.create_time as createTime,rr.record_id as recordId,rrp.out_repo as outRepo,rrp.out_repo_time as outRepoTime
+        from t_repo_record_pipe rrp
+                 left join t_repo_record rr on rrp.record_id = rr.record_id
+        where rrp.pipe_num = #{pipeNum}
+    </select>
+
+    <update id="updatePipeDateByNum">
+        update t_pipe_info
+        <set>
+            <if test="checkTime != null">
+                check_time=#{checkTime},
+            </if>
+            <if test="inModTime != null">
+                into_mod_time=#{inModTime},
+            </if>
+            <if test="outModTime != null">
+                out_mod_time=#{outModTime},
+            </if>
+            <if test="pouringTime != null">
+                pouring_time=#{pouringTime},
+            </if>
+            <if test="placingInTime != null">
+                placing_in_time=#{placingInTime},
+            </if>
+            <if test="placingOutTime != null">
+                placing_out_time=#{placingOutTime},
+            </if>
+            <if test="inRepoTime != null">
+                in_repo_time = #{inRepoTime},
+            </if>
+        </set>
+        where pipe_num=#{pipeNum}
+    </update>
+
+    <update id="updateInWaterTime">
+        update t_pipe_cultivated set create_time = #{createTime} where id =#{id}
+    </update>
+
+    <update id="updateOutWaterTime">
+        update t_pipe_cultivated set out_time = #{outTime} where id =#{id}
+    </update>
+
+    <update id="updateInRepoTime">
+        update t_repo_record set create_time = #{createTime} where record_id =#{recordId}
+    </update>
 </mapper>
diff --git a/hd/pipe/screen/src/main/java/com/thhy/screen/config/StartListener.java b/hd/pipe/screen/src/main/java/com/thhy/screen/config/StartListener.java
new file mode 100644
index 0000000..bea7377
--- /dev/null
+++ b/hd/pipe/screen/src/main/java/com/thhy/screen/config/StartListener.java
@@ -0,0 +1,34 @@
+package com.thhy.screen.config;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.nacos.api.utils.StringUtils;
+import com.thhy.screen.modules.biz.audio.entity.AudioGroup;
+import com.thhy.screen.modules.biz.bigscreen.mapper.BigScreenMapper;
+import com.thhy.screen.utils.AudioUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
+import org.springframework.context.annotation.Configuration;
+
+import java.util.List;
+
+@Configuration
+public class StartListener implements ApplicationRunner {
+
+    @Autowired
+    private BigScreenMapper screenMapper;
+
+    @Override
+    public void run(ApplicationArguments args) throws Exception {
+        String result = AudioUtils.getGroups();
+        if(StringUtils.isEmpty(result)){
+            return;
+        }
+        JSONObject groupJSON = JSON.parseObject(result);
+        List<AudioGroup> groupList = JSON.parseArray(groupJSON.getString("Groups"),AudioGroup.class);
+        for(AudioGroup ag : groupList){
+            screenMapper.insertAudioGroup(ag);
+        }
+    }
+}
diff --git a/hd/pipe/screen/src/main/java/com/thhy/screen/modules/biz/agv/controller/NettyServerHandler.java b/hd/pipe/screen/src/main/java/com/thhy/screen/modules/biz/agv/controller/NettyServerHandler.java
index 41a590d..d209502 100644
--- a/hd/pipe/screen/src/main/java/com/thhy/screen/modules/biz/agv/controller/NettyServerHandler.java
+++ b/hd/pipe/screen/src/main/java/com/thhy/screen/modules/biz/agv/controller/NettyServerHandler.java
@@ -52,6 +52,7 @@
         if(mess.contains("{")){
             mess = mess.substring(mess.indexOf("{"),mess.indexOf("}")+1);
         }
+        logger.info("服务器处理消息: {}", mess);
         AgvStateHistory agvStateHistory = JSON.parseObject(mess, AgvStateHistory.class);
         historyMapper.insert(agvStateHistory);
 
diff --git a/hd/pipe/screen/src/main/java/com/thhy/screen/modules/biz/audio/controller/AudioController.java b/hd/pipe/screen/src/main/java/com/thhy/screen/modules/biz/audio/controller/AudioController.java
new file mode 100644
index 0000000..86bbbf0
--- /dev/null
+++ b/hd/pipe/screen/src/main/java/com/thhy/screen/modules/biz/audio/controller/AudioController.java
@@ -0,0 +1,32 @@
+package com.thhy.screen.modules.biz.audio.controller;
+
+import com.thhy.general.common.BasicResult;
+import com.thhy.screen.modules.biz.audio.entity.AudioDto;
+import com.thhy.screen.modules.biz.audio.entity.AudioGroup;
+import com.thhy.screen.modules.biz.audio.service.AudioService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("audio")
+public class AudioController {
+
+    @Autowired
+    private AudioService audioService;
+
+    @RequestMapping("groups")
+    public BasicResult groups(){
+        List<AudioGroup> groupList = audioService.queryGroups();
+        return BasicResult.success(groupList);
+    }
+
+    @RequestMapping("playMusic")
+    public BasicResult playMusic(@RequestBody AudioDto AudioDto){
+        audioService.playMusic(AudioDto);
+        return BasicResult.success();
+    }
+}
diff --git a/hd/pipe/screen/src/main/java/com/thhy/screen/modules/biz/audio/entity/AudioDto.java b/hd/pipe/screen/src/main/java/com/thhy/screen/modules/biz/audio/entity/AudioDto.java
new file mode 100644
index 0000000..2209ef9
--- /dev/null
+++ b/hd/pipe/screen/src/main/java/com/thhy/screen/modules/biz/audio/entity/AudioDto.java
@@ -0,0 +1,11 @@
+package com.thhy.screen.modules.biz.audio.entity;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class AudioDto implements Serializable {
+
+    private String groupIds;
+}
diff --git a/hd/pipe/screen/src/main/java/com/thhy/screen/modules/biz/audio/entity/AudioGroup.java b/hd/pipe/screen/src/main/java/com/thhy/screen/modules/biz/audio/entity/AudioGroup.java
new file mode 100644
index 0000000..c921e8b
--- /dev/null
+++ b/hd/pipe/screen/src/main/java/com/thhy/screen/modules/biz/audio/entity/AudioGroup.java
@@ -0,0 +1,20 @@
+package com.thhy.screen.modules.biz.audio.entity;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.thhy.general.annotations.Idkey;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class AudioGroup implements Serializable {
+
+    @Idkey
+    private String id;
+
+    @JSONField(name = "ID")
+    private String groupId;
+
+    @JSONField(name = "Name")
+    private String groupName;
+}
diff --git a/hd/pipe/screen/src/main/java/com/thhy/screen/modules/biz/audio/service/AudioService.java b/hd/pipe/screen/src/main/java/com/thhy/screen/modules/biz/audio/service/AudioService.java
new file mode 100644
index 0000000..7b14600
--- /dev/null
+++ b/hd/pipe/screen/src/main/java/com/thhy/screen/modules/biz/audio/service/AudioService.java
@@ -0,0 +1,13 @@
+package com.thhy.screen.modules.biz.audio.service;
+
+import com.thhy.screen.modules.biz.audio.entity.AudioDto;
+import com.thhy.screen.modules.biz.audio.entity.AudioGroup;
+
+import java.util.List;
+
+public interface AudioService {
+
+    List<AudioGroup> queryGroups();
+
+    void playMusic(AudioDto audioDto);
+}
diff --git a/hd/pipe/screen/src/main/java/com/thhy/screen/modules/biz/audio/service/impl/AudioServiceImpl.java b/hd/pipe/screen/src/main/java/com/thhy/screen/modules/biz/audio/service/impl/AudioServiceImpl.java
new file mode 100644
index 0000000..e25d27e
--- /dev/null
+++ b/hd/pipe/screen/src/main/java/com/thhy/screen/modules/biz/audio/service/impl/AudioServiceImpl.java
@@ -0,0 +1,31 @@
+package com.thhy.screen.modules.biz.audio.service.impl;
+
+import com.thhy.screen.modules.biz.audio.entity.AudioDto;
+import com.thhy.screen.modules.biz.audio.entity.AudioGroup;
+import com.thhy.screen.modules.biz.audio.service.AudioService;
+import com.thhy.screen.modules.biz.bigscreen.mapper.BigScreenMapper;
+import com.thhy.screen.utils.AudioUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class AudioServiceImpl implements AudioService {
+
+    @Autowired
+    private BigScreenMapper screenMapper;
+
+    @Override
+    public List<AudioGroup> queryGroups() {
+        return screenMapper.queryGroups();
+    }
+
+    @Override
+    public void playMusic(AudioDto audioDto) {
+        String groupIds = audioDto.getGroupIds();
+        String[] groupIdArray = new String[]{groupIds};
+        AudioUtils.playMusic(groupIdArray);
+        return;
+    }
+}
diff --git a/hd/pipe/screen/src/main/java/com/thhy/screen/modules/biz/bigscreen/mapper/BigScreenMapper.java b/hd/pipe/screen/src/main/java/com/thhy/screen/modules/biz/bigscreen/mapper/BigScreenMapper.java
index 2bb0d6f..0a88200 100644
--- a/hd/pipe/screen/src/main/java/com/thhy/screen/modules/biz/bigscreen/mapper/BigScreenMapper.java
+++ b/hd/pipe/screen/src/main/java/com/thhy/screen/modules/biz/bigscreen/mapper/BigScreenMapper.java
@@ -1,5 +1,6 @@
 package com.thhy.screen.modules.biz.bigscreen.mapper;
 
+import com.thhy.screen.modules.biz.audio.entity.AudioGroup;
 import com.thhy.screen.modules.biz.bigscreen.entity.*;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Component;
@@ -29,4 +30,8 @@
     HashMap<String,Object> displayText();
 
     List<HashMap<String,Object>> monthRingNumByPro(@Param("companyId") String companyId,@Param("proId") String proId);
+
+    void insertAudioGroup(AudioGroup audioGroup);
+
+    List<AudioGroup> queryGroups();
 }
diff --git a/hd/pipe/screen/src/main/java/com/thhy/screen/utils/AudioUtils.java b/hd/pipe/screen/src/main/java/com/thhy/screen/utils/AudioUtils.java
new file mode 100644
index 0000000..9d5d23a
--- /dev/null
+++ b/hd/pipe/screen/src/main/java/com/thhy/screen/utils/AudioUtils.java
@@ -0,0 +1,41 @@
+package com.thhy.screen.utils;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.thhy.screen.modules.biz.audio.entity.AudioGroup;
+
+import java.util.List;
+
+public class AudioUtils {
+
+    public static void main(String[] args) {
+        //getGroups();
+
+    }
+
+    public static void login(){
+
+    }
+
+    public static String getGroups(){
+        String result = HttpUtils.post("GetGroups",new JSONObject());
+        System.out.println(result);
+        return result;
+    }
+
+    public static String playMusic(String[] groupIds){
+        JSONObject jsonObject = new JSONObject();
+        String[] ms = new String[]{"https://szpipe.thhy-tj.com/jingbao.mp3"};
+        int[] groupIdArray = new int[groupIds.length];
+        for(int i =0;i<groupIds.length;i++){
+            groupIdArray[i] = Integer.parseInt(groupIds[i]);
+        }
+        jsonObject.put("Files",ms);
+        jsonObject.put("TextCode",1);
+        jsonObject.put("GroupIds",groupIdArray);
+        String result = HttpUtils.post("playMp3",jsonObject);
+        System.out.println(result);
+        return result;
+    }
+}
diff --git a/hd/pipe/screen/src/main/java/com/thhy/screen/utils/HttpUtils.java b/hd/pipe/screen/src/main/java/com/thhy/screen/utils/HttpUtils.java
new file mode 100644
index 0000000..3534bcb
--- /dev/null
+++ b/hd/pipe/screen/src/main/java/com/thhy/screen/utils/HttpUtils.java
@@ -0,0 +1,148 @@
+package com.thhy.screen.utils;
+
+import com.alibaba.fastjson.JSONObject;
+import com.github.pagehelper.PageInfo;
+import com.thhy.general.common.BasicMessage;
+import com.thhy.general.exception.BasicException;
+
+import java.io.*;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.util.Map;
+
+public class HttpUtils {
+
+    private static String BaseHost = "http://150.158.37.69:8080/api/";
+
+    private static String token = "";
+
+    public static String post(String apiPath, JSONObject paramJson, PageInfo pageInfo){
+        HttpURLConnection connection=null;
+        try {
+            URL url = new URL(BaseHost+apiPath);
+            connection = (HttpURLConnection) url.openConnection();
+            connection.setConnectTimeout(3000);
+            connection.setReadTimeout(3000);
+            connection.setRequestMethod("POST");
+            connection.setDoInput(true);
+            connection.setDoOutput(false);
+            connection.setRequestProperty("content-type","application/json;charset=UTF-8");
+            if(!apiPath.equals("/api/getToken")){
+                connection.setRequestProperty("userToken","");
+            }
+            /*if(pageInfo.isPage()){
+                connection.setRequestProperty("pageNum",pageInfo.getPageNo()+"");
+                connection.setRequestProperty("pageSize",pageInfo.getPageSize()+"");
+            }*/
+            connection.connect();
+
+            DataOutputStream dos=new DataOutputStream(connection.getOutputStream());
+            dos.write(paramJson.toJSONString().getBytes("UTF-8"));
+            //dos.writeBytes(paramJson.toJSONString());
+            int responseCode = connection.getResponseCode();
+            if (responseCode != HttpURLConnection.HTTP_OK) {
+                throw new BasicException(new BasicMessage("19901","网络连接失败"));
+            }
+            String result = getStringByStream(connection.getInputStream());
+            if (result == null) {
+                throw new BasicException(new BasicMessage("19901","网络连接失败"));
+            }else{
+                return result;
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new BasicException(new BasicMessage("19901","网络连接失败"));
+        }
+    }
+
+    public static String post(String apiPath, JSONObject paramJson){
+        HttpURLConnection connection=null;
+        try {
+            URL url = new URL(BaseHost+apiPath);
+            connection = (HttpURLConnection) url.openConnection();
+            connection.setConnectTimeout(3000);
+            connection.setReadTimeout(3000);
+            connection.setRequestMethod("POST");
+            connection.setDoInput(true);
+            connection.setDoOutput(true);
+            connection.setRequestProperty("content-type","application/json;charset=UTF-8");
+            if(!apiPath.equals("/api/getToken")){
+                connection.setRequestProperty("userToken","");
+            }
+            connection.connect();
+
+            DataOutputStream dos=new DataOutputStream(connection.getOutputStream());
+            dos.write(paramJson.toJSONString().getBytes("UTF-8"));
+            //dos.writeBytes(paramJson.toJSONString());
+            int responseCode = connection.getResponseCode();
+            if (responseCode != HttpURLConnection.HTTP_OK) {
+                throw new BasicException(new BasicMessage("19901","网络连接失败"));
+            }
+            String result = getStringByStream(connection.getInputStream());
+            if (result == null) {
+                throw new BasicException(new BasicMessage("19901","网络连接失败"));
+            }else{
+                return result;
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new BasicException(new BasicMessage("19901","网络连接失败"));
+        }
+    }
+
+    private static String getStringByStream(InputStream inputStream){
+        Reader reader;
+        try {
+            reader=new InputStreamReader(inputStream,"UTF-8");
+            char[] rawBuffer=new char[512];
+            StringBuffer buffer=new StringBuffer();
+            int length;
+            while ((length=reader.read(rawBuffer))!=-1){
+                buffer.append(rawBuffer,0,length);
+            }
+            return buffer.toString();
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+
+
+    public static String get(String api, Map<String,Object> map){
+        HttpURLConnection connection = null;
+        try {
+
+            StringBuilder urlParam = new StringBuilder();
+            for(String key : map.keySet()){
+                urlParam.append(key+"="+map.get(key).toString()+"&");
+            }
+            String param = urlParam.toString();
+            if(param.contains("&")){
+                param = param.substring(0,param.length()-1);
+            }
+            URL url = new URL(BaseHost+api+"?"+param);
+            connection = (HttpURLConnection) url.openConnection();
+            connection.setConnectTimeout(3000);
+            connection.setReadTimeout(3000);
+            connection.setRequestMethod("GET");
+            if(!api.equals("/api/getToken")){
+                connection.setRequestProperty("authorization","");
+            }
+
+            //dos.writeBytes(paramJson.toJSONString());
+            int responseCode = connection.getResponseCode();
+            if (responseCode != HttpURLConnection.HTTP_OK) {
+                return null;
+            }
+            String result = getStringByStream(connection.getInputStream());
+            return result;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+}
diff --git a/hd/pipe/screen/src/main/resources/mapping/BigScreenMapper.xml b/hd/pipe/screen/src/main/resources/mapping/BigScreenMapper.xml
index a874634..f5a063c 100644
--- a/hd/pipe/screen/src/main/resources/mapping/BigScreenMapper.xml
+++ b/hd/pipe/screen/src/main/resources/mapping/BigScreenMapper.xml
@@ -207,5 +207,35 @@
         ) x on x.`month` = DATE_FORMAT(m.`month`,'%Y-%m')
     </select>
 
+    <insert id="insertAudioGroup">
+        INSERT INTO
+        <trim suffix=")" prefix="(" suffixOverrides=",">
+            <if test="id != null and id !=null">
+                id,
+            </if>
+            <if test="groupId != null">
+                group_id,
+            </if>
+            <if test="groupName != null and groupName !=null">
+                group_name,
+            </if>
+        </trim>
+        <trim suffix=")" prefix=" values(" suffixOverrides=",">
+            <if test="id != null and id !=null">
+                #{id},
+            </if>
+            <if test="groupId != null">
+                #{groupId},
+            </if>
+            <if test="groupName != null and groupName !=null">
+                #{groupName},
+            </if>
+        </trim>
+    </insert>
+
+    <select id="queryGroups" resultType="com.thhy.screen.modules.biz.audio.entity.AudioGroup">
+        select id,group_id as groupId,group_name as groupName from t_audio_groups
+    </select>
+
 
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.3