APP
YYC
2026-02-12 8ac3affc79126b0b8ec6f4f7e80b73a6b4a4634b
APP
已修改3个文件
已添加58个文件
4028 ■■■■■ 文件已修改
fzzy-igdss-core/src/main/java/com/fzzy/igds/constant/InoutConstant.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/CoreDeptService.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/work/data/WorkBizType.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/constant/PhoneConstant.java 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/controller/PhoneController.java 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/data/AuthUser.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/data/ParamCamera.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/data/ParamCommon.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/data/ParamDepot.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/data/ParamInoutHandle.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/data/ParamInoutRecord.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/data/ParamOrder.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/data/ParamPatrol.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/data/ParamPatrolRecord.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/data/ParamUser.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/data/ParamVideo.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/data/PhoneRequest.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/data/PhoneRespCodeEnum.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/data/PhoneResponse.java 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/dto/PDetailDto.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/dto/PEventInfoDto.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/dto/PGrainDto.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/dto/PInoutDto.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/dto/PInoutSum.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/dto/PPatrolDto.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/dto/PPointDto.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/dto/PQuantityDto.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/dto/PSnapDto.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/dto/PUploadDto.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/dto/PUserDto.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/dto/PWorkOrderDto.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/manager/PhoneManager.java 274 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/mapper/PhoneMapper.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/PhoneService.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/impl/ServiceImpl5001.java 153 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/impl/ServiceImpl5002.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/impl/ServiceImpl5101.java 131 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/impl/ServiceImpl5102.java 172 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/impl/ServiceImpl5103.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/impl/ServiceImpl5104.java 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/impl/ServiceImpl5105.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/impl/ServiceImpl5106.java 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/impl/ServiceImpl5107.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/impl/ServiceImpl5108.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/impl/ServiceImpl5109.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/impl/ServiceImpl5110.java 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/impl/ServiceImpl5111.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/impl/ServiceImpl5201.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/impl/ServiceImpl5202.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/impl/ServiceImpl5203.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/impl/ServiceImpl5204.java 154 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/impl/ServiceImpl5205.java 144 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/impl/ServiceImpl5206.java 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/impl/ServiceImpl5207.java 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/impl/ServiceImpl5208.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/impl/ServiceImpl5401.java 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/impl/ServiceImpl5402.java 194 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/impl/ServiceImpl5405.java 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/util/PhoneRespUtil.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/util/PhoneUtil.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/resources/mapper/PhoneMapper.xml 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/constant/InoutConstant.java
@@ -12,4 +12,16 @@
    //监管通知单
    public static final String NOTICE_IN_TYPE_20 = "20";
    // å‡ºå…¥åº“类型-入库
    public static final String TYPE_IN = "IN";
    // å‡ºå…¥åº“类型-出库
    public static final String TYPE_OUT = "OUT";
    // æµç¨‹-值仓
    public static final String PROGRESS_HANDLE = "HANDLE";
    // æµç¨‹-备案(表示流程整体完成后备案)
    public static final String PROGRESS_RECORD = "RECORD";
}
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/CoreDeptService.java
@@ -64,6 +64,36 @@
        return this.listDept(null,user.getCompanyId(),null);
    }
    /**
     * æ ¹æ®ç”¨æˆ·ç±»åž‹èŽ·å–å¯¹åº”åº“åŒºåˆ—è¡¨ä¿¡æ¯APP
     *
     * @param
     * @return
     */
    public List<Dept> getDeptByUserTypeApp(String userType,String deptId) {
        if (Constant.USER_TYPE_10.equals(userType)) {
            //监管用户,直接查询组织下所有库区
            return this.listDept(null,userType,null);
        }
        if (Constant.USER_TYPE_20.equals(userType)) {
            //银行用户,根据合同查询银行下所有库区
            return this.getDeptByBank(userType);
        }
        if (Constant.USER_TYPE_30.equals(userType)) {
            //库区用户
            if(ContextUtil.isDepotUser(deptId)){
                //查询用户所属库区
                return this.listDept(deptId,null,null);
            }else {
                //查询用户所属公司下所有库区
                return this.listDept(null,null, deptId);
            }
        }
        return this.listDept(null,ContextUtil.getCompanyId(),null);
    }
    /**
     * æ ¹æ®é“¶è¡Œid,关联合同表查询库区列表
     * @param bankId é“¶è¡Œå·
fzzy-igdss-core/src/main/java/com/fzzy/work/data/WorkBizType.java
@@ -29,4 +29,15 @@
    public String getMsg() {
        return msg;
    }
    public static String getMsg(String code) {
        if(null == code) return null;
        if(WorkBizType.TYPE_10.getCode().equals(code)) return WorkBizType.TYPE_10.getMsg();
        if(WorkBizType.TYPE_20.getCode().equals(code)) return WorkBizType.TYPE_20.getMsg();
        if(WorkBizType.TYPE_30.getCode().equals(code)) return WorkBizType.TYPE_30.getMsg();
        if(WorkBizType.TYPE_40.getCode().equals(code)) return WorkBizType.TYPE_40.getMsg();
        if(WorkBizType.TYPE_50.getCode().equals(code)) return WorkBizType.TYPE_50.getMsg();
        if(WorkBizType.TYPE_99.getCode().equals(code)) return WorkBizType.TYPE_99.getMsg();
        return code;
    }
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/constant/PhoneConstant.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,113 @@
package com.fzzy.igds.app.v1.constant;
/**
 * @Author: YYC
 * @Description:
 * @DateTime: 2026-1-12 15:11
 **/
public class PhoneConstant {
    /**
     *粮情仓库列表
     */
    public static final String PHONE_DEPOT_GRAIN="grain";
    public static final String PHONE_DEPOT_PEST="pest";
    public static final String PHONE_DEPOT_GAS="gas";
    /**
     * å€¼ä»“提交
     */
    public static final String PHONE_INOUT_START="start";
    public static final String PHONE_INOUT_END="end";
    /**
     * ç™»å½•
     */
    public static final String API_PHONE_5001 = "5001";
    /**
     * èŽ·å–åº“åŒºåˆ—è¡¨ä¿¡æ¯
     */
    public static final String API_PHONE_5002 = "5002";
    /**
     * ç³»ç»Ÿè­¦å‘Š
     */
    public static final String API_PHONE_5003 = "5003";
    /**
     * ç”¨æˆ·ä¿¡æ¯æ›´æ”¹
     */
    public static final String API_PHONE_5004 = "5004";
    /**
     * ç³»ç»Ÿè­¦å‘Š
     */
    public static final String API_PHONE_5005 = "5005";
    /* ======= ç›‘管管理 ====== */
    /**
     * å·¥å•管理
     */
    public static final String API_PHONE_5101 = "5101";
    public static final String API_PHONE_5102 = "5102";
    /**
     * è§†é¢‘管理
     */
    public static final String API_PHONE_5103 = "5103";
    public static final String API_PHONE_5104 = "5104";
    /**
     * å·¡æ£€ç›‘管
     */
    public static final String API_PHONE_5105 = "5105";
    public static final String API_PHONE_5106 = "5106";
    public static final String API_PHONE_5107 = "5107";
    /**
     * æŠ“拍管理
     */
    public static final String API_PHONE_5108 = "5108";
    public static final String API_PHONE_5109 = "5109";
    /**
     * AI事件管理
     */
    public static final String API_PHONE_5110 = "5110";
    public static final String API_PHONE_5111 = "5111";
    /* ======= æ™ºèƒ½ä»“储 ====== */
    /**
     * ç²®æƒ…数据查看
     */
    public static final String API_PHONE_5201 = "5201";
    public static final String API_PHONE_5202 = "5202";
    public static final String API_PHONE_5203 = "5203";
    public static final String API_PHONE_5204 = "5204";
    public static final String API_PHONE_5205 = "5205";
    /**
     * æ–™ä½æ€»è§ˆ
     */
    public static final String API_PHONE_5206 = "5206";
    /**
     * æ•°é‡ç›‘测
     */
    public static final String API_PHONE_5207 = "5207";
    public static final String API_PHONE_5208 = "5208";
    /* ======= å®‰é˜²ç®¡ç† ====== */
    public static final String API_PHONE_5301 = "5301";
    public static final String API_PHONE_5302 = "5302";
    /* ======= ç²®é£Ÿè´­é”€ ====== */
    /**
     * å…¥åº“值仓
     */
    public static final String API_PHONE_5401 = "5401";
    public static final String API_PHONE_5402 = "5402";
    /**
     * å®žæ—¶è®°å½•
     */
    public static final String API_PHONE_5405 = "5405";
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/controller/PhoneController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,138 @@
package com.fzzy.igds.app.v1.controller;
import com.alibaba.fastjson.JSONObject;
import com.fzzy.common.constant.RespCodeEnum;
import com.fzzy.igds.app.v1.data.AuthUser;
import com.fzzy.igds.app.v1.data.PhoneRequest;
import com.fzzy.igds.app.v1.data.PhoneResponse;
import com.fzzy.igds.app.v1.manager.PhoneManager;
import com.fzzy.igds.app.v1.util.PhoneRespUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
/**
 * @Author: YYC
 * @Description:
 * @DateTime: 2026-1-14 11:45
 **/
@Controller
@RequestMapping("api/phone/v1")
public class PhoneController {
    @Autowired
    private PhoneManager phoneManager;
    /**
     * ç™»å½•入口
     *
     * @param req
     * @return
     */
    @SuppressWarnings("unchecked")
    @ResponseBody
    @RequestMapping("/login")
    public PhoneResponse<Object> phoneLogin(@RequestBody PhoneRequest<JSONObject> req) {
        //判断参数
        if (null == req) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1007, RespCodeEnum.CODE_1007.getMsg());
        }
        PhoneResponse<Object> result = PhoneRespUtil.error(RespCodeEnum.CODE_1111, RespCodeEnum.CODE_1111.getMsg());
        try {
            //执行业务操作
            result = phoneManager.execute(req, null);
        } catch (Exception e) {
            result = PhoneRespUtil.error(RespCodeEnum.CODE_1111,
                    "后端异常:" + e.getMessage());
        }
        return result;
    }
    /**
     * ä¸šåŠ¡åˆ†å‘å…¥å£
     *
     * @param req
     * @return
     */
    @SuppressWarnings("unchecked")
    @ResponseBody
    @RequestMapping("/gateway")
    public PhoneResponse<Object> phoneGateway(@RequestBody PhoneRequest<JSONObject> req) {
        //判断参数
        if (null == req) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1007, RespCodeEnum.CODE_1007.getMsg());
        }
        //判断接口编码
        if (null == req.getInterfaceId()) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1007, RespCodeEnum.CODE_1007.getMsg());
        }
        //获取用户信息,如果有则更新,如果没有则跳出
        AuthUser phone35AuthUser = phoneManager.checkTokenAuth(req);
        if (null == phone35AuthUser) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1006, "您登录已超时,请重新登录!");
        }
        PhoneResponse<Object> result = PhoneRespUtil.error(RespCodeEnum.CODE_1111, RespCodeEnum.CODE_1111.getMsg());
        try {
            //执行业务操作
            result = phoneManager.execute(req, phone35AuthUser);
        } catch (Exception e) {
            result = PhoneRespUtil.error(RespCodeEnum.CODE_1111,
                    "后端异常:" + e.getMessage());
        }
        return result;
    }
    /**
     * å€¼ä»“上传
     *
     * @param files
     * @param req
     * @return
     * @throws IOException
     */
    @ResponseBody
    @RequestMapping("/upload-img")
    public PhoneResponse<Object> phoneUploadImg(
            @RequestParam("uploadkey") MultipartFile[] files,
            HttpServletRequest req) throws IOException {
        return phoneManager.phoneUploadImg(files[0], req);
    }
    /**
     * å€¼ä»“上传
     *
     * @param files
     * @param req
     * @return
     * @throws IOException
     */
    @ResponseBody
    @RequestMapping("/patrol-img")
    public PhoneResponse<Object> phonePatrolImg(
            @RequestParam("uploadkey") MultipartFile[] files,
            HttpServletRequest req) throws IOException {
        return phoneManager.phonePatrol(files[0], req);
    }
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/data/AuthUser.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
package com.fzzy.igds.app.v1.data;
import lombok.Data;
import javax.servlet.http.HttpServletRequest;
/**
 * ç™»å½•后存入缓存的信息
 * @author chen
 */
