add:半成品出入库导出功能

This commit is contained in:
2023-08-24 17:09:51 +08:00
parent 25c51f7c6c
commit 909766d20e
10 changed files with 166 additions and 6 deletions

View File

@@ -38,6 +38,8 @@ public enum IOSEnum {
LOCK_TYPE(MapOf.of("未锁定", "0", "入库锁", "1", "出库锁", "2","盘点锁", "3","损溢锁", "4","拼盘锁","5","其他锁","99")),
// 海柔半成品出入库类型
BILL_TYPE_HR(MapOf.of("生产出库", "1001", "盘点出库", "1002", "手工出库", "1009","生产入库","0001")),
// 半成品出入类型
BILL_TYPE_BCP(MapOf.of("清洗入库", "0001", "手工入库", "0009","生产出库","1001","手工出库","1009")),
;
private Map<String, String> code;

View File

@@ -2,6 +2,7 @@ package org.nl.wms.storage_manage.semimanage.controller.iostorInv;
import cn.dev33.satoken.annotation.SaIgnore;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -11,11 +12,17 @@ import lombok.extern.slf4j.Slf4j;
import org.nl.common.anno.Log;
import org.nl.common.domain.query.PageQuery;
import org.nl.common.utils.ListOf;
import org.nl.common.utils.MapOf;
import org.nl.modules.common.utils.FileUtil;
import org.nl.wms.masterdata_manage.service.vehicle.IMdPbStoragevehicleextService;
import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbStoragevehicleext;
import org.nl.wms.storage_manage.IOSEnum;
import org.nl.wms.storage_manage.semimanage.service.iostorInv.IStIvtIostorinvBcpService;
import org.nl.wms.storage_manage.semimanage.service.iostorInv.dao.StIvtIostorinvBcp;
import org.nl.wms.storage_manage.semimanage.service.iostorInv.dto.BcpIostorInvQuery;
import org.nl.wms.storage_manage.semimanage.service.structIvt.dto.StructIvtBcpQuery;
import org.nl.wms.system_manage.service.tableData.ColumnInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
@@ -23,10 +30,10 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -50,6 +57,9 @@ public class StIvtIostorinvBcpController {
@Autowired
private IMdPbStoragevehicleextService iMdPbStoragevehicleextService; // 载具扩展属性信息表服务
@Autowired
private ColumnInfoService columnInfoService;
@GetMapping
@Log("查询入库单据")
//("查询入库单据")
@@ -132,5 +142,13 @@ public class StIvtIostorinvBcpController {
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
@GetMapping("/download")
@Log("半成品入库单导出")
//("半成品入库单导出")
public ResponseEntity<Object> download(BcpIostorInvQuery query, PageQuery page, HttpServletResponse response) throws IOException {
stIvtIostorinvBcpService.download(query,page,response);
return new ResponseEntity<>(HttpStatus.OK);
}
}

View File

@@ -18,6 +18,8 @@ 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;
/**
@@ -103,5 +105,12 @@ public class StIvtIostorinvBcpOutController {
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
@GetMapping("/download")
@Log("半成品出库单导出")
//("半成品出库单导出")
public ResponseEntity<Object> download(BcpIostorInvQuery query, PageQuery page, HttpServletResponse response) throws IOException {
bcpOutService.download(query,page,response);
return new ResponseEntity<>(HttpStatus.OK);
}
}

View File

@@ -9,6 +9,8 @@ import org.nl.wms.storage_manage.semimanage.service.iostorInv.dao.StIvtIostorinv
import org.nl.wms.storage_manage.semimanage.service.iostorInv.dto.BcpIostorInvQuery;
import org.nl.wms.storage_manage.semimanage.service.structIvt.dao.StIvtStructivtBcp;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import java.util.Map;
@@ -82,4 +84,5 @@ public interface IStIvtIostorinvBcpOutService extends IService<StIvtIostorinvBcp
void taskOperate(JSONObject form);
void download(BcpIostorInvQuery query, PageQuery page, HttpServletResponse response) throws IOException;
}

View File

@@ -5,7 +5,10 @@ import org.nl.common.domain.query.PageQuery;
import org.nl.wms.storage_manage.semimanage.service.iostorInv.dao.StIvtIostorinvBcp;
import com.baomidou.mybatisplus.extension.service.IService;
import org.nl.wms.storage_manage.semimanage.service.iostorInv.dto.BcpIostorInvQuery;
import org.nl.wms.storage_manage.semimanage.service.structIvt.dto.StructIvtBcpQuery;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import java.util.Map;
@@ -59,4 +62,5 @@ public interface IStIvtIostorinvBcpService extends IService<StIvtIostorinvBcp> {
List<Map> getPdaAll(JSONObject form);
void download(BcpIostorInvQuery query, PageQuery page, HttpServletResponse response) throws IOException;
}

View File

@@ -26,6 +26,8 @@ public class BcpIostorInvQuery extends BaseQuery<StIvtIostorinvBcp> {
private String io_type;
private String[] createTime;
private Boolean is_delete = false;

View File

@@ -2,6 +2,7 @@ package org.nl.wms.storage_manage.semimanage.service.iostorInv.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
@@ -26,6 +27,7 @@ import org.nl.common.utils.MapOf;
import org.nl.common.utils.RedissonUtils;
import org.nl.common.utils.SecurityUtils;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.common.utils.FileUtil;
import org.nl.modules.system.util.CodeUtil;
import org.nl.modules.wql.util.SpringContextHolder;
import org.nl.wms.ext_manage.acs.service.WmsToAcsService;
@@ -61,11 +63,10 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.function.Consumer;
/**
@@ -558,6 +559,39 @@ public class StIvtIostorinvBcpOutServiceImpl extends ServiceImpl<StIvtIostorinvB
}
}
@Override
public void download(BcpIostorInvQuery query, PageQuery page, HttpServletResponse response) throws IOException {
query.setIo_type(IOSEnum.IO_TYPE.code("出库"));
String[] createTime = query.getCreateTime();
if (createTime!=null && createTime.length==2){
query.setStart_time(createTime[0]);
query.setEnd_time(createTime[1]);
}
List<Map> maps = this.baseMapper.getIostorinv(query);
List<Map<String, Object>> list = new ArrayList<>();
for (Map json : maps) {
Map<String, Object> map = new LinkedHashMap<>();
map.put("单据号", json.get("bill_code"));
map.put("生产车间", json.get("workshop_id"));
map.put("仓库", json.get("stor_name"));
map.put("业务类型", json.get("bill_type").equals(IOSEnum.BILL_TYPE_BCP.code("生产出库")) ? "生产出库" : "手工出库");
map.put("业务日期", String.valueOf(json.get("create_time")).substring(0,10));
map.put("物料编码", json.get("material_code"));
map.put("物料规格", json.get("material_spec"));
map.put("重量(kg)", NumberUtil.round(NumberUtil.div(String.valueOf(json.get("plan_qty")), "1000"), 3));
map.put("数量(个)", NumberUtil.round(String.valueOf(json.get("qty")), 3));
map.put("单重", json.get("unit_weight"));
map.put("出库点", json.get("point_code"));
map.put("出库货位", json.get("struct_name"));
map.put("备注", json.get("remark"));
list.add(map);
}
FileUtil.downloadExcel(list, response);
}
private void delTask(String task_id) {
StIvtIostorinvBcp mstDao = this.getOne(

View File

@@ -2,6 +2,7 @@ package org.nl.wms.storage_manage.semimanage.service.iostorInv.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
@@ -23,6 +24,7 @@ import org.nl.common.utils.MapOf;
import org.nl.common.utils.RedissonUtils;
import org.nl.common.utils.SecurityUtils;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.common.utils.FileUtil;
import org.nl.modules.system.util.CodeUtil;
import org.nl.modules.wql.util.SpringContextHolder;
import org.nl.wms.ext_manage.acs.service.WmsToAcsService;
@@ -54,6 +56,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.nl.wms.storage_manage.semimanage.service.iostorInv.dto.BcpIostorInvQuery;
import org.nl.wms.storage_manage.semimanage.service.structIvt.IStIvtStructivtBcpService;
import org.nl.wms.storage_manage.semimanage.service.structIvt.dao.StIvtStructivtBcp;
import org.nl.wms.storage_manage.semimanage.service.structIvt.dto.StructIvtBcpQuery;
import org.nl.wms.system_manage.service.param.ISysParamService;
import org.nl.wms.system_manage.service.param.dao.Param;
import org.springframework.beans.factory.annotation.Autowired;
@@ -61,6 +64,10 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Consumer;
@@ -423,6 +430,40 @@ public class StIvtIostorinvBcpServiceImpl extends ServiceImpl<StIvtIostorinvBcpM
return this.baseMapper.getPdaAll(form);
}
@Override
public void download(BcpIostorInvQuery query, PageQuery page, HttpServletResponse response) throws IOException {
query.setIo_type(IOSEnum.IO_TYPE.code("入库"));
String[] createTime = query.getCreateTime();
if (createTime!=null && createTime.length==2){
query.setStart_time(createTime[0]);
query.setEnd_time(createTime[1]);
}
List<Map> maps = this.baseMapper.getIostorinv(query);
List<Map<String, Object>> list = new ArrayList<>();
for (Map json : maps) {
Map<String, Object> map = new LinkedHashMap<>();
map.put("单据号", json.get("bill_code"));
map.put("生产车间", json.get("workshop_id"));
map.put("仓库", json.get("stor_name"));
map.put("业务类型", json.get("bill_type").equals(IOSEnum.BILL_TYPE_BCP.code("清洗入库")) ? "清洗入库" : "手工入库");
map.put("业务日期", json.get("biz_date"));
map.put("物料编码", json.get("material_code"));
map.put("物料规格", json.get("material_spec"));
map.put("重量(kg)", NumberUtil.round(NumberUtil.div(String.valueOf(json.get("plan_qty")), "1000"), 3));
map.put("数量(个)", NumberUtil.round(String.valueOf(json.get("qty")), 3));
map.put("单重", json.get("unit_weight"));
map.put("入库点", json.get("point_code"));
map.put("分配货位", json.get("struct_name"));
map.put("载具号", json.get("storagevehicle_code"));
map.put("备注", json.get("remark"));
list.add(map);
}
FileUtil.downloadExcel(list, response);
}
private void delTask(String task_id) {
StIvtIostorinvBcp mstDao = this.getOne(

View File

@@ -134,6 +134,17 @@
>
强制确认
</el-button>
<el-button
slot="right"
:loading="downloading"
class="filter-item"
type="warning"
icon="el-icon-download"
size="mini"
@click="downloadButton"
>
导出
</el-button>
</crudOperation>
<!--表格渲染-->
<el-table
@@ -203,6 +214,8 @@ import AddDialog from '@/views/wms/storage_manage/semiproduct/semiproductIn/AddD
import ViewDialog from '@/views/wms/storage_manage/semiproduct/semiproductIn/ViewDialog'
import { mapGetters } from 'vuex'
import crudStorattr from '@/views/wms/storage_manage/basedata/basedata'
import { download } from '@/api/data'
import { downloadFile } from '@/utils'
export default {
name: 'SemiproductIn',
@@ -237,6 +250,7 @@ export default {
currentRow: null,
storlist: [],
loadingAutodiv: false,
downloading: false,
storId: null
}
},
@@ -340,6 +354,16 @@ export default {
querytable() {
this.onSelectAll()
this.crud.toQuery()
},
downloadButton() {
this.downloading = true
download('/api/in/semiproductIn/download', this.query).then(result => {
debugger
downloadFile(result, '半成品入库单', 'xlsx')
this.downloading = false
}).catch(() => {
this.downloading = false
})
}
}
}

View File

@@ -134,6 +134,17 @@
>
强制确认
</el-button>
<el-button
slot="right"
:loading="downloading"
class="filter-item"
type="warning"
icon="el-icon-download"
size="mini"
@click="downloadButton"
>
导出
</el-button>
</crudOperation>
<!--表格渲染-->
<el-table
@@ -201,6 +212,8 @@ import AddDialog from '@/views/wms/storage_manage/semiproduct/semiproductout/Add
import ViewDialog from '@/views/wms/storage_manage/semiproduct/semiproductout/ViewDialog'
import { mapGetters } from 'vuex'
import crudStorattr from '@/views/wms/storage_manage/basedata/basedata'
import { download } from '@/api/data'
import { downloadFile } from '@/utils'
export default {
name: 'SemiproductOut',
@@ -235,6 +248,7 @@ export default {
loadingAutodiv: false,
currentRow: null,
storlist: [],
downloading: false,
storId: null
}
},
@@ -338,6 +352,15 @@ export default {
querytable() {
this.onSelectAll()
this.crud.toQuery()
},
downloadButton() {
this.downloading = true
download('/api/out/semiproduct/download', this.query).then(result => {
downloadFile(result, '半成品出库单', 'xlsx')
this.downloading = false
}).catch(() => {
this.downloading = false
})
}
}
}