This commit is contained in:
2022-11-15 20:00:46 +08:00
parent c37ad08bcc
commit 6dfe3621a0
9 changed files with 696 additions and 72 deletions

View File

@@ -278,7 +278,15 @@ public class LmsToMesServiceImpl implements LmsToMesService {
return result;
}
JSONArray list = new JSONArray();
String contain_name = param.getString("contain_name");
String package_box_sn = param.getString("package_box_sn");
String warehouse = param.getString("warehouse");
JSONObject jo = new JSONObject();
jo.put("ContainerName",contain_name);
jo.put("isSourceRollDeliveryComplete",1);
jo.put("PackageBoxSN",package_box_sn);
jo.put("PackageBoxSN",warehouse);
// String url = acsUrl + api;
String url = SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("MES_URL").getValue();
@@ -286,7 +294,7 @@ public class LmsToMesServiceImpl implements LmsToMesService {
url = url + api;
try {
String resultMsg = HttpRequest.post(url)
.body(String.valueOf(param))
.body(String.valueOf(jo))
.execute().body();
result = JSONObject.parseObject(resultMsg);
log.info("airSwellWithPaperTubeAssComplete接口输出参数为-------------------" + result.toString());

View File

@@ -58,7 +58,7 @@
) AS is_bake
FROM
ST_IVT_CoolPointIvt coolIvt
LEFT JOIN PDM_BI_RawFoilWorkOrder der ON der.container_name = der.container_name
LEFT JOIN PDM_BI_RawFoilWorkOrder der ON coolIvt.container_name = der.container_name
LEFT JOIN ST_IVT_HotRegionIOMst hotMst ON hotMst.container_name = coolIvt.container_name
LEFT JOIN (
SELECT * FROM ST_IVT_HotRegionIODtl WHERE 1=1 ORDER BY confirm_time ASC LIMIT 1

View File

@@ -1742,6 +1742,16 @@ public class CheckOutBillServiceImpl implements CheckOutBillService {
// 调用接口回传
new LmsToSapServiceImpl().returnMoveDtl(paramMst);
//调用母卷配送到位接口
JSONObject mes_jo = new JSONObject();
//查询该子卷对应的分切计划
//JSONArray cut_rows = WQLObject.getWQLObject("")
mes_jo.put("contain_name",disArr.getJSONObject(0).getString("pcsn"));
mes_jo.put("package_box_sn",disArr.getJSONObject(0).getString("box_no"));
mes_jo.put("warehouse","3");
new LmsToMesServiceImpl().cutPlanMomRollDeliveryComplete(mes_jo);
}
}

View File

@@ -0,0 +1,65 @@
package org.nl.wms.st.returns.rest;
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.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 java.util.Map;
@RestController
@RequiredArgsConstructor
@Api(tags = "出入库回传")
@RequestMapping("/api/inandoutreturn")
@Slf4j
public class InAndOutReturnlController {
private final InAndOutReturnService inAndOutReturnService;
@GetMapping
@Log("查询出库单")
@ApiOperation("查询出库单")
//@PreAuthorize("@el.check('checkoutbill:list')")
public ResponseEntity<Object> query(@RequestParam Map whereJson, Pageable page) {
return new ResponseEntity<>(inAndOutReturnService.pageQuery(whereJson, page), HttpStatus.OK);
}
@PostMapping("/upload")
@Log("回传")
@ApiOperation("回传")
public ResponseEntity<Object> upload(@RequestBody Map whereJson) {
inAndOutReturnService.upload(whereJson);
return new ResponseEntity<>(HttpStatus.OK);
}
@PostMapping("/uploadMES")
@Log("回传MES")
@ApiOperation("回传MES")
public ResponseEntity<Object> uploadMES(@RequestBody Map whereJson) {
inAndOutReturnService.uploadMES(whereJson);
return new ResponseEntity<>(HttpStatus.OK);
}
@PostMapping("/uploadSAP")
@Log("回传SAP")
@ApiOperation("回传SAP")
public ResponseEntity<Object> uploadSAP(@RequestBody Map whereJson) {
inAndOutReturnService.uploadSAP(whereJson);
return new ResponseEntity<>(HttpStatus.OK);
}
@PostMapping("/disupload")
@Log("不回传")
@ApiOperation("不回传")
public ResponseEntity<Object> disupload(@RequestBody Map whereJson) {
inAndOutReturnService.disupload(whereJson);
return new ResponseEntity<>(HttpStatus.OK);
}
}

View File

@@ -0,0 +1,27 @@
package org.nl.wms.st.returns.service;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.springframework.data.domain.Pageable;
import java.util.Map;
public interface InAndOutReturnService {
/**
* 查询数据分页
*
* @param whereJson 条件
* @param page 分页参数
* @return Map<String, Object>
*/
Map<String, Object> pageQuery(Map whereJson, Pageable page);
void upload(Map whereJson);
void uploadMES(Map whereJson);
void uploadSAP(Map whereJson);
void disupload(Map whereJson);
}

View File

@@ -0,0 +1,207 @@
package org.nl.wms.st.returns.service.impl;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.modules.system.service.impl.ParamServiceImpl;
import org.nl.modules.wql.WQL;
import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.modules.wql.util.SpringContextHolder;
import org.nl.modules.wql.util.WqlUtil;
import org.nl.wms.ext.mes.service.impl.LmsToMesServiceImpl;
import org.nl.wms.ext.sap.service.impl.LmsToSapServiceImpl;
import org.nl.wms.st.returns.service.InAndOutReturnService;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.HashMap;
import java.util.Map;
/**
* PC端出入库新增
*/
@Service
@RequiredArgsConstructor
@Slf4j
public class InAndOutRetrunServiceImpl implements InAndOutReturnService {
@Override
public Map<String, Object> pageQuery(Map whereJson, Pageable page) {
HashMap map = new HashMap<>(whereJson);
String bill_code = MapUtil.getStr(whereJson, "bill_code");
String material_search = MapUtil.getStr(whereJson, "material_search");
map.put("flag", "1");
map.put("stor_id", MapUtil.getStr(whereJson, "stor_id"));
map.put("io_type", MapUtil.getStr(whereJson, "io_type"));
map.put("bill_status", MapUtil.getStr(whereJson, "bill_status"));
map.put("bill_type", MapUtil.getStr(whereJson, "bill_type"));
map.put("is_upload", MapUtil.getStr(whereJson, "is_upload"));
map.put("begin_time", MapUtil.getStr(whereJson, "begin_time"));
map.put("end_time", MapUtil.getStr(whereJson, "end_time"));
map.put("pcsn", MapUtil.getStr(whereJson, "pcsn"));
if (!ObjectUtil.isEmpty(bill_code)) map.put("bill_code", "%" + bill_code + "%");
if (!ObjectUtil.isEmpty(material_search)) map.put("material_search", "%" + material_search + "%");
JSONObject jo = WQL.getWO("QST_IVT_INANDOUTRETRUN").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "mst.input_time desc");
return jo;
}
@Override
public void uploadMES(Map whereJson) {
}
@Override
public void uploadSAP(Map whereJson) {
}
@Transactional(rollbackFor = Exception.class)
@Override
public void disupload(Map whereJson) {
}
@Override
public void upload(Map whereJson) {
//出库分配表
WQLObject wo_dis = WQLObject.getWQLObject("ST_IVT_IOStorInvDis");
//出库明细表
WQLObject wo_dtl = WQLObject.getWQLObject("ST_IVT_IOStorInvDtl");
//出库主表
WQLObject wo_mst = WQLObject.getWQLObject("ST_IVT_IOStorInv");
// 物料表
WQLObject materTab = WQLObject.getWQLObject("md_me_materialbase");
//根据出入单类型判断回传业务
//1、生产入库回传MES手工入库回传SAP
//1、销售出库回传MES、SAP改切出库回传SAP
JSONArray rows = (JSONArray) whereJson.get("rows");
for (int i = 0; i < rows.size(); i++) {
JSONObject jo_mst = new JSONObject();
String isUpload = SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("is_upload").getValue();
if (StrUtil.equals(isUpload, "1")) {
String bill_type = jo_mst.getString("bill_type");
//生产入库
if (StrUtil.equals(bill_type, "0001")) {
//1.回传MES
}
// 销售出库
if (StrUtil.equals(bill_type, "1001")) {
// 1.回传sap
JSONObject paramSapMst = new JSONObject();
paramSapMst.put("ZACTION", "P");
paramSapMst.put("VBELN", ""); // 交货
paramSapMst.put("BUDAT", jo_mst.getString("biz_date"));
paramSapMst.put("ZZYGYF", jo_mst.getString("estimated_freight"));
paramSapMst.put("ZZYFGY", jo_mst.getString("trans_code"));
JSONArray paramDtlArr = new JSONArray();
JSONArray dtlArr = wo_dtl.query("iostorinv_id = '" + jo_mst.getString("iostorinv_id") + "'").getResultJSONArray(0);
for (int m = 0; m < dtlArr.size(); m++) {
JSONArray paramDisArr = new JSONArray();
JSONObject json = dtlArr.getJSONObject(m);
JSONObject jsonMater = materTab.query("material_id = '" + json.getString("material_id") + "'").uniqueResult(0);
// 明细
JSONObject jsonDtl = new JSONObject();
jsonDtl.put("VBELN", ""); // 交货
jsonDtl.put("POSNR", json.getString("seq_no"));
jsonDtl.put("MATNR", jsonMater.getString("material_code"));
jsonDtl.put("LGORT", ""); // 储存地点
// 分配明细
JSONArray disArr = wo_dis.query("iostorinvdtl_id = '" + json.getString("iostorinvdtl_id") + "'").getResultJSONArray(0);
for (int j = 0; j < disArr.size(); j++) {
JSONObject json2 = disArr.getJSONObject(j);
JSONObject jsonDis = new JSONObject();
jsonDis.put("VBELN", ""); // 交货
jsonDis.put("POSNR", json2.getString("seq_no"));
jsonDis.put("CHARG", json2.getString("pcsn"));
jsonDis.put("LFIMG", json.getString("plan_qty"));
jsonDis.put("VRKME", json.getString("qty_unit_name"));
jsonDis.put("PIKMG", json2.getString("plan_qty"));
jsonDis.put("VRKMP", json2.getString("qty_unit_name"));
paramDisArr.add(jsonDis);
}
jsonDtl.put("CHARG_T", paramDisArr);
paramDtlArr.add(jsonDtl);
}
paramSapMst.put("ITEM", paramDtlArr);
// 调用接口回传
new LmsToSapServiceImpl().returnDelivery(paramSapMst);
// 2.回传mes
JSONObject paramMesMst = new JSONObject();
String userName = SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("MES_USERNAME").getValue();
String passWord = SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("MES_PASSWORD").getValue();
paramMesMst.put("UserName", userName);
paramMesMst.put("Password", passWord);
paramMesMst.put("OutboundOrderNum", jo_mst.getString("bill_code"));
paramMesMst.put("OutboundUser", jo_mst.getString("confirm_optname"));
paramMesMst.put("OutboundTime", jo_mst.getString("confirm_time"));
JSONArray boxArr = WQL.getWO("ST_OUTIVT02").addParam("flag", "2")
.addParam("iostorinv_id", jo_mst.getString("iostorinv_id"))
.process().getResultJSONArray(0);
JSONArray paramArr = new JSONArray();
for (int j = 0; j < boxArr.size(); j++) {
JSONObject json = boxArr.getJSONObject(j);
JSONObject jsonBox = new JSONObject();
jsonBox.put("PackageBoxSN", json.getString("num"));
paramArr.add(jsonBox);
}
paramMesMst.put("item", paramArr);
// 调用接口回传
new LmsToMesServiceImpl().childRollFGOutboundComplete(paramMesMst);
}
// 改切出库
if (StrUtil.equals(bill_type, "1003")) {
JSONObject paramMst = new JSONObject();
JSONArray paramArr = new JSONArray();
paramMst.put("BLDAT", jo_mst.getString("biz_date"));
paramMst.put("BUDAT", jo_mst.getString("biz_date"));
paramMst.put("BKTXT", ""); // 凭证抬头文本
paramMst.put("XBLNR", ""); // 参考
JSONArray disArr = wo_dis.query("iostorinv_id = '" + jo_mst.getString("iostorinv_id") + "'").getResultJSONArray(0);
for (int j = 0; j < disArr.size(); j++) {
JSONObject json = disArr.getJSONObject(j);
JSONObject jsonMater = materTab.query("material_id = '" + json.getString("material_id") + "'").uniqueResult(0);
JSONObject jsonDtl = new JSONObject();
jsonDtl.put("RSPOS", i + 1);
jsonDtl.put("MATNR", jsonMater.getString("material_code"));
jsonDtl.put("BWART", "311");
jsonDtl.put("MENGE", json.getDoubleValue("plan_qty"));
jsonDtl.put("MEINS", json.getString("qty_unit_id"));
jsonDtl.put("LGORT", ""); // 库存地点
jsonDtl.put("CHARG", json.getString("pcsn"));
jsonDtl.put("UMLGO", ""); // 收货库存地点
jsonDtl.put("UMCHA", json.getString("pcsn"));
jsonDtl.put("KDAUF", ""); // 销售订单
jsonDtl.put("KDPOS", ""); // 销售订单行项目
paramArr.add(jsonDtl);
}
paramMst.put("item", paramArr);
// 调用接口回传
new LmsToSapServiceImpl().returnMoveDtl(paramMst);
}
}
}
}
}

