| | |
| | | warehouseManager:userStore.user.userName |
| | | }) |
| | | |
| | | let userNameCutting = ref([]) |
| | | |
| | | let filterData = ref({ |
| | | |
| | | |
| | |
| | | if (res.code == 200) { |
| | | |
| | | titleSelectJson.value = deepClone(res.data) |
| | | console.log("a"+titleSelectJson.value) |
| | | const today = new Date |
| | | today.setTime(today.getTime()) |
| | | titleUploadData.value.materialRequisitionDate = today.getFullYear() + |
| | |
| | | } |
| | | }) |
| | | } |
| | | |
| | | const initUser = async ()=> { |
| | | await request.get(`/BasicWarehouse/BasicWarehouseTypeUser/` + t('machine.cutting')).then((res) => { |
| | | |
| | | if (res.code == 200) { |
| | | userNameCutting.value=res.data.userName |
| | | } else { |
| | | ElMessage.warning(res.msg) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | //列查询 |
| | | const getWork = async ()=> { |
| | | await request.get(`/BasicWarehouse/BasicWarehouseType/`+t('ingredients.originalFilm')+'|'+t('ingredients.accessories')).then((res) => { |
| | |
| | | onMounted(async()=>{ |
| | | await initOrder() |
| | | |
| | | await initUser() |
| | | |
| | | |
| | | //启用表格拖动选中 |
| | | addListener(xGrid.value,gridOptions,cellArea.value) |
| | |
| | | request.post("/materialInventory/getSelectMaterialInventory/1/100",filterData.value).then((res) => { |
| | | |
| | | if(res.code==200){ |
| | | console.log("b"+titleSelectJson.value) |
| | | titleUploadData.value.warehouseManager=userStore.user.userName |
| | | titleUploadData.value.outboundType = titleSelectJson.value.outboundType[0].operateTypeName |
| | | materialStore.value=[] |
| | |
| | | }) |
| | | break |
| | | } |
| | | case 'addToExamine': { |
| | | const selectRecords = $grid.getCheckboxRecords() |
| | | if (selectRecords.length === 0) { |
| | | ElMessage.warning(t('productStock.unselectedData')) |
| | | return |
| | | } |
| | | const errMap = await $grid.validate(selectRecords) |
| | | if (errMap) { |
| | | ElMessage.warning(t('productStock.dataVerificationFailed')) |
| | | return |
| | | } |
| | | //表头数据校验 |
| | | const outboundType = titleUploadData.value.outboundType |
| | | if(outboundType === null || outboundType === undefined || outboundType === ''){ |
| | | ElMessage.error(t('ingredientsStock.pleaseOutboundType')) |
| | | return |
| | | } |
| | | let flowData = ref({ |
| | | materialOutboundDetail: selectRecords, |
| | | title: titleUploadData.value, |
| | | materialOutboundId: route.query.materialOutboundId, |
| | | userName:userStore.user.userName, |
| | | userId:userStore.user.userId |
| | | |
| | | }) |
| | | request.post("/materialInventory/saveToExamineMaterialOutbound", flowData.value).then((res) => { |
| | | if(res.code==200 && res.data==="true"){ |
| | | ElMessage.success(t('basicData.msg.saveSuccess')) |
| | | router.push({path: '/main/ingredientsStock/MaterialOutbound', query:{random:Math.random()}}) |
| | | }else if(res.data==="false1"){ |
| | | ElMessage.warning(t('basicData.msg.quantityError')) |
| | | }else{ |
| | | ElMessage.warning(t('basicData.msg.saveFail')) |
| | | } |
| | | }).catch((err)=>{ |
| | | ElMessage.error(t('basicData.msg.ServerConnectionError')) |
| | | router.push("/login") |
| | | }) |
| | | break |
| | | } |
| | | |
| | | } |
| | | } |
| | |
| | | buttons: [ |
| | | {'code': 'add', 'name': t('basicData.save'),status: 'primary',icon: 'vxe-icon-save'}, |
| | | {'code': 'toExamine', 'name': t('basicData.review'),status: 'primary'}, |
| | | {'code': 'CounterExamination', 'name': t('basicData.cancelReview'),status: 'primary'} |
| | | {'code': 'CounterExamination', 'name': t('basicData.cancelReview'),status: 'primary'}, |
| | | {'code': 'addToExamine', 'name': t('reportingWorks.saveAndReview'),status: 'primary',icon: 'vxe-icon-save'}, |
| | | ], |
| | | /*import: false, |
| | | export: true, |
| | |
| | | :placeholder="$t('delivery.selectDate')"/> |
| | | </el-col> |
| | | <el-col :span="2"><el-text>{{$t('ingredientsStock.materialRequisitionPersonnel')}}:</el-text></el-col> |
| | | <el-col :span="3"><el-input v-model="titleUploadData.materialRequisitionPersonnel" /></el-col> |
| | | <el-col :span="3"> |
| | | <el-select v-model="titleUploadData.materialRequisitionPersonnel" clearable placeholder=" " > |
| | | <el-option v-for="item in userNameCutting" |
| | | :key="item.id" |
| | | :label="item" |
| | | :value="item"/> |
| | | </el-select> |
| | | </el-col> |
| | | <el-col :span="2"><el-text>{{$t('ingredientsStock.materialRequisitionTeam')}}:</el-text></el-col> |
| | | <el-col :span="3"><el-input v-model="titleUploadData.materialRequisitionTeam" /></el-col> |
| | | <el-col :span="2"><el-text>{{$t('ingredientsStock.outboundType')}}:</el-text></el-col> |
| | |
| | | {field: 'operationOrderNumber', width:'150', title: t('productStock.operationOrderNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'operationNumber', width: '100',title: t('order.OrderNum'), showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'operateType', width: '120',title:t('warehouseBasicData.type'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'projectNo', width: '120',title:t('ingredientsStock.projectNo'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'materialOutbound.orderId', width: '120',title:t('order.orderId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'materialOutbound.project', width: '120',title:t('order.project'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'materialOutbound.batch', width: '120',title:t('order.batch'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'quantity', width: '140',title: t('order.quantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'inventoryId',width: '100', title: t('ingredientsStock.id'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'materialCode',width: '140', title: t('ingredients.materialCode'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | |
| | | return Result.seccess(basicWarehouseTypeService.deleteBasicWarehouse(basicWarehouseType)); |
| | | } |
| | | |
| | | @ApiOperation("用户基础数据查询返回json对象格式") |
| | | @GetMapping("/BasicWarehouseTypeUser/{type}") |
| | | public Result BasicWarehouseTypeUser(@PathVariable String type){ |
| | | return Result.seccess(basicWarehouseTypeService.BasicWarehouseTypeUser(type)); |
| | | } |
| | | |
| | | } |
| | |
| | | return Result.seccess(materialInventoryService.getOptimizeOutboundReport(type,pageNum,pageSize,selectDate,materialLog)); |
| | | } |
| | | |
| | | @ApiOperation("物料出库保存并审核接口") |
| | | @SaCheckPermission("createOutbound.add") |
| | | @PostMapping("/saveToExamineMaterialOutbound") |
| | | public Result saveToExamineMaterialOutbound( @RequestBody Map<String,Object> object){ |
| | | |
| | | return Result.seccess(materialInventoryService.saveToExamineMaterialOutbound(object)); |
| | | |
| | | } |
| | | |
| | | |
| | | } |
| | |
| | | return Result.seccess(orderService.selectUploadDxf(object)); |
| | | } |
| | | |
| | | @PostMapping("/updateOrderFile") |
| | | public Result updateOrderFile(@RequestBody Map<String,Object> map) { |
| | | return Result.seccess(orderService.updateOrderFile(map)); |
| | | } |
| | | |
| | | |
| | | } |
| | |
| | | @ExcelProperty("优化使用数量") |
| | | private Integer useCount; |
| | | |
| | | private MaterialOutbound materialOutbound; |
| | | |
| | | |
| | | } |
| | |
| | | |
| | | Boolean updateBasicWarehouse(@Param("id") Long id,@Param("operateTypeName") String operateTypeName); |
| | | |
| | | List<String> getBasicWarehouseUser(String type); |
| | | |
| | | |
| | | } |
| | |
| | | |
| | | Boolean saveOrderFile(String fileName,String dxfData,String orderId,Integer orderNumber); |
| | | |
| | | Boolean updateOrderFile(String fileName,String dxfData,String orderId,Integer orderNumber); |
| | | |
| | | Map<String,String> selectOrderFile( String orderId,Integer orderNumber); |
| | | |
| | | List<Map<String,String>> selectOrderFileList( String orderId); |
| | |
| | | } |
| | | |
| | | |
| | | public Map<String, Object> BasicWarehouseTypeUser(String type){ |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("userName",basicWarehouseTypeMapper.getBasicWarehouseUser(type)); |
| | | return map; |
| | | } |
| | | |
| | | |
| | | } |
| | |
| | | return map; |
| | | } |
| | | |
| | | public String saveToExamineMaterialOutbound(Map<String,Object> object) { |
| | | String saveState = "true"; |
| | | //设置回滚点 |
| | | Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint(); |
| | | String materialOutboundId = ""; |
| | | String oddNumber; |
| | | if (object.get("materialOutboundId") != null) { |
| | | materialOutboundId = object.get("materialOutboundId").toString(); |
| | | } |
| | | Log log = new Log(); |
| | | log.setOperatorId(object.get("userId").toString()); |
| | | log.setOperator(object.get("userName").toString()); |
| | | log.setContent(object.toString()); |
| | | try { |
| | | MaterialOutbound materialOutbound = JSONObject.parseObject(JSONObject.toJSONString(object.get("title")), MaterialOutbound.class); |
| | | List<MaterialOutboundDetail> materialOutboundDetailList = JSONArray.parseArray(JSONObject.toJSONString(object.get("materialOutboundDetail")), MaterialOutboundDetail.class); |
| | | //查询出库单是否存在 |
| | | Integer MaterialOutboundConut = materialInventoryMapper.getMaterialOutboundCount(materialOutboundId); |
| | | if (MaterialOutboundConut != 0) { |
| | | |
| | | List<MaterialOutboundDetail> materialOutboundDetailLists = materialInventoryMapper.getIsNotMaterialOutboundDetail(materialOutboundId); |
| | | if (!materialOutboundDetailLists.isEmpty()) { |
| | | for (MaterialOutboundDetail materialOutboundDetail : materialOutboundDetailLists) { |
| | | //还原物料库存数 |
| | | materialInventoryMapper.updateMaterialInventoryAvailableInt(materialOutboundDetail.getInventoryId(), materialOutboundDetail.getOutboundQuantity()); |
| | | if(materialOutboundDetail.getUseId()!=null){ |
| | | //还原优化工程库存数 |
| | | materialInventoryMapper.updateMaterialInventoryAvailableOptInt(materialOutboundDetail.getUseId(), materialOutboundDetail.getOutboundQuantity()); |
| | | }/*else{ |
| | | //还原物料库存数 |
| | | materialInventoryMapper.updateMaterialInventoryAvailableInt(materialOutboundDetail.getId(), materialOutboundDetail.getOutboundQuantity()); |
| | | }*/ |
| | | |
| | | } |
| | | } |
| | | //删除材料出库明细的数据 |
| | | materialInventoryMapper.deleteMaterialOutboundDetail(materialOutboundId); |
| | | materialInventoryMapper.updateMaterialOutbound(materialOutbound, materialOutboundId); |
| | | materialInventoryMapper.deleteMaterialLog(materialOutboundId); |
| | | oddNumber = materialOutboundId; |
| | | log.setFunction("saveMaterialOutbound修改:"+oddNumber); |
| | | } else { |
| | | //获取单号 |
| | | oddNumber = orderNumberSetting("出库"); |
| | | //新增材料出库表数据 |
| | | materialInventoryMapper.insertMaterialOutbound(materialOutbound, oddNumber); |
| | | log.setFunction("saveMaterialOutbound新增:"+oddNumber); |
| | | } |
| | | |
| | | //获取对象集合循环进行新增修改 |
| | | |
| | | if (!materialOutboundDetailList.isEmpty()) { |
| | | for (MaterialOutboundDetail materialOutboundDetail : materialOutboundDetailList) { |
| | | MaterialInventory materialInventory = materialInventoryMapper.getMaterialInventoryById(materialOutboundDetail.getId()); |
| | | if(materialInventory.getAvailableQuantity()>=materialOutboundDetail.getOutboundQuantity()){ |
| | | Integer materialOutboundDetailMaximum = materialInventoryMapper.getMaterialOutboundDetailMaximum(oddNumber); |
| | | //新增材料出库明细数据 |
| | | materialInventoryMapper.insertMaterialOutboundDetail(materialOutboundDetail, oddNumber, materialOutboundDetailMaximum + 1); |
| | | //修改物料库存表出库数量 |
| | | materialInventoryMapper.updateMaterialInventoryAvailableOut(materialOutboundDetail.getId(), materialOutboundDetail.getOutboundQuantity()); |
| | | |
| | | String projectNo=""; |
| | | if(materialOutboundDetail.getUseId()!=null){ |
| | | projectNo = materialInventoryMapper.selectProjectNo(materialOutboundDetail.getUseId()); |
| | | //修改优化工程表出库数量 |
| | | materialInventoryMapper.updateMaterialInventoryAvailableOptOut(materialOutboundDetail.getUseId(), materialOutboundDetail.getOutboundQuantity()); |
| | | |
| | | }/*else{ |
| | | //修改物料库存表出库数量 |
| | | materialInventoryMapper.updateMaterialInventoryAvailableOut(materialOutboundDetail.getId(), materialOutboundDetail.getOutboundQuantity()); |
| | | }*/ |
| | | |
| | | if(materialOutboundDetail.getUseId()!=null){ |
| | | //修改物料库存数量 |
| | | materialInventoryMapper.updateMaterialInventoryInventoryPlanQuantityOut(materialOutboundDetail.getId(), materialOutboundDetail.getOutboundQuantity()); |
| | | }else{ |
| | | materialInventoryMapper.updateMaterialInventoryInventoryOut(materialOutboundDetail.getId(), materialOutboundDetail.getOutboundQuantity()); |
| | | } |
| | | |
| | | materialInventoryMapper.updateMaterialOutboundToExamine(oddNumber,1,object.get("userName").toString()); |
| | | String json=""; |
| | | MaterialStore materialStore=materialStoreMapper.getSelectMaterialStoreById(Long.valueOf(materialOutboundDetail.getMaterialCode())); |
| | | json=materialStore.getJson().substring(1, materialStore.getJson().length() - 1); |
| | | MaterialLog materialLog=new MaterialLog(); |
| | | materialLog.setOperationOrderNumber(oddNumber); |
| | | materialLog.setOperationNumber(materialOutboundDetailMaximum + 1); |
| | | materialLog.setOperateType("物料出库"); |
| | | materialLog.setMaterialCode(Long.valueOf(materialOutboundDetail.getMaterialCode())); |
| | | materialLog.setMaterialName(convertString(json,"\"name\"")); |
| | | materialLog.setProducer(materialInventory.getProducer()); |
| | | materialLog.setUnit(convertString(json,"\"unit\"")); |
| | | materialLog.setWidth(convertDouble(json,"\"width\"")); |
| | | materialLog.setHeight(convertDouble(json,"\"height\"")); |
| | | materialLog.setThickness(convertDouble(json,"\"thickness\"")); |
| | | materialLog.setQuantity(materialOutboundDetail.getOutboundQuantity()); |
| | | materialLog.setSinglePieceArea(materialOutboundDetail.getSinglePieceArea()); |
| | | materialLog.setInventoryId(materialOutboundDetail.getId()); |
| | | materialLog.setInventoryArea(materialInventory.getInventoryArea()); |
| | | materialLog.setRemarks(materialOutboundDetail.getRemarks()); |
| | | materialLog.setProjectNo(projectNo); |
| | | materialLog.setOperator(object.get("userName").toString()); |
| | | materialLog.setOperateTime(LocalDate.now()); |
| | | materialLogMapper.insert(materialLog); |
| | | }else{ |
| | | TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint); |
| | | return "false1"; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | } |
| | | logService.saveLog(log); |
| | | |
| | | } catch (Exception e) { |
| | | TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint); |
| | | //将异常传入数据库 |
| | | SysError sysError = new SysError(); |
| | | sysError.setError(e+Arrays.toString(e.getStackTrace())); |
| | | sysError.setFunc("saveMaterialOutbound"); |
| | | sysErrorService.insert(sysError); |
| | | saveState = "false"; |
| | | |
| | | } |
| | | return saveState; |
| | | |
| | | } |
| | | |
| | | } |
| | |
| | | map.put("data",orderMapper.selectOrderFile(orderId,orderNumber)); |
| | | return map; |
| | | } |
| | | |
| | | public boolean updateOrderFile(Map<String,Object> object) { |
| | | String orderId = ""; |
| | | if (object.get("orderId") != null) { |
| | | orderId = object.get("orderId").toString(); |
| | | } |
| | | int orderNumber =0; |
| | | if (object.get("orderNumber") != null) { |
| | | orderNumber = Integer.parseInt(object.get("orderNumber").toString()); |
| | | } |
| | | String dataBase64 = ""; |
| | | if (object.get("dataBase64") != null) { |
| | | dataBase64 = object.get("dataBase64").toString(); |
| | | } |
| | | Map<String,String> orderFile =orderMapper.selectOrderFile(orderId,orderNumber); |
| | | if(orderFile!=null){ |
| | | orderMapper.updateOrderFile("map.dxf", dataBase64,orderId,orderNumber); |
| | | }else{ |
| | | orderMapper.saveOrderFile("map.dxf", dataBase64,orderId,orderNumber); |
| | | } |
| | | return true; |
| | | } |
| | | } |
| | |
| | | update mm.basic_warehouse_type set operate_type_name=#{operateTypeName},create_time=now() where id=#{id} |
| | | </update> |
| | | |
| | | <select id="getBasicWarehouseUser" > |
| | | select user_name from erp_user_info.user u where u.address regexp #{type}; |
| | | </select> |
| | | |
| | | |
| | | |
| | | |
| | |
| | | |
| | | </resultMap> |
| | | |
| | | <resultMap id="selectMaterialOutboundLog" type="com.example.erp.entity.mm.MaterialLog" > |
| | | <id column="id" property="id"/> |
| | | <result column="operation_order_number" property="operationOrderNumber"/> |
| | | <result column="operate_type" property="operateType"/> |
| | | <result column="operation_number" property="operationNumber"/> |
| | | <result column="inventory_id" property="inventoryId"/> |
| | | <result column="material_code" property="materialCode"/> |
| | | <result column="material_name" property="materialName"/> |
| | | <result column="producer" property="producer"/> |
| | | <result column="unit" property="unit"/> |
| | | <result column="width" property="width"/> |
| | | <result column="height" property="height"/> |
| | | <result column="thickness" property="thickness"/> |
| | | <result column="quantity" property="quantity"/> |
| | | <result column="single_piece_area" property="singlePieceArea"/> |
| | | <result column="inventory_area" property="inventoryArea"/> |
| | | <result column="operator" property="operator"/> |
| | | <result column="remarks" property="remarks"/> |
| | | <result column="operate_time" property="operateTime"/> |
| | | <result column="use_count" property="useCount"/> |
| | | |
| | | <result column="order_id" property="materialOutbound.orderId"/> |
| | | <result column="project" property="materialOutbound.project"/> |
| | | <result column="batch" property="materialOutbound.batch"/> |
| | | </resultMap> |
| | | |
| | | |
| | | |
| | | <select id="getSelectMaterialInventoryDate"> |
| | |
| | | where mi.id = #{id} |
| | | </select> |
| | | |
| | | <select id="getMaterialLogReport" > |
| | | <select id="getMaterialLogReport" resultMap="selectMaterialOutboundLog"> |
| | | select * |
| | | from mm.material_log ml |
| | | from mm.material_log ml left join mm.material_outbound mo on mo.material_outbound_id=ml.operation_order_number |
| | | <where> |
| | | date(ml.operate_time)>=#{startDate} and date(ml.operate_time) <= #{endDate} and ml.operate_type=#{type} |
| | | <if test="materialLog.operateType != null and materialLog.operateType != ''"> |
| | |
| | | and ml.operator regexp #{materialLog.operator} |
| | | </if> |
| | | <if test="materialLog.remarks != null and materialLog.remarks != ''"> |
| | | and ml.remarks regexp #{materialLog.remarksr} |
| | | and ml.remarks regexp #{materialLog.remarks} |
| | | </if> |
| | | <if test="materialLog.projectNo != null and materialLog.projectNo != ''"> |
| | | and ml.project_no regexp #{materialLog.projectNo} |
| | | </if> |
| | | <if test="materialLog.materialOutbound!=null and (materialLog.materialOutbound.orderId != null and materialLog.materialOutbound.orderId != '')"> |
| | | and mo.order_id regexp #{materialLog.materialOutbound.orderId} |
| | | </if> |
| | | <if test=" materialLog.materialOutbound!=null and materialLog.materialOutbound.project != null and materialLog.materialOutbound.project != ''"> |
| | | and mo.project regexp #{materialLog.materialOutbound.project} |
| | | </if> |
| | | <if test=" materialLog.materialOutbound!=null and materialLog.materialOutbound.batch != null and materialLog.materialOutbound.batch != ''"> |
| | | and mo.batch regexp #{materialLog.materialOutbound.batch} |
| | | </if> |
| | | </where> |
| | | order by ml.id desc |
| | |
| | | <select id="getMaterialLogReportTotal"> |
| | | select CEILING(count(ml.id)/#{pageSize}) as 'pageTotal', |
| | | count(ml.id) as 'total' |
| | | from mm.material_log ml |
| | | from mm.material_log ml left join mm.material_outbound mo on mo.material_outbound_id=ml.operation_order_number |
| | | <where> |
| | | date(ml.operate_time)>=#{startDate} and date(ml.operate_time) <= #{endDate} and ml.operate_type=#{type} |
| | | <if test="materialLog.operateType != null and materialLog.operateType != ''"> |
| | |
| | | and ml.operator regexp #{materialLog.operator} |
| | | </if> |
| | | <if test="materialLog.remarks != null and materialLog.remarks != ''"> |
| | | and ml.remarks regexp #{materialLog.remarksr} |
| | | and ml.remarks regexp #{materialLog.remarks} |
| | | </if> |
| | | <if test="materialLog.projectNo != null and materialLog.projectNo != ''"> |
| | | and ml.project_no regexp #{materialLog.projectNo} |
| | | </if> |
| | | <if test="materialLog.materialOutbound!=null and (materialLog.materialOutbound.orderId != null and materialLog.materialOutbound.orderId != '')"> |
| | | and mo.order_id regexp #{materialLog.materialOutbound.orderId} |
| | | </if> |
| | | <if test=" materialLog.materialOutbound!=null and materialLog.materialOutbound.project != null and materialLog.materialOutbound.project != ''"> |
| | | and mo.project regexp #{materialLog.materialOutbound.project} |
| | | </if> |
| | | <if test=" materialLog.materialOutbound!=null and materialLog.materialOutbound.batch != null and materialLog.materialOutbound.batch != ''"> |
| | | and mo.batch regexp #{materialLog.materialOutbound.batch} |
| | | </if> |
| | | </where> |
| | | </select> |
| | |
| | | where order_id = #{orderId} |
| | | |
| | | </select> |
| | | |
| | | <update id="updateOrderFile"> |
| | | update sd.order_file set file_name=#{fileName},file_data=#{dxfData},create_time=now() where orderId=#{orderId} and orderNumber=#{orderNumber} |
| | | </update> |
| | | </mapper> |