fix:eas查视图指定Schema,单据同步删除状态优化

add:打印单据新增仓库字段,定时回传定时器
This commit is contained in:
zhaoyf
2026-07-22 17:17:08 +08:00
parent 8298df2cf6
commit 6d288d417a
10 changed files with 135 additions and 35 deletions

View File

@@ -33,6 +33,7 @@ public class EasToWmsController {
@SaIgnore @SaIgnore
public ResponseEntity<Object> billChange(@RequestBody BillChangeDto body) { public ResponseEntity<Object> billChange(@RequestBody BillChangeDto body) {
JSONObject result = easToWmsService.billChangeHandler(body); JSONObject result = easToWmsService.billChangeHandler(body);
//全部转发中鼎开关
Param forwardAllZD = paramService.findByCode(SysParamConstant.FORWARD_ALL_ZD); Param forwardAllZD = paramService.findByCode(SysParamConstant.FORWARD_ALL_ZD);
if (ObjectUtil.isNotEmpty(forwardAllZD) && "1".equals(forwardAllZD.getValue())) { if (ObjectUtil.isNotEmpty(forwardAllZD) && "1".equals(forwardAllZD.getValue())) {
wmsToZDWmdService.syncPurchaseReceiving(body); wmsToZDWmdService.syncPurchaseReceiving(body);

View File

@@ -104,8 +104,12 @@ public class InboundEasSyncServiceImpl implements InboundEasSyncService {
easMst.setBill_status(PurchaseBillStatus.COMPLETED.getCode()); easMst.setBill_status(PurchaseBillStatus.COMPLETED.getCode());
} }
//转发中鼎 //转发中鼎
try {
wmsToZDWmdService.syncPurchaseReceiving(billChangeDto); wmsToZDWmdService.syncPurchaseReceiving(billChangeDto);
easMst.setForwardZD(2); easMst.setForwardZD(2);
} catch (Exception e) {
easMst.setForwardZD(1);
}
} }
purchasedtlMapper.batchSave(easDtlList); purchasedtlMapper.batchSave(easDtlList);
purchasemstMapper.insert(easMst); purchasemstMapper.insert(easMst);
@@ -113,10 +117,15 @@ public class InboundEasSyncServiceImpl implements InboundEasSyncService {
break; break;
case 3: case 3:
//删除单据 //删除单据
LambdaQueryWrapper<Purchasemst> eq = new LambdaQueryWrapper<Purchasemst>()
.eq(Purchasemst::getBill_id, billId);
Purchasemst mst = purchasemstMapper.selectOne(eq);
if (mst.getForwardZD() == 2){
wmsToZDWmdService.syncPurchaseReceiving(billChangeDto);
}
purchasedtlMapper.delete(new LambdaQueryWrapper<Purchasedtl>() purchasedtlMapper.delete(new LambdaQueryWrapper<Purchasedtl>()
.eq(Purchasedtl::getBill_id, billId)); .eq(Purchasedtl::getBill_id, billId));
purchasemstMapper.delete(new LambdaQueryWrapper<Purchasemst>() purchasemstMapper.deleteById(mst.getId());
.eq(Purchasemst::getBill_id, billId));
} }
} }
@@ -180,8 +189,12 @@ public class InboundEasSyncServiceImpl implements InboundEasSyncService {
easMst.setBill_status(PurchaseBillStatus.COMPLETED.getCode()); easMst.setBill_status(PurchaseBillStatus.COMPLETED.getCode());
} }
//转发中鼎 //转发中鼎
try {
wmsToZDWmdService.syncPurchaseReceiving(billChangeDto); wmsToZDWmdService.syncPurchaseReceiving(billChangeDto);
easMst.setForwardZD(2); easMst.setForwardZD(2);
} catch (Exception e) {
easMst.setForwardZD(1);
}
} }
purchasedtlMapper.batchSave(easDtlList); purchasedtlMapper.batchSave(easDtlList);
purchasemstMapper.insert(easMst); purchasemstMapper.insert(easMst);
@@ -189,10 +202,15 @@ public class InboundEasSyncServiceImpl implements InboundEasSyncService {
break; break;
case 3: case 3:
//删除单据 //删除单据
LambdaQueryWrapper<Purchasemst> eq = new LambdaQueryWrapper<Purchasemst>()
.eq(Purchasemst::getBill_id, billId);
Purchasemst mst = purchasemstMapper.selectOne(eq);
if (mst.getForwardZD() == 2){
wmsToZDWmdService.syncPurchaseReceiving(billChangeDto);
}
purchasedtlMapper.delete(new LambdaQueryWrapper<Purchasedtl>() purchasedtlMapper.delete(new LambdaQueryWrapper<Purchasedtl>()
.eq(Purchasedtl::getBill_id, billId)); .eq(Purchasedtl::getBill_id, billId));
purchasemstMapper.delete(new LambdaQueryWrapper<Purchasemst>() purchasemstMapper.deleteById(mst.getId());
.eq(Purchasemst::getBill_id, billId));
} }
} }
@@ -256,8 +274,12 @@ public class InboundEasSyncServiceImpl implements InboundEasSyncService {
easMst.setBill_status(PurchaseBillStatus.COMPLETED.getCode()); easMst.setBill_status(PurchaseBillStatus.COMPLETED.getCode());
} }
//转发中鼎 //转发中鼎
try {
wmsToZDWmdService.syncPurchaseReceiving(billChangeDto); wmsToZDWmdService.syncPurchaseReceiving(billChangeDto);
easMst.setForwardZD(2); easMst.setForwardZD(2);
} catch (Exception e) {
easMst.setForwardZD(1);
}
} }
purchasedtlMapper.batchSave(easDtlList); purchasedtlMapper.batchSave(easDtlList);
purchasemstMapper.insert(easMst); purchasemstMapper.insert(easMst);
@@ -265,10 +287,15 @@ public class InboundEasSyncServiceImpl implements InboundEasSyncService {
break; break;
case 3: case 3:
//删除单据 //删除单据
LambdaQueryWrapper<Purchasemst> eq = new LambdaQueryWrapper<Purchasemst>()
.eq(Purchasemst::getBill_id, billId);
Purchasemst mst = purchasemstMapper.selectOne(eq);
if (mst.getForwardZD() == 2){
wmsToZDWmdService.syncPurchaseReceiving(billChangeDto);
}
purchasedtlMapper.delete(new LambdaQueryWrapper<Purchasedtl>() purchasedtlMapper.delete(new LambdaQueryWrapper<Purchasedtl>()
.eq(Purchasedtl::getBill_id, billId)); .eq(Purchasedtl::getBill_id, billId));
purchasemstMapper.delete(new LambdaQueryWrapper<Purchasemst>() purchasemstMapper.deleteById(mst.getId());
.eq(Purchasemst::getBill_id, billId));
} }
} }
@@ -332,8 +359,12 @@ public class InboundEasSyncServiceImpl implements InboundEasSyncService {
easMst.setBill_status(PurchaseBillStatus.COMPLETED.getCode()); easMst.setBill_status(PurchaseBillStatus.COMPLETED.getCode());
} }
//转发中鼎 //转发中鼎
try {
wmsToZDWmdService.syncPurchaseReceiving(billChangeDto); wmsToZDWmdService.syncPurchaseReceiving(billChangeDto);
easMst.setForwardZD(2); easMst.setForwardZD(2);
} catch (Exception e) {
easMst.setForwardZD(1);
}
} }
purchasedtlMapper.batchSave(easDtlList); purchasedtlMapper.batchSave(easDtlList);
purchasemstMapper.insert(easMst); purchasemstMapper.insert(easMst);
@@ -341,10 +372,15 @@ public class InboundEasSyncServiceImpl implements InboundEasSyncService {
break; break;
case 3: case 3:
//删除单据 //删除单据
LambdaQueryWrapper<Purchasemst> eq = new LambdaQueryWrapper<Purchasemst>()
.eq(Purchasemst::getBill_id, billId);
Purchasemst mst = purchasemstMapper.selectOne(eq);
if (mst.getForwardZD() == 2){
wmsToZDWmdService.syncPurchaseReceiving(billChangeDto);
}
purchasedtlMapper.delete(new LambdaQueryWrapper<Purchasedtl>() purchasedtlMapper.delete(new LambdaQueryWrapper<Purchasedtl>()
.eq(Purchasedtl::getBill_id, billId)); .eq(Purchasedtl::getBill_id, billId));
purchasemstMapper.delete(new LambdaQueryWrapper<Purchasemst>() purchasemstMapper.deleteById(mst.getId());
.eq(Purchasemst::getBill_id, billId));
} }
} }
@@ -408,8 +444,12 @@ public class InboundEasSyncServiceImpl implements InboundEasSyncService {
easMst.setBill_status(PurchaseBillStatus.COMPLETED.getCode()); easMst.setBill_status(PurchaseBillStatus.COMPLETED.getCode());
} }
//转发中鼎 //转发中鼎
try {
wmsToZDWmdService.syncPurchaseReceiving(billChangeDto); wmsToZDWmdService.syncPurchaseReceiving(billChangeDto);
easMst.setForwardZD(2); easMst.setForwardZD(2);
} catch (Exception e) {
easMst.setForwardZD(1);
}
} }
purchasedtlMapper.batchSave(easDtlList); purchasedtlMapper.batchSave(easDtlList);
purchasemstMapper.insert(easMst); purchasemstMapper.insert(easMst);
@@ -417,10 +457,15 @@ public class InboundEasSyncServiceImpl implements InboundEasSyncService {
break; break;
case 3: case 3:
//删除单据 //删除单据
LambdaQueryWrapper<Purchasemst> eq = new LambdaQueryWrapper<Purchasemst>()
.eq(Purchasemst::getBill_id, billId);
Purchasemst mst = purchasemstMapper.selectOne(eq);
if (mst.getForwardZD() == 2){
wmsToZDWmdService.syncPurchaseReceiving(billChangeDto);
}
purchasedtlMapper.delete(new LambdaQueryWrapper<Purchasedtl>() purchasedtlMapper.delete(new LambdaQueryWrapper<Purchasedtl>()
.eq(Purchasedtl::getBill_id, billId)); .eq(Purchasedtl::getBill_id, billId));
purchasemstMapper.delete(new LambdaQueryWrapper<Purchasemst>() purchasemstMapper.deleteById(mst.getId());
.eq(Purchasemst::getBill_id, billId));
} }
} }
} }

