自动化立体仓库 - WMS系统
10f65a42b77e2c5642ea56b715f25ea4f024fd3f..a299fc89729094c6f0610be6439000347a160703
17 小时以前 lty
#盘点上报页面功能按钮
a299fc 对比 | 目录
17 小时以前 lty
#盘点上报
6d4734 对比 | 目录
17 小时以前 lty
#盘点上报
ea6977 对比 | 目录
6个文件已修改
166 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/CheckDetlController.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/OpenController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/CheckDetlService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/CheckDetlServiceImpl.java 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/locDetlStatis/check.js 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/locDetlStatis/check.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/CheckDetlController.java
@@ -36,4 +36,15 @@
        }
        return R.ok();
    }
    @RequestMapping(value = "/check/upload/auth")
    @ManagerAuth(memo = "库存盘点上传")
    public R upload(@RequestParam String param){
        List<CheckDetl> list = JSONArray.parseArray(param, CheckDetl.class);
        if (Cools.isEmpty(list)){
            return R.error();
        }
        checkDetlService.upload(list);
        return R.ok();
    }
}
src/main/java/com/zy/asrs/controller/OpenController.java
@@ -59,6 +59,7 @@
        return R.ok();
    }
    /****************************************************************************/
    /********************************* 打包上线 **********************************/
    /****************************************************************************/
src/main/java/com/zy/asrs/service/CheckDetlService.java
@@ -3,5 +3,8 @@
import com.baomidou.mybatisplus.service.IService;
import com.zy.asrs.entity.CheckDetl;
import java.util.List;
public interface CheckDetlService extends IService<CheckDetl> {
    void upload(List<CheckDetl> checkDetls);
}
src/main/java/com/zy/asrs/service/impl/CheckDetlServiceImpl.java
@@ -1,12 +1,135 @@
package com.zy.asrs.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.zy.asrs.entity.CheckDetl;
import com.zy.asrs.mapper.CheckDetlMapper;
import com.zy.asrs.service.ApiLogService;
import com.zy.asrs.service.CheckDetlService;
import com.zy.asrs.task.kingdee.handler.LoginAuthenticationHandler;
import com.zy.common.utils.HttpHandler;
import javafx.print.Printer;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Set;
@Service
@Slf4j
public class CheckDetlServiceImpl extends ServiceImpl<CheckDetlMapper, CheckDetl> implements CheckDetlService {
    @Value("${erp.address.URL}")
    //端口
    private String URL;
    @Value("${erp.address.outaddressSubmit}")
    //上报出入库地址
    private String outaddressSubmit;
    @Autowired
    private CheckDetlService checkDetlService;
    @Autowired
    private ApiLogService apiLogService;
    @Autowired
    private LoginAuthenticationHandler loginAuthenticationHandler;
    @Override
    @Transactional
    public void upload(List<CheckDetl> list) {
        Date now = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        // 构建主单 JSON 数据
        JSONObject requestBody = new JSONObject();
        requestBody.put("createTime", sdf.format(now));
        // 构建物料列表
        JSONArray matList = new JSONArray();
        for(CheckDetl checkDetl : list) {
            JSONObject mat = new JSONObject();
            mat.put("detailId", checkDetl.getDetailId());
            mat.put("orderNo", checkDetl.getOrderNo());
            mat.put("matnr", checkDetl.getMatnr());
            mat.put("anfme", checkDetl.getAnfme());
            matList.add(mat);
        }
        requestBody.put("data", matList);
        // 发送 POST 请求
        String response = "";
        boolean success = false;
        try {
            HashMap<String, Object> headers = new HashMap<>();
            //  cookie
            headers.put("Cookie", loginAuthenticationHandler.start().getContent());
            response = new HttpHandler.Builder()
                    .setHeaders(headers)
                    .setUri(URL)
                    .setPath(outaddressSubmit) // 设置你的接口路径
                    .setJson(requestBody.toJSONString())
                    .build()
                    .doPost();
            JSONObject data = JSON.parseObject(response);
            Object isSuccess = findValueByKey(data, "IsSuccess");
            String bool = isSuccess != null ? isSuccess.toString() : "false";
            if ("true".equals(bool)) {
                success = true;
            }
        } catch (Exception e) {
            log.error("上报ERP失败", e);
        } finally {
            try {
                apiLogService.save(
                        "盘点上报",
                        URL + outaddressSubmit,
                        null,
                        "127.0.0.1",
                        requestBody.toJSONString(),
                        response,
                        success
                );
            } catch (Exception e) {
                log.error("日志保存失败", e);
            }
        }
        if(success) {
            for (CheckDetl entity : list){
                checkDetlService.delete(new EntityWrapper<>(entity));
            }
        }
    }
    public static Object findValueByKey(JSONObject json, String key) {
        Set<String> keySet = json.keySet();
        for (String k : keySet) {
            Object v = json.get(k);
            if (k.equals(key)) {
                return v;
            } else if (v instanceof JSONArray) {
                int size = ((JSONArray) v).size();
                for (int i = 0; i <= size - 1; i++) {
                    Object result = findValueByKey((JSONObject) ((JSONArray) v).get(i), key);
                    if (result != null){
                        return result;
                    }
                }
            } else if (v instanceof JSONObject){
                Object result = findValueByKey((JSONObject) v, key);
                if (result != null){
                    return result;
                }
            }
        }
        return null;
    }
}
src/main/webapp/static/js/locDetlStatis/check.js
@@ -164,6 +164,32 @@
                    });
                }
                break;
            case 'uploadData':
                var data = checkStatus.data;
                if (data.length === 0){
                    layer.msg('请选择数据');
                } else {
                    layer.confirm('确定上报'+(data.length===1?'此':data.length)+'条数据吗', function(){
                        $.ajax({
                            url: baseUrl+"/check/upload/auth",
                            headers: {'token': localStorage.getItem('token')},
                            data: {param: JSON.stringify(data)},
                            method: 'POST',
                            traditional:true,
                            success: function (res) {
                                if (res.code === 200){
                                    layer.closeAll();
                                    tableReload(false);
                                } else if (res.code === 403){
                                    top.location.href = baseUrl+"/";
                                } else {
                                    layer.msg(res.msg)
                                }
                            }
                        })
                    });
                }
                break;
            case 'exportData':
                layer.confirm('确定导出Excel吗', {shadeClose: true}, function(){
                    var titles=[];
src/main/webapp/views/locDetlStatis/check.html
@@ -44,7 +44,7 @@
  <div class="layui-btn-container">
<!--    <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">新增</button>-->
    <button class="layui-btn layui-btn-sm" id="btn-init" lay-event="init">上报</button>
    <button class="layui-btn layui-btn-sm" id="btn-upload" lay-event="uploadData">上报</button>
    <button class="layui-btn layui-btn-sm" id="btn-delete" lay-event="deleteData">删除</button>
    <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData">导出</button>
  </div>