From d3e6773ef7cd0e11a444b41ec3da15938fabd85b Mon Sep 17 00:00:00 2001
From: 张晓波 <bingbo1993@126.com>
Date: 星期二, 12 十二月 2023 13:16:38 +0800
Subject: [PATCH] 产线管理

---
 hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/login/controller/LoginController.java    |   25 ++++
 hd/pipe/common/src/main/java/com/thhy/general/config/SysUserInfo.java                             |    4 
 hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/login/mapper/SysUserMapper.java          |   14 ++
 hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/login/entity/ProLineDto.java             |   16 +++
 hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/login/entity/ProLinePlan.java            |   22 ++++
 hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/login/service/LoginService.java          |   12 ++
 hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/login/service/impl/LoginServiceImpl.java |  102 +++++++++++++++++++-
 hd/pipe/mobile/src/main/resources/mapping/SysUsersMapper.xml                                      |   82 ++++++++++++++++
 8 files changed, 271 insertions(+), 6 deletions(-)

diff --git a/hd/pipe/common/src/main/java/com/thhy/general/config/SysUserInfo.java b/hd/pipe/common/src/main/java/com/thhy/general/config/SysUserInfo.java
index cb39b12..dd1db19 100644
--- a/hd/pipe/common/src/main/java/com/thhy/general/config/SysUserInfo.java
+++ b/hd/pipe/common/src/main/java/com/thhy/general/config/SysUserInfo.java
@@ -76,4 +76,8 @@
     private String enableButtons;
 
     private Integer userType;
+
+    private String proLineId;
+
+    private String proLineName;
 }
diff --git a/hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/login/controller/LoginController.java b/hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/login/controller/LoginController.java
index ba5b247..ab549d1 100644
--- a/hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/login/controller/LoginController.java
+++ b/hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/login/controller/LoginController.java
@@ -3,12 +3,18 @@
 import com.thhy.general.common.BasicResult;
 import com.thhy.general.common.entity.SysUserDto;
 import com.thhy.mobile.modules.biz.login.entity.LoginVo;
+import com.thhy.mobile.modules.biz.login.entity.ProLineDto;
 import com.thhy.mobile.modules.biz.login.service.LoginService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 @RestController
 @RequestMapping("login")
@@ -20,7 +26,24 @@
     @PostMapping
     public BasicResult login(@RequestBody SysUserDto sysUserDto){
         LoginVo loginVO = loginService.login(sysUserDto);
-
         return BasicResult.success(loginVO);
     }
+
+    @RequestMapping("proLines")
+    public BasicResult proLines(){
+        List<HashMap<String,Object>> mapList = loginService.proLines();
+        return BasicResult.success(mapList);
+    }
+
+    @RequestMapping("choseLine")
+    public BasicResult choseLine(@RequestBody ProLineDto proLineDto, HttpServletRequest request){
+        Map<String, Object> map = loginService.choseLine(proLineDto,request);
+        return BasicResult.success(map);
+    }
+
+    @RequestMapping("commitLinePlan")
+    public BasicResult commitLinePlan(@RequestBody ProLineDto proLineDto){
+        loginService.commitLinePlan(proLineDto);
+        return BasicResult.success();
+    }
 }