View File

@@ -36,7 +36,7 @@
unitCode, unitCode,
unit, unit,
trackNo trackNo
FROM v_uc_cgrk06 FROM EAS_NOBLE.V_UC_CGRK06
WHERE billid = #{bill_id} WHERE billid = #{bill_id}
</select> </select>
<select id="selectTransferByBillId" resultType="org.nl.wms.pm_manage.purchase.service.dao.Purchasedtl" resultMap="BaseResultMap"> <select id="selectTransferByBillId" resultType="org.nl.wms.pm_manage.purchase.service.dao.Purchasedtl" resultMap="BaseResultMap">
@@ -55,7 +55,7 @@
unitCode, unitCode,
unit, unit,
trackNo trackNo
FROM V_UC_DBRK02 FROM EAS_NOBLE.V_UC_DBRK02
WHERE billid = #{bill_id} WHERE billid = #{bill_id}
</select> </select>
<select id="selectOtherByBillId" resultType="org.nl.wms.pm_manage.purchase.service.dao.Purchasedtl" resultMap="BaseResultMap"> <select id="selectOtherByBillId" resultType="org.nl.wms.pm_manage.purchase.service.dao.Purchasedtl" resultMap="BaseResultMap">
@@ -74,7 +74,7 @@
unitCode, unitCode,
unit, unit,
trackNo trackNo
FROM V_UC_QTRK04 FROM EAS_NOBLE.V_UC_QTRK04
WHERE billid = #{bill_id} WHERE billid = #{bill_id}
</select> </select>
<select id="selectOtherOutByBillId" resultType="org.nl.wms.pm_manage.purchase.service.dao.Purchasedtl" resultMap="BaseResultMap"> <select id="selectOtherOutByBillId" resultType="org.nl.wms.pm_manage.purchase.service.dao.Purchasedtl" resultMap="BaseResultMap">
@@ -93,7 +93,7 @@
unitCode, unitCode,
unit, unit,
trackNo trackNo
FROM V_UC_QTCK03 FROM EAS_NOBLE.V_UC_QTCK03
WHERE billid = #{bill_id} WHERE billid = #{bill_id}
</select> </select>
<select id="selectTransferOutByBillId" resultType="org.nl.wms.pm_manage.purchase.service.dao.Purchasedtl" resultMap="BaseResultMap"> <select id="selectTransferOutByBillId" resultType="org.nl.wms.pm_manage.purchase.service.dao.Purchasedtl" resultMap="BaseResultMap">
@@ -112,7 +112,7 @@
unitCode, unitCode,
unit, unit,
trackNo trackNo
FROM V_UC_DBCK01 FROM EAS_NOBLE.V_UC_DBCK01
WHERE billid = #{bill_id} WHERE billid = #{bill_id}
</select> </select>