View File

@@ -0,0 +1,343 @@
[交易说明]
交易名: 出入库回传查询
所属模块:
功能简述:
版权所有:
表引用:
版本经历:
[数据库]
--指定数据库为空采用默认值默认为db.properties中列出的第一个库
[IO定义]
#################################################
## 表字段对应输入参数
#################################################
输入.flag TYPEAS s_string
输入.pcsn TYPEAS s_string
输入.material_id TYPEAS s_string
输入.material_search TYPEAS s_string
输入.stor_id TYPEAS s_string
输入.bill_status TYPEAS s_string
输入.is_upload TYPEAS s_string
输入.begin_time TYPEAS s_string
输入.end_time TYPEAS s_string
输入.bill_code TYPEAS s_string
输入.bill_type TYPEAS s_string
输入.io_type TYPEAS s_string
输入.material_type_id TYPEAS f_string
输入.iostorinv_id TYPEAS s_string
输入.ids TYPEAS f_string
[临时表]
--这边列出来的临时表就会在运行期动态创建
[临时变量]
--所有中间过程变量均可在此处定义
[业务过程]
##########################################
# 1、输入输出检查 #
##########################################
##########################################
# 2、主过程前处理 #
##########################################
##########################################
# 3、业务主过程 #
##########################################
IF 输入.flag = "1"
PAGEQUERY
SELECT DISTINCT
mst.*,
dtl.source_bill_type,
user.nick_name AS upload_name
FROM
st_ivt_iostorinv mst
LEFT JOIN st_ivt_iostorinvdtl dtl ON mst.iostorinv_id = dtl.iostorinv_id
LEFT JOIN sys_user user ON user.user_id = mst.upload_optid
INNER JOIN md_me_materialbase mb ON mb.material_id = dtl.material_id
WHERE
mst.bill_status = '99'
AND
mst.bill_type not in ('000401','010201','010202','010401','010601')
OPTION 输入.stor_id <> ""
mst.stor_id = 输入.stor_id
ENDOPTION
OPTION 输入.pcsn <> ""
dtl.pcsn = 输入.pcsn
ENDOPTION
OPTION 输入.bill_type <> ""
mst.bill_type = 输入.bill_type
ENDOPTION
OPTION 输入.bill_status <> ""
mst.bill_status = 输入.bill_status
ENDOPTION
OPTION 输入.bill_code <> ""
mst.bill_code like 输入.bill_code
ENDOPTION
OPTION 输入.io_type <> ""
mst.io_type = 输入.io_type
ENDOPTION
OPTION 输入.is_upload <> ""
mst.is_upload = 输入.is_upload
ENDOPTION
OPTION 输入.begin_time <> ""
mst.biz_date >= 输入.begin_time
ENDOPTION
OPTION 输入.end_time <> ""
mst.biz_date <= 输入.end_time
ENDOPTION
OPTION 输入.material_search <> ""
(
mb.material_code like 输入.material_search
OR
mb.material_name like 输入.material_search
)
ENDOPTION
ENDSELECT
ENDPAGEQUERY
ENDIF
IF 输入.flag = "2"
QUERY
SELECT
proc.PK_DEPT,
proc.VEND_ID,
proc.CEMPLOYEEID,
proc.PK_DEPT_V,
proc.VBILLCODE,
dtl.pcsn,
dtl.material_id,
proc.PRICE,
proc.PRICE_TAX,
(case when mst.bill_type not in ('000601','000501','010701') then dtl.real_qty else concat('-',dtl.plan_qty) end) AS real_qty,
proc.TAX,
proc.PURCHASE_ID_B,
proc.PURCHASE_ID,
proc.ITEM_ID,
proc.CROWNO,
proc.QTY,
mb.material_name,
proc.F_UNIT_ID,
proc.M_UNIT_ID,
userper.ext_id AS make_ext_id,
userper.extuser_id AS create_user_id,
mb.measrate AS vchangerate,
dict.label
FROM
st_ivt_iostorinvdtl dtl
LEFT JOIN st_ivt_iostorinv mst ON mst.iostorinv_id = dtl.iostorinv_id
LEFT JOIN sys_dict_detail dict ON dict.`value` = mst.bill_type AND dict.name = 'IO_BUSS_TYPE'
INNER JOIN pcs_if_purchaseorderproc proc ON proc.id = dtl.base_billdtl_id
LEFT JOIN sys_user userper ON userper.user_id = mst.input_optid
LEFT JOIN md_me_materialbase mb ON mb.material_id = dtl.material_id
WHERE
dtl.iostorinv_id = 输入.iostorinv_id
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "3"
QUERY
SELECT
*
FROM
md_pb_materialtypeerpstorage erp
WHERE
erp.material_type_id IN 输入.material_type_id
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "4"
QUERY
SELECT
*,
(
CASE
WHEN a.bill_type NOT IN ( '000601', '000501', '010701' ) THEN
a.num ELSE concat( '-', a.num )
END
) AS real_qty
FROM
(
SELECT
MAX( erpuser.ext_id ) AS create_id,
erpuser.extuser_id AS create_user_id,
MAX( dept.ext_id ) AS dept_ext_id,
MAX( dept.version_id ) AS version_id,
MAX( mst.input_time ) AS input_time,
MAX( mst.biz_date ) AS biz_date,
dtl.material_id,
MAX( mb.ext_id ) AS material_ext_id,
MAX( mu.ext_id ) AS unit_ext_id,
MAX( mb.material_name ) AS material_name,
SUM( dtl.real_qty ) AS num,
dtl.pcsn,
MAX( mst.bill_type ) AS bill_type,
MAX(IFNULL(mb.measrate,'1/1')) AS vchangerate,
MAX(dict.label) AS label
FROM
st_ivt_iostorinvdis dtl
LEFT JOIN st_ivt_iostorinv mst ON mst.iostorinv_id = dtl.iostorinv_id
LEFT JOIN sys_user erpuser ON erpuser.user_id = mst.input_optid
LEFT JOIN sys_dept dept ON dept.dept_id = mst.sysdeptid
LEFT JOIN sys_dict_detail dict ON dict.`value` = mst.bill_type AND dict.name = 'IO_BUSS_TYPE'
LEFT JOIN md_me_materialbase mb ON mb.material_id = dtl.material_id
LEFT JOIN md_pb_measureunit mu ON mu.measure_unit_id = mb.ass_unit_id
WHERE
dtl.iostorinv_id = 输入.iostorinv_id
GROUP BY
material_id,
dtl.pcsn,
extuser_id
) a
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "5"
QUERY
SELECT
MAX(proc.PK_DEPT) AS PK_DEPT,
MAX(proc.VEND_ID) AS VEND_ID,
MAX(proc.CEMPLOYEEID) AS CEMPLOYEEID,
MAX(proc.PK_DEPT_V) AS PK_DEPT_V,
proc.VBILLCODE,
dtl.pcsn,
dtl.material_id,
MAX(proc.PRICE) AS PRICE,
MAX(proc.PRICE_TAX) AS PRICE_TAX,
SUM(dtl.real_qty) AS real_qty,
MAX(proc.TAX) AS TAX,
MAX(proc.PURCHASE_ID_B) AS PURCHASE_ID_B,
MAX(proc.PURCHASE_ID) AS PURCHASE_ID,
MAX(proc.ITEM_ID) AS ITEM_ID,
MAX(proc.CROWNO) AS CROWNO,
MAX(proc.QTY) AS QTY,
MAX(mb.material_name) AS material_name,
MAX(proc.F_UNIT_ID) AS F_UNIT_ID,
MAX(proc.M_UNIT_ID) AS M_UNIT_ID,
MAX(userper.ext_id) AS make_ext_id,
userper.extuser_id AS create_user_id,
MAX(IFNULL(mb.measrate,'1/1')) AS vchangerate,
MAX(dict.label) AS label
FROM
st_ivt_iostorinvdtl dtl
LEFT JOIN st_ivt_iostorinv mst ON mst.iostorinv_id = dtl.iostorinv_id
INNER JOIN pcs_if_purchaseorderproc proc ON proc.id = dtl.base_billdtl_id
LEFT JOIN sys_user userper ON userper.user_id = mst.input_optid
LEFT JOIN md_me_materialbase mb ON mb.material_id = dtl.material_id
LEFT JOIN sys_dict_detail dict ON dict.`value` = mst.bill_type AND dict.name = 'IO_BUSS_TYPE'
WHERE
dtl.iostorinv_id IN 输入.ids
GROUP BY
material_id,pcsn,extuser_id,VBILLCODE,CROWNO
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "6"
QUERY
SELECT
MAX(erpuser.ext_id) AS create_id,
erpuser.extuser_id AS create_user_id,
MAX(dept.ext_id) AS dept_ext_id,
MAX(dept.version_id) AS version_id,
MAX(mst.input_time) AS input_time,
MAX(mst.biz_date) AS biz_date,
dtl.material_id,
MAX(mb.ext_id) AS material_ext_id,
MAX(mu.ext_id) AS unit_ext_id,
MAX(mb.material_name) AS material_name,
SUM(dtl.real_qty) AS real_qty,
dtl.pcsn,
MAX(IFNULL(mb.measrate,'1/1')) AS vchangerate,
MAX(dict.label) AS label
FROM
st_ivt_iostorinvdis dtl
LEFT JOIN st_ivt_iostorinv mst ON mst.iostorinv_id = dtl.iostorinv_id
LEFT JOIN sys_user erpuser ON erpuser.user_id = mst.input_optid
LEFT JOIN sys_dept dept ON dept.dept_id = mst.sysdeptid
LEFT JOIN md_me_materialbase mb ON mb.material_id = dtl.material_id
LEFT JOIN md_pb_measureunit mu ON mu.measure_unit_id = mb.ass_unit_id
LEFT JOIN sys_dict_detail dict ON dict.`value` = mst.bill_type AND dict.name = 'IO_BUSS_TYPE'
WHERE
dtl.iostorinv_id IN 输入.ids
GROUP BY
material_id,dtl.pcsn,extuser_id
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "7"
QUERY
SELECT
inv.*
FROM
st_ivt_iostorinvdtl dtl
LEFT JOIN st_ivt_iostorinv inv ON inv.iostorinv_id = dtl.iostorinv_id
WHERE
dtl.material_id = 输入.material_id
AND
dtl.pcsn = 输入.pcsn
AND
inv.is_upload = '0'
AND
inv.iostorinv_id not IN 输入.ids
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "8"
QUERY
SELECT
erpuser.ext_id AS create_id,
erpuser.extuser_id AS create_user_id,
dept.ext_id AS dept_ext_id,
dept.version_id,
mst.input_time,
mst.biz_date,
dtl.material_id,
mb.ext_id AS material_ext_id,
mu.ext_id AS unit_ext_id,
mb.material_name,
dtl.seq_no,
(case when mst.bill_type not in ('000601','000501','010701') then dtl.real_qty else concat('-',dtl.plan_qty) end) AS real_qty,
dtl.pcsn,
IFNULL(mb.measrate,'1/1') AS vchangerate,
dict.label
FROM
st_ivt_iostorinvdtl dtl
LEFT JOIN st_ivt_iostorinv mst ON mst.iostorinv_id = dtl.iostorinv_id
LEFT JOIN sys_dict_detail dict ON dict.`value` = mst.bill_type AND dict.name = 'IO_BUSS_TYPE'
LEFT JOIN sys_user erpuser ON erpuser.user_id = mst.input_optid
LEFT JOIN sys_dept dept ON dept.dept_id = mst.sysdeptid
LEFT JOIN md_me_materialbase mb ON mb.material_id = dtl.material_id
LEFT JOIN md_pb_measureunit mu ON mu.measure_unit_id = mb.ass_unit_id
WHERE
dtl.iostorinv_id = 输入.iostorinv_id
ENDSELECT
ENDQUERY
ENDIF