diff --git a/hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/login/entity/ProLineDto.java b/hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/login/entity/ProLineDto.java
new file mode 100644
index 0000000..c2b0126
--- /dev/null
+++ b/hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/login/entity/ProLineDto.java
@@ -0,0 +1,16 @@
+package com.thhy.mobile.modules.biz.login.entity;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+public class ProLineDto implements Serializable {
+
+    private String proLineId;
+
+    private String dateStr;
+
+    private List<String> ringNums;
+}
diff --git a/hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/login/entity/ProLinePlan.java b/hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/login/entity/ProLinePlan.java
new file mode 100644
index 0000000..1ac4011
--- /dev/null
+++ b/hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/login/entity/ProLinePlan.java
@@ -0,0 +1,22 @@
+package com.thhy.mobile.modules.biz.login.entity;
+
+import com.thhy.general.annotations.Idkey;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+public class ProLinePlan implements Serializable {
+
+    @Idkey
+    private String id;
+
+    private String proLineId;
+
+    private String ringNum;
+
+    private Date setDayStart;
+
+    private Date setDayEnd;
+}
diff --git a/hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/login/mapper/SysUserMapper.java b/hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/login/mapper/SysUserMapper.java
index 6fc9c5a..b735eef 100644
--- a/hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/login/mapper/SysUserMapper.java
+++ b/hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/login/mapper/SysUserMapper.java
@@ -1,9 +1,11 @@
 package com.thhy.mobile.modules.biz.login.mapper;
 
 import com.thhy.general.common.entity.SysUserDto;
+import com.thhy.mobile.modules.biz.login.entity.ProLinePlan;
 import com.thhy.mobile.modules.biz.login.entity.SysUsers;
 
 import java.util.HashMap;
+import java.util.List;
 
 public interface SysUserMapper {
 
@@ -12,4 +14,16 @@
     HashMap<String,Object> queryCompanyByComAdmin(String userId);
 
     HashMap<String,Object> queryCompanyByUser(String userId);
+
+    List<HashMap<String,Object>> queryAllProLine();
+
+    String queryProLineNameById(String proLineId);
+
+    int countTodayLinePlanByLineId(String proLineId);
+
+    String checkPipeExitsByRingNums(List<String> ringNumList);
+
+    String checkPlanExitsByRingNums(List<String> ringNumList);
+
+    void insertProLinePlan(ProLinePlan proLinePlan);
 }
diff --git a/hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/login/service/LoginService.java b/hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/login/service/LoginService.java
index 1e56279..4c76632 100644
--- a/hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/login/service/LoginService.java
+++ b/hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/login/service/LoginService.java
@@ -2,8 +2,20 @@
 
 import com.thhy.general.common.entity.SysUserDto;
 import com.thhy.mobile.modules.biz.login.entity.LoginVo;
+import com.thhy.mobile.modules.biz.login.entity.ProLineDto;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 public interface LoginService {
 
     LoginVo login(SysUserDto sysUserDto);
+
+    List<HashMap<String,Object>> proLines();
+
+    Map<String,Object> choseLine(ProLineDto proLineDto, HttpServletRequest request);
+
+    void commitLinePlan(ProLineDto proLineDto);
 }
diff --git a/hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/login/service/impl/LoginServiceImpl.java b/hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/login/service/impl/LoginServiceImpl.java
index 6c965c1..0b11934 100644
--- a/hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/login/service/impl/LoginServiceImpl.java
+++ b/hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/login/service/impl/LoginServiceImpl.java
@@ -1,5 +1,6 @@
 package com.thhy.mobile.modules.biz.login.service.impl;
 
+import com.thhy.general.common.BasicMessage;
 import com.thhy.general.common.BasicStatus;
 import com.thhy.general.common.entity.SysUserDto;
 import com.thhy.general.config.BasicContext;
@@ -8,20 +9,24 @@
 import com.thhy.general.exception.BasicException;
 import com.thhy.general.utils.DeepCopyUtils;
 import com.thhy.general.utils.UUIDUtils;
+import com.thhy.general.utils.UserInfoUtils;
 import com.thhy.general.utils.password.PasswdUtils;
-import com.thhy.mobile.modules.biz.login.entity.LoginVo;
-import com.thhy.mobile.modules.biz.login.entity.PdaMenuVo;
-import com.thhy.mobile.modules.biz.login.entity.SysUsers;
+import com.thhy.mobile.modules.biz.login.entity.*;
 import com.thhy.mobile.modules.biz.login.mapper.SysUserMapper;
 import com.thhy.mobile.modules.biz.login.service.LoginService;
 import com.thhy.mobile.modules.biz.menu.entity.Menu;
 import com.thhy.mobile.modules.biz.menu.mapper.MenuMapper;