View File

@@ -28,7 +28,7 @@
modifyDate, modifyDate,
status, status,
red red
FROM v_uc_cgrk06 FROM EAS_NOBLE.V_UC_CGRK06
WHERE billid = #{bill_id} WHERE billid = #{bill_id}
</select> </select>
<select id="selectByOrderNo" <select id="selectByOrderNo"
@@ -44,7 +44,7 @@
skuCode, skuCode,
skuName, skuName,
qty qty
FROM v_uc_cgrk06 FROM EAS_NOBLE.V_UC_CGRK06
WHERE orderNo = #{orderNo} WHERE orderNo = #{orderNo}
</select> </select>
<select id="selectTransferByBillId" resultType="org.nl.wms.pm_manage.purchase.service.dao.Purchasemst" resultMap="BaseResultMap"> <select id="selectTransferByBillId" resultType="org.nl.wms.pm_manage.purchase.service.dao.Purchasemst" resultMap="BaseResultMap">
@@ -56,7 +56,7 @@
modifyDate, modifyDate,
status, status,
billid billid
FROM V_UC_DBRK02 FROM EAS_NOBLE.V_UC_DBRK02
WHERE billid = #{bill_id} WHERE billid = #{bill_id}
</select> </select>
<select id="selectOtherByBillId" resultType="org.nl.wms.pm_manage.purchase.service.dao.Purchasemst" resultMap="BaseResultMap"> <select id="selectOtherByBillId" resultType="org.nl.wms.pm_manage.purchase.service.dao.Purchasemst" resultMap="BaseResultMap">
@@ -68,7 +68,7 @@
modifyDate, modifyDate,
status, status,
billid billid
FROM V_UC_QTRK04 FROM EAS_NOBLE.V_UC_QTRK04
WHERE billid = #{bill_id} WHERE billid = #{bill_id}
</select> </select>
<select id="selectOtherOutByBillId" resultType="org.nl.wms.pm_manage.purchase.service.dao.Purchasemst" resultMap="BaseResultMap"> <select id="selectOtherOutByBillId" resultType="org.nl.wms.pm_manage.purchase.service.dao.Purchasemst" resultMap="BaseResultMap">
@@ -80,7 +80,7 @@
modifyDate, modifyDate,
status, status,
billid billid
FROM V_UC_QTCK03 FROM EAS_NOBLE.V_UC_QTCK03
WHERE billid = #{bill_id} WHERE billid = #{bill_id}
</select> </select>
<select id="selectTransferOutByBillId" resultType="org.nl.wms.pm_manage.purchase.service.dao.Purchasemst" resultMap="BaseResultMap"> <select id="selectTransferOutByBillId" resultType="org.nl.wms.pm_manage.purchase.service.dao.Purchasemst" resultMap="BaseResultMap">
@@ -92,7 +92,7 @@
modifyDate, modifyDate,
status, status,
billid billid
FROM V_UC_DBCK01 FROM EAS_NOBLE.V_UC_DBCK01
WHERE billid = #{bill_id} WHERE billid = #{bill_id}
</select> </select>