View File

@@ -48,4 +48,12 @@ export function disupload(data) {
})
}
export default { add, edit, del, upload, upload2, disupload }
export function getType(data) {
return request({
url: '/api/inandoutreturn/getType',
method: 'post',
data
})
}
export default { add, edit, del, upload, upload2, disupload, getType }

View File

@@ -32,7 +32,6 @@
<el-select
v-model="query.io_type"
size="mini"
disabled
placeholder="出入类型"
class="filter-item"
@change="ioTypeChange"
@@ -58,9 +57,9 @@
>
<el-option
v-for="item in billtypelist"
:key="item.code"
:label="item.name"
:value="item.code"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
@@ -190,8 +189,6 @@
size="mini"
:data="crud.data"
style="width: 100%;"
show-summary
:summary-method="getSum"
:highlight-current-row="true"
@selection-change="crud.selectionChangeHandler"
>
@@ -240,7 +237,6 @@ import crudOperation from '@crud/CRUD.operation'
import pagination from '@crud/Pagination'
import crudStorattr from '@/views/wms/basedata/st/stor/storattr'
import ViewDialog from '@/views/wms/st/inbill/ViewDialog'
import crudRawAssist from '@/views/wms/st/inbill/rawassist'
export default {
name: 'Return',
@@ -254,12 +250,13 @@ export default {
del: false,
reset: true,
download: false
}
},
query: { io_type: '0' }
})
},
mixins: [presenter(), header(), crud()],
// 数据字典
dicts: ['io_bill_status', 'ST_CREATE_MODE', 'io_type', 'is_upload'],
dicts: ['io_bill_status', 'ST_CREATE_MODE', 'io_type', 'is_upload', 'ST_INV_IN_TYPE', 'ST_INV_OUT_TYPE'],
data() {
return {
height: document.documentElement.clientHeight - 180 + 'px;',
@@ -278,12 +275,11 @@ export default {
}
},
created() {
crudStorattr.getStor({ 'is_materialstore': '1' }).then(res => {
crudStorattr.getStor({ 'is_productstore': '1' }).then(res => {
this.storlist = res.content
})
crudRawAssist.getType({ 'io_code': '' }).then(res => {
this.billtypelist = res
})
debugger
this.billtypelist = this.dict.ST_INV_IN_TYPE
},
methods: {
[CRUD.HOOK.beforeRefresh]() {
@@ -298,11 +294,20 @@ export default {
this.viewShow = true
},
bill_typeFormat(row) {
for (const item of this.billtypelist) {
if (item.code === row.bill_type) {
return item.name
}
if (this.query.io_type === '0') {
return this.dict.label.ST_INV_IN_TYPE[row.bill_type]
}
if (this.query.io_type === '1') {
return this.dict.label.ST_INV_OUT_TYPE[row.bill_type]
}
},
ioTypeChange(value) {
if (value === '1') {
this.billtypelist = this.dict.ST_INV_OUT_TYPE
} else {
this.billtypelist = this.dict.ST_INV_IN_TYPE
}
this.crud.toQuery()
},
create_modeFormat(row) {
return this.dict.label.ST_CREATE_MODE[row.create_mode]
@@ -366,7 +371,7 @@ export default {
this.fullscreenLoading = false
})
},
disuploadSAP() {
uploadSAP() {
const res = this.$refs.table.selection
if (!res || res.length < 1) {
this.crud.notify('请选择一条记录', CRUD.NOTIFICATION_TYPE.INFO)
@@ -383,7 +388,7 @@ export default {
this.fullscreenLoading = false
})
},
disuploadMES() {
uploadMES() {
const res = this.$refs.table.selection
if (!res || res.length < 1) {
this.crud.notify('请选择一条记录', CRUD.NOTIFICATION_TYPE.INFO)
@@ -400,61 +405,12 @@ export default {
this.fullscreenLoading = false
})
},
ioTypeChange(value) {
if (value === '1') {
crudRawAssist.getType({ 'io_code': '', 'io_flag': '01' }).then(res => {
this.billtypelist = res
})
} else {
crudRawAssist.getType({ 'io_code': '', 'io_flag': '00' }).then(res => {
this.billtypelist = res
})
}
this.crud.toQuery()
},
formatIsUpload(row) {
if (row.is_upload === '0') {
return '否'
} else if (row.is_upload === '1') {
return '是'
}
},
getSum(param) {
// 将所有number的字段合计
const { columns, data } = param
const sums = []
let values = []
columns.forEach((column, index) => {
if (index === 1) {
sums[index] = '合计'
return
}
values = data.map(item => Number(item[column.property]))
if (column.property === 'total_qty') {
sums[index] = values.reduce((prev, curr) => {
const value = Number(curr)
if (!isNaN(value)) {
return prev + curr
} else {
return prev
}
}, 0)
sums[index] = sums[index].toFixed(3) + 'kg' // 保留三位小数
} else if (column.property === 'detail_count') {
sums[index] = values.reduce((prev, curr) => {
const value = Number(curr)
if (!isNaN(value)) {
return prev + curr
} else {
return prev
}
}, 0)
sums[index] = sums[index].toFixed(0) // 保留三位小数
} else {
sums[index] = '--'
}
})
return sums
}
}
}