+import org.apache.commons.lang3.StringUtils;
+import org.checkerframework.checker.units.qual.C;
 import org.redisson.api.RedissonClient;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
-import java.util.HashMap;
-import java.util.List;
+import javax.servlet.http.HttpServletRequest;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
 import java.util.concurrent.TimeUnit;
 
 @Service
@@ -74,4 +79,91 @@
         BasicContext.setToken(token);
         return new LoginVo(token,menuList,sysUserInfo);
     }
+
+    @Override
+    public List<HashMap<String,Object>> proLines() {
+        return sysUsersMapper.queryAllProLine();
+    }
+
+    @Override
+    public Map<String, Object> choseLine(ProLineDto proLineDto, HttpServletRequest request) {
+        SysUserInfo userInfo = UserInfoUtils.getInstance().getUserInfo();
+        String token = request.getHeader("usertoken");
+        String proLineName = sysUsersMapper.queryProLineNameById(proLineDto.getProLineId());
+        userInfo.setProLineId(proLineDto.getProLineId());
+        userInfo.setProLineName(proLineName);
+        long min = tokentime();
+        redissonClient.getBucket(globalConfig.getKeyPrefix()+":usertoken:"+ token).trySet(userInfo,min, TimeUnit.MINUTES);
+
+        int count = sysUsersMapper.countTodayLinePlanByLineId(proLineDto.getProLineId());
+        Map<String,Object> map = new HashMap<>();
+        if(count>0){
+            map.put("dateset",false);
+        }else {
+            map.put("dateset",true);
+        }
+        return map;
+    }
+
+    @Transactional
+    @Override
+    public void commitLinePlan(ProLineDto proLineDto) {
+        List<String> ringNums = proLineDto.getRingNums();
+        String ringNumExits = sysUsersMapper.checkPipeExitsByRingNums(ringNums);
+        if(!StringUtils.isEmpty(ringNumExits)){
+            throw new BasicException(new BasicMessage("00900",ringNumExits+"环号已存在"));
+        }
+        String ringNumPlanExits = sysUsersMapper.checkPlanExitsByRingNums(ringNums);
+        if(!StringUtils.isEmpty(ringNumPlanExits)){
+            throw new BasicException(new BasicMessage("00901",ringNumPlanExits+"环号其他产线已存在"));
+        }
+        ProLinePlan proLinePlan = new ProLinePlan();
+        proLinePlan.setProLineId(proLineDto.getProLineId());
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        try {
+            Date start = sdf.parse(proLineDto.getDateStr()+" 07:00:00");
+            Calendar calendar = Calendar.getInstance();
+            calendar.setTime(start);
+            calendar.add(Calendar.DAY_OF_MONTH,1);
+            Date end = calendar.getTime();
+            proLinePlan.setSetDayStart(start);
+            proLinePlan.setSetDayEnd(end);
+        } catch (ParseException e) {
+            throw new RuntimeException(e);
+        }
+        for(String ringNum : ringNums){
+            proLinePlan.setRingNum(ringNum);
+            sysUsersMapper.insertProLinePlan(proLinePlan);
+        }
+    }
+
+    public long tokentime(){
+        Date currentTime = new Date();
+        SimpleDateFormat sdfStand = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        SimpleDateFormat sdfSeven = new SimpleDateFormat("yyyy-MM-dd 07:00:00");
+        String todaySevenStr = sdfSeven.format(currentTime);
+        Date todaySeven = null;
+        try {
+            todaySeven = sdfStand.parse(todaySevenStr);
+        } catch (ParseException e) {
+            throw new RuntimeException(e);
+        }
+
+        if(currentTime.getTime()>todaySeven.getTime()){
+            //当前时间大于 当天7点
+            Calendar calendar = Calendar.getInstance();
+            calendar.setTime(todaySeven);
+            calendar.add(Calendar.DAY_OF_MONTH,1);
+            Date tommSeven = calendar.getTime();
+            long diff = (tommSeven.getTime()-currentTime.getTime())/1000/60;
+            return diff;
+        }else{
+            long diff = (todaySeven.getTime()-currentTime.getTime())/1000/60;
+            return diff;
+        }
+    }
+
+    public static void main(String[] args) throws Exception{
+
+    }
 }
