This commit is contained in:
2023-03-15 10:58:18 +08:00
18 changed files with 236 additions and 60 deletions

View File

@@ -290,7 +290,7 @@ public class TwoNDCSocketConnectionAutoRun extends AbstractAutoRunnable {
dos.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
log.error("下发agv数据异常:" + e.getMessage());
log.info("下发agv数据异常:" + e.getMessage());
e.printStackTrace();
}

View File

@@ -49,6 +49,14 @@ public class InstructionController {
return new ResponseEntity<>(instructionService.getAll(whereJson, page), HttpStatus.OK);
}
@Log("导出指令")
@ApiOperation("导出指令")
@GetMapping(value = "/getAll/download")
//@PreAuthorize("@el.check('instruction:list')")
public void getAllDownload(HttpServletResponse response, Map whereJson) throws IOException {
instructionService.download(instructionService.queryAll(whereJson), response);
}
@GetMapping("/unfinish")
@Log("查询所有未完成指令")
@ApiOperation("查询所有未完成指令")

View File

@@ -146,7 +146,7 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu
map.put("flag", "2");
String code = (String) whereJson.get("code");
String vehicle_code = (String) whereJson.get("vehicle_code");
String material_type = (String) whereJson.get("material_type");
String instruction_type = (String) whereJson.get("instruction_type");
String status = (String) whereJson.get("status");
String point_code = (String) whereJson.get("point_code");
String create_time = (String) whereJson.get("createTime");
@@ -157,8 +157,8 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu
if (!StrUtil.isEmpty(vehicle_code)) {
map.put("vehicle_code", vehicle_code);
}
if (!StrUtil.isEmpty(material_type)) {
map.put("material_type", material_type);
if (!StrUtil.isEmpty(instruction_type)) {
map.put("instruction_type", instruction_type);
}
if (!StrUtil.isEmpty(status)) {
map.put("status", status);
@@ -195,7 +195,10 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu
ins.put("start_point_code2", jo.get("start_point_code2"));
ins.put("next_point_code", jo.get("next_point_code"));
ins.put("next_point_code2", jo.get("next_point_code2"));
ins.put("matarial", jo.get("matarial"));
ins.put("agv_system_type", jo.get("agv_system_type"));
ins.put("agv_inst_type", jo.get("agv_inst_type"));
ins.put("car_no", jo.get("car_no"));
ins.put("weight", jo.get("weight"));
ins.put("remark", jo.get("remark"));
ins.put("create_by", jo.get("create_by"));
ins.put("create_time", jo.get("create_time"));
@@ -235,7 +238,7 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu
@Override
public Instruction findByCode(String code) {
WQLObject wo = WQLObject.getWQLObject("acs_instruction");
JSONObject json = wo.query("instruction_code ='" + code + "'").uniqueResult(0);
JSONObject json = wo.query("instruction_code ='" + code + "'","create_time desc").uniqueResult(0);
if (ObjectUtil.isEmpty(json)) {
return null;
}
@@ -246,7 +249,7 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu
@Override
public Instruction findByTaskcode(String code) {
WQLObject wo = WQLObject.getWQLObject("acs_instruction");
JSONObject json = wo.query("task_code ='" + code + "'").uniqueResult(0);
JSONObject json = wo.query("task_code ='" + code + "'","create_time desc").uniqueResult(0);
final Instruction obj = json.toJavaObject(Instruction.class);
return obj;
}
@@ -285,7 +288,7 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu
wherecaluse = " and " + wherecaluse;
}
WQLObject wo = WQLObject.getWQLObject("acs_instruction");
JSONObject json = wo.query("task_id ='" + id + "'" + wherecaluse).uniqueResult(0);
JSONObject json = wo.query("task_id ='" + id + "'" + wherecaluse,"create_time desc").uniqueResult(0);
if (ObjectUtil.isNotEmpty(json)) {
return json.toJavaObject(Instruction.class);
}
@@ -653,15 +656,25 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu
map.put("执行编码", instruction.getExecute_code());
map.put("执行信息", instruction.getExecute_message());
map.put("起始点位编码", instruction.getStart_point_code());
map.put("起始点位编码2", instruction.getStart_point_code2());
map.put("起始设备编码", instruction.getStart_device_code());
map.put("起始设备编码2", instruction.getStart_device_code2());
map.put("目标点位编码", instruction.getNext_point_code());
map.put("目标点位编码2", instruction.getNext_point_code2());
map.put("目标设备编码", instruction.getNext_device_code());
map.put("目标设备编码2", instruction.getNext_device_code2());
map.put("放货点位编码", instruction.getPut_point_code());
map.put("放货设备编码", instruction.getPut_device_code());
map.put("", instruction.getFrom_x());
map.put("", instruction.getFrom_y());
map.put("", instruction.getFrom_z());
map.put("", instruction.getTo_x());
map.put("", instruction.getTo_y());
map.put("", instruction.getTo_z());
map.put("agv车号", instruction.getCarno());
map.put("重量", instruction.getWeight());
map.put("agv系统类型", instruction.getAgv_system_type());
map.put("agv指令类型", instruction.getAgv_inst_type());
map.put("最后一条指令标识", instruction.getLast_instruction_id());
map.put("是否允许修改", instruction.getCan_modify());
map.put("备注", instruction.getRemark());

View File

@@ -117,8 +117,8 @@
OPTION 输入.vehicle_code <> ""
inst.vehicle_code LIKE CONCAT ( '%', 输入.vehicle_code, '%' )
ENDOPTION
OPTION 输入.material_type <> ""
inst.material = 输入.material_type
OPTION 输入.instruction_type <> ""
inst.instruction_type = 输入.instruction_type
ENDOPTION
OPTION 输入.point_code <> ""
(

View File

@@ -62,6 +62,14 @@ public class TaskController {
return new ResponseEntity<>(taskService.getAll(whereJson, page), HttpStatus.OK);
}
@Log("导出历史任务")
@ApiOperation("导出历史任务")
@GetMapping(value = "/getAll/download")
//@PreAuthorize("@el.check('task:list')")
public void getAllDownload(HttpServletResponse response, Map whereJson) throws IOException {
taskService.download(taskService.queryAll(whereJson), response);
}
@PostMapping
@Log("新增任务")
@ApiOperation("新增任务")

View File

@@ -217,7 +217,6 @@ public interface TaskService {
*/
void download(List<TaskDto> dtos, HttpServletResponse response) throws IOException;
/**
* 根据触摸屏点击保存创建任务
*

View File

@@ -217,7 +217,7 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial {
map.put("flag", "2");
String task_code = (String) whereJson.get("task_code");
String vehicle_code = (String) whereJson.get("vehicle_code");
String material_type = (String) whereJson.get("material_type");
String task_type = (String) whereJson.get("task_type");
String status = (String) whereJson.get("status");
String point_code = (String) whereJson.get("point_code");
String create_time = (String) whereJson.get("createTime");
@@ -228,8 +228,8 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial {
if (!StrUtil.isEmpty(vehicle_code)) {
map.put("vehicle_code", vehicle_code);
}
if (!StrUtil.isEmpty(material_type)) {
map.put("material_type", material_type);
if (!StrUtil.isEmpty(task_type)) {
map.put("task_type", task_type);
}
if (!StrUtil.isEmpty(status)) {
map.put("status", status);
@@ -1224,12 +1224,20 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial {
map.put("起始设备编码", acsTask.getStart_device_code());
map.put("目标点位编码", acsTask.getNext_point_code());
map.put("目标设备编码", acsTask.getNext_device_code());
map.put("", acsTask.getFrom_x());
map.put("", acsTask.getFrom_y());
map.put("", acsTask.getFrom_z());
map.put("", acsTask.getTo_x());
map.put("起始点位编码2", acsTask.getStart_point_code2());
map.put("起始设备编码2", acsTask.getStart_device_code2());
map.put("目标点位编码2", acsTask.getNext_point_code2());
map.put("目标设备编码2", acsTask.getNext_device_code2());
map.put("放货点位编码", acsTask.getPut_point_code());
map.put("放货设备编码", acsTask.getPut_device_code());
map.put("", acsTask.getTo_y());
map.put("", acsTask.getTo_z());
map.put("重量", acsTask.getWeight());
map.put("agv系统类型", acsTask.getAgv_system_type());
map.put("立库任务类型", acsTask.getStorage_task_type());
map.put("烘箱温度", acsTask.getTemperature());
map.put("烘箱时间", acsTask.getOven_time());
map.put("agv车号", acsTask.getCarno());
map.put("路由方案名称", acsTask.getRoute_plan_name());
map.put("路由方案编码", acsTask.getRoute_plan_code());
map.put("是否需要反馈上位系统", acsTask.getIs_needfeedback());

View File

@@ -17,10 +17,11 @@
输入.task_code TYPEAS s_string
输入.vehicle_code TYPEAS s_string
输入.material_type TYPEAS s_string
输入.status TYPEAS s_string
输入.point_code TYPEAS s_string
输入.task_type TYPEAS s_string
输入.status TYPEAS s_string
输入.point_code TYPEAS s_string
输入.is_over TYPEAS s_string
输入.create_time TYPEAS time
输入.create_time TYPEAS time
输入.end_time TYPEAS time
[临时表]
--这边列出来的临时表就会在运行期动态创建
@@ -97,8 +98,8 @@ IF 输入.flag = "2"
OPTION 输入.vehicle_code <> ""
task.vehicle_code LIKE CONCAT ( '%', 输入.vehicle_code, '%' )
ENDOPTION
OPTION 输入.material_type <> ""
task.material = 输入.material_type
OPTION 输入.task_type <> ""
task.task_type = 输入.task_type
ENDOPTION
OPTION 输入.point_code <> ""
(

View File

@@ -23,16 +23,16 @@
@keyup.enter.native="crud.toQuery"
/>
<el-select
v-model="query.material_type"
v-model="query.instruction_type"
clearable
filterable
size="small"
placeholder="物料类型"
placeholder="指令类型"
class="filter-item"
style="width: 190px"
@change="crud.toQuery"
>
<el-option v-for="item in materialList" :key="item.id" :label="item.label" :value="item.value" />
<el-option v-for="item in dict.task_type" :key="item.id" :label="item.label" :value="item.value" />
</el-select>
<el-select
v-model="query.status"
@@ -96,7 +96,7 @@
@selection-change="crud.selectionChangeHandler"
>
<el-table-column v-if="false" prop="instruction_id" label="指令标识" />
<el-table-column prop="instruction_code" label="指令编号" />
<el-table-column prop="instruction_code" label="指令编号" width="200" />
<el-table-column prop="task_code" label="任务号" />
<el-table-column prop="vehicle_code" label="载具号" />
<el-table-column prop="instruction_type" label="指令类型" width="120">
@@ -113,7 +113,18 @@
<el-table-column prop="next_point_code" label="终点" />
<el-table-column prop="start_point_code2" label="起点2" />
<el-table-column prop="next_point_code2" label="终点2" />
<el-table-column prop="matarial" label="物料" />
<el-table-column prop="car_no" label="车号" />
<el-table-column prop="agv_system_type" label="AGV系统类型">
<template slot-scope="scope">
{{ dict.label.agv_system_type[scope.row.agv_system_type] }}
</template>
</el-table-column>
<el-table-column prop="agv_inst_type" label="AGV指令类型">
<!-- <template slot-scope="scope">-->
<!-- {{ dict.label.agv_inst_type[scope.row.agv_inst_type] }}-->
<!-- </template>-->
</el-table-column>
<el-table-column prop="weight" label="重量" />
<el-table-column prop="quantity" label="数量" />
<el-table-column prop="remark" label="描述" />
<el-table-column prop="create_by" label="创建者" />
@@ -171,7 +182,7 @@ const defaultForm = {
update_time: null
}
export default {
dicts: ['task_status', 'task_type'],
dicts: ['task_status', 'task_type', 'instruction_type', 'agv_system_type'],
name: 'Instruction',
components: { pagination, crudOperation, Search },
mixins: [presenter(), header(), form(defaultForm), crud()],
@@ -184,6 +195,11 @@ export default {
query: { is_over: '1' },
crudMethod: { ...crudInstruction },
optShow: {
add: false,
edit: false,
del: false,
reset: false,
download: true
}
})
},

View File

@@ -34,16 +34,16 @@
@keyup.enter.native="crud.toQuery"
/>
<el-select
v-model="query.material_type"
v-model="query.task_type"
clearable
filterable
size="small"
placeholder="物料类型"
placeholder="任务类型"
class="filter-item"
style="width: 190px"
@change="crud.toQuery"
>
<el-option v-for="item in materialList" :key="item.id" :label="item.label" :value="item.value" />
<el-option v-for="item in dict.task_type" :key="item.id" :label="item.label" :value="item.value" />
</el-select>
<el-select
v-model="query.status"
@@ -230,7 +230,7 @@
@selection-change="crud.selectionChangeHandler"
>
<el-table-column v-if="false" prop="task_id" label="任务标识" />
<el-table-column prop="task_code" label="任务号" />
<el-table-column prop="task_code" label="任务号" width="200" />
<el-table-column prop="vehicle_code" label="载具号" />
<el-table-column prop="task_type" label="任务类型" width="120">
<template slot-scope="scope">
@@ -247,7 +247,20 @@
<el-table-column prop="next_point_code" label="终点" />
<el-table-column prop="start_point_code2" label="起点2" />
<el-table-column prop="start_point_code2" label="终点2" />
<el-table-column prop="matarial" label="物料" />
<el-table-column prop="car_no" label="车号" />
<el-table-column prop="agv_system_type" label="AGV系统类型">
<template slot-scope="scope">
{{ dict.label.agv_system_type[scope.row.agv_system_type] }}
</template>
</el-table-column>
<el-table-column prop="storage_task_type" label="立库任务类型">
<template slot-scope="scope">
{{ dict.label.storage_task_type[scope.row.storage_task_type] }}
</template>
</el-table-column>
<el-table-column prop="weight" label="重量" />
<el-table-column prop="temperature" label="温度" />
<el-table-column prop="oven_time" label="烘箱时间" />
<el-table-column prop="quantity" label="数量" />
<el-table-column prop="remark" label="备注" />
<el-table-column prop="create_by" label="创建者" />
@@ -292,7 +305,7 @@ const defaultForm = {
export default {
name: 'Task',
components: { pagination, crudOperation, Search },
dicts: ['task_status', 'task_type'],
dicts: ['task_status', 'task_type', 'agv_system_type', 'storage_task_type'],
mixins: [presenter(), header(), form(defaultForm), crud()],
cruds() {
return CRUD({
@@ -302,7 +315,13 @@ export default {
sort: 'task_id,desc',
query: { is_over: '1' },
crudMethod: { ...crudTask },
optShow: {}
optShow: {
add: false,
edit: false,
del: false,
reset: false,
download: true
}
})
},
data() {

View File

@@ -34,16 +34,16 @@
@keyup.enter.native="crud.toQuery"
/>
<el-select
v-model="query.material_type"
v-model="query.task_type"
clearable
filterable
size="small"
placeholder="物料类型"
placeholder="任务类型"
class="filter-item"
style="width: 190px"
@change="crud.toQuery"
>
<el-option v-for="item in materialList" :key="item.id" :label="item.label" :value="item.value" />
<el-option v-for="item in dict.task_type" :key="item.id" :label="item.label" :value="item.value" />
</el-select>
<el-select
v-model="query.status"
@@ -87,7 +87,7 @@
@selection-change="crud.selectionChangeHandler"
>
<el-table-column v-if="false" prop="task_id" label="任务标识" />
<el-table-column prop="task_code" label="任务号(指令编号)" />
<el-table-column prop="task_code" label="任务号(指令编号)" width="200" />
<el-table-column prop="vehicle_code" label="载具号" />
<el-table-column prop="task_type" label="任务类型" width="120">
<template slot-scope="scope">
@@ -104,7 +104,24 @@
<el-table-column prop="next_point_code" label="终点" />
<el-table-column prop="start_point_code2" label="起点2" />
<el-table-column prop="next_point_code2" label="终点2" />
<el-table-column prop="matarial" label="物料" />
<el-table-column prop="car_no" label="车号" />
<el-table-column prop="agv_system_type" label="AGV系统类型">
<template slot-scope="scope">
{{ dict.label.agv_system_type[scope.row.agv_system_type] }}
</template>
</el-table-column>
<el-table-column prop="agv_inst_type" label="AGV指令类型">
<!-- <template slot-scope="scope">-->
<!-- {{ dict.label.agv_inst_type[scope.row.agv_inst_type] }}-->
<!-- </template>-->
</el-table-column>
<el-table-column prop="storage_task_type" label="立库任务类型">
<template slot-scope="scope">
{{ dict.label.storage_task_type[scope.row.storage_task_type] }}
</template>
</el-table-column>
<el-table-column prop="weight" label="重量" />
<el-table-column prop="temperature" label="温度" />
<el-table-column prop="quantity" label="数量" />
<el-table-column prop="remark" label="备注" />
<el-table-column prop="create_by" label="创建者" />
@@ -141,7 +158,7 @@ const defaultForm = {
export default {
name: 'Task',
components: { pagination, crudOperation, Search },
dicts: ['task_status', 'task_type'],
dicts: ['task_status', 'task_type', 'agv_system_type', 'storage_task_type'],
mixins: [presenter(), header(), form(defaultForm), crud()],
cruds() {
return CRUD({ title: '任务', url: 'api/task/getAll', idField: 'task_id', sort: 'task_id,desc', crudMethod: { ...crudTask }, optShow: {

View File

@@ -22,18 +22,6 @@
class="filter-item"
@keyup.enter.native="crud.toQuery"
/>
<el-select
v-model="query.material_type"
clearable
filterable
size="small"
placeholder="物料类型"
class="filter-item"
style="width: 190px"
@change="crud.toQuery"
>
<el-option v-for="item in materialList" :key="item.id" :label="item.label" :value="item.value" />
</el-select>
<el-select
v-model="query.status"
clearable
@@ -344,13 +332,13 @@
<el-table-column prop="start_point_code2" label="取货点2" width="120px" />
<el-table-column prop="next_point_code2" label="放货点2" width="120px" />
<el-table-column prop="put_point_code" label="中转点" width="100px" />
<!-- <el-table-column prop="agv_task_type" label="AGV任务类型" width="120px" />-->
<!-- <el-table-column prop="agv_task_type" label="AGV任务类型" width="120px" />-->
<el-table-column prop="agv_system_type" label="AGV系统类型" width="120px">
<template slot-scope="scope">
{{ dict.label.agv_system_type[scope.row.agv_system_type] }}
</template>
</el-table-column>
<el-table-column prop="storage_task_type" label="立库任务类型" width="120px" >
<el-table-column prop="storage_task_type" label="立库任务类型" width="120px">
<template slot-scope="scope">
{{ dict.label.storage_task_type[scope.row.storage_task_type] }}
</template>

View File

@@ -91,6 +91,15 @@ public class ISysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> imp
@SneakyThrows
public void create(Map userDetail) {
SysUser sysUser = new SysUser();
//userDetail 中 createTime是string类型BeanUtils.populate不支持解析或者使用MapStruct
ConvertUtils.register((m, o) -> {
try {
if (o == null){ return null; }
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(o.toString());
}catch (Exception ex){
return new Date();
}
}, Date.class);
BeanUtils.populate(sysUser,userDetail);
// 默认密码 123456
if (ObjectUtil.isEmpty(sysUser.getPassword())) {

View File

@@ -4,6 +4,7 @@ package org.nl.wms.pda.st.service.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.druid.sql.visitor.functions.If;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
@@ -57,6 +58,8 @@ public class PdaCheckServiceImpl implements PdaCheckService {
@Override
public JSONObject checkQueryDtl(JSONObject whereJson) {
WQLObject dtlTab = WQLObject.getWQLObject("ST_IVT_CheckDtl");
String box_no = whereJson.getString("box_no");
JSONObject map = new JSONObject();
@@ -64,6 +67,15 @@ public class PdaCheckServiceImpl implements PdaCheckService {
map.put("check_code", whereJson.getString("check_code"));
if (ObjectUtil.isNotEmpty(box_no)) map.put("storagevehicle_code","%"+box_no+"%");
JSONObject jsonDtl = dtlTab.query("check_code = '" + whereJson.getString("check_code") + "' and storagevehicle_code = '" + box_no + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(jsonDtl)) {
throw new BadRequestException("此箱号不在此盘点单中:"+box_no);
} else {
if (!StrUtil.equals(jsonDtl.getString("status"), "1")) {
throw new BadRequestException("此箱号已盘点");
}
}
JSONArray resultJSONArray = WQL.getWO("PDA_CHECK").addParamMap(map).process().getResultJSONArray(0);
// 已盘点数: 不等于生成状态

View File

@@ -1,17 +1,22 @@
package org.nl.wms.st.returns.rest;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.modules.logging.annotation.Log;
import org.nl.modules.wql.util.SpringContextHolder;
import org.nl.wms.st.outbill.service.impl.CheckOutBillServiceImpl;
import org.nl.wms.st.returns.service.InAndOutReturnService;
import org.springframework.data.domain.Pageable;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Map;
@RestController
@@ -62,4 +67,11 @@ public class InAndOutReturnlController {
return new ResponseEntity<>(HttpStatus.OK);
}
@ApiOperation("导出数据")
@GetMapping(value = "/download")
public void download(HttpServletResponse response, @RequestParam Map whereJson) throws IOException {
JSONArray outBillDis = SpringContextHolder.getBean(CheckOutBillServiceImpl.class).getOutBillDis(whereJson);
inAndOutReturnService.download(outBillDis, response);
}
}

View File

@@ -4,6 +4,8 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.springframework.data.domain.Pageable;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Map;
public interface InAndOutReturnService {
@@ -24,4 +26,6 @@ public interface InAndOutReturnService {
void disupload(JSONObject whereJson);
void download(JSONArray arr, HttpServletResponse response) throws IOException;
}

View File

@@ -10,6 +10,7 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.common.utils.SecurityUtils;
import org.nl.modules.common.utils.FileUtil;
import org.nl.system.service.param.impl.SysParamServiceImpl;
import org.nl.system.service.user.ISysUserService;
import org.nl.system.service.user.dao.SysUser;
@@ -32,9 +33,9 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.support.TransactionCallbackWithoutResult;
import org.springframework.transaction.support.TransactionTemplate;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.*;
/**
* PC端出入库新增
@@ -675,6 +676,40 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService {
}
}
@Override
public void download(JSONArray array, HttpServletResponse response) throws IOException {
List<Map<String, Object>> list = new ArrayList<>();
for (int i = 0; i < array.size(); i++) {
JSONObject json = array.getJSONObject(i);
Map<String, Object> map = new LinkedHashMap<>();
map.put("物料编码", json.getString("material_code"));
map.put("物料名称", json.getString("material_name"));
map.put("子卷批次号", json.getString("pcsn"));
map.put("sap批次", json.getString("sap_pcsn"));
map.put("箱号", json.getString("box_no"));
map.put("重量", json.getString("real_qty"));
map.put("仓位", json.getString("struct_code"));
String statusName = "";
if (StrUtil.equals(json.getString("work_status"), "00")) {
statusName = "未生成";
} else if (StrUtil.equals(json.getString("work_status"), "01")) {
statusName = "生成";
} else if (StrUtil.equals(json.getString("work_status"), "02")) {
statusName = "执行中";
} else if (StrUtil.equals(json.getString("work_status"), "99")) {
statusName = "完成";
}
map.put("状态", statusName);
list.add(map);
}
FileUtil.downloadExcel(list, response);
}
@Override
public void upload(JSONObject whereJson) {
//出库分配表

View File

@@ -208,6 +208,18 @@
>
不回传
</el-button>
<el-button
slot="right"
class="filter-item"
type="success"
icon="el-icon-thumb"
size="mini"
:loading="showDtlLoading"
:disabled="crud.selections.length !== 1"
@click="downdtl"
>
导出
</el-button>
</crudOperation>
<!--表格渲染-->
<el-table
@@ -267,6 +279,8 @@ import crudOperation from '@crud/CRUD.operation'
import pagination from '@crud/Pagination'
import ViewDialog from '@/views/wms/st/inAndOutReturn/ViewDialog'
import crudUserStor from '@/views/wms/basedata/st/userStor/userStor'
import { download } from '@/api/data'
import { downloadFile } from '@/utils'
export default {
name: 'Return',
@@ -295,7 +309,8 @@ export default {
mstrow: {},
fullscreenLoading: false,
storlist: [],
billtypelist: []
billtypelist: [],
showDtlLoading: false
}
},
mounted: function() {
@@ -453,6 +468,18 @@ export default {
} else if (row.upload_sap === '1') {
return '是'
}
},
downdtl() {
const _selectData = this.$refs.table.selection
if (this.currentRow !== null) {
crud.downloadLoading = true
download('/api/inandoutreturn/download', { 'iostorinv_id': _selectData[0].iostorinv_id }).then(result => {
downloadFile(result, '出入库单据明细', 'xlsx')
crud.downloadLoading = false
}).catch(() => {
crud.downloadLoading = false
})
}
}
}
}