View File

@@ -18,6 +18,6 @@ public class ErpSyncService {
@Transactional(propagation = Propagation.REQUIRES_NEW) @Transactional(propagation = Propagation.REQUIRES_NEW)
public List<ErpMaterial> list(){ public List<ErpMaterial> list(){
return erpSyncMapper.selectList(null); return erpSyncMapper.queryList();
} }
} }

View File

@@ -2,8 +2,13 @@ package org.nl.wms.ext_manage.service.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.nl.wms.ext_manage.service.dto.ErpMaterial; import org.nl.wms.ext_manage.service.dto.ErpMaterial;
import java.util.List;
@Mapper @Mapper
public interface ErpSyncMapper extends BaseMapper<ErpMaterial> { public interface ErpSyncMapper extends BaseMapper<ErpMaterial> {
@Select("SELECT categoryCode,categoryName,skuCode,skuName,model,unitCode,unit,needPick,status FROM EAS_NOBLE.V_UC_Item50 ")
List<ErpMaterial> queryList();
} }

View File

@@ -0,0 +1,43 @@
package org.nl.wms.sch_manage.service.core;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.nl.wms.warehouse_manage.stockReturn.service.IPmStockReturnService;
import org.nl.wms.warehouse_manage.stockReturn.service.dao.PmStockReturn;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
/**
* 回传单定时回传 间隔5s一条避免eas系统卡崩
*/
@Slf4j
@Component
@RequiredArgsConstructor
public class FormReturnAutoTask {
@Autowired
private IPmStockReturnService pmStockReturnService;
@SneakyThrows
public void run() {
log.info("========>定时回传任务");
List<PmStockReturn> list = pmStockReturnService.list(new LambdaQueryWrapper<PmStockReturn>()
.eq(PmStockReturn::getStatus, 0)
.or()
.eq(PmStockReturn::getStatus, 2));
log.info("========>定时回传列表:{}", JSON.toJSONString(list));
List<PmStockReturn> rows = new ArrayList<>();
for (PmStockReturn item : list) {
rows.add(item);
pmStockReturnService.uploadRows(rows);
Thread.sleep(1000 * 5);
rows.remove(item);
}
}
}

