WMS:PDA接口退库完善,完成车间接口申请退库
master
xins 1 year ago
parent e83aa2985b
commit 088786aa08

@ -43,12 +43,6 @@ public class WmsConstants {
public static final String RWA_STOCK_STOCK_TYPE_PRODUCT = "2";//半成品
/*原材料出库记录审核状态*/
public static final String RAW_OUTSTOCK_AUDIT_STATUS_TOAUDIT = "0";//待审核
public static final String RAW_OUTSTOCK_AUDIT_STATUS_PASS = "1";//审核通过
public static final String RAW_OUTSTOCK_AUDIT_STATUS_FAIL = "2";//审核不通过
/*出入库退库记录明细方式*/
public static final String WMS_STOCK_WAY_MANUAL = "1";//人工
public static final String WMS_STOCK_WAY_AGV = "2";//AGV
@ -133,7 +127,7 @@ public class WmsConstants {
static {
OPERATION_TYPE_MAP.put(WMS_WAREHOUSE_TYPE_NORMAL, WMS_OPERATION_TYPE_MANUAL);
OPERATION_TYPE_MAP.put(WMS_WAREHOUSE_TYPE_AGV, WMS_OPERATION_TYPE_AUTO);
OPERATION_TYPE_MAP.put(WMS_WAREHOUSE_TYPE_WORKBIN_AGV, WMS_OPERATION_TYPE_MANUAL);
OPERATION_TYPE_MAP.put(WMS_WAREHOUSE_TYPE_WORKBIN_AGV, WMS_OPERATION_TYPE_AUTO);
}
public static final Map<String, String> OUTSTOCK_WAY_MAP = new HashMap<String, String>();
@ -212,6 +206,10 @@ public class WmsConstants {
public static final String WMS_WAREHOUSE_OUT_REQUIREMENT_APPLY_AUDIT = "1";//申请审核出库
public static final String WMS_WAREHOUSE_OUT_REQUIREMENT_DIRECT = "2";//直接出库
public static final String WMS_WAREHOUSE_RETURN_REQUIREMENT_APPLY = "0";//申请退库
public static final String WMS_WAREHOUSE_RETURN_REQUIREMENT_APPLY_AUDIT = "1";//申请审核退库
public static final String WMS_RAW_STOCK_COMPLETE_FLAY_YES = "1";//完整
public static final String WMS_RAW_STOCK_COMPLETE_FLAY_NO = "0";//拆分后的

@ -78,8 +78,8 @@ public class WmsApiController extends BaseController {
*/
@Log(title = "原材料退库记录", businessType = BusinessType.APPLY)
@PostMapping(("/applyRawReturn"))
public AjaxResult applyRawReturn(@Validated @RequestBody WmsRawReturn wmsRawReturn) {
return toAjax(wmsRawReturnService.applyRawReturn(wmsRawReturn));
public AjaxResult applyRawReturn(@Validated @RequestBody List<WmsRawReturn> wmsRawReturns) {
return toAjax(wmsRawReturnService.applyRawReturn(wmsRawReturns));
}
}

@ -127,7 +127,7 @@ public class WmsRawOutstockController extends BaseController
public TableDataInfo auditList(WmsRawOutstock wmsRawOutstock)
{
startPage();
wmsRawOutstock.setAuditStatus(WmsConstants.RAW_OUTSTOCK_AUDIT_STATUS_TOAUDIT);
wmsRawOutstock.setAuditStatus(WmsConstants.WMS_AUDIT_STATUS_TOAUDIT);
List<WmsRawOutstock> list = wmsRawOutstockService.selectWmsRawOutstockList(wmsRawOutstock);
return getDataTable(list);
}

@ -90,15 +90,6 @@ public class WmsScadaController extends BaseController {
}
/**
* 退
*/
@Log(title = "原材料退库记录", businessType = BusinessType.APPLY)
@PostMapping(("/applyRawReturn"))
public AjaxResult applyRawReturn(@Validated @RequestBody WmsRawReturn wmsRawReturn) {
return toAjax(wmsRawReturnService.applyRawReturn(wmsRawReturn));
}

@ -39,6 +39,12 @@ public class WmsBaseWarehouse extends BaseEntity {
@Excel(name = "仓库编码")
private String warehouseCode;
/**
* agv
*/
private String agvPositionCode;
/**
*
*/
@ -206,6 +212,14 @@ public class WmsBaseWarehouse extends BaseEntity {
return warehouseCode;
}
public String getAgvPositionCode() {
return agvPositionCode;
}
public void setAgvPositionCode(String agvPositionCode) {
this.agvPositionCode = agvPositionCode;
}
public void setWarehouseName(String warehouseName) {
this.warehouseName = warehouseName;
}

@ -48,6 +48,18 @@ public class WmsRawReturn extends BaseEntity
private Long materialId;
/** 物料条码 */
@Excel(name = "物料条码")
private String materialBarcode;
/** 批次码 */
@Excel(name = "批次码")
private String batchCode;
/** 目的地编码 */
@Excel(name = "目的地编码")
private String endStationCode;
private BigDecimal planAmount;
private BigDecimal returnAmount;
@ -189,6 +201,30 @@ public class WmsRawReturn extends BaseEntity
this.materialId = materialId;
}
public String getMaterialBarcode() {
return materialBarcode;
}
public void setMaterialBarcode(String materialBarcode) {
this.materialBarcode = materialBarcode;
}
public String getBatchCode() {
return batchCode;
}
public void setBatchCode(String batchCode) {
this.batchCode = batchCode;
}
public String getEndStationCode() {
return endStationCode;
}
public void setEndStationCode(String endStationCode) {
this.endStationCode = endStationCode;
}
public BigDecimal getPlanAmount() {
return planAmount;
}

@ -103,4 +103,13 @@ public interface WmsRawReturnMapper
*/
public WmsRawReturn selectOnlyWmsRawReturnByRawReturnId(Long rawReturnId);
/**
* 退
*
* @param wmsRawReturnList 退
* @return
*/
public int batchWmsRawReturn(List<WmsRawReturn> wmsRawReturnList);
}

@ -106,8 +106,8 @@ public interface IWmsRawReturnService
/**
* 退
*
* @param wmsRawReturn 退
* @param wmsRawReturns 退
* @return
*/
public int applyRawReturn(WmsRawReturn wmsRawReturn);
public int applyRawReturn(List<WmsRawReturn> wmsRawReturns);
}

@ -212,14 +212,14 @@ public class WmsRawOutstockServiceImpl implements IWmsRawOutstockService {
WmsRawOutstock queryRawOutstock = new WmsRawOutstock();
queryRawOutstock.setTaskCode(taskCode);
queryRawOutstock.setAuditStatus(WmsConstants.RAW_OUTSTOCK_AUDIT_STATUS_TOAUDIT);
queryRawOutstock.setAuditStatus(WmsConstants.WMS_AUDIT_STATUS_TOAUDIT);
List<WmsRawOutstock> wmsRawOutstocks = wmsRawOutstockMapper.selectWmsRawOutstockList(queryRawOutstock);
if (wmsRawOutstocks == null || wmsRawOutstocks.isEmpty()) {
throw new ServiceException("无待审核原材料出库记录");
}
//审核不通过,需要有审核意见,并且需要更新库位占用数量(解除之前占用的数量)。
if (auditStatus.equalsIgnoreCase(WmsConstants.RAW_OUTSTOCK_AUDIT_STATUS_FAIL)) {
if (auditStatus.equalsIgnoreCase(WmsConstants.WMS_AUDIT_STATUS_FAIL)) {
if (StringUtils.isEmpty(auditReason)) {
throw new ServiceException("请输入审核意见");
}
@ -584,19 +584,17 @@ public class WmsRawOutstockServiceImpl implements IWmsRawOutstockService {
String operationType = WmsConstants.OPERATION_TYPE_MAP.get(warehouseType);
WmsRawOutstock toInsertedRawOutstock = new WmsRawOutstock();
toInsertedRawOutstock.setExecuteStatus(WmsConstants.WMS_EXECUTE_STATUS_TOEXECUTE);
if (warehouseType.equals(WmsConstants.WMS_WAREHOUSE_TYPE_NORMAL)) {//如果是普通仓库,需要校验审核标识
if (outRequirement.equals(WmsConstants.WMS_WAREHOUSE_OUT_REQUIREMENT_APPLY_AUDIT)) {
toInsertedRawOutstock.setAuditStatus(WmsConstants.RAW_OUTSTOCK_AUDIT_STATUS_TOAUDIT);
toInsertedRawOutstock.setExecuteStatus(WmsConstants.WMS_EXECUTE_STATUS_TOEXECUTE);
toInsertedRawOutstock.setAuditStatus(WmsConstants.WMS_AUDIT_STATUS_TOAUDIT);
} else {
toInsertedRawOutstock.setAuditStatus(WmsConstants.WMS_AUDIT_STATUS_PASS);
toInsertedRawOutstock.setExecuteStatus(WmsConstants.WMS_EXECUTE_STATUS_FINISH);
}
} else {
toInsertedRawOutstock.setAuditStatus(WmsConstants.WMS_AUDIT_STATUS_PASS);
toInsertedRawOutstock.setExecuteStatus(WmsConstants.WMS_EXECUTE_STATUS_TOEXECUTE);
}
toInsertedRawOutstock.setTaskCode(taskCode);
@ -630,7 +628,7 @@ public class WmsRawOutstockServiceImpl implements IWmsRawOutstockService {
String operationType = WmsConstants.OPERATION_TYPE_MAP.get(warehouseType);
if (warehouseType.equals(WmsConstants.WMS_WAREHOUSE_TYPE_NORMAL)) {
if (outRequirement.equals(WmsConstants.WMS_WAREHOUSE_OUT_REQUIREMENT_APPLY_AUDIT)) {
wmsRawOutstock.setAuditStatus(WmsConstants.RAW_OUTSTOCK_AUDIT_STATUS_TOAUDIT);
wmsRawOutstock.setAuditStatus(WmsConstants.WMS_AUDIT_STATUS_TOAUDIT);
wmsRawOutstock.setExecuteStatus(WmsConstants.WMS_EXECUTE_STATUS_TOEXECUTE);
} else {
wmsRawOutstock.setAuditStatus(WmsConstants.WMS_AUDIT_STATUS_PASS);

@ -335,7 +335,6 @@ public class WmsRawReturnServiceImpl implements IWmsRawReturnService {
throw new ServiceException("已经退库,无需重复退库");
}
String executeStatus = "";
if (updatedReturnAmount.compareTo(planAmount) == 0) {
executeStatus = WmsConstants.WMS_EXECUTE_STATUS_FINISH;
@ -459,44 +458,73 @@ public class WmsRawReturnServiceImpl implements IWmsRawReturnService {
/**
* 退
*
* @param wmsRawReturn 退
* @param wmsRawReturns 退
* @return
*/
@Transactional(rollbackFor = Exception.class)
@Override
public int applyRawReturn(WmsRawReturn wmsRawReturn) {
public int applyRawReturn(List<WmsRawReturn> wmsRawReturns) {
//申请退库不指定库位,申请退库的多个物料生成多条退库记录
List<WmsRawReturnDetail> rawReturnDetails = wmsRawReturn.getWmsRawReturnDetailList();
//根据物料ID分组获取总申请数量
Map<Long, BigDecimal> rawReturnDetailMap = rawReturnDetails.stream()
.collect(Collectors.groupingBy(WmsRawReturnDetail::getMaterialId, HashMap::new, Collectors.reducing(BigDecimal.ZERO, WmsRawReturnDetail::getPlanAmount, BigDecimal::add)));
//根据仓库ID分组获取总申请数量
Map<Long, List<WmsRawReturn>> rawReturnsMap = wmsRawReturns.stream()
.collect(Collectors.groupingBy(WmsRawReturn::getWarehouseId));
String queryQualityStatus = WmsConstants.WMS_QUALITY_STATUS_PASS;
List<WmsRawOutstockDetail> toUpdatedRawOutstockDetails = new ArrayList<>();
List<WmsRawReturn> toInsertedRawReturns = new ArrayList<>();
Date currentDate = new Date();
String userName = SecurityUtils.getUsername();
for (Long materialId : rawReturnDetailMap.keySet()) {
BigDecimal planAmount = rawReturnDetailMap.get(materialId);
WmsRawReturn toUpdatedWmsRawReturn = new WmsRawReturn();
toUpdatedWmsRawReturn.setWarehouseId(wmsRawReturn.getWarehouseId());
toUpdatedWmsRawReturn.setPlanCode(wmsRawReturn.getPlanCode());
toUpdatedWmsRawReturn.setPlanDetailCode(wmsRawReturn.getPlanDetailCode());
toUpdatedWmsRawReturn.setTaskType(wmsRawReturn.getTaskType());
toUpdatedWmsRawReturn.setTaskCode(Seq.getId(Seq.rawReturnSeqType, Seq.rawReturnCode));
// toUpdatedWmsRawReturn.setProductId();
toUpdatedWmsRawReturn.setApplyReason(wmsRawReturn.getApplyReason());
String taskCode = Seq.getId(Seq.rawReturnSeqType, Seq.rawReturnCode);
for (Long warehouseId : rawReturnsMap.keySet()) {
List<WmsRawReturn> rawReturnList = rawReturnsMap.get(warehouseId);
WmsBaseWarehouse baseWarehouse = wmsBaseWarehouseMapper.selectWmsBaseWarehouseByWarehouseId(warehouseId);
String warehouseType = baseWarehouse.getWarehouseType();
String returnRequirement = baseWarehouse.getReturnRequirement();
String operationType = WmsConstants.OPERATION_TYPE_MAP.get(warehouseType);
String auditStatus = "";
if (warehouseType.equals(WmsConstants.WMS_WAREHOUSE_TYPE_NORMAL)) {//如果是普通仓库,需要校验审核标识
if (returnRequirement.equals(WmsConstants.WMS_WAREHOUSE_RETURN_REQUIREMENT_APPLY_AUDIT)) {
auditStatus = WmsConstants.WMS_AUDIT_STATUS_TOAUDIT;
} else {
auditStatus = WmsConstants.WMS_AUDIT_STATUS_PASS;
}
toUpdatedWmsRawReturn.setMaterialId(materialId);
toUpdatedWmsRawReturn.setPlanAmount(planAmount);
//todo 审核状态默认为待审核,后续可根据系统参数判断保存是待审核还是直接审核通过
toUpdatedWmsRawReturn.setApplyBy(userName);
toUpdatedWmsRawReturn.setApplyDate(currentDate);
toUpdatedWmsRawReturn.setAuditStatus(WmsConstants.RAW_OUTSTOCK_AUDIT_STATUS_TOAUDIT);
toUpdatedWmsRawReturn.setExecuteStatus(WmsConstants.WMS_EXECUTE_STATUS_TOEXECUTE);
} else {
auditStatus = WmsConstants.WMS_AUDIT_STATUS_PASS;
}
// queryRawStock.setQualityStatus(queryQualityStatus);//todo先不过滤质检状态
int rows = wmsRawReturnMapper.insertWmsRawReturn(toUpdatedWmsRawReturn);
for (WmsRawReturn rawReturn : rawReturnList) {
BigDecimal planAmount = rawReturn.getPlanAmount();
if (planAmount.compareTo(BigDecimal.ZERO) <= 0) {
throw new ServiceException("数量需大于0");
}
String materialBarcode = rawReturn.getMaterialBarcode();
R<MesBaseBarcodeInfo> baseBarcodeInfoR = remoteMesService.getBarcode(materialBarcode, SecurityConstants.INNER);
MesBaseBarcodeInfo baseBarcodeInfo = baseBarcodeInfoR.getData();
if (baseBarcodeInfo == null) {
throw new ServiceException("物料编码有误");
}
String batchFlag = baseBarcodeInfo.getBatchFlag();
if (!batchFlag.equals(MesConstants.IS_BATCH)) {
if (planAmount.compareTo(BigDecimal.ONE) != 0) {
throw new ServiceException("非批次物料数量需等于1");
}
}
rawReturn.setTaskCode(taskCode);
rawReturn.setExecuteStatus(WmsConstants.WMS_EXECUTE_STATUS_TOEXECUTE);
rawReturn.setEndStationCode(baseWarehouse.getAgvPositionCode());
rawReturn.setOperationType(operationType);
rawReturn.setAuditStatus(auditStatus);
rawReturn.setReturnAmount(BigDecimal.ZERO);
rawReturn.setMaterialId(baseBarcodeInfo.getMaterialId());
rawReturn.setBatchCode(baseBarcodeInfo.getBatchCode());
rawReturn.setApplyBy(userName);
rawReturn.setApplyDate(currentDate);
toInsertedRawReturns.add(rawReturn);
}
wmsRawReturnMapper.batchWmsRawReturn(toInsertedRawReturns);
}
return 1;
}

@ -9,6 +9,7 @@
<result property="warehouseInstockType" column="warehouse_instock_type" />
<result property="warehouseType" column="warehouse_type" />
<result property="warehouseCode" column="warehouse_code" />
<result property="agvPositionCode" column="agv_position_code" />
<result property="warehouseName" column="warehouse_name" />
<result property="warehouseCategoryId" column="warehouse_category_id" />
<result property="warehouseFloor" column="warehouse_floor" />
@ -75,7 +76,7 @@
</resultMap>
<sql id="selectWmsBaseWarehouseVo">
select warehouse_id, warehouse_instock_type, warehouse_type, warehouse_code, warehouse_name, warehouse_category_id, warehouse_floor, dept_id, multi_row_type, multi_side_type, batch_mix, product_mix, workbin_flag, warehouse_location, active_flag, in_requirement, out_requirement, return_requirement, auto_flag, return_flag, remark, create_by, create_time, update_by, update_time, del_flag, factory_id, data_source, schame, line_flag from wms_base_warehouse
select warehouse_id, warehouse_instock_type, warehouse_type, warehouse_code,agv_position_code, warehouse_name, warehouse_category_id, warehouse_floor, dept_id, multi_row_type, multi_side_type, batch_mix, product_mix, workbin_flag, warehouse_location, active_flag, in_requirement, out_requirement, return_requirement, auto_flag, return_flag, remark, create_by, create_time, update_by, update_time, del_flag, factory_id, data_source, schame, line_flag from wms_base_warehouse
</sql>
<select id="selectWmsBaseWarehouseList" parameterType="WmsBaseWarehouse" resultMap="WmsBaseWarehouseResult">
@ -277,14 +278,8 @@
<select id="selectWmsBaseWarehouseByWarehouseId" parameterType="Long" resultMap="WmsBaseWarehouseResult">
select a.warehouse_id, a.warehouse_instock_type, a.warehouse_type, a.warehouse_code, a.warehouse_name,
a.warehouse_category_id, a.warehouse_floor, a.dept_id, a.multi_row_type,
a.multi_side_type, a.batch_mix, a.product_mix, a.workbin_flag, a.warehouse_location,
a.active_flag, a.in_requirement, a.out_requirement,a.return_requirement,a.auto_flag,
a.return_flag, a.remark, a.create_by, a.create_time, a.update_by, a.update_time, a.del_flag,
a.factory_id, a.data_source, a.schame, a.line_flag
from wms_base_warehouse a
where a.warehouse_id = #{warehouseId}
<include refid="selectWmsBaseWarehouseVo"/>
where warehouse_id = #{warehouseId}
</select>
</mapper>

@ -13,6 +13,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="planDetailCode" column="plan_detail_code" />
<result property="productId" column="product_id" />
<result property="materialId" column="material_id" />
<result property="materialBarcode" column="material_barcode" />
<result property="endStationCode" column="end_station_code" />
<result property="batchCode" column="batch_code" />
<result property="planAmount" column="plan_amount" />
<result property="returnAmount" column="return_amount" />
<result property="operationType" column="operation_type" />
@ -61,7 +64,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap>
<sql id="selectWmsRawReturnVo">
select raw_return_id, task_code, warehouse_id, location_code, plan_code, plan_detail_code, product_id, operation_type, task_type, apply_reason, audit_reason, audit_status, execute_status, apply_by, apply_date, audit_by, audit_date, update_by, update_date, begin_time, end_time from wms_raw_return
select raw_return_id, task_code, warehouse_id, location_code, plan_code, plan_detail_code, product_id, material_id, plan_amount, return_amount, operation_type, task_type, apply_reason, audit_reason, audit_status, execute_status, apply_by, apply_date, audit_by, audit_date, update_by, update_date, begin_time, end_time, material_barcode, end_station_code, batch_code from wms_raw_return
</sql>
<select id="selectWmsRawReturnList" parameterType="WmsRawReturn" resultMap="WmsRawReturnResult">
@ -110,7 +113,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="productId != null">product_id,</if>
<if test="materialId != null">material_id,</if>
<if test="planAmount != null">plan_amount,</if>
<if test="operationType != null">operation_type,</if>
<if test="returnAmount != null">return_amount,</if>
<if test="operationType != null and operationType != ''">operation_type,</if>
<if test="taskType != null and taskType != ''">task_type,</if>
<if test="applyReason != null">apply_reason,</if>
<if test="auditReason != null">audit_reason,</if>
@ -124,7 +128,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="updateDate != null">update_date,</if>
<if test="beginTime != null">begin_time,</if>
<if test="endTime != null">end_time,</if>
</trim>
<if test="materialBarcode != null">material_barcode,</if>
<if test="endStationCode != null">end_station_code,</if>
<if test="batchCode != null">batch_code,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="taskCode != null and taskCode != ''">#{taskCode},</if>
<if test="warehouseId != null">#{warehouseId},</if>
@ -134,7 +141,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="productId != null">#{productId},</if>
<if test="materialId != null">#{materialId},</if>
<if test="planAmount != null">#{planAmount},</if>
<if test="operationType != null">#{operationType},</if>
<if test="returnAmount != null">#{returnAmount},</if>
<if test="operationType != null and operationType != ''">#{operationType},</if>
<if test="taskType != null and taskType != ''">#{taskType},</if>
<if test="applyReason != null">#{applyReason},</if>
<if test="auditReason != null">#{auditReason},</if>
@ -148,7 +156,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="updateDate != null">#{updateDate},</if>
<if test="beginTime != null">#{beginTime},</if>
<if test="endTime != null">#{endTime},</if>
</trim>
<if test="materialBarcode != null">#{materialBarcode},</if>
<if test="endStationCode != null">#{endStationCode},</if>
<if test="batchCode != null">#{batchCode},</if>
</trim>
</insert>
<update id="updateWmsRawReturn" parameterType="WmsRawReturn">
@ -163,7 +174,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="materialId != null">material_id = #{materialId},</if>
<if test="planAmount != null">plan_amount = #{planAmount},</if>
<if test="returnAmount != null">return_amount = #{returnAmount},</if>
<if test="operationType != null">operation_type = #{operationType},</if>
<if test="operationType != null and operationType != ''">operation_type = #{operationType},</if>
<if test="taskType != null and taskType != ''">task_type = #{taskType},</if>
<if test="applyReason != null">apply_reason = #{applyReason},</if>
<if test="auditReason != null">audit_reason = #{auditReason},</if>
@ -177,6 +188,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="updateDate != null">update_date = #{updateDate},</if>
<if test="beginTime != null">begin_time = #{beginTime},</if>
<if test="endTime != null">end_time = #{endTime},</if>
<if test="materialBarcode != null">material_barcode = #{materialBarcode},</if>
<if test="endStationCode != null">end_station_code = #{endStationCode},</if>
<if test="batchCode != null">batch_code = #{batchCode},</if>
</trim>
where raw_return_id = #{rawReturnId}
</update>
@ -239,5 +253,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where wrr.raw_return_id = #{rawReturnId}
</select>
<insert id="batchWmsRawReturn">
insert into wms_raw_return( raw_return_id, task_code, warehouse_id, location_code, plan_code, plan_detail_code, product_id, material_id, plan_amount, return_amount, operation_type, task_type, apply_reason, audit_reason, audit_status, execute_status, apply_by, apply_date, audit_by, audit_date, update_by, update_date, begin_time, end_time, material_barcode, end_station_code, batch_code) values
<foreach item="item" index="index" collection="list" separator=",">
( #{item.rawReturnId}, #{item.taskCode}, #{item.warehouseId}, #{item.locationCode}, #{item.planCode}, #{item.planDetailCode}, #{item.productId}, #{item.materialId}, #{item.planAmount}, #{item.returnAmount}, #{item.operationType}, #{item.taskType}, #{item.applyReason}, #{item.auditReason}, #{item.auditStatus}, #{item.executeStatus}, #{item.applyBy}, #{item.applyDate}, #{item.auditBy}, #{item.auditDate}, #{item.updateBy}, #{item.updateDate}, #{item.beginTime}, #{item.endTime}, #{item.materialBarcode}, #{item.endStationCode}, #{item.batchCode})
</foreach>
</insert>
</mapper>

Loading…
Cancel
Save