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