rev:成品报废审核界面新增导出功能

This commit is contained in:
2024-08-28 15:06:26 +08:00
parent e5d9e6a2d8
commit 589971386b
6 changed files with 122 additions and 8 deletions

View File

@@ -369,7 +369,7 @@ public class ProductInstorServiceImpl implements ProductInstorService {
/*
* 如果有实际重量则需要判断重量是否超标
*/
// 重量阈值系统参数
/* // 重量阈值系统参数
double weight_sys = Double.parseDouble(SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("weight_sys").getValue());
// 木箱系统重量
double box_weight = sub_jo.getDoubleValue("box_weight");
@@ -392,7 +392,7 @@ public class ProductInstorServiceImpl implements ProductInstorService {
}
}
}
}*/
JSONArray now_dis_rows = WQL.getWO("QST_IVT_RAWASSISTISTOR").addParam("flag", "18").addParam("box_no", map.get("box_no")).process().getResultJSONArray(0);
if (now_dis_rows.size() > 0) {

View File

@@ -13,6 +13,8 @@ import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Map;
@RestController
@@ -91,4 +93,10 @@ public class ProductScrapController {
return new ResponseEntity<>(productScrapService.importExcel(file, request),HttpStatus.OK);
}
@Log("导出数据")
@GetMapping(value = "/download")
public void download(@RequestParam Map map, HttpServletResponse response) {
productScrapService.download(map, response);
}
}

View File

@@ -6,6 +6,7 @@ import org.springframework.data.domain.Pageable;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.Map;
@@ -76,4 +77,6 @@ public interface ProductScrapService {
* @return
*/
ArrayList<JSONObject> importExcel(MultipartFile file, HttpServletRequest request);
void download(Map map, HttpServletResponse response);
}

View File

@@ -12,10 +12,12 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.utils.SecurityUtils;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.common.utils.CodeUtil;
import org.nl.modules.common.utils.FileUtil;
import org.nl.modules.wql.WQL;
import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.modules.wql.util.SpringContextHolder;
@@ -33,11 +35,9 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -543,4 +543,73 @@ public class ProductScrapServiceImpl implements ProductScrapService {
return resultList;
}
@Override
@SneakyThrows
public void download(Map whereJson, HttpServletResponse response) {
HashMap<String, String> map = new HashMap<>(whereJson);
map.put("flag", "1");
if (StrUtil.isNotEmpty(map.get("bill_code"))) {
map.put("bill_code", "%" + map.get("bill_code") + "%");
}
if (StrUtil.isNotEmpty(map.get("material_code"))) {
map.put("material_code", "%" + map.get("material_code") + "%");
}
if (StrUtil.isNotEmpty(map.get("pcsn"))) {
map.put("pcsn", (String) whereJson.get("pcsn"));
}
//获取人员对应的仓库
UserStorServiceImpl userStorService = new UserStorServiceImpl();
String in_stor_id = userStorService.getInStor();
if (ObjectUtil.isNotEmpty(in_stor_id)) {
map.put("in_stor_id", in_stor_id);
}
// 查询主表
List<JSONObject> listMst = WQL.getWO("QST_IVT_PRODUCTSCRAP")
.addParamMap(map).process().getResultJSONArray(0)
.toJavaList(JSONObject.class);
// 筛选出主表标识
String scrap_id_in = listMst.stream()
.map(row -> row.getString("scrap_id"))
.collect(Collectors.joining("','"));
JSONArray content = WQL.getWO("QST_IVT_PRODUCTSCRAP")
.addParam("flag", "2")
.addParam("scrap_id_in", "('" + scrap_id_in + "')")
.process().getResultJSONArray(0);
List<Map<String, Object>> list = new ArrayList<>();
for (int i = 0; i < content.size(); i++) {
JSONObject object = content.getJSONObject(i);
Map<String, Object> mp = new LinkedHashMap<>();
mp.put("单据号", object.getString("scrap_code"));
mp.put("产品编码", object.getString("material_code"));
mp.put("产品名称", object.getString("material_name"));
mp.put("木箱号", object.getString("storagevehicle_code"));
mp.put("不合格品批次号", object.getString("pcsn"));
mp.put("不合格品重量(KG)", NumberUtil.round(object.getString("qty"), 2));
String fail_source = object.getString("fail_source");
if (fail_source.equals("1")) {
mp.put("不合格品来源", "原辅材料");
} else if (fail_source.equals("2")) {
mp.put("不合格品来源", "半成品");
} else if (fail_source.equals("3")) {
mp.put("不合格品来源", "成品检查");
} else if (fail_source.equals("4")) {
mp.put("不合格品来源", "出货检查");
} else if (fail_source.equals("5")) {
mp.put("不合格品来源", "库存");
} else if (fail_source.equals("6")) {
mp.put("不合格品来源", "客户投诉");
}
mp.put("不合格品缺陷描述", object.getString("remark"));
list.add(mp);
}
FileUtil.downloadExcel(list, response);
}
}

View File

@@ -23,6 +23,7 @@
输入.pcsn TYPEAS s_string
输入.scrap_id TYPEAS s_string
输入.in_stor_id TYPEAS f_string
输入.scrap_id_in TYPEAS f_string
[临时表]
--这边列出来的临时表就会在运行期动态创建
@@ -91,7 +92,8 @@
dtl.*,
dtl.package_box_sn AS storagevehicle_code,
mater.material_code,
mater.material_name
mater.material_name,
mst.scrap_code
FROM
ST_IVT_ProductScrapDtl dtl
LEFT JOIN ST_IVT_ProductScrapMst mst ON mst.scrap_id = dtl.scrap_id
@@ -102,11 +104,15 @@
dtl.scrap_id = 输入.scrap_id
ENDOPTION
OPTION 输入.scrap_id_in <> ""
dtl.scrap_id IN 输入.scrap_id_in
ENDOPTION
OPTION 输入.scrapdtl_id <> ""
dtl.scrapdtl_id = 输入.scrapdtl_id
ENDOPTION
order by dtl.seq_no
order by mst.scrap_code, dtl.seq_no
ENDSELECT
ENDQUERY
ENDIF

View File

@@ -118,6 +118,16 @@
>
不通过
</el-button>
<el-button
slot="right"
class="filter-item"
type="success"
icon="el-icon-check"
size="mini"
@click="downdtl"
>
导出Excel
</el-button>
</crudOperation>
<!--表格渲染-->
<el-table
@@ -182,6 +192,8 @@ import udOperation from '@crud/UD.operation'
import pagination from '@crud/Pagination'
import AddDialog from '@/views/wms/st/inStor/productscrap/AddDialog'
import crudUserStor from '@/views/wms/basedata/st/userStor/userStor'
import { download } from '@/api/data'
import { downloadFile } from '@/utils'
export default {
name: 'Productscrap',
@@ -303,6 +315,22 @@ export default {
this.onSelectAll()
this.crud.toQuery()
this.handleCurrentChange(null)
},
downdtl() {
if (this.currentRow !== null) {
crud.downloadLoading = true
const queryData = this.crud.query
if (this.crud.query.createTime !== undefined) {
queryData.begin_time = this.crud.query.createTime[0]
queryData.end_time = this.crud.query.createTime[1]
}
download('/api/productscrap/download', queryData).then(result => {
downloadFile(result, '成品报废审核', 'xlsx')
crud.downloadLoading = false
}).catch(() => {
crud.downloadLoading = false
})
}
}
}
}