View File

@@ -336,6 +336,7 @@ export default {
const orderNo = dtl.order_no || '' const orderNo = dtl.order_no || ''
const itemNo = dtl.item_no || '' const itemNo = dtl.item_no || ''
const skuCode = dtl.sku_code || '' const skuCode = dtl.sku_code || ''
const house_code = dtl.house_code || ''
const skuName = dtl.sku_name || '' const skuName = dtl.sku_name || ''
const qty = dtl.qty || '' const qty = dtl.qty || ''
const qrText = orderNo + '#' + itemNo + '#' + skuCode + '#' + skuName + '##' + qty + '#' const qrText = orderNo + '#' + itemNo + '#' + skuCode + '#' + skuName + '##' + qty + '#'
@@ -345,11 +346,12 @@ export default {
html += '<div class="label">' html += '<div class="label">'
html += '<h3>上海诺力</h3>' html += '<h3>上海诺力</h3>'
html += '<table>' html += '<table>'
html += '<tr><td class="lbl">单据号</td><td class="val">' + orderNo + '</td><td class="qr" rowspan="5"><img src="' + imgSrc + '" width="150" height="150" /></td></tr>' html += '<tr><td class="lbl">单据号</td><td class="val">' + orderNo + '</td><td class="qr" rowspan="6"><img src="' + imgSrc + '" width="150" height="150" /></td></tr>'
html += '<tr><td class="lbl">行号</td><td class="val">' + itemNo + '</td></tr>' html += '<tr><td class="lbl">行号</td><td class="val">' + itemNo + '</td></tr>'
html += '<tr><td class="lbl">物料编码</td><td class="val">' + skuCode + '</td></tr>' html += '<tr><td class="lbl">物料编码</td><td class="val">' + skuCode + '</td></tr>'
html += '<tr><td class="lbl">物料名称</td><td class="val">' + skuName + '</td></tr>' html += '<tr><td class="lbl">物料名称</td><td class="val">' + skuName + '</td></tr>'
html += '<tr><td class="lbl">数量</td><td class="val">' + qty + '</td></tr>' html += '<tr><td class="lbl">数量</td><td class="val">' + qty + '</td></tr>'
html += '<tr><td class="lbl">仓库</td><td class="val">' + house_code + '</td></tr>'
html += '</table></div>' html += '</table></div>'
} }
html += '</body></html>' html += '</body></html>'

View File

@@ -284,6 +284,7 @@ export default {
const orderNo = dtl.order_no || '' const orderNo = dtl.order_no || ''
const itemNo = dtl.item_no || '' const itemNo = dtl.item_no || ''
const skuCode = dtl.sku_code || '' const skuCode = dtl.sku_code || ''
const house_code = dtl.house_code || ''
const skuName = dtl.sku_name || '' const skuName = dtl.sku_name || ''
const qty = dtl.qty || '' const qty = dtl.qty || ''
const qrText = orderNo + '#' + itemNo + '#' + skuCode + '#' + skuName + '##' + qty + '#' const qrText = orderNo + '#' + itemNo + '#' + skuCode + '#' + skuName + '##' + qty + '#'
@@ -293,11 +294,12 @@ export default {
html += '<div class="label">' html += '<div class="label">'
html += '<h3>上海诺力</h3>' html += '<h3>上海诺力</h3>'
html += '<table>' html += '<table>'
html += '<tr><td class="lbl">单据号</td><td class="val">' + orderNo + '</td><td class="qr" rowspan="5"><img src="' + imgSrc + '" width="150" height="150" /></td></tr>' html += '<tr><td class="lbl">单据号</td><td class="val">' + orderNo + '</td><td class="qr" rowspan="6"><img src="' + imgSrc + '" width="150" height="150" /></td></tr>'
html += '<tr><td class="lbl">行号</td><td class="val">' + itemNo + '</td></tr>' html += '<tr><td class="lbl">行号</td><td class="val">' + itemNo + '</td></tr>'
html += '<tr><td class="lbl">物料编码</td><td class="val">' + skuCode + '</td></tr>' html += '<tr><td class="lbl">物料编码</td><td class="val">' + skuCode + '</td></tr>'
html += '<tr><td class="lbl">物料名称</td><td class="val">' + skuName + '</td></tr>' html += '<tr><td class="lbl">物料名称</td><td class="val">' + skuName + '</td></tr>'
html += '<tr><td class="lbl">数量</td><td class="val">' + qty + '</td></tr>' html += '<tr><td class="lbl">数量</td><td class="val">' + qty + '</td></tr>'
html += '<tr><td class="lbl">仓库</td><td class="val">' + house_code + '</td></tr>'
html += '</table></div>' html += '</table></div>'
} }
html += '</body></html>' html += '</body></html>'

View File

@@ -353,6 +353,7 @@ export default {
const itemNo = dtl.item_no || '' const itemNo = dtl.item_no || ''
const skuCode = dtl.sku_code || '' const skuCode = dtl.sku_code || ''
const skuName = dtl.sku_name || '' const skuName = dtl.sku_name || ''
const house_code = dtl.house_code || ''
const qty = dtl.qty || '' const qty = dtl.qty || ''
const qrText = orderNo + '#' + itemNo + '#' + skuCode + '#' + skuName + '##' + qty + '#' const qrText = orderNo + '#' + itemNo + '#' + skuCode + '#' + skuName + '##' + qty + '#'
const imgSrc = await QRCode.toDataURL(qrText, { const imgSrc = await QRCode.toDataURL(qrText, {
@@ -361,11 +362,12 @@ export default {
html += '<div class="label">' html += '<div class="label">'
html += '<h3>上海诺力</h3>' html += '<h3>上海诺力</h3>'
html += '<table>' html += '<table>'
html += '<tr><td class="lbl">单据号</td><td class="val">' + orderNo + '</td><td class="qr" rowspan="5"><img src="' + imgSrc + '" width="150" height="150" /></td></tr>' html += '<tr><td class="lbl">单据号</td><td class="val">' + orderNo + '</td><td class="qr" rowspan="6"><img src="' + imgSrc + '" width="150" height="150" /></td></tr>'
html += '<tr><td class="lbl">行号</td><td class="val">' + itemNo + '</td></tr>' html += '<tr><td class="lbl">行号</td><td class="val">' + itemNo + '</td></tr>'
html += '<tr><td class="lbl">物料编码</td><td class="val">' + skuCode + '</td></tr>' html += '<tr><td class="lbl">物料编码</td><td class="val">' + skuCode + '</td></tr>'
html += '<tr><td class="lbl">物料名称</td><td class="val">' + skuName + '</td></tr>' html += '<tr><td class="lbl">物料名称</td><td class="val">' + skuName + '</td></tr>'
html += '<tr><td class="lbl">数量</td><td class="val">' + qty + '</td></tr>' html += '<tr><td class="lbl">数量</td><td class="val">' + qty + '</td></tr>'
html += '<tr><td class="lbl">仓库</td><td class="val">' + house_code + '</td></tr>'
html += '</table></div>' html += '</table></div>'
} }
html += '</body></html>' html += '</body></html>'