diff --git a/hd/pipe/mobile/src/main/resources/mapping/SysUsersMapper.xml b/hd/pipe/mobile/src/main/resources/mapping/SysUsersMapper.xml
index 0b0fa5c..9e4c0f0 100644
--- a/hd/pipe/mobile/src/main/resources/mapping/SysUsersMapper.xml
+++ b/hd/pipe/mobile/src/main/resources/mapping/SysUsersMapper.xml
@@ -98,4 +98,86 @@
          left join sys_company sc on sc.company_id = scd.company_id
         where su.user_id = #{userId} and su.is_use = 1
     </select>
+
+    <select id="queryAllProLine" resultType="hashmap">
+        select pro_line_id as proLineId,pro_line_name as proLineName from t_pro_line
+    </select>
+
+    <select id="queryProLineNameById" resultType="string">
+        select pro_line_name as proLineName from t_pro_line where pro_line_id = #{proLineId},
+    </select>
+
+    <select id="countTodayLinePlanByLineId" resultType="int">
+        select count(id)
+        from t_pro_line_plan plp
+        where plp.pro_line_id = #{proLineId} and sysdate() &gt;= plp.set_day_start and sysdate() &lt;= plp.set_day_end
+    </select>
+
+    <select id="checkPipeExitsByRingNums" resultType="string">
+        select group_cancat(a.ringNum) as ringnums
+        (select DISTINCT ring_num as ringNum,1 as wl
+        from t_pipe_info
+        <where>
+            <foreach open="ring_num in (" separator="," close=")" collection="ringNumList" item="ringnum" index="ri">
+                #{ringnum}
+            </foreach>
+        </where>
+        ) a
+        group by a.wl
+    </select>
+
+    <select id="checkPlanExitsByRingNums" resultType="string">
+        select group_cancat(a.ringNum) as ringnums
+        (select DISTINCT ring_num as ringNum,1 as wl
+        from t_pro_line_plan
+        <where>
+            <trim suffixOverrides="and">
+                <foreach open="ring_num in (" separator="," close=") and" collection="ringNumList" item="ringnum" index="ri">
+                    #{ringnum}
+                </foreach>
+                pro_line_id != #{proLineId} and
+                sysdate() &gt;= set_day_start and sysdate() &lt;= set_day_end and
+            </trim>
+        </where>
+        ) a
+        group by a.wl
+    </select>
+
+    <insert id="insertProLinePlan">
+        insert into t_pro_line_plan
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id !=null and id !=''">
+                id,
+            </if>
+            <if test="proLineId !=null and proLineId !=''">
+                pro_line_id,
+            </if>
+            <if test="setDayStart != null">
+                set_day_start,
+            </if>
+            <if test="setDayEnd != null">
+                set_day_end,
+            </if>
+            <if test="ringNum != null and ringNum !=''">
+                ring_num,
+            </if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id !=null and id !=''">
+                #{id},
+            </if>
+            <if test="proLineId !=null and proLineId !=''">
+                #{proLineId},
+            </if>
+            <if test="setDayStart != null">
+                #{setDayStart},
+            </if>
+            <if test="setDayEnd != null">
+                #{setDayEnd},
+            </if>
+            <if test="ringNum != null and ringNum !=''">
+                #{ringNum},
+            </if>
+        </trim>
+    </insert>
 </mapper>

--
Gitblit v1.9.3