@Data
public class AuthUser {
    private String companyId;
    private String username;
    private String cname;
    private String mobile;
    private String address;
    private String email;
    private String deptId;
    private String deptName;
    private HttpServletRequest request;
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/data/ParamCamera.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
package com.fzzy.igds.app.v1.data;
import lombok.Data;
/**
 * @author chen
 */
@Data
public class ParamCamera extends ParamCommon {
    private String cameraId;
    private String playType;
    //暂定云台控制使用
    private String cameraSn;
    private String videoPlayUrl;
    private String command;
    private String speed;
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/data/ParamCommon.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
package com.fzzy.igds.app.v1.data;
import lombok.Data;
import java.util.Date;
/**
 * é€šç”¨å‚数封装
 */
@Data
public class ParamCommon {
    private int pageSize = 15;
    private int pageNo = 1;
    private String tokenAuth;
    private String type;
    private String companyId;
    private String deptId;
    private Date startTime;
    private Date endTime;
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/data/ParamDepot.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.fzzy.igds.app.v1.data;
import lombok.Data;
/**
 * @Author: YYC
 * @Description:
 * @DateTime: 2026-2-5 14:27
 **/
@Data
public class ParamDepot extends ParamCommon {
    private String depotId;
    private String dateTime;
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/data/ParamInoutHandle.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
package com.fzzy.igds.app.v1.data;
import lombok.Data;
/**
 * å€¼ä»“列表、值仓提交数据封装
 * @author chen
 */
@Data
public class ParamInoutHandle extends ParamCommon {
    private String id;
    private String intelCard;
    private String plateNum;
    private String progress;
    private Double deHandle;
    private String fileName1;
    private String fileName2;
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/data/ParamInoutRecord.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
package com.fzzy.igds.app.v1.data;
import lombok.Data;
import java.util.Date;
/**
 * å…¥åº“记录、出库记录数据封装
 *
 * @author chen
 */
@Data
public class ParamInoutRecord extends ParamCommon {
    private String intelCard;
    private String plateNum;
    private String progress;
    private Date date;
    private Date end;
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/data/ParamOrder.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
package com.fzzy.igds.app.v1.data;
import lombok.Data;
import java.util.Date;
/**
 * @Author: YYC
 * @Description:
 * @DateTime: 2026-1-13 14:33
 **/
@Data
public class ParamOrder extends ParamCommon{
    private String id;
    private String orderId;
    private String assigneeId;
    private String assigneeName;
    private String node;
    private String action;
    private Date createTime;
    private String remark;
    private String nodeName;
    private String status;
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/data/ParamPatrol.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
package com.fzzy.igds.app.v1.data;
import lombok.Data;
import java.util.Date;
/**
 * @Author: YYC
 * @Description:
 * @DateTime: 2026-1-13 16:20
 **/
@Data
public class ParamPatrol extends ParamCommon{
    private String id;
    private String longitude;
    private String latitude;
    private String imgName;
    private Date createTime;
    private String userName;
    private Date dateTime;
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/data/ParamPatrolRecord.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
package com.fzzy.igds.app.v1.data;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
 * å®‰é˜²-电子巡逻记录
 *
 * @author chen
 */
@Data
public class ParamPatrolRecord implements Serializable {
    /**
     * æ‰“卡提交使用
     */
    private String longitude;
    private String latitude;
    private String imgName;
    /**
     * æ‰“卡记录查询使用
     */
    private String userName;
    private String companyId;
    private String deptId;
    private Date date;
    private Date end;
    private String id;
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/data/ParamUser.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
package com.fzzy.igds.app.v1.data;
import lombok.Data;
/**
 * ç™»å½•及修改信息封装
 * @author chen
 */
@Data
public class ParamUser {
    /*登录信息*/
    private String username;
    private String password;
    /*修改用户信息*/
    private String newPassword1;
    private String newPassword2;
    private String newMobile;
    private String newCname;
    private String salt;
    private String companyId;
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/data/ParamVideo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
package com.fzzy.igds.app.v1.data;
import lombok.Data;
/**
 * @Author: YYC
 * @Description:
 * @DateTime: 2026-1-13 16:01
 **/
@Data
public class ParamVideo extends ParamCommon {
    private String id;
    private String playType;
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/data/PhoneRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,53 @@
package com.fzzy.igds.app.v1.data;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
 * æ‰‹æœºAPP服务统一规范接口请求
 *
 * @author chen
 */
@Data
public class PhoneRequest<T> implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * æŽ¥å£ç¼–号
     */
    private String interfaceId;
    /**
     *  ç­¾å
     */
    private String sign;
    /**
     * ç”¨æˆ·è‡ªå®šä¹‰å­—段
     */
    private String outId;
    /**
     * è¯·æ±‚æ—¶é—´
     */
    private String reqDateTime;
    /**
     * token的key
     */
    private String tokenAuth;
    /**
     * è¯·æ±‚业务数据
     */
    private T data;
    /**
     * æ“ä½œè®¾å¤‡çš„业务数据
     */
    private List<T> data1;
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/data/PhoneRespCodeEnum.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,37 @@
package com.fzzy.igds.app.v1.data;
import lombok.Getter;
/**
 * å“åº”码定义
 *
 * @author Andy
 *
 */
@Getter
public enum PhoneRespCodeEnum {
    /**
     *
     */
    CODE_0000("0000", "成功"),
    CODE_1111("1111", "后端服务异常"),
    CODE_1001("1001","数据格式校验失败"),
    CODE_1002("1002","该应用无激活授权"),
    CODE_1003("1003","该应用已经授权成功"),
    CODE_1004("1004","设备通讯失败"),
    CODE_1005("1005","该设备不存在"),
    CODE_1006("1006","当前登录人已掉线"),
    CODE_1007("1007","请求参数异常"),
    CODE_1008("1008","流程不正确"),
    CODE_2000("2000","响应数据为空")
    ;
    private String code;
    private String msg;
    PhoneRespCodeEnum(String code, String msg) {
        this.code = code;
        this.msg = msg;
    }
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/data/PhoneResponse.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,85 @@
package com.fzzy.igds.app.v1.data;
import com.fzzy.common.constant.RespCodeEnum;
import lombok.Data;
import org.apache.commons.lang3.time.DateFormatUtils;
import java.io.Serializable;
import java.util.Date;
/**
 * @Author: YYC
 * @Description:
 * @DateTime: 2026-1-12 10:53
 **/
@Data
public class PhoneResponse<T> implements Serializable {
    private String DATE_FORMAT_YMDHMS = "yyyy-MM-dd HH:mm:ss";
    /**
     *
     */
    private static final long serialVersionUID = 1L;
    /**
     * å“åº”码
     */
    private String code;
    /**
     * å“åº”信息
     */
    private String msg;
    /**
     * å›žå¡«ç”¨æˆ·è‡ªå®šä¹‰ä¿¡æ¯
     */
    private String outId;
    /**
     * å“åº”æ—¶é—´
     */
    private String respDateTime;
    /**
     * è¿”回数据
     */
    private T data;
    public PhoneResponse() {
        super();
    }
    public PhoneResponse(String code, String msg, String outId) {
        this.code = code;
        this.msg = msg;
        this.outId = outId;
    }
    public PhoneResponse(String code, String msg, String outId, T data) {
        this.code = code;
        this.msg = msg;
        this.outId = outId;
        this.data = data;
        this.respDateTime = DateFormatUtils.format(new Date(), DATE_FORMAT_YMDHMS);
    }
    public PhoneResponse(String code, String msg, T data) {
        this.code = code;
        this.msg = msg;
        this.data = data;
        this.respDateTime = DateFormatUtils.format(new Date(), DATE_FORMAT_YMDHMS);
    }
    public PhoneResponse(RespCodeEnum code, String outId, T data) {
        this.code = code.getCode();
        this.outId = outId;
        this.data = data;
        this.respDateTime = DateFormatUtils.format(new Date(), DATE_FORMAT_YMDHMS);
    }
    public PhoneResponse(RespCodeEnum code, String outId, String msg) {
        this.code = code.getCode();
        this.outId = outId;
        this.msg = msg;
        this.respDateTime = DateFormatUtils.format(new Date(), DATE_FORMAT_YMDHMS);
    }
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/dto/PDetailDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
package com.fzzy.igds.app.v1.dto;
import lombok.Data;
/**
 * @Author: YYC
 * @Description:
 * @DateTime: 2026-2-5 14:38
 **/
@Data
public class PDetailDto {
    private Double tempMin;
    private Double tempMax;
    private Double tempAve;
    private int fz;
    private String fzName;
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/dto/PEventInfoDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,68 @@
package com.fzzy.igds.app.v1.dto;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fzzy.igds.constant.WarnStatus;
import com.ruoyi.common.annotation.Excel;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import java.util.Date;
/**
 * @Author: YYC
 * @Description:
 * @DateTime: 2026-2-11 14:00
 **/
@Data
public class PEventInfoDto {
    private String id;
    private String deptId;
    private String deptName;
    private String depotId;
    private String serId;
    private String name;
    private String bizType;
    private String type;
    private String level;
    private String status;
    private String info;
    private Date time;
    private String noticeResult;
    private String noticeUser;
    private String completeUser;
    private Date completeTime;
    private String tags ;
    private String remark;
    private String imgName;
    private String companyId;
    private String createBy;
    private Date createTime;
    private String updateBy;
    private Date updateTime;
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/dto/PGrainDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
package com.fzzy.igds.app.v1.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fzzy.igds.constant.DepotType;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
 * @Author: YYC
 * @Description:
 * @DateTime: 2026-2-5 14:36
 **/
@Data
public class PGrainDto {
    private String depotId;
    private String depotName;
    private String depotType;
    private String depotTypeName;
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    private Date receiveDate;
    private Double tempIn;
    private Double humidityIn;
    private Double tempOut;
    private Double humidityOut;
    private Double tempMax = 0.0;
    private Double tempMin = 0.0;
    private Double tempAve = 0.0;
    private String cable;
    private String cableCir;
    private List<PPointDto> points;
    private List<PDetailDto> details;
    public String getDepotTypeName() {
        if (null != this.depotType) {
            return DepotType.getMsg(this.depotType);
        }
        return null;
    }
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/dto/PInoutDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,66 @@
package com.fzzy.igds.app.v1.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fzzy.igds.constant.FoodLevel;
import com.fzzy.igds.constant.FoodVariety;
import lombok.Data;
import java.util.Date;
/**
 * @Author: YYC
 * @Description:
 * @DateTime: 2026-2-5 9:42
 **/
@Data
public class PInoutDto {
    private String id;
    private String companyId;
    private String intelCard;
    private String plateNum;
    private String type;
    private String typeName;
    private String depotId;
    private String depotName;
    private Double deHandle;
    private String customerId;
    private String customerName;
    private String foodVariety;
    private String foodVarietyName;
    private Double recordWeight;
    private String foodLevel;
    private String foodLevelName;
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    private Date handleStart;
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    private Date handelEnd;
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    private Date completeTime;
    private String progress;
    private String progressName;
    private String storeKeeper;
    private String storeKeeperName;
    private String fileName1;
    private String fileName2;
    private String base64Img1;
    private String base64Img2;
    public String getFoodVarietyName() {
        if (null != this.foodVariety) {
            return FoodVariety.getMsg(this.foodVariety);
        }
        return null;
    }
    public String getFoodLevelName() {
        if (null != this.foodLevel) {
            return FoodLevel.getMsg(this.foodLevel);
        }
        return null;
    }
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/dto/PInoutSum.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,53 @@
package com.fzzy.igds.app.v1.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
 * å‡ºå…¥åº“数据封装 -- ç”¨äºŽå‡ºå…¥åº“记录及实时信息
 * @author chen
 */
@Data
public class PInoutSum {
    /**
     * å‡ºå…¥åº“流水信息
     */
    private List<PInoutDto> listInout;
    /**
     * å…¥åº“登记数
     */
    private Double inSumNum = 0.0;
    /**
     * å…¥åº“完成数
     */
    private Double inCompleteNum = 0.0;
    /**
     * å…¥åº“完成率
     */
    private Double perInComplete = 0.0;
    /**
     * å‡ºåº“登记数
     */
    private Double outSumNum = 0.0;
    /**
     * å‡ºåº“完成数
     */
    private Double outCompleteNum = 0.0;
    /**
     * å‡ºåº“完成率
     */
    private Double perOutComplete = 0.0;
    /**
     * å‡ºå…¥åº“合计数(用于出入库记录)
     */
    private Double sum = 0.0;
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    private Date time;
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/dto/PPatrolDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
package com.fzzy.igds.app.v1.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
/**
 * @Author: YYC
 * @Description:
 * @DateTime: 2026-1-13 16:24
 **/
@Data
public class PPatrolDto {
    private String id;
    private String userName;
    private String longitude;
    private String latitude;
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime;
    private String base64Img;
    private String imgName;
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/dto/PPointDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
package com.fzzy.igds.app.v1.dto;
import lombok.Data;
/**
 * @Author: YYC
 * @Description:
 * @DateTime: 2026-2-5 14:38
 **/
@Data
public class PPointDto {
    private int z;
    private int x;
    private int y;
    private int fz;
    private Double temp;
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/dto/PQuantityDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
package com.fzzy.igds.app.v1.dto;
import com.fzzy.igds.domain.Quantity;
import lombok.Data;
/**
 * @Author: YYC
 * @Description:
 * @DateTime: 2026-2-6 10:16
 **/
@Data
public class PQuantityDto extends Quantity {
    private String deptName;
    private Double errorValue;
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/dto/PSnapDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
package com.fzzy.igds.app.v1.dto;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Id;
import java.util.Date;
/**
 * @Author: YYC
 * @Description:
 * @DateTime: 2026-2-11 10:49
 **/
@Data
public class PSnapDto {
    private String id;
    private String deptId;
    private String deptName;
    private String cameraId;
    private String result;
    private String tags ;
    private Date snapTime;
    private String imgName;
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/dto/PUploadDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package com.fzzy.igds.app.v1.dto;
import lombok.Data;
/**
 * @Author: YYC
 * @Description:
 * @DateTime: 2026-2-10 10:03
 **/
@Data
public class PUploadDto {
    private String status;
    private String msg;
    private String fileName;
    private String base64Img;
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/dto/PUserDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,38 @@
package com.fzzy.igds.app.v1.dto;
import lombok.Data;
/**
 * @Author: YYC
 * @Description: ç™»å½•成功后返回信息封装
 * @DateTime: 2026-1-13 11:19
 **/
@Data
public class PUserDto {
    private String tokenAuth;
    private String username;
    private String cname;
    private String companyId;
    private String deptId;
    private String deptName;
    private String mobile;
    private String support;
    private String email;
    private String phone;
    private String website;
    private String address;
    private String type;
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/dto/PWorkOrderDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,72 @@
package com.fzzy.igds.app.v1.dto;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Id;
import java.util.Date;
/**
 * @Author: YYC
 * @Description:
 * @DateTime: 2026-1-13 13:56
 **/
@Data
public class PWorkOrderDto {
    /**
     *
     */
    private static final long serialVersionUID = 1L;
    //工单编号
    private String id;
    //工单标题/问题摘要
    private String title;
    //问题详细描述
    private String description;
    //业务分类
    private String bizType;
    //业务分类
    private String bizTypeName;
    private String node;
    private String nodeName;
    //工单分类
    private String category;
    //状态
    private String status;
    //处理人
    private String assigneeId;
    //处理人
    private String assigneeName;
    //接受时间
    private Date receiveTime;
    //创建人
    private String createBy;
    //业务关联主键
    private String businessId;
    //业务功能路径
    private String businessUrl;
    //所属库区
    private String deptId;
    private String deptName;
    //监管银行
    private String bankId;
    //创建时间
    private Date createTime;
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/manager/PhoneManager.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,274 @@
package com.fzzy.igds.app.v1.manager;
import com.alibaba.fastjson.JSONObject;
import com.fzzy.common.constant.RespCodeEnum;
import com.fzzy.igds.app.v1.data.AuthUser;
import com.fzzy.igds.app.v1.data.PhoneRequest;
import com.fzzy.igds.app.v1.data.PhoneResponse;
import com.fzzy.igds.app.v1.dto.PUploadDto;
import com.fzzy.igds.app.v1.service.PhoneService;
import com.fzzy.igds.app.v1.util.PhoneRespUtil;
import com.fzzy.igds.app.v1.util.PhoneUtil;
import com.fzzy.igds.data.PageResponse;
import com.fzzy.igds.service.FileService;
import com.fzzy.igds.utils.ContextUtil;
import com.fzzy.igds.utils.DateUtil;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.StringUtils;
import com.sun.jna.platform.mac.MacFileUtils;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
 * @Author: YYC
 * @Description:
 * @DateTime: 2026-1-14 11:47
 **/
@Component(PhoneManager.BEAN_ID)
public class PhoneManager implements ApplicationContextAware {
    public static final String BEAN_ID = "phone.phoneManager";
    private static Map<String, PhoneService> serviceMap;
    @Autowired
    private RedisCache redisUtil;
    @Resource
    private FileService fileService;
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        Map<String, PhoneService> map = applicationContext
                .getBeansOfType(PhoneService.class);
        serviceMap = new HashMap<>();
        for (String key : map.keySet()) {
            serviceMap.put(map.get(key).getInterfaceId(), map.get(key));
        }
    }
    /**
     * ä¸šåŠ¡æ‰§è¡Œå…¥å£
     *
     * @param req
     * @param
     * @return
     * @throws Exception
     */
    @SuppressWarnings("unchecked")
    public PhoneResponse<Object> execute(PhoneRequest<JSONObject> req, AuthUser authUser) throws Exception {
        PhoneService service = serviceMap.get(req.getInterfaceId());
        if (null == service) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111,
                    "当前接口没有找到实现类,无法执行处理");
        }
        return service.execute(req, authUser);
    }
    /**
     * æ ¹æ®tokenAuth获取缓存中的tokenUser
     *
     * @param req
     * @return
     */
    public AuthUser checkTokenAuth(PhoneRequest<JSONObject> req) {
        String tokenAuth = req.getTokenAuth();
        return redisUtil.getCacheObject(PhoneUtil.createKey(tokenAuth));
    }
    /**
     * å€¼ä»“图片上传
     *
     * @param file
     * @param req
     * @return
     * @throws IOException
     */
    @SuppressWarnings("unchecked")
    public PhoneResponse<Object> phoneUploadImg(MultipartFile file,
                                                HttpServletRequest req) throws IOException {
        String plateNum = req.getParameter("plateNum");
        PageResponse<String> result = upLoadInoutImg(file, plateNum);
        if (result.getCode().equals(RespCodeEnum.CODE_0000.getCode())) {
            //上传成功
            PUploadDto dtoUpload = new PUploadDto();
            dtoUpload.setStatus("success");
            dtoUpload.setMsg("上传成功!");
            dtoUpload.setFileName(result.getMsg());
            return PhoneRespUtil.success(dtoUpload);
        } else {
            //上传失败
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "上传失败");
        }
    }
    /**
     * å€¼ä»“图片上传
     *
     * @param file
     * @param req
     * @return
     * @throws IOException
     */
    @SuppressWarnings("unchecked")
    public PhoneResponse<Object> phonePatrol(MultipartFile file,
                                             HttpServletRequest req) throws IOException {
        String deptId = req.getParameter("deptId");
        PageResponse<String> result = upLoadPatrolImg(file, deptId);
        if (result.getCode().equals(RespCodeEnum.CODE_0000.getCode())) {
            //上传成功
            PUploadDto dtoUpload = new PUploadDto();
            dtoUpload.setStatus("success");
            dtoUpload.setMsg("上传成功!");
            dtoUpload.setFileName(result.getMsg());
            return PhoneRespUtil.success(dtoUpload);
        } else {
            //上传失败
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "上传失败");
        }
    }
    /**
     * å‡ºå…¥åº“的附件上次,参数是车牌号
     *
     * @param file
     * @return
     * @throws IOException
     */
    public PageResponse<String> upLoadInoutImg(MultipartFile file, String plateNum)
            throws IOException {
        // èŽ·å–é»˜è®¤ç¼–ç çš„å­—èŠ‚æ•°ç»„
        byte[] fileByte = file.getBytes();
        // èŽ·å–æ–‡ä»¶çš„æºæ–‡ä»¶åç§°
        String oldFileName = file.getOriginalFilename();
        // èŽ·å–æ–‡ä»¶ä¿å­˜è·¯å¾„
        String filePath = fileService.getInoutFilePath();
        // èŽ·å–æ–°çš„ID
        String newFileName = ContextUtil.UUID();
        // æ–‡ä»¶åŽç¼€å
        String suffixName = oldFileName.substring(oldFileName.lastIndexOf("."));
        // åˆæˆæ–°çš„æ–‡ä»¶å
        if (StringUtils.isEmpty(plateNum)) {
            newFileName = newFileName + suffixName;
        } else {
            newFileName = plateNum + "_" + newFileName + suffixName;
        }
        // æ–‡ä»¶ä¸Šä¼ 
        boolean flag = uploadFile(fileByte, filePath, newFileName);
        // åˆ¤æ–­æ–‡ä»¶ä¸Šä¼ æ˜¯å¦æˆåŠŸ,成功返回文件名
        if (flag) {
            return new PageResponse<String>(RespCodeEnum.CODE_0000.getCode(),
                    newFileName);
        } else {
            return new PageResponse<String>(RespCodeEnum.CODE_1111.getCode(),
                    "上传失败");
        }
    }
    /**
     * æ‰“卡的附件上次,参数是车牌号
     *
     * @param file
     * @return
     * @throws IOException
     */
    public PageResponse<String> upLoadPatrolImg(MultipartFile file, String deptId)
            throws IOException {
        // èŽ·å–é»˜è®¤ç¼–ç çš„å­—èŠ‚æ•°ç»„
        byte[] fileByte = file.getBytes();
        // èŽ·å–æ–‡ä»¶çš„æºæ–‡ä»¶åç§°
        String oldFileName = file.getOriginalFilename();
        // èŽ·å–æ–‡ä»¶ä¿å­˜è·¯å¾„
        String filePath = fileService.getPatrolFilePath();
        // èŽ·å–æ–°çš„ID
        String newFileName = DateUtils.dateTimeNow();
        // æ–‡ä»¶åŽç¼€å
        String suffixName = oldFileName.substring(oldFileName.lastIndexOf("."));
        // åˆæˆæ–°çš„æ–‡ä»¶å
        if (StringUtils.isEmpty(deptId)) {
            newFileName = newFileName + suffixName;
        } else {
            newFileName = deptId + "_" + newFileName + suffixName;
        }
        // æ–‡ä»¶ä¸Šä¼ 
        boolean flag = uploadFile(fileByte, filePath, newFileName);
        // åˆ¤æ–­æ–‡ä»¶ä¸Šä¼ æ˜¯å¦æˆåŠŸ,成功返回文件名
        if (flag) {
            return new PageResponse<String>(RespCodeEnum.CODE_0000.getCode(),
                    newFileName);
        } else {
            return new PageResponse<String>(RespCodeEnum.CODE_1111.getCode(),
                    "上传失败");
        }
    }
    /**
     * æ–‡ä»¶æµä¸Šä¼ æ–‡ä»¶
     *
     * @param file
     * @param filePath
     * @param fileName
     * @return
     */
    public static boolean uploadFile(byte[] file, String filePath, String fileName) throws IOException {
        // é»˜è®¤æ–‡ä»¶ä¸Šä¼ æˆåŠŸ
        boolean flag = true;
        // new一个文件对象实例
        File targetFile = new File(filePath);
        // å¦‚果当前文件目录不存在就自动创建该文件或者目录
        if (!targetFile.exists()) {
            targetFile.mkdirs();
        }
        // åˆ›å»ºæ–‡ä»¶æµ
        FileOutputStream fileOutputStream = new FileOutputStream(filePath + fileName);
        try {
            fileOutputStream.write(file);
        } catch (FileNotFoundException e) {
            flag = false;
        } catch (IOException ioException) {
            flag = false;
        } finally {
            fileOutputStream.flush();
            fileOutputStream.close();
        }
        return flag;
    }
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/mapper/PhoneMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.fzzy.igds.app.v1.mapper;
import com.fzzy.igds.app.v1.data.ParamOrder;
import org.springframework.data.repository.query.Param;
/**
 * @Author: YYC
 * @Description:
 * @DateTime: 2026-1-13 9:54
 **/
public interface PhoneMapper {
    /**
     * å·¥å•审核
     * @param param
     * @return
     */
    int updateOrder(@Param("param") ParamOrder param);
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/PhoneService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
package com.fzzy.igds.app.v1.service;
import com.alibaba.fastjson.JSONObject;
import com.fzzy.igds.app.v1.data.AuthUser;
import com.fzzy.igds.app.v1.data.PhoneRequest;
import com.fzzy.igds.app.v1.data.PhoneResponse;
/**
 *
 */
public interface PhoneService {
    public String getInterfaceId();
    public PhoneResponse<Object> execute(PhoneRequest<JSONObject> req, AuthUser authUser) throws Exception;
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/impl/ServiceImpl5001.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,153 @@
package com.fzzy.igds.app.v1.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.fzzy.common.constant.RespCodeEnum;
import com.fzzy.igds.app.v1.constant.PhoneConstant;
import com.fzzy.igds.app.v1.data.AuthUser;
import com.fzzy.igds.app.v1.data.ParamUser;
import com.fzzy.igds.app.v1.data.PhoneRequest;
import com.fzzy.igds.app.v1.data.PhoneResponse;
import com.fzzy.igds.app.v1.dto.PUserDto;
import com.fzzy.igds.app.v1.service.PhoneService;
import com.fzzy.igds.app.v1.util.PhoneRespUtil;
import com.fzzy.igds.app.v1.util.PhoneUtil;
import com.fzzy.igds.service.SysDeptService;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.constant.UserConstants;
import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.enums.UserStatus;
import com.ruoyi.common.exception.user.*;
import com.ruoyi.common.utils.IpUtils;
import com.ruoyi.common.utils.MessageUtils;
import com.ruoyi.common.utils.ShiroUtils;
import com.ruoyi.framework.manager.AsyncManager;
import com.ruoyi.framework.manager.factory.AsyncFactory;
import com.ruoyi.framework.shiro.service.SysPasswordService;
import com.ruoyi.system.service.ISysConfigService;
import com.ruoyi.system.service.ISysUserService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.UUID;
import java.util.concurrent.TimeUnit;
/**
 * ç™»å½•接口实现
 *
 * @author chen
 */
@Slf4j
@Service
public class ServiceImpl5001 implements PhoneService {
    //RSA-私钥
    private static final String PRIVATE_KEY = "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAJo3SjBOwXnr97QrRjKcGsJnm8xuWw3bEGsqJseNTEwgYOm2+7L6wMVyIQjJfIG3UO27hubhf4r4iadfaocyCw1dNA82tRNlgGr/B9c68uSLcvFIBlKsd2z29FPC3yA+TKRpyoXC5iUS15PVzPji+d3qR8FgR2LoDmXVcah2UWhzAgMBAAECgYEAkyR8CfmrCyzFrMe5c+KUebcn5XfKMz84vDd8xtwf12bxcS4hnFU7B2ls8ZhlztLdSeeqwLKZ4jxgAy28VADAn2WKHI6z5PCezZpkcS4JbhqU4XhSeXw5UwNeBX0nnXzwO1kRgyMfMyNsUx0pDV6w42ZybufFeG3uEGt76J45j0ECQQDHhqq7LNg9nm6G0XnLERB2wz7YVfdXZKRVlwN38H/98wOIGVDhtgz/t4QGZgBBPEUbxXq1vcXhynRr7LP/W6ThAkEAxd2HbOLcWYG+h/c82/9N8BDZzZWVPzEfhq4MHGuNAvQ5R0SssfunQCQAhoAPnL++8Mz4FOKTExG+1DYAmDXj0wJAX91UKpphSznT4PLEkcyhHG6ywz6KmHLCgl0MTZQ/6sPX7ow7UDcoB7Ukue5IMQ/EJJO9YZTMfq/HQBN6aDagAQJBAMF0UpA3TlGE9RBivnIqL71j/E9wzLc4BCbdzKGM1hXpSodPsbli3qdri8f1NU6AeuNcw8FHtZyTYQyCsBohtlkCQB0Lv67uM0Wz628bfxQ1kCREoMMIuIEZPo6nRfTF4ASjnvERQehBhT2ZBWyGaDPKgG1YElOHAdI9jQvs22DtQ+4=";
    @Autowired
    private SysPasswordService passwordService;
    @Autowired
    private ISysUserService userService;
    @Autowired
    private ISysConfigService configService;
    @Autowired
    private SysDeptService deptService;
    @Autowired
    private RedisCache redisUtil;
    @Override
    public String getInterfaceId() {
        return PhoneConstant.API_PHONE_5001;
    }
    @SuppressWarnings("unchecked")
    @Override
    public PhoneResponse<Object> execute(PhoneRequest<JSONObject> req, AuthUser auth)
            throws Exception {
        ParamUser param = JSONObject.parseObject(req.getData().toString(), ParamUser.class);
        //验证参数
        if (null == param) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1007, "用户名和密码错误,请重新登录!");
        }
        if (StringUtils.isEmpty(param.getUsername())) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1007, "用户名和密码错误,请重新登录!");
        }
        if (StringUtils.isEmpty(param.getPassword())) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1007, "用户名和密码错误,请重新登录!");
        }
        // ç”¨æˆ·åæˆ–密码为空 é”™è¯¯
        if (StringUtils.isEmpty(param.getUsername()) || StringUtils.isEmpty(param.getPassword())) {
            AsyncManager.me().execute(AsyncFactory.recordLogininfor(param.getUsername(), Constants.LOGIN_FAIL, MessageUtils.message("not.null")));
            throw new UserNotExistsException();
        }
        // å¯†ç å¦‚果不在指定范围内 é”™è¯¯
        if (param.getPassword().length() < UserConstants.PASSWORD_MIN_LENGTH
                || param.getPassword().length() > UserConstants.PASSWORD_MAX_LENGTH) {
            AsyncManager.me().execute(AsyncFactory.recordLogininfor(param.getUsername(), Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match")));
            throw new UserPasswordNotMatchException();
        }
        // ç”¨æˆ·åä¸åœ¨æŒ‡å®šèŒƒå›´å†… é”™è¯¯
        if (param.getUsername().length() < UserConstants.USERNAME_MIN_LENGTH
                || param.getUsername().length() > UserConstants.USERNAME_MAX_LENGTH) {
            AsyncManager.me().execute(AsyncFactory.recordLogininfor(param.getUsername(), Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match")));
            throw new UserPasswordNotMatchException();
        }
        // æŸ¥è¯¢ç”¨æˆ·ä¿¡æ¯
        SysUser user = userService.selectUserByLoginName(param.getUsername());
        // IP黑名单校验
        String blackStr = configService.selectConfigByKey("sys.login.blackIPList", user.getCompanyId());
        if (IpUtils.isMatchedIp(blackStr, ShiroUtils.getIp())) {
            AsyncManager.me().execute(AsyncFactory.recordLogininfor(param.getUsername(), Constants.LOGIN_FAIL, MessageUtils.message("login.blocked")));
            throw new BlackListException();
        }
        if (user == null) {
            AsyncManager.me().execute(AsyncFactory.recordLogininfor(param.getUsername(), Constants.LOGIN_FAIL, MessageUtils.message("user.not.exists")));
            throw new UserNotExistsException();
        }
        if (UserStatus.DELETED.getCode().equals(user.getDelFlag())) {
            AsyncManager.me().execute(AsyncFactory.recordLogininfor(param.getUsername(), Constants.LOGIN_FAIL, MessageUtils.message("user.password.delete")));
            throw new UserDeleteException();
        }
        if (UserStatus.DISABLE.getCode().equals(user.getStatus())) {
            AsyncManager.me().execute(AsyncFactory.recordLogininfor(param.getUsername(), Constants.LOGIN_FAIL, MessageUtils.message("user.blocked")));
            throw new UserBlockedException();
        }
        passwordService.validate(user, param.getPassword());
        AsyncManager.me().execute(AsyncFactory.recordLogininfor(param.getUsername(), Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
        PUserDto phoneUserDto = new PUserDto();
        //设置用户信息
        phoneUserDto.setCname(user.getUserName());
        phoneUserDto.setMobile(user.getPhonenumber());
        phoneUserDto.setUsername(user.getLoginName());
        phoneUserDto.setTokenAuth(UUID.randomUUID().toString().replaceAll("-", ""));
        //设置AuthUser信息到缓存
        AuthUser authUser = new AuthUser();
        authUser.setCompanyId(user.getCompanyId());
        authUser.setUsername(user.getLoginName());
        authUser.setCname(user.getUserName());
        authUser.setEmail(user.getEmail());
        authUser.setMobile(user.getPhonenumber());
        //设置登录用户所属分库信息
        SysDept dept = deptService.getCacheDept(user.getCompanyId(),user.getDeptId().toString());
        phoneUserDto.setCompanyId(authUser.getCompanyId());
        phoneUserDto.setDeptId(dept.getDeptId().toString());
        phoneUserDto.setDeptName(dept.getDeptName());
        phoneUserDto.setType(dept.getType());
        redisUtil.setCacheObject(PhoneUtil.createKey(phoneUserDto.getTokenAuth()),
                authUser, 60 * 60 * 24, TimeUnit.SECONDS);
        return PhoneRespUtil.success(phoneUserDto, req);
    }
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/impl/ServiceImpl5002.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,60 @@
package com.fzzy.igds.app.v1.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.fzzy.common.constant.RespCodeEnum;
import com.fzzy.igds.app.v1.constant.PhoneConstant;
import com.fzzy.igds.app.v1.data.AuthUser;
import com.fzzy.igds.app.v1.data.ParamCommon;
import com.fzzy.igds.app.v1.data.PhoneRequest;
import com.fzzy.igds.app.v1.data.PhoneResponse;
import com.fzzy.igds.app.v1.service.PhoneService;
import com.fzzy.igds.app.v1.util.PhoneRespUtil;
import com.fzzy.igds.domain.Dept;
import com.fzzy.igds.service.CoreDeptService;
import com.fzzy.igds.service.SysDeptService;
import com.ruoyi.common.core.domain.entity.SysDept;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
 * èŽ·å–åº“åŒºåˆ—è¡¨ä¿¡æ¯
 *
 * @author chen
 */
@Service
public class ServiceImpl5002 implements PhoneService {
    @Autowired
    private CoreDeptService deptService;
    @Override
    public String getInterfaceId() {
        return PhoneConstant.API_PHONE_5002;
    }
    @SuppressWarnings("unchecked")
    @Override
    public PhoneResponse<Object> execute(PhoneRequest<JSONObject> req, AuthUser authUser)
            throws Exception {
        //转化为对象
        ParamCommon param = JSONObject.parseObject(req.getData().toString(), ParamCommon.class);
        if (null == param || StringUtils.isEmpty(param.getCompanyId())) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请核查!");
        }
        List<Dept> deptList = deptService.getDeptByUserTypeApp(null,authUser.getDeptId());
        if (null == deptList || deptList.isEmpty()) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_2000, "未获取到库区列表信息!");
        }
        return PhoneRespUtil.success(deptList, req);
    }
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/impl/ServiceImpl5101.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,131 @@
package com.fzzy.igds.app.v1.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.fzzy.common.constant.RespCodeEnum;
import com.fzzy.igds.app.v1.constant.PhoneConstant;
import com.fzzy.igds.app.v1.data.AuthUser;
import com.fzzy.igds.app.v1.data.ParamOrder;
import com.fzzy.igds.app.v1.data.PhoneRequest;
import com.fzzy.igds.app.v1.data.PhoneResponse;
import com.fzzy.igds.app.v1.dto.PWorkOrderDto;
import com.fzzy.igds.app.v1.service.PhoneService;
import com.fzzy.igds.app.v1.util.PhoneRespUtil;
import com.fzzy.igds.constant.Constant;
import com.fzzy.igds.service.SysDeptService;
import com.fzzy.igds.service.SysUserService;
import com.fzzy.igds.utils.ContextUtil;
import com.fzzy.work.data.WorkBizType;
import com.fzzy.work.data.WorkNode;
import com.fzzy.work.data.WorkOrderParam;
import com.fzzy.work.data.WorkStatus;
import com.fzzy.work.domain.WorkOrder;
import com.fzzy.work.mapper.WorkOrderMapper;
import com.fzzy.work.service.WorkOrderService;
import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.common.core.domain.entity.SysUser;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
 * @Author: YYC
 * @Description: å·¥å•管理-查询工单列表
 * @DateTime: 2026-1-12 14:43
 **/
@Service
public class ServiceImpl5101 implements PhoneService {
    @Resource
    private WorkOrderMapper workOrderMapper;
    @Autowired
    private SysDeptService deptService;
    @Autowired
    private SysUserService userService;
    @Override
    public String getInterfaceId() {
        return PhoneConstant.API_PHONE_5101;
    }
    @Override
    public PhoneResponse execute(PhoneRequest<JSONObject> req, AuthUser authUser) throws Exception {
        //转化对象
        ParamOrder param = JSONObject.parseObject(req.getData().toString(), ParamOrder.class);
        if (null == param) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!");
        }
        //参数验证
        if (StringUtils.isEmpty(param.getDeptId())) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!");
        }
        param.setCompanyId(authUser.getCompanyId());
        QueryWrapper<WorkOrder> queryWrapper = new QueryWrapper<>();
//        queryWrapper.eq(null != param.getStatus(), "status", WorkStatus.STATUS_30.getCode());
        String scope = WorkOrderParam.SCOPE_SELF;
        SysUser user = userService.getUserByLoginName(authUser.getUsername());
        this.updateQueryWrapper(queryWrapper, user, scope);
        List<WorkOrder> list = workOrderMapper.selectList(queryWrapper);
        SysDept dept = deptService.getCacheDept(param.getCompanyId(), param.getDeptId().toString());
        List<PWorkOrderDto> reqList = new ArrayList<>();
        PWorkOrderDto orderDto;
        if (null != dept) {
            for (WorkOrder workOrder : list) {
                orderDto = new PWorkOrderDto();
                BeanUtils.copyProperties(workOrder, orderDto);
                orderDto.setDeptName(dept.getDeptName());
                orderDto.setBizTypeName(WorkBizType.getMsg(workOrder.getBizType()));
                reqList.add(orderDto);
            }
        }
        return PhoneRespUtil.success(reqList, req);
    }
    private void updateQueryWrapper(QueryWrapper<WorkOrder> queryWrapper, SysUser user, String scope) {
        queryWrapper.eq("company_id", user.getCompanyId());
        //如果是个人工单,处理人为空或者为当前人
        if (WorkOrderParam.SCOPE_SELF.equals(scope)) {
            queryWrapper.and((wrapper)->{
                wrapper.isNull("assignee_id").or().eq("assignee_id", user.getLoginName());
            });
        }
        //监管用户-查看所有库区和待办
        if (Constant.USER_TYPE_10.equals(user.getUserType())) {
            if (WorkOrderParam.SCOPE_SELF.equals(scope)) {
                queryWrapper.eq("node", WorkNode.NODE2.getCode());
            }
        }
        //库区用户,如果是公司用户可以查看公司下属所有库区,如果为当前库区只查询当前库区
        if (Constant.USER_TYPE_30.equals(user.getUserType())) {
            if (ContextUtil.isDepotUser(user.getDeptId() + "")) {
                queryWrapper.eq("dept_id", user.getDeptId() + "");
            } else {
                queryWrapper.likeRight("dept_id", user.getDeptId() + "");
            }
            if (WorkOrderParam.SCOPE_SELF.equals(scope)) {
                queryWrapper.eq("node", WorkNode.NODE1.getCode());
            }
        }
        //银行用户,根据合同查询银行下所有库区
        if (Constant.USER_TYPE_20.equals(user.getUserType())) {
            //如果没有配置银行,设置一个不存在的银行号
            if (StringUtils.isBlank(user.getUserData())) user.setUserData("9");
            queryWrapper.eq("bank_id", user.getUserData());
            if (WorkOrderParam.SCOPE_SELF.equals(scope)) {
                queryWrapper.eq("node", WorkNode.NODE3.getCode());
            }
        }
    }
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/impl/ServiceImpl5102.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,172 @@
package com.fzzy.igds.app.v1.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.fzzy.common.constant.RespCodeEnum;
import com.fzzy.igds.app.v1.constant.PhoneConstant;
import com.fzzy.igds.app.v1.data.AuthUser;
import com.fzzy.igds.app.v1.data.ParamOrder;
import com.fzzy.igds.app.v1.data.PhoneRequest;
import com.fzzy.igds.app.v1.data.PhoneResponse;
import com.fzzy.igds.app.v1.mapper.PhoneMapper;
import com.fzzy.igds.app.v1.service.PhoneService;
import com.fzzy.igds.app.v1.util.PhoneRespUtil;
import com.fzzy.igds.constant.Constant;
import com.fzzy.igds.data.BaseResp;
import com.fzzy.igds.utils.ContextUtil;
import com.fzzy.work.data.WorkNode;
import com.fzzy.work.data.WorkStatus;
import com.fzzy.work.domain.WorkOrder;
import com.fzzy.work.domain.WorkOrderConf;
import com.fzzy.work.domain.WorkOrderProcess;
import com.fzzy.work.mapper.WorkOrderMapper;
import com.fzzy.work.service.WorkOrderConfService;
import com.fzzy.work.service.WorkOrderProcessService;
import com.fzzy.work.service.WorkOrderService;
import com.ruoyi.common.core.domain.entity.SysUser;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Date;
/**
 * @Author: YYC
 * @Description: å·¥å•管理-工单审核
 * @DateTime: 2026-1-12 14:43
 **/
@Service
public class ServiceImpl5102 implements PhoneService {
    @Resource
    private WorkOrderService orderService;
    @Resource
    private WorkOrderConfService confService;
    @Resource
    private WorkOrderProcessService orderProcessService;
    @Override
    public String getInterfaceId() {
        return PhoneConstant.API_PHONE_5102;
    }
    @Override
    public PhoneResponse<Object> execute(PhoneRequest<JSONObject> req, AuthUser authUser) throws Exception {
        //转化对象
        ParamOrder param = JSONObject.parseObject(req.getData().toString(), ParamOrder.class);
        if (null == param) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!");
        }
        //参数验证
        if (StringUtils.isEmpty(param.getDeptId())) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!");
        }
        //获取工单
        WorkOrder work = orderService.selectById(param.getOrderId());
        if (null == work) return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "当前工单已不存在");
        if (work.getStatus().equals(WorkStatus.STATUS_50.getCode())
                || work.getStatus().equals(WorkStatus.STATUS_60.getCode())) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "当前工单已处理,请刷新页面重试!!");
        }
        WorkOrderProcess process = new WorkOrderProcess();
        BeanUtils.copyProperties(param, process);
        //判断是不是指定处理人
        if (StringUtils.isNotEmpty(work.getAssigneeId())) {
            if (!work.getAssigneeId().equals(authUser.getUsername())) {
                return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "当前工单已分配其他人处理,请勿处理");
            }
        }
        String curNode = process.getNode();
        //获取处理人
        if (!curNode.equals(work.getNode())) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "当前工单已被处理,请刷新页面重试!!");
        }
        //获取配置信息
        WorkOrderConf conf = confService.selectById(work.getConfId());
        if (null == conf) PhoneRespUtil.error(RespCodeEnum.CODE_1111, "当前工单未配置流程");
        //添加记录
        process.setId(ContextUtil.UUID());
        process.setCreateTime(new Date());
        process.setOrderId(work.getId());
        process.setAssigneeName(authUser.getCname());
        process.setAssigneeId(authUser.getUsername());
        WorkNode nextNode = this.getNextNode(work.getNode(), conf);
        //通过操作
        if ("pass".equals(param.getStatus())) {
            process.setAction("通过");
            process.setNode(work.getNode());
            //结束判断,如果是结束节点,则结束工单
            if (WorkNode.NODE_END.getCode().equals(nextNode.getCode())) {
                work.setStatus(WorkStatus.STATUS_50.getCode());
                work.setAssigneeName(process.getAssigneeName());
                work.setAssigneeId(process.getAssigneeId());
                work.setNode(nextNode.getCode());
                orderService.complete(work);
            } else {
                work.setNode(nextNode.getCode());
                work.setStatus(WorkStatus.STATUS_30.getCode());
                orderService.updateData(work);
            }
            //增加审批记录
            orderProcessService.addData(process, WorkNode.NODE_END.equals(nextNode));
            return PhoneRespUtil.success(RespCodeEnum.CODE_0000.getCode(), req);
        }
        //拒绝操作
        if ("refuse".equals(param.getStatus())) {
            process.setAction("拒绝");
            process.setNode(work.getNode());
            work.setStatus(WorkStatus.STATUS_60.getCode());
            orderService.complete(work);
            //增加审批记录
            orderProcessService.addData(process, true);
            return PhoneRespUtil.success(RespCodeEnum.CODE_0000.getCode(), req);
        }
        return PhoneRespUtil.success(RespCodeEnum.CODE_0000.getCode(), req);
    }
    /**
     * æ ¹æ®å½“前节点获取下一个节点
     *
     * @param curNode
     * @param conf
     * @return
     */
    private WorkNode getNextNode(String curNode, WorkOrderConf conf) {
        if (null == conf) return WorkNode.NODE_END;
        if (WorkNode.NODE_START.getCode().equals(curNode)) {
            if (Constant.YN_Y.equals(conf.getNodeVal1())) return WorkNode.NODE1;
            if (Constant.YN_Y.equals(conf.getNodeVal2())) return WorkNode.NODE2;
            if (Constant.YN_Y.equals(conf.getNodeVal3())) return WorkNode.NODE3;
        }
        if (WorkNode.NODE1.getCode().equals(curNode)) {
            if (Constant.YN_Y.equals(conf.getNodeVal2())) return WorkNode.NODE2;
            if (Constant.YN_Y.equals(conf.getNodeVal3())) return WorkNode.NODE3;
        }
        if (WorkNode.NODE2.getCode().equals(curNode)) {
            if (Constant.YN_Y.equals(conf.getNodeVal3())) return WorkNode.NODE3;
        }
        return WorkNode.NODE_END;
    }
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/impl/ServiceImpl5103.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,76 @@
package com.fzzy.igds.app.v1.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.fzzy.common.constant.RespCodeEnum;
import com.fzzy.igds.app.v1.constant.PhoneConstant;
import com.fzzy.igds.app.v1.data.AuthUser;
import com.fzzy.igds.app.v1.data.ParamOrder;
import com.fzzy.igds.app.v1.data.PhoneRequest;
import com.fzzy.igds.app.v1.data.PhoneResponse;
import com.fzzy.igds.app.v1.service.PhoneService;
import com.fzzy.igds.app.v1.util.PhoneRespUtil;
import com.fzzy.igds.constant.Constant;
import com.fzzy.igds.domain.Camera;
import com.fzzy.igds.mapper.CameraMapper;
import com.fzzy.igds.service.SecCameraService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
 * @Author: YYC
 * @Description: è§†é¢‘监管-监控列表
 * @DateTime: 2026-1-12 14:43
 **/
@Service
public class ServiceImpl5103 implements PhoneService {
    @Resource
    private CameraMapper cameraMapper;
    @Override
    public String getInterfaceId() {
        return PhoneConstant.API_PHONE_5103;
    }
    @Override
    public PhoneResponse<Object> execute(PhoneRequest<JSONObject> req, AuthUser authUser) throws Exception {
        //转化对象
        ParamOrder param = JSONObject.parseObject(req.getData().toString(), ParamOrder.class);
        if (null == param) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!");
        }
        //参数验证
        if (StringUtils.isEmpty(param.getDeptId())) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!");
        }
        QueryWrapper<Camera> queryWrapper = new QueryWrapper<>();
        if (StringUtils.isNotBlank(authUser.getCompanyId())) {
            queryWrapper.eq("company_id", authUser.getCompanyId());
        }
        if (StringUtils.isNotBlank(param.getDeptId())) {
            queryWrapper.likeRight("dept_id", param.getDeptId());
        }
        List<Camera> list = cameraMapper.selectList(queryWrapper);
        if (list == null || list.isEmpty()) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_2000, "没有查到监控设备信息!");
        }
        //过滤手机显示
        List<Camera> result = new ArrayList<>();
        for (Camera secCameraDto : list) {
            if (StringUtils.isNotEmpty(secCameraDto.getPhoneShowTag()) && Constant.YN_Y.equals(secCameraDto.getPhoneShowTag())) {
                result.add(secCameraDto);
            }
        }
        return PhoneRespUtil.success(list, req);
    }
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/impl/ServiceImpl5104.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,86 @@
package com.fzzy.igds.app.v1.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.fzzy.common.constant.RespCodeEnum;
import com.fzzy.igds.app.v1.constant.PhoneConstant;
import com.fzzy.igds.app.v1.data.*;
import com.fzzy.igds.app.v1.service.PhoneService;
import com.fzzy.igds.app.v1.util.PhoneRespUtil;
import com.fzzy.igds.camera.ApiCameraManager;
import com.fzzy.igds.camera.data.ApiCameraData;
import com.fzzy.igds.camera.data.ApiCameraResp;
import com.fzzy.igds.domain.Camera;
import com.fzzy.igds.service.SecCameraService;
import com.fzzy.igds.utils.ContextUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
 * @Author: YYC
 * @Description: è§†é¢‘监管-监控播放
 * @DateTime: 2026-1-12 14:43
 **/
@Service
public class ServiceImpl5104 implements PhoneService {
    @Autowired
    private SecCameraService secCameraService;
    @Resource
    private ApiCameraManager apiCameraManager;
    @Override
    public String getInterfaceId() {
        return PhoneConstant.API_PHONE_5104;
    }
    @Override
    public PhoneResponse<Object> execute(PhoneRequest<JSONObject> req, AuthUser authUser) throws Exception {
        //转化对象
        ParamVideo param = JSONObject.parseObject(req.getData().toString(), ParamVideo.class);
        if (null == param) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!");
        }
        //参数验证
        if (StringUtils.isEmpty(param.getId())) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!");
        }
        if ("DEFAULT".equals(param.getPlayType())) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1007, "系统未配置当前摄像头播放方式,不执行预览");
        }
        if (com.ruoyi.common.utils.StringUtils.isEmpty(param.getId()) || com.ruoyi.common.utils.StringUtils.isEmpty(param.getPlayType())) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1005, "没有获取到监控信息!");
        }
        // æ ¹æ®id获取设备信息
        Camera camera = secCameraService.getCameraById(ContextUtil.getCompanyId(), param.getId());
        if (null == camera) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1005, "缓存中没有获取到摄像头信息!");
        }
        //通过统一入口获取播放地址
        ApiCameraData apiCameraData = new ApiCameraData();
        apiCameraData.setCompanyId(camera.getCompanyId());
        apiCameraData.setDeptId(camera.getDeptId());
        apiCameraData.setCameraId(camera.getId());
        apiCameraData.setIp(camera.getIp());
        apiCameraData.setCtrlPort(camera.getControlPort());
        apiCameraData.setWebPort(camera.getWebPort());
        apiCameraData.setPlayType(param.getPlayType());
        apiCameraData.setSnapType(camera.getSnapType());
        apiCameraData.setSn(camera.getSn());
        apiCameraData.setChannel(camera.getChanNum());
        apiCameraData.setLoginId(camera.getLoginId());
        apiCameraData.setPwd(camera.getPwd());
        apiCameraData.setUrlIn(camera.getUrlIn());
        apiCameraData.setUrlOut(camera.getUrlOut());
        apiCameraData.setMediaAddr(camera.getMediaAddr());
        ApiCameraResp resp = apiCameraManager.getApiCameraService(apiCameraData.getPlayType()).getPlayAddr(apiCameraData);
        return PhoneRespUtil.success(resp, req);
    }
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/impl/ServiceImpl5105.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,62 @@
package com.fzzy.igds.app.v1.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.fzzy.common.constant.RespCodeEnum;
import com.fzzy.common.utils.DateUtil;
import com.fzzy.igds.app.v1.constant.PhoneConstant;
import com.fzzy.igds.app.v1.data.AuthUser;
import com.fzzy.igds.app.v1.data.ParamPatrol;
import com.fzzy.igds.app.v1.data.PhoneRequest;
import com.fzzy.igds.app.v1.data.PhoneResponse;
import com.fzzy.igds.app.v1.dto.PPatrolDto;
import com.fzzy.igds.app.v1.service.PhoneService;
import com.fzzy.igds.app.v1.util.PhoneRespUtil;
import com.fzzy.igds.domain.Patrol;
import com.fzzy.igds.domain.PatrolRecord;
import com.fzzy.igds.mapper.PatrolMapper;
import com.fzzy.igds.service.PatrolService;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.apache.commons.lang3.time.DateUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
/**
 * @Author: YYC
 * @Description: å·¡æ£€ç›‘管-电子巡更记录
 * @DateTime: 2026-1-12 14:43
 **/
@Service
public class ServiceImpl5105 implements PhoneService {
    @Resource
    private PatrolService patrolService;
    @Override
    public String getInterfaceId() {
        return PhoneConstant.API_PHONE_5105;
    }
    @Override
    public PhoneResponse<Object> execute(PhoneRequest<JSONObject> req, AuthUser authUser) throws Exception {
        //转化对象
        ParamPatrol param = JSONObject.parseObject(req.getData().toString(), ParamPatrol.class);
        if (null == param) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!");
        }
        //参数验证
        if (StringUtils.isEmpty(param.getDeptId())) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!");
        }
        //参数验证
        if (null == param.getDateTime()) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!");
        }
        List<PatrolRecord> list = patrolService.getRecordByPatrolId(DateFormatUtils.format(param.getDateTime(), "yyyyMMdd"));
        return PhoneRespUtil.success(list, req);
    }
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/impl/ServiceImpl5106.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,133 @@
package com.fzzy.igds.app.v1.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.fzzy.common.constant.RespCodeEnum;
import com.fzzy.igds.app.v1.constant.PhoneConstant;
import com.fzzy.igds.app.v1.data.AuthUser;
import com.fzzy.igds.app.v1.data.ParamPatrol;
import com.fzzy.igds.app.v1.data.PhoneRequest;
import com.fzzy.igds.app.v1.data.PhoneResponse;
import com.fzzy.igds.app.v1.service.PhoneService;
import com.fzzy.igds.app.v1.util.PhoneRespUtil;
import com.fzzy.igds.domain.Patrol;
import com.fzzy.igds.domain.PatrolConf;
import com.fzzy.igds.domain.PatrolRecord;
import com.fzzy.igds.mapper.PatrolConfMapper;
import com.fzzy.igds.mapper.PatrolMapper;
import com.fzzy.igds.mapper.PatrolRecordMapper;
import com.fzzy.igds.service.FileService;
import com.fzzy.igds.service.PatrolService;
import com.fzzy.igds.utils.ContextUtil;
import com.ruoyi.common.config.FrameworkConfig;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
/**
 * @Author: YYC
 * @Description: å·¡æ£€ç›‘管-电子巡更打卡
 * @DateTime: 2026-1-12 14:43
 **/
@Service
public class ServiceImpl5106 implements PhoneService {
    @Resource
    private PatrolConfMapper patrolConfMapper;
    @Resource
    private PatrolMapper patrolMapper;
    @Resource
    private PatrolRecordMapper patrolRecordMapper;
    @Resource
    private FileService fileService;
    @Override
    public String getInterfaceId() {
        return PhoneConstant.API_PHONE_5106;
    }
    @Override
    public PhoneResponse<Object> execute(PhoneRequest<JSONObject> req, AuthUser authUser) throws Exception {
        //转化对象
        ParamPatrol param = JSONObject.parseObject(req.getData().toString(), ParamPatrol.class);
        if (null == param) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!");
        }
        //参数验证
        if (StringUtils.isEmpty(param.getDeptId())) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!");
        }
        //参数验证
        if (StringUtils.isEmpty(param.getLongitude())) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!");
        }
        //参数验证
        if (StringUtils.isEmpty(param.getLatitude())) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!");
        }
        //参数验证
        if (StringUtils.isEmpty(param.getUserName())) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!");
        }
        PatrolRecord patrolRecord = new PatrolRecord();
        String longitude = param.getLongitude();
        String latitude = param.getLatitude();
        patrolRecord.setLongitude(longitude.substring(0, (longitude.indexOf(".") + 6)));
        patrolRecord.setLatitude(latitude.substring(0, (latitude.indexOf(".") + 6)));
        patrolRecord.setCreateTime(new Date());
        patrolRecord.setPatrolId(DateFormatUtils.format(patrolRecord.getCreateTime(), "yyyyMMdd"));
        patrolRecord.setId(ContextUtil.generateId());
        patrolRecord.setCompanyId(authUser.getCompanyId());
        patrolRecord.setCreateBy(authUser.getCname());
        patrolRecord.setUpdateTime(new Date());
        patrolRecord.setUpdateBy(authUser.getCname());
        String path = fileService.getFileSavePath("PATROL") + param.getImgName();
        patrolRecord.setImgName(path.replace(FrameworkConfig.getProfile(), "/profile/"));
        QueryWrapper<Patrol> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("id", patrolRecord.getPatrolId());
        List<Patrol> patrolList = patrolMapper.selectList(queryWrapper);
        if (null == patrolList) {
            Patrol patrol = new Patrol();
            patrol.setId(patrolRecord.getPatrolId());
            patrol.setDeptId(authUser.getDeptId());
            patrol.setUserId(authUser.getUsername());
            patrol.setUserName(authUser.getCname());
            patrol.setCompanyId(authUser.getCompanyId());
            patrol.setCreateBy(authUser.getCname());
            patrol.setCreateTime(new Date());
            patrol.setUpdateBy(authUser.getCname());
            patrol.setUpdateTime(new Date());
            QueryWrapper<PatrolConf> queryConfWrapper = new QueryWrapper<>();
            queryConfWrapper.ge("start", new Date());
            queryConfWrapper.le("end", new Date());
            queryConfWrapper.eq("company_id", authUser.getCompanyId());
            queryConfWrapper.eq("dept_id", authUser.getDeptId());
            List<PatrolConf> confList = patrolConfMapper.selectList(queryConfWrapper);
            if (null == confList) {
                return PhoneRespUtil.error(RespCodeEnum.CODE_1007, "请填写相关的班次信息!!");
            }
            PatrolConf patrolConf = confList.get(0);
            patrol.setConfId(patrolConf.getId());
            patrol.setConfName(patrolConf.getName());
            int insert = patrolMapper.insert(patrol);
            if (insert > 0) {
                return PhoneRespUtil.error(RespCodeEnum.CODE_1007, "保存失败!!");
            }
        }
        int insert = patrolRecordMapper.insert(patrolRecord);
        if (insert > 0) {
            return PhoneRespUtil.success(RespCodeEnum.CODE_0000, req);
        }
        return PhoneRespUtil.error(RespCodeEnum.CODE_1007, "保存失败!!");
    }
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/impl/ServiceImpl5107.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,60 @@
package com.fzzy.igds.app.v1.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.fzzy.common.constant.RespCodeEnum;
import com.fzzy.common.utils.Base64Util;
import com.fzzy.igds.app.v1.constant.PhoneConstant;
import com.fzzy.igds.app.v1.data.AuthUser;
import com.fzzy.igds.app.v1.data.ParamPatrol;
import com.fzzy.igds.app.v1.data.PhoneRequest;
import com.fzzy.igds.app.v1.data.PhoneResponse;
import com.fzzy.igds.app.v1.service.PhoneService;
import com.fzzy.igds.app.v1.util.PhoneRespUtil;
import com.fzzy.igds.domain.PatrolRecord;
import com.fzzy.igds.mapper.PatrolRecordMapper;
import com.fzzy.igds.service.FileService;
import com.ruoyi.common.config.FrameworkConfig;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
 * @Author: YYC
 * @Description: å·¡æ£€ç›‘管-巡更照片查看
 * @DateTime: 2026-1-12 14:43
 **/
@Service
public class ServiceImpl5107 implements PhoneService {
    @Resource
    private PatrolRecordMapper patrolRecordMapper;
    @Resource
    private FileService fileService;
    @Override
    public String getInterfaceId() {
        return PhoneConstant.API_PHONE_5107;
    }
    @Override
    public PhoneResponse<Object> execute(PhoneRequest<JSONObject> req, AuthUser authUser) throws Exception {
        //转化对象
        ParamPatrol param = JSONObject.parseObject(req.getData().toString(), ParamPatrol.class);
        if (null == param) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!");
        }
        //参数验证
        if (StringUtils.isEmpty(param.getId())) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!");
        }
        param.setCompanyId(authUser.getCompanyId());
        PatrolRecord patrolRecord = patrolRecordMapper.selectById(param.getId());
        if (StringUtils.isNotEmpty(patrolRecord.getImgName())) {
            String imgData = Base64Util.getImageStr(patrolRecord.getImgName().replace("/profile/", FrameworkConfig.getProfile()));
            patrolRecord.setImgName(imgData);
        }
        return PhoneRespUtil.success(patrolRecord, req);
    }
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/impl/ServiceImpl5108.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,88 @@
package com.fzzy.igds.app.v1.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.fzzy.common.constant.RespCodeEnum;
import com.fzzy.igds.app.v1.constant.PhoneConstant;
import com.fzzy.igds.app.v1.data.AuthUser;
import com.fzzy.igds.app.v1.data.ParamPatrol;
import com.fzzy.igds.app.v1.data.PhoneRequest;
import com.fzzy.igds.app.v1.data.PhoneResponse;
import com.fzzy.igds.app.v1.dto.PSnapDto;
import com.fzzy.igds.app.v1.service.PhoneService;
import com.fzzy.igds.app.v1.util.PhoneRespUtil;
import com.fzzy.igds.domain.Dept;
import com.fzzy.igds.domain.PatrolRecord;
import com.fzzy.igds.domain.SnapRecord;
import com.fzzy.igds.mapper.SnapRecordMapper;
import com.fzzy.igds.service.CoreDeptService;
import com.fzzy.igds.service.FileService;
import com.fzzy.igds.utils.ContextUtil;
import com.fzzy.igds.utils.DateUtil;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.apache.commons.lang3.time.DateUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
 * @Author: YYC
 * @Description: æŠ“拍管理-抓拍记录列表
 * @DateTime: 2026-1-12 14:43
 **/
@Service
public class ServiceImpl5108 implements PhoneService {
    @Resource
    private SnapRecordMapper snapRecordMapper;
    @Resource
    private CoreDeptService deptService;
    @Override
    public String getInterfaceId() {
        return PhoneConstant.API_PHONE_5108;
    }
    @Override
    public PhoneResponse<Object> execute(PhoneRequest<JSONObject> req, AuthUser authUser) throws Exception {
        //转化对象
        ParamPatrol param = JSONObject.parseObject(req.getData().toString(), ParamPatrol.class);
        if (null == param) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!");
        }
        //参数验证
        if (StringUtils.isEmpty(param.getDeptId())) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!");
        }
        //参数验证
        if (null == param.getDateTime()) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!");
        }
        QueryWrapper<SnapRecord> queryWrapper = new QueryWrapper<>();
        param.setCompanyId(ContextUtil.getCompanyId());
        queryWrapper.eq("company_id", param.getCompanyId());
        queryWrapper.likeRight("dept_id", param.getDeptId());
        queryWrapper.ge("snap_time", DateUtil.getCurZero(param.getDateTime()));
        queryWrapper.le("snap_time", DateUtil.getNextZero(param.getDateTime()));
        List<SnapRecord> list = snapRecordMapper.selectList(queryWrapper);
        PSnapDto snapDto;
        Dept dept;
        List<PSnapDto> snapDtoList = new ArrayList<>();
        for (SnapRecord snapRecord:list){
            snapDto = new PSnapDto();
            BeanUtils.copyProperties(snapRecord,snapDto);
            dept = deptService.getDeptById(snapRecord.getDeptId());
            snapDto.setDeptName(dept.getKqmc());
            snapDtoList.add(snapDto);
        }
        return PhoneRespUtil.success(snapDtoList, req);
    }
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/impl/ServiceImpl5109.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,60 @@
package com.fzzy.igds.app.v1.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.fzzy.common.constant.RespCodeEnum;
import com.fzzy.common.utils.Base64Util;
import com.fzzy.igds.app.v1.constant.PhoneConstant;
import com.fzzy.igds.app.v1.data.AuthUser;
import com.fzzy.igds.app.v1.data.ParamPatrol;
import com.fzzy.igds.app.v1.data.PhoneRequest;
import com.fzzy.igds.app.v1.data.PhoneResponse;
import com.fzzy.igds.app.v1.service.PhoneService;
import com.fzzy.igds.app.v1.util.PhoneRespUtil;
import com.fzzy.igds.domain.PatrolRecord;
import com.fzzy.igds.domain.SnapRecord;
import com.fzzy.igds.mapper.SnapRecordMapper;
import com.fzzy.igds.service.FileService;
import com.ruoyi.common.config.FrameworkConfig;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
 * @Author: YYC
 * @Description: æŠ“拍管理-抓拍照片查看
 * @DateTime: 2026-1-12 14:43
 **/
@Service
public class ServiceImpl5109 implements PhoneService {
    @Resource
    private SnapRecordMapper snapRecordMapper;
    @Resource
    private FileService fileService;
    @Override
    public String getInterfaceId() {
        return PhoneConstant.API_PHONE_5109;
    }
    @Override
    public PhoneResponse<Object> execute(PhoneRequest<JSONObject> req, AuthUser authUser) throws Exception {
        //转化对象
        ParamPatrol param = JSONObject.parseObject(req.getData().toString(), ParamPatrol.class);
        if (null == param) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!");
        }
        //参数验证
        if (StringUtils.isEmpty(param.getId())) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!");
        }
        param.setCompanyId(authUser.getCompanyId());
        SnapRecord snapRecord = snapRecordMapper.selectById(param.getId());
        if (StringUtils.isNotEmpty(snapRecord.getImgName())) {
            String imgData = Base64Util.getImageStr(snapRecord.getImgName().replace("/profile/", FrameworkConfig.getProfile()));
            snapRecord.setImgName(imgData);
        }
        return PhoneRespUtil.success(snapRecord, req);
    }
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/impl/ServiceImpl5110.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,83 @@
package com.fzzy.igds.app.v1.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.fzzy.common.constant.RespCodeEnum;
import com.fzzy.igds.app.v1.constant.PhoneConstant;
import com.fzzy.igds.app.v1.data.AuthUser;
import com.fzzy.igds.app.v1.data.ParamPatrol;
import com.fzzy.igds.app.v1.data.PhoneRequest;
import com.fzzy.igds.app.v1.data.PhoneResponse;
import com.fzzy.igds.app.v1.dto.PEventInfoDto;
import com.fzzy.igds.app.v1.service.PhoneService;
import com.fzzy.igds.app.v1.util.PhoneRespUtil;
import com.fzzy.igds.domain.Dept;
import com.fzzy.igds.domain.EventInfo;
import com.fzzy.igds.domain.SnapRecord;
import com.fzzy.igds.mapper.EventInfoMapper;
import com.fzzy.igds.service.CoreDeptService;
import com.fzzy.igds.utils.ContextUtil;
import com.fzzy.igds.utils.DateUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
 * @Author: YYC
 * @Description: AI事件管理-AI记录列表
 * @DateTime: 2026-1-12 14:43
 **/
@Service
public class ServiceImpl5110 implements PhoneService {
    @Resource
    private EventInfoMapper eventInfoMapper;
    @Resource
    private CoreDeptService deptService;
    @Override
    public String getInterfaceId() {
        return PhoneConstant.API_PHONE_5110;
    }
    @Override
    public PhoneResponse<Object> execute(PhoneRequest<JSONObject> req, AuthUser authUser) throws Exception {
        //转化对象
        ParamPatrol param = JSONObject.parseObject(req.getData().toString(), ParamPatrol.class);
        if (null == param) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!");
        }
        //参数验证
        if (StringUtils.isEmpty(param.getDeptId())) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!");
        }
        //参数验证
        if (null == param.getDateTime()) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!");
        }
        QueryWrapper<EventInfo> queryWrapper = new QueryWrapper<>();
        param.setCompanyId(ContextUtil.getCompanyId());
        queryWrapper.eq("company_id", param.getCompanyId());
        queryWrapper.likeRight("dept_id", param.getDeptId());
        queryWrapper.ge("time", DateUtil.getCurZero(param.getDateTime()));
        queryWrapper.le("time", DateUtil.getNextZero(param.getDateTime()));
        List<EventInfo> list = eventInfoMapper.selectList(queryWrapper);
        List<PEventInfoDto> dtoList = new ArrayList<>();
        PEventInfoDto eventInfoDto;
        Dept dept;
        for (EventInfo eventInfo:list){
            eventInfoDto = new PEventInfoDto();
            BeanUtils.copyProperties(eventInfo,eventInfoDto);
            dept = deptService.getDeptById(eventInfo.getDeptId());
            eventInfoDto.setDeptName(dept.getKqmc());
            dtoList.add(eventInfoDto);
        }
        return PhoneRespUtil.success(dtoList, req);
    }
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/impl/ServiceImpl5111.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,51 @@
package com.fzzy.igds.app.v1.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.fzzy.common.constant.RespCodeEnum;
import com.fzzy.common.utils.Base64Util;
import com.fzzy.igds.app.v1.constant.PhoneConstant;
import com.fzzy.igds.app.v1.data.AuthUser;
import com.fzzy.igds.app.v1.data.ParamPatrol;
import com.fzzy.igds.app.v1.data.PhoneRequest;
import com.fzzy.igds.app.v1.data.PhoneResponse;
import com.fzzy.igds.app.v1.dto.PPatrolDto;
import com.fzzy.igds.app.v1.service.PhoneService;
import com.fzzy.igds.app.v1.util.PhoneRespUtil;
import com.fzzy.igds.domain.SnapRecord;
import com.ruoyi.common.config.FrameworkConfig;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
/**
 * @Author: YYC
 * @Description: AI事件管理-AI巡更照片查看
 * @DateTime: 2026-1-12 14:43
 **/
@Service
public class ServiceImpl5111 implements PhoneService {
    @Override
    public String getInterfaceId() {
        return PhoneConstant.API_PHONE_5111;
    }
    @Override
    public PhoneResponse<Object> execute(PhoneRequest<JSONObject> req, AuthUser authUser) throws Exception {
        //转化对象
        ParamPatrol param = JSONObject.parseObject(req.getData().toString(), ParamPatrol.class);
        if (null == param) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!");
        }
        //参数验证
        if (StringUtils.isEmpty(param.getImgName())) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_2000, "未找到抓拍照片!!");
        }
        PPatrolDto patrolDto = new PPatrolDto();
        if (StringUtils.isNotEmpty(param.getImgName())) {
            String imgData = Base64Util.getImageStr(param.getImgName().replace("/profile/", FrameworkConfig.getProfile()));
            patrolDto.setImgName(imgData);
        }
        return PhoneRespUtil.success(patrolDto, req);
    }
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/impl/ServiceImpl5201.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,54 @@
package com.fzzy.igds.app.v1.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.fzzy.common.constant.RespCodeEnum;
import com.fzzy.igds.app.v1.constant.PhoneConstant;
import com.fzzy.igds.app.v1.data.AuthUser;
import com.fzzy.igds.app.v1.data.ParamCommon;
import com.fzzy.igds.app.v1.data.PhoneRequest;
import com.fzzy.igds.app.v1.data.PhoneResponse;
import com.fzzy.igds.app.v1.service.PhoneService;
import com.fzzy.igds.app.v1.util.PhoneRespUtil;
import com.fzzy.igds.domain.Depot;
import com.fzzy.igds.service.DepotService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
 * @Author: YYC
 * @Description: ç²®æƒ…数据查看-仓房列表
 * @DateTime: 2026-1-12 14:43
 **/
@Service
public class ServiceImpl5201 implements PhoneService {
    @Resource
    private DepotService depotService;
    @Override
    public String getInterfaceId() {
        return PhoneConstant.API_PHONE_5201;
    }
    @Override
    public PhoneResponse<Object> execute(PhoneRequest<JSONObject> req, AuthUser authUser) throws Exception {
        //转化为对象
        ParamCommon param = JSONObject.parseObject(req.getData().toString(), ParamCommon.class);
        if (null == param || StringUtils.isEmpty(param.getDeptId())) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请核查!");
        }
        //获取仓库信息
        List<Depot> depotList = depotService.getData(authUser.getCompanyId(), param.getDeptId(), false);
        if (null == depotList || depotList.isEmpty()) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "未查到数据!");
        }
        return PhoneRespUtil.success(depotList, req);
    }
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/impl/ServiceImpl5202.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
package com.fzzy.igds.app.v1.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.fzzy.igds.app.v1.constant.PhoneConstant;
import com.fzzy.igds.app.v1.data.AuthUser;
import com.fzzy.igds.app.v1.data.PhoneRequest;
import com.fzzy.igds.app.v1.data.PhoneResponse;
import com.fzzy.igds.app.v1.service.PhoneService;
import org.springframework.stereotype.Service;
/**
 * @Author: YYC
 * @Description: ç²®æƒ…数据查看-平房仓粮情接口
 * @DateTime: 2026-1-12 14:43
 **/
@Service
public class ServiceImpl5202 implements PhoneService {
    @Override
    public String getInterfaceId() {
        return PhoneConstant.API_PHONE_5202;
    }
    @Override
    public PhoneResponse<Object> execute(PhoneRequest<JSONObject> req, AuthUser authUser) throws Exception {
        return null;
    }
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/impl/ServiceImpl5203.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
package com.fzzy.igds.app.v1.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.fzzy.igds.app.v1.constant.PhoneConstant;
import com.fzzy.igds.app.v1.data.AuthUser;
import com.fzzy.igds.app.v1.data.PhoneRequest;
import com.fzzy.igds.app.v1.data.PhoneResponse;
import com.fzzy.igds.app.v1.service.PhoneService;
import org.springframework.stereotype.Service;
/**
 * @Author: YYC
 * @Description: ç²®æƒ…数据查看-圆筒仓粮情接口
 * @DateTime: 2026-1-12 14:43
 **/
@Service
public class ServiceImpl5203 implements PhoneService {
    @Override
    public String getInterfaceId() {
        return PhoneConstant.API_PHONE_5203;
    }
    @Override
    public PhoneResponse<Object> execute(PhoneRequest<JSONObject> req, AuthUser authUser) throws Exception {
        return null;
    }
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/impl/ServiceImpl5204.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,154 @@
package com.fzzy.igds.app.v1.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.fzzy.common.constant.RespCodeEnum;
import com.fzzy.common.utils.DateUtil;
import com.fzzy.igds.app.v1.constant.PhoneConstant;
import com.fzzy.igds.app.v1.data.AuthUser;
import com.fzzy.igds.app.v1.data.ParamDepot;
import com.fzzy.igds.app.v1.data.PhoneRequest;
import com.fzzy.igds.app.v1.data.PhoneResponse;
import com.fzzy.igds.app.v1.dto.PDetailDto;
import com.fzzy.igds.app.v1.dto.PGrainDto;
import com.fzzy.igds.app.v1.dto.PPointDto;
import com.fzzy.igds.app.v1.service.PhoneService;
import com.fzzy.igds.app.v1.util.PhoneRespUtil;
import com.fzzy.igds.app.v1.util.PhoneUtil;
import com.fzzy.igds.data.GrainData;
import com.fzzy.igds.data.GrainLay;
import com.fzzy.igds.data.GrainParam;
import com.fzzy.igds.data.GrainPoint;
import com.fzzy.igds.domain.Depot;
import com.fzzy.igds.domain.DepotConf;
import com.fzzy.igds.domain.Grain;
import com.fzzy.igds.service.DepotConfService;
import com.fzzy.igds.service.DepotService;
import com.fzzy.igds.service.GrainService;
import com.fzzy.igds.utils.GrainDataBuilder;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
 * @Author: YYC
 * @Description: ç²®æƒ…数据查看-历史数据(根据页码查询)接口
 * @DateTime: 2026-1-12 14:43
 **/
@Service
public class ServiceImpl5204 implements PhoneService {
    @Autowired
    private PhoneUtil phoneUtil;
    @Autowired
    private DepotService depotService;
    @Autowired
    private GrainService coreGrainService;
    @Autowired
    private DepotConfService depotConfService;
    @Override
    public String getInterfaceId() {
        return PhoneConstant.API_PHONE_5204;
    }
    @Override
    public PhoneResponse<Object> execute(PhoneRequest<JSONObject> req, AuthUser authUser) throws Exception {
        ParamDepot param = JSONObject.parseObject(req.getData().toString(), ParamDepot.class);
        if (null == param) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!");
        }
        //参数验证
        if (StringUtils.isEmpty(param.getDeptId()) || StringUtils.isEmpty(param.getDepotId()) || null == param.getDateTime()) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!");
        }
        GrainParam grainParam = new GrainParam();
        grainParam.setDepotId(param.getDepotId());
        grainParam.setCompanyId(authUser.getCompanyId());
        Date date = DateUtils.parseDate(param.getDateTime(), "yyyy-MM");
        //设置查询时间,月的第一天到最后一天
        grainParam.setStart(DateUtil.getMonthFirst(date));
        grainParam.setEnd(DateUtil.getNextMonthFirst(date));
        grainParam.setDeptId(param.getDeptId());
        //查询粮情数据
        List<Grain> list = coreGrainService.listData(grainParam);
        Depot depot = depotService.getCacheDepot(authUser.getCompanyId(), param.getDepotId());
        if (null == list || list.isEmpty()) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1005, "该仓库暂无粮情数据!");
        }
        //返回数据封装
        List<PGrainDto> dtoList = new ArrayList<>();
        PGrainDto dto;
        List<PPointDto> listPoints;
        List<PDetailDto> listDetail;
        PPointDto pointDto;
        PDetailDto detailDto;
        DepotConf depotConf;
        GrainData data;
        Depot depotData;
        List<GrainData> result = new ArrayList<>();
        for (Grain grain : list) {
            depotConf = depotConfService.getCacheDepotConfByDepotId(grain.getCompanyId(), grain.getDepotId());
            data = new GrainData();
            BeanUtils.copyProperties(grain, data);
            // æ·»åŠ ä»“åº“ä¿¡æ¯
            depotData = depotService.getCacheDepot(param.getCompanyId(), param.getDepotId());
            GrainDataBuilder.updateGrainData(data, depotConf, depotData.getDepotType());
            result.add(data);
        }
        for (GrainData grainData : result) {
            dto = new PGrainDto();
            dto.setDepotId(grainData.getDepotId());
            dto.setDepotName(phoneUtil.getDepotName(authUser.getCompanyId(),dto.getDepotId()));
            dto.setDepotType(depot.getDepotType());
            dto.setReceiveDate(grainData.getReceiveDate());
            dto.setTempIn(grainData.getTempIn());
            dto.setHumidityIn(grainData.getHumidityIn());
            dto.setTempOut(grainData.getTempOut());
            dto.setHumidityOut(grainData.getHumidityOut());
            dto.setTempMax(grainData.getTempMax());
            dto.setTempMin(grainData.getTempMin());
            dto.setTempAve(grainData.getTempAve());
            dto.setCable(grainData.getCable().replaceAll(",","-"));
            if(StringUtils.isNotEmpty(grainData.getCableCir())){
                dto.setCableCir(grainData.getCableCir().replaceAll(",", "-"));
            }
            listPoints = new ArrayList<>();
            for (GrainPoint point : grainData.getListPoints()) {
                pointDto = new PPointDto();
                pointDto.setX(point.getX());
                pointDto.setY(point.getY());
                pointDto.setZ(point.getZ());
                pointDto.setFz(point.getFz());
                pointDto.setTemp(point.getTemp());
                listPoints.add(pointDto);
            }
            dto.setPoints(listPoints);
            listDetail = new ArrayList<>();
            for (GrainLay lay : grainData.getListLays()) {
                detailDto = new PDetailDto();
                detailDto.setFz(lay.getFz());
                detailDto.setFzName(lay.getFz() + "层");
                detailDto.setTempMax(lay.getTempMax());
                detailDto.setTempMin(lay.getTempMin());
                detailDto.setTempAve(lay.getTempAve());
                listDetail.add(detailDto);
            }
            dto.setDetails(listDetail);
            dtoList.add(dto);
        }
        return PhoneRespUtil.success(dtoList, req);
    }
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/impl/ServiceImpl5205.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,144 @@
package com.fzzy.igds.app.v1.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.fzzy.common.constant.RespCodeEnum;
import com.fzzy.igds.app.v1.constant.PhoneConstant;
import com.fzzy.igds.app.v1.data.AuthUser;
import com.fzzy.igds.app.v1.data.ParamDepot;
import com.fzzy.igds.app.v1.data.PhoneRequest;
import com.fzzy.igds.app.v1.data.PhoneResponse;
import com.fzzy.igds.app.v1.dto.PDetailDto;
import com.fzzy.igds.app.v1.dto.PGrainDto;
import com.fzzy.igds.app.v1.dto.PPointDto;
import com.fzzy.igds.app.v1.service.PhoneService;
import com.fzzy.igds.app.v1.util.PhoneRespUtil;
import com.fzzy.igds.app.v1.util.PhoneUtil;
import com.fzzy.igds.data.GrainData;
import com.fzzy.igds.data.GrainLay;
import com.fzzy.igds.data.GrainParam;
import com.fzzy.igds.data.GrainPoint;
import com.fzzy.igds.domain.Depot;
import com.fzzy.igds.domain.DepotConf;
import com.fzzy.igds.domain.Grain;
import com.fzzy.igds.service.DepotConfService;
import com.fzzy.igds.service.DepotService;
import com.fzzy.igds.service.GrainService;
import com.fzzy.igds.utils.GrainDataBuilder;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
 * @Author: YYC
 * @Description: ç²®æƒ…数据查看-平房仓粮情接口
 * @DateTime: 2026-1-12 14:43
 **/
@Service
public class ServiceImpl5205 implements PhoneService {
    @Autowired
    private PhoneUtil phoneUtil;
    @Autowired
    private GrainService grainService;
    @Autowired
    private DepotService depotService;
    @Autowired
    private DepotConfService depotConfService;
    @Override
    public String getInterfaceId() {
        return PhoneConstant.API_PHONE_5205;
    }
    @Override
    public PhoneResponse<Object> execute(PhoneRequest<JSONObject> req, AuthUser authUser) throws Exception {
        ParamDepot param = JSONObject.parseObject(req.getData().toString(), ParamDepot.class);
        if (null == param) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!");
        }
        //参数验证
        if (StringUtils.isEmpty(param.getDeptId()) || StringUtils.isEmpty(param.getDepotId())) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!");
        }
        GrainParam grainParam = new GrainParam();
        grainParam.setDeptId(param.getDeptId());
        grainParam.setDepotId(param.getDepotId());
        grainParam.setCompanyId(authUser.getCompanyId());
        grainParam.setLimit(1);//设置默认只获取一条数据
        //查询粮情数据
        List<Grain> list = grainService.listData(grainParam);
        Depot depot = depotService.getCacheDepot(authUser.getCompanyId(), param.getDepotId());
        if (null == list || list.isEmpty()) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_2000, req, "该仓库暂无粮情数据!");
        }
        DepotConf depotConf;
        GrainData data;
        Depot depotData;
        List<GrainData> result = new ArrayList<>();
        for (Grain grain : list) {
            depotConf = depotConfService.getCacheDepotConfByDepotId(grain.getCompanyId(), grain.getDepotId());
            data = new GrainData();
            BeanUtils.copyProperties(grain, data);
            // æ·»åŠ ä»“åº“ä¿¡æ¯
            depotData = depotService.getCacheDepot(param.getCompanyId(), param.getDepotId());
            GrainDataBuilder.updateGrainData(data, depotConf, depotData.getDepotType());
            result.add(data);
        }
        //取最近时间的粮情数据
        GrainData grainData = result.get(0);
        //转换响应数据
        PGrainDto dto = new PGrainDto();
        dto.setDepotId(grainData.getDepotId());
        dto.setDepotName(phoneUtil.getDepotName(authUser.getCompanyId(), dto.getDepotId()));
        dto.setDepotType(depot.getDepotType());
        dto.setReceiveDate(grainData.getReceiveDate());
        dto.setTempIn(grainData.getTempIn());
        dto.setHumidityIn(grainData.getHumidityIn());
        dto.setTempOut(grainData.getTempOut());
        dto.setHumidityOut(grainData.getHumidityOut());
        dto.setTempMax(grainData.getTempMax());
        dto.setTempMin(grainData.getTempMin());
        dto.setTempAve(grainData.getTempAve());
        dto.setCable(grainData.getCable().replaceAll(",","-"));
        if(StringUtils.isNotEmpty(grainData.getCableCir())){
            dto.setCableCir(grainData.getCableCir().replaceAll(",", "-"));
        }
        List<PPointDto> listPoints = new ArrayList<>();
        PPointDto pointDto;
        for (GrainPoint point : grainData.getListPoints()) {
            pointDto = new PPointDto();
            pointDto.setX(point.getX());
            pointDto.setY(point.getY());
            pointDto.setZ(point.getZ());
            pointDto.setFz(point.getFz());
            pointDto.setTemp(point.getTemp());
            listPoints.add(pointDto);
        }
        dto.setPoints(listPoints);
        List<PDetailDto> listDetail = new ArrayList<>();
        PDetailDto detailDto;
        for (GrainLay lay : grainData.getListLays()) {
            detailDto = new PDetailDto();
            detailDto.setFz(lay.getFz());
            detailDto.setFzName(lay.getFz() + "层");
            detailDto.setTempMax(lay.getTempMax());
            detailDto.setTempMin(lay.getTempMin());
            detailDto.setTempAve(lay.getTempAve());
            listDetail.add(detailDto);
        }
        dto.setDetails(listDetail);
        return PhoneRespUtil.success(dto, req);
    }
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/impl/ServiceImpl5206.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,94 @@
package com.fzzy.igds.app.v1.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.fzzy.common.constant.RespCodeEnum;
import com.fzzy.igds.app.v1.constant.PhoneConstant;
import com.fzzy.igds.app.v1.data.AuthUser;
import com.fzzy.igds.app.v1.data.ParamDepot;
import com.fzzy.igds.app.v1.data.PhoneRequest;
import com.fzzy.igds.app.v1.data.PhoneResponse;
import com.fzzy.igds.app.v1.dto.PQuantityDto;
import com.fzzy.igds.app.v1.service.PhoneService;
import com.fzzy.igds.app.v1.util.PhoneRespUtil;
import com.fzzy.igds.constant.DepotType;
import com.fzzy.igds.domain.Depot;
import com.fzzy.igds.domain.Quantity;
import com.fzzy.igds.service.DepotService;
import com.fzzy.igds.service.QuantityService;
import com.fzzy.igds.service.SysDeptService;
import com.fzzy.igds.utils.ContextUtil;
import com.ruoyi.common.core.domain.entity.SysDept;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
 * @Author: YYC
 * @Description: æ–™ä½æ€»è§ˆ-料位列表
 * @DateTime: 2026-1-12 14:43
 **/
@Service
public class ServiceImpl5206 implements PhoneService {
    @Resource
    private DepotService depotService;
    @Resource
    private QuantityService quantityService;
    @Autowired
    private SysDeptService deptService;
    @Override
    public String getInterfaceId() {
        return PhoneConstant.API_PHONE_5206;
    }
    @Override
    public PhoneResponse<Object> execute(PhoneRequest<JSONObject> req, AuthUser authUser) throws Exception {
        ParamDepot param = JSONObject.parseObject(req.getData().toString(), ParamDepot.class);
        if (null == param) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!");
        }
        //参数验证
        if (StringUtils.isEmpty(param.getDeptId())) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!");
        }
        if (StringUtils.isEmpty(param.getDeptId())) {
            param.setDeptId(authUser.getDeptId());
        }
        //获取所有筒仓及浅圆仓
        List<Depot> depotList = depotService.getCacheDepotList(param.getDeptId());
        if (null == depotList || depotList.isEmpty()) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "未查到信息!!");
        }
        List<PQuantityDto> list = new ArrayList<>();
        List<Quantity> quantityList;
        PQuantityDto quantity;
        SysDept dept;
        for (Depot depot : depotList) {
            if (DepotType.TYPE_02.getCode().equals(depot.getDepotType()) || DepotType.TYPE_04.getCode().equals(depot.getDepotType())) {
                quantityList = quantityService.getQuantityList(depot.getId(), 1);
                quantity = new PQuantityDto();
                if (null == quantityList || quantityList.isEmpty()) {
                    quantity.setDepotId(depot.getId());
                } else {
                    BeanUtils.copyProperties(quantityList.get(0),quantity);
                }
                dept = deptService.getCacheDept(depot.getCompanyId(),depot.getDeptId());
                quantity.setDepotData(depot);
                quantity.setDeptName(dept.getDeptName());
                list.add(quantity);
            }
        }
        return PhoneRespUtil.success(list, req);
    }
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/impl/ServiceImpl5207.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,95 @@
package com.fzzy.igds.app.v1.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.fzzy.common.constant.RespCodeEnum;
import com.fzzy.igds.app.v1.constant.PhoneConstant;
import com.fzzy.igds.app.v1.data.AuthUser;
import com.fzzy.igds.app.v1.data.ParamPatrol;
import com.fzzy.igds.app.v1.data.PhoneRequest;
import com.fzzy.igds.app.v1.data.PhoneResponse;
import com.fzzy.igds.app.v1.dto.PQuantityDto;
import com.fzzy.igds.app.v1.service.PhoneService;
import com.fzzy.igds.app.v1.util.PhoneRespUtil;
import com.fzzy.igds.domain.Depot;
import com.fzzy.igds.domain.Quantity;
import com.fzzy.igds.domain.SnapRecord;
import com.fzzy.igds.mapper.QuantityMapper;
import com.fzzy.igds.service.DepotService;
import com.fzzy.igds.service.SysDeptService;
import com.fzzy.igds.utils.ContextUtil;
import com.fzzy.igds.utils.DateUtil;
import com.ruoyi.common.core.domain.entity.SysDept;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
 * @Author: YYC
 * @Description: æ•°é‡ç›‘测-数量监测列表
 * @DateTime: 2026-1-12 14:43
 **/
@Service
public class ServiceImpl5207 implements PhoneService {
    @Resource
    private QuantityMapper quantityMapper;
    @Autowired
    private SysDeptService deptService;
    @Resource
    private DepotService depotService;
    @Override
    public String getInterfaceId() {
        return PhoneConstant.API_PHONE_5207;
    }
    @Override
    public PhoneResponse<Object> execute(PhoneRequest<JSONObject> req, AuthUser authUser) throws Exception {
        //转化对象
        ParamPatrol param = JSONObject.parseObject(req.getData().toString(), ParamPatrol.class);
        if (null == param) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!");
        }
        //参数验证
        if (StringUtils.isEmpty(param.getDeptId())) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!");
        }
        //参数验证
        if (null == param.getDateTime()) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!");
        }
        QueryWrapper<Quantity> queryWrapper = new QueryWrapper<>();
        param.setCompanyId(ContextUtil.getCompanyId());
        queryWrapper.eq("company_id", param.getCompanyId());
        queryWrapper.likeRight("dept_id", param.getDeptId());
        queryWrapper.ge("receive_date", DateUtil.getCurZero(param.getDateTime()));
        queryWrapper.le("receive_date", DateUtil.getNextZero(param.getDateTime()));
        List<Quantity> list = quantityMapper.selectList(queryWrapper);
        if (null == list || list.isEmpty()) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "未查到信息!!");
        }
        PQuantityDto quantityDto;
        SysDept dept;
        Depot depot;
        List<PQuantityDto> dtoList = new ArrayList<>();
        for (Quantity quantity : list) {
            dept = deptService.getCacheDept(quantity.getCompanyId(), quantity.getDeptId());
            depot = depotService.getCacheDepot(quantity.getCompanyId(), quantity.getDepotId());
            quantityDto = new PQuantityDto();
            BeanUtils.copyProperties(quantity, quantityDto);
            quantityDto.setDeptName(dept.getDeptName());
            quantityDto.setDepotData(depot);
            dtoList.add(quantityDto);
        }
        return PhoneRespUtil.success(dtoList, req);
    }
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/impl/ServiceImpl5208.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,65 @@
package com.fzzy.igds.app.v1.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.fzzy.common.constant.RespCodeEnum;
import com.fzzy.common.utils.Base64Util;
import com.fzzy.igds.app.v1.constant.PhoneConstant;
import com.fzzy.igds.app.v1.data.AuthUser;
import com.fzzy.igds.app.v1.data.ParamPatrol;
import com.fzzy.igds.app.v1.data.PhoneRequest;
import com.fzzy.igds.app.v1.data.PhoneResponse;
import com.fzzy.igds.app.v1.dto.PPatrolDto;
import com.fzzy.igds.app.v1.service.PhoneService;
import com.fzzy.igds.app.v1.util.PhoneRespUtil;
import com.fzzy.igds.domain.FileInfo;
import com.fzzy.igds.domain.PatrolRecord;
import com.fzzy.igds.service.FileService;
import com.ruoyi.common.config.FrameworkConfig;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
 * @Author: YYC
 * @Description: æ•°é‡ç›‘测-监测照片
 * @DateTime: 2026-1-12 14:43
 **/
@Service
public class ServiceImpl5208 implements PhoneService {
    @Autowired
    private FileService fileService;
    @Override
    public String getInterfaceId() {
        return PhoneConstant.API_PHONE_5208;
    }
    @Override
    public PhoneResponse<Object> execute(PhoneRequest<JSONObject> req, AuthUser authUser) throws Exception {
        //转化对象
        ParamPatrol param = JSONObject.parseObject(req.getData().toString(), ParamPatrol.class);
        if (null == param) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!");
        }
        //参数验证
        if (StringUtils.isEmpty(param.getId())) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!");
        }
        param.setCompanyId(authUser.getCompanyId());
        List<FileInfo> fileList = fileService.listFile(param.getCompanyId(), param.getId());
        List<PPatrolDto> patrolDtoList = new ArrayList<>();
        PPatrolDto patrolDto;
        for (FileInfo fileInfo : fileList) {
            if (StringUtils.isNotEmpty(fileInfo.getFilePath())) {
                String imgData = Base64Util.getImageStr(fileInfo.getFilePath().replace("/profile/", FrameworkConfig.getProfile()));
                patrolDto = new PPatrolDto();
                patrolDto.setBase64Img(imgData);
                patrolDtoList.add(patrolDto);
            }
        }
        return PhoneRespUtil.success(patrolDtoList, req);
    }
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/impl/ServiceImpl5401.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,111 @@
package com.fzzy.igds.app.v1.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.fzzy.common.constant.RespCodeEnum;
import com.fzzy.igds.app.v1.constant.PhoneConstant;
import com.fzzy.igds.app.v1.data.AuthUser;
import com.fzzy.igds.app.v1.data.ParamInoutHandle;
import com.fzzy.igds.app.v1.data.PhoneRequest;
import com.fzzy.igds.app.v1.data.PhoneResponse;
import com.fzzy.igds.app.v1.dto.PInoutDto;
import com.fzzy.igds.app.v1.service.PhoneService;
import com.fzzy.igds.app.v1.util.PhoneRespUtil;
import com.fzzy.igds.constant.Constant;
import com.fzzy.igds.constant.FoodLevel;
import com.fzzy.igds.constant.FoodVariety;
import com.fzzy.igds.constant.InoutConstant;
import com.fzzy.igds.domain.Depot;
import com.fzzy.igds.domain.InoutRecord;
import com.fzzy.igds.mapper.InoutRecordMapper;
import com.fzzy.igds.service.DepotService;
import com.fzzy.igds.service.InoutRecordService;
import com.fzzy.igds.utils.DateUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
 * @Author: YYC
 * @Description: ç²®é£Ÿè´­é”€-入库待值仓列表
 * @DateTime: 2026-1-12 14:43
 **/
@Service
public class ServiceImpl5401 implements PhoneService {
    @Resource
    private InoutRecordMapper inoutRecordMapper;
    @Resource
    private DepotService depotService;
    @Override
    public String getInterfaceId() {
        return PhoneConstant.API_PHONE_5401;
    }
    @Override
    public PhoneResponse<Object> execute(PhoneRequest<JSONObject> req, AuthUser authUser) throws Exception {
        ParamInoutHandle param = JSONObject.parseObject(req.getData().toString(), ParamInoutHandle.class);
        if (null == param) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!");
        }
        //参数验证
        if (StringUtils.isEmpty(param.getDeptId()) || StringUtils.isEmpty(param.getType())) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!");
        }
        if (StringUtils.isEmpty(param.getCompanyId())) {
            param.setCompanyId(authUser.getCompanyId());
        }
        //设置流程为值仓流程
        param.setProgress(InoutConstant.PROGRESS_HANDLE);
        QueryWrapper<InoutRecord> queryWrapper = new QueryWrapper<>();
        if (com.ruoyi.common.utils.StringUtils.isNotBlank(param.getCompanyId())) {
            queryWrapper.eq("company_id", param.getCompanyId());
        }
        if (StringUtils.isNotBlank(param.getDeptId())) {
            queryWrapper.likeRight("dept_id", param.getDeptId());
        }
        if (StringUtils.isNotBlank(param.getId())) {
            queryWrapper.eq("id", param.getId());
        }
        if (StringUtils.isNotBlank(param.getPlateNum())) {
            queryWrapper.like("plate_num", param.getPlateNum());
        }
        if (StringUtils.isNotBlank(param.getProgress())) {
            queryWrapper.eq("progress", param.getProgress());
        }
        if (StringUtils.isNotBlank(param.getType())) {
            queryWrapper.eq("type", param.getType());
        }
        queryWrapper.ne("record_status", Constant.RECORD_STATUS_DEL); //不是删除的单子,即正常的单子
        queryWrapper.orderByDesc("create_time");
        List<InoutRecord> list = inoutRecordMapper.selectList(queryWrapper);
        List<PInoutDto> listDto = new ArrayList<>();
        PInoutDto inoutData ;
        for (InoutRecord record : list) {
            inoutData = new PInoutDto();
            BeanUtils.copyProperties(record, inoutData);
            Depot depot = depotService.getCacheDepot(authUser.getCompanyId(), record.getDepotId());
            //设置仓库、粮食品种、粮食等级、保管员等名称
            inoutData.setDepotName(depot.getName());
            inoutData.setStoreKeeper(depot.getStoreKeeper());
            inoutData.setStoreKeeperName(depot.getStoreKeeperName());
            inoutData.setFoodVarietyName(FoodVariety.getMsg(record.getFoodVariety()));
            inoutData.setFoodLevelName(FoodLevel.getMsg(record.getFoodLevel()));
            listDto.add(inoutData);
        }
        return PhoneRespUtil.success(listDto, req);
    }
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/impl/ServiceImpl5402.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,194 @@
package com.fzzy.igds.app.v1.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.fzzy.common.constant.RespCodeEnum;
import com.fzzy.igds.app.v1.constant.PhoneConstant;
import com.fzzy.igds.app.v1.data.AuthUser;
import com.fzzy.igds.app.v1.data.ParamInoutHandle;
import com.fzzy.igds.app.v1.data.PhoneRequest;
import com.fzzy.igds.app.v1.data.PhoneResponse;
import com.fzzy.igds.app.v1.service.PhoneService;
import com.fzzy.igds.app.v1.util.PhoneRespUtil;
import com.fzzy.igds.constant.Constant;
import com.fzzy.igds.constant.InoutConstant;
import com.fzzy.igds.data.FileData;
import com.fzzy.igds.data.InoutData;
import com.fzzy.igds.data.PageResponse;
import com.fzzy.igds.domain.FileInfo;
import com.fzzy.igds.domain.InoutRecord;
import com.fzzy.igds.domain.InoutSysConf;
import com.fzzy.igds.mapper.InoutRecordMapper;
import com.fzzy.igds.service.FileService;
import com.fzzy.igds.service.InoutConfService;
import com.fzzy.igds.service.InoutRecordService;
import com.fzzy.igds.utils.ContextUtil;
import com.ruoyi.common.utils.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
/**
 * @Author: YYC
 * @Description: ç²®é£Ÿè´­é”€-入库值仓提交
 * @DateTime: 2026-1-12 14:43
 **/
@Service
public class ServiceImpl5402 implements PhoneService {
    @Resource
    private InoutRecordMapper inoutRecordMapper;
    @Resource
    private InoutRecordService inoutRecordService;
    @Resource
    private InoutConfService inoutConfService;
    @Resource
    private FileService fileService;
    @Override
    public String getInterfaceId() {
        return PhoneConstant.API_PHONE_5402;
    }
    @Override
    public PhoneResponse<Object> execute(PhoneRequest<JSONObject> req, AuthUser authUser) throws Exception {
        //转化为对象
        ParamInoutHandle param = JSONObject.parseObject(req.getData().toString(), ParamInoutHandle.class);
        if (null == param) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!");
        }
        param.setCompanyId(authUser.getCompanyId());
        param.setDeptId(authUser.getDeptId());
        QueryWrapper<InoutRecord> queryWrapper = new QueryWrapper<>();
        if (StringUtils.isNotBlank(param.getCompanyId())) {
            queryWrapper.eq("company_id", param.getCompanyId());
        }
        if (StringUtils.isNotBlank(param.getId())) {
            queryWrapper.eq("id", param.getId());
        }
        //值仓提交前,再次确认当前流水是否为值仓流程
        InoutRecord inoutRecord = inoutRecordMapper.selectOne(queryWrapper);
        if (!InoutConstant.PROGRESS_HANDLE.equals(inoutRecord.getProgress())) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "该单子不在值仓状态,不能进行值仓提交!");
        }
        InoutData data = new InoutData();
        BeanUtils.copyProperties(inoutRecord, data);
        //值仓结束提交,需更新流程状态、值仓结束时间、值仓人、值仓扣重等
        data.setDeOther(param.getDeHandle());
        data.setHandleUser(authUser.getCname());
        //设置值仓图片信息
        List<FileInfo> files = new ArrayList<>();
        FileInfo fileData1 = new FileInfo();
        FileInfo fileData2 = new FileInfo();
        fileData1.setFileName(param.getFileName1());
        fileData2.setFileName(param.getFileName2());
        files.add(fileData1);
        files.add(fileData2);
        data.setFiles(files);
        if (null == data.getHandleUser()) {
            data.setHandleUser(authUser.getUsername());
        }
        InoutSysConf inoutSysConf = inoutConfService.getCacheInoutSysConf(authUser.getCompanyId(), data.getDeptId());
        if (null == inoutSysConf) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "提示:当前系统中流程配置异常,请联系管理员");
        }
        // èŽ·å–ä¸‹ä¸€ä¸ªæµç¨‹çŠ¶æ€
        String curProgress = data.getProgress();
        String nextProgress = getNextProgress(curProgress, data.getType(), inoutSysConf);
        data.setProgress(nextProgress);
        data.setHandleEnd(new Date());
        // æ‰§è¡Œæ•°æ®æ›´æ–°
        int num = inoutRecordService.updateInoutRecord(data);
        if (num == 0) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "提交失败!");
        }
        //附件处理
        fileService.saveInoutFiles(data.getFiles(), data.getId(), curProgress, "INOUT");
        return PhoneRespUtil.success(RespCodeEnum.CODE_0000, req);
//        if (param.getType().equals(PhoneConstant.PHONE_INOUT_START)) {
//            //值仓开始提交,只更新值仓开始时间
//            int i = inoutRecordService.updateInoutRecord(data);
//            if (i > 0) {
//                return PhoneRespUtil.success(RespCodeEnum.CODE_0000, req);
//            }
//            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "提交失败!");
//        } else {
//            //值仓结束提交,需更新流程状态、值仓结束时间、值仓人、值仓扣重等
//            data.setDeOther(param.getDeHandle());
//            data.setHandleUser(authUser.getCname());
//            //设置值仓图片信息
//            List<FileInfo> files = new ArrayList<>();
//            FileInfo fileData1 = new FileInfo();
//            FileInfo fileData2 = new FileInfo();
//            fileData1.setFileName(param.getFileName1());
//            fileData2.setFileName(param.getFileName2());
//            files.add(fileData1);
//            files.add(fileData2);
//            data.setFiles(files);
//
//            if (null == data.getHandleUser()) {
//                data.setHandleUser(authUser.getUsername());
//            }
//            InoutSysConf inoutSysConf = inoutConfService.getCacheInoutSysConf(authUser.getCompanyId(), data.getDeptId());
//            if (null == inoutSysConf) {
//                return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "提示:当前系统中流程配置异常,请联系管理员");
//            }
//
//            // èŽ·å–ä¸‹ä¸€ä¸ªæµç¨‹çŠ¶æ€
//            String curProgress = data.getProgress();
//            String nextProgress = getNextProgress(curProgress, data.getType(), inoutSysConf);
//            data.setProgress(nextProgress);
//            data.setHandleEnd(new Date());
//
//            // æ‰§è¡Œæ•°æ®æ›´æ–°
//            int num = inoutRecordService.updateInoutRecord(data);
//            if (num == 0) {
//                return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "提交失败!");
//            }
//            //附件处理
//            fileService.saveInoutFiles(data.getFiles(), data.getId(), curProgress, "INOUT");
//
//            return PhoneRespUtil.success(RespCodeEnum.CODE_0000, req);
//        }
    }
    /**
     * èŽ·å–ä¸‹ä¸€æµç¨‹
     *
     * @param curProgress
     * @param type
     * @param sysConf
     * @return
     */
    private String getNextProgress(String curProgress, String type, InoutSysConf sysConf) {
        String nextProgress = null;
        List<String> list = null;
        if (Constant.TYPE_IN.equals(type)) {
            list = Arrays.asList(sysConf.getProgressIn().split("-"));
        }
        if (Constant.TYPE_OUT.equals(type)) {
            list = Arrays.asList(sysConf.getProgressOut().split("-"));
        }
        if (list != null) {
            for (int i = 0; i < list.size() - 1; i++) {
                if (curProgress.equals(list.get(i))) {
                    nextProgress = list.get(i + 1);
                    break;
                }
            }
        }
        return nextProgress;
    }
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/impl/ServiceImpl5405.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,122 @@
package com.fzzy.igds.app.v1.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.fzzy.common.constant.RespCodeEnum;
import com.fzzy.igds.app.v1.constant.PhoneConstant;
import com.fzzy.igds.app.v1.data.AuthUser;
import com.fzzy.igds.app.v1.data.ParamInoutRecord;
import com.fzzy.igds.app.v1.data.PhoneRequest;
import com.fzzy.igds.app.v1.data.PhoneResponse;
import com.fzzy.igds.app.v1.dto.PInoutDto;
import com.fzzy.igds.app.v1.dto.PInoutSum;
import com.fzzy.igds.app.v1.service.PhoneService;
import com.fzzy.igds.app.v1.util.PhoneRespUtil;
import com.fzzy.igds.app.v1.util.PhoneUtil;
import com.fzzy.igds.constant.FoodVariety;
import com.fzzy.igds.constant.InoutConstant;
import com.fzzy.igds.constant.InoutProgress;
import com.fzzy.igds.data.InoutData;
import com.fzzy.igds.data.InoutParam;
import com.fzzy.igds.domain.InoutRecord;
import com.fzzy.igds.service.InoutRecordService;
import com.fzzy.igds.utils.NumberUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
 * @Author: YYC
 * @Description: ç²®å®žæ—¶è®°å½•
 * @DateTime: 2026-1-12 14:43
 **/
@Service
public class ServiceImpl5405 implements PhoneService {
    @Resource
    private InoutRecordService inoutRecordService;
    @Resource
    private PhoneUtil phoneUtil;
    @Override
    public String getInterfaceId() {
        return PhoneConstant.API_PHONE_5405;
    }
    @Override
    public PhoneResponse<Object> execute(PhoneRequest<JSONObject> req, AuthUser authUser) throws Exception {
        //转化为对象
        ParamInoutRecord param = JSONObject.parseObject(req.getData().toString(), ParamInoutRecord.class);
        if (null == param) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!");
        }
        //参数验证
        if (StringUtils.isEmpty(param.getDeptId())) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!");
        }
        InoutParam inoutParam = new InoutParam();
        inoutParam.setDeptId(param.getDeptId());
        inoutParam.setStart(new Date());
        inoutParam.setEnd(new Date());
        //当前流程中
        List<InoutRecord> listProgress = inoutRecordService.listInout(inoutParam);
        PInoutSum dto = new PInoutSum();
        double inNum = 0.0;
        double inCompleteNum = 0.0;
        double outNum = 0.0;
        double outCompleteNum = 0.0;
        //统计未完成情况
        List<PInoutDto> listDto = new ArrayList<>();
        PInoutDto inoutDto;
        if (listProgress != null && !listProgress.isEmpty()) {
            for (InoutRecord inoutData : listProgress) {
                inoutDto = new PInoutDto();
                BeanUtils.copyProperties(inoutData, inoutDto);
                if (InoutConstant.TYPE_IN.equals(inoutData.getType())) {
                    inoutDto.setTypeName("入库");
                    inNum++;
                } else {
                    inoutDto.setTypeName("出库");
                    outNum++;
                }
                if (InoutConstant.TYPE_IN.equals(inoutData.getType()) && InoutConstant.PROGRESS_RECORD.equals(inoutData.getProgress())) {
                    inCompleteNum++;
                } else if (InoutConstant.TYPE_OUT.equals(inoutData.getType()) && InoutConstant.PROGRESS_RECORD.equals(inoutData.getProgress())) {
                    outCompleteNum++;
                }
                inoutDto.setProgressName(InoutProgress.getMsg(inoutData.getProgress()));
                inoutDto.setDepotName(phoneUtil.getDepotName(authUser.getCompanyId(), inoutData.getDepotId()));
                inoutDto.setFoodVarietyName(FoodVariety.getMsg(inoutData.getFoodVariety()));
                if (!InoutConstant.PROGRESS_RECORD.equals(inoutData.getProgress())) {
                    listDto.add(inoutDto);
                }
            }
        }
        dto.setListInout(listDto);
        //设置登记数、完成数以及完成率
        dto.setInCompleteNum(inCompleteNum);
        dto.setInSumNum(inNum);
        if (dto.getInSumNum() != 0) {
            dto.setPerInComplete(NumberUtil.keepPrecision(inCompleteNum / inNum * 100, 2));
        }
        dto.setOutCompleteNum(outCompleteNum);
        dto.setOutSumNum(outNum);
        if (dto.getOutSumNum() != 0) {
            dto.setPerOutComplete(NumberUtil.keepPrecision(outCompleteNum / outNum * 100, 2));
        }
        dto.setTime(new Date());
        return PhoneRespUtil.success(dto, req);
    }
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/util/PhoneRespUtil.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,72 @@
package com.fzzy.igds.app.v1.util;
import com.fzzy.common.constant.RespCodeEnum;
import com.fzzy.igds.app.v1.data.PhoneRequest;
import com.fzzy.igds.app.v1.data.PhoneResponse;
/**
 * @Author: YYC
 * @Description:
 * @DateTime: 2026-1-12 17:53
 **/
public class PhoneRespUtil {
    /**
     * å“åº”成功,根据req自动回填需要的参数
     *
     * @param data
     * @param req
     * @return
     */
    public static PhoneResponse success(Object data, PhoneRequest req) {
        return new PhoneResponse(RespCodeEnum.CODE_0000.getCode(),RespCodeEnum.CODE_0000.getMsg(), req.getOutId(), data);
    }
    public static PhoneResponse success(Object data) {
        return new PhoneResponse(RespCodeEnum.CODE_0000.getCode(),RespCodeEnum.CODE_0000.getMsg(), data);
    }
    /**
     * å“åº”异常的封装,自定义异常编码和原因
     *
     * @param code
     * @param msg
     * @param req
     * @return
     */
    public static PhoneResponse error(RespCodeEnum code, PhoneRequest req, String msg) {
        return error(code,req.getOutId(),msg);
    }
    public static PhoneResponse error(RespCodeEnum code, String msg) {
        return new PhoneResponse(code,null, msg);
    }
    /**
     *
     * @param code
     * @param outId
     * @param msg
     * @return
     */
    public static PhoneResponse error(RespCodeEnum code, String outId, String msg) {
        if (null == msg) {
            return new PhoneResponse(code,outId, code.getMsg() );
        }
        return new PhoneResponse(code, outId, msg);
    }
    /**
     * å“åº”异常的封装,通过编码获取异常原因
     *
     * @param code
     * @param req
     * @return
     */
    public static PhoneResponse error(RespCodeEnum code, PhoneRequest req) {
        return new PhoneResponse(code.getCode(),code.getMsg(), req.getOutId(),null);
    }
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/util/PhoneUtil.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,88 @@
package com.fzzy.igds.app.v1.util;
import com.fzzy.igds.constant.Constant;
import com.fzzy.igds.domain.Depot;
import com.fzzy.igds.service.DepotService;
import com.fzzy.igds.service.DicService;
import com.ruoyi.common.core.domain.entity.SysDictData;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.List;
/**
 * @author chen
 */
@Component
public class PhoneUtil {
    @Autowired
    private DicService triggerService;
    @Resource
    private DepotService depotService;
    private static final String KEY_API_PHONE_TOKEN = "KEY_API_PHONE_TOKEN";
    /**
     * åˆ›å»ºç¼“å­˜Key
     *
     * @param token
     * @return
     */
    public static String createKey(String token) {
        return Constant.APP_NAME + ":" + KEY_API_PHONE_TOKEN + ":" + token;
    }
    /**
     * èŽ·å–å‡ºå…¥åº“æµç¨‹åç§°
     *
     * @param companyId
     * @param progress
     * @return
     */
    public String getProgressName(String companyId, String progress) {
        List<SysDictData> list = triggerService.getDictDataByType(companyId, "PROCESS_STATUS_");
        String progressName = "";
        for (SysDictData dicTrigger : list) {
            if (dicTrigger.getDictValue().equals(progress)) {
                progressName = dicTrigger.getDictLabel();
                break;
            }
        }
        return progressName;
    }
    /**
     * èŽ·å–ä»“åº“åç§°
     *
     * @param companyId
     * @param depotId
     * @return
     */
    public String getDepotName(String companyId, String depotId) {
        Depot depot = depotService.getCacheDepot(companyId,depotId);
        return depot.getName();
    }
    /**
     * èŽ·å–æŒ‡å®šä»“åº“çš„ä¿¡æ¯
     *
     * @param companyId
     * @param depotId
     * @return
     */
    public Depot getDepot(String companyId, String depotId) {
        List<Depot> depotList = depotService.getCacheDepotList(companyId);
        Depot depots = new Depot();
        if (depotList != null && depotList.size() > 0) {
            for (Depot depot : depotList) {
                if (depot.getId().equals(depotId)) {
                    depots = depot;
                    break;
                }
            }
        }
        return depots;
    }
}
fzzy-igdss-inte/src/main/resources/mapper/PhoneMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
<?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.fzzy.igds.app.v1.mapper.PhoneMapper">
    <update id="updateOrder">
        update work_order
        <set>
            <if test="param.status != null and param.status != ''">status = #{param.status},</if>
            <if test="param.receiveTime != null and param.receiveTime != ''">recive_time = #{param.status},</if>
        </set>
        where id = #{param.id}
    </update>
</mapper>