}@PostMapping("/createEmptyOut")@ApiOperation("移动端空托出库")@Log(title="移动端空托出库",action=BusinessType.OTHER)publicAjaxResultcreateEmptyOut(@RequestBodyMap<String,String>param){if(param.get("containerCode")==null||param.get("containerCode").trim().length()<1){thrownewJSONException("容器号不能为空");}if(param.get("sourceLocation")==null||param.get("sourceLocation").trim().length()<1){thrownewJSONException("源库位不能为空");}StringcontainerCode=param.get("containerCode");StringsourceLocation=param.get("sourceLocation");returninventoryService.createEmptyOut(containerCode,sourceLocation);}@PostMapping("/get7daysShipment")@ApiOperation("移动端获取7天收货和出货量")@Log(title="移动端获取7天收货和出货量",action=BusinessType.OTHER)publicAjaxResultget7daysShipment(@RequestBodyMap<String,String>param){Stringsql="select a.click_date as date,ifnull(b.taskQty,0) as qty\n"+"from (\n"+" SELECT curdate() as click_date\n"+" union all\n"+" SELECT date_sub(curdate(), interval 1 day) as click_date\n"+" union all\n"+" SELECT date_sub(curdate(), interval 2 day) as click_date\n"+" union all\n"+" SELECT date_sub(curdate(), interval 3 day) as click_date\n"+" union all\n"+" SELECT date_sub(curdate(), interval 4 day) as click_date\n"+" union all\n"+" SELECT date_sub(curdate(), interval 5 day) as click_date\n"+" union all\n"+" SELECT date_sub(curdate(), interval 6 day) as click_date\n"+") a left join (\n"+"SELECT DATE(h.created) AS created , SUM(d.qty) AS taskQty from shipment_container_detail d join shipment_container_header h on d.shippingContainerId = h.id and h.warehouseCode='"+ShiroUtils.getWarehouseCode()+"' WHERE h.created >= DATE_SUB(CURDATE(), INTERVAL 7 DAY) AND h.status=30 GROUP BY DATE(h.created)\n"+") b on a.click_date = b.created ORDER BY a.click_date;";List<LinkedHashMap<String,Object>>list=mapper.selectCommon(sql);sql="select a.click_date as date,ifnull(b.taskQty,0) as qty\n"+"from (\n"+" SELECT curdate() as click_date\n"+" union all\n"+" SELECT date_sub(curdate(), interval 1 day) as click_date\n"+" union all\n"+" SELECT date_sub(curdate(), interval 2 day) as click_date\n"+" union all\n"+" SELECT date_sub(curdate(), interval 3 day) as click_date\n"+" union all\n"+" SELECT date_sub(curdate(), interval 4 day) as click_date\n"+" union all\n"+" SELECT date_sub(curdate(), interval 5 day) as click_date\n"+" union all\n"+" SELECT date_sub(curdate(), interval 6 day) as click_date\n"+") a left join (\n"+"SELECT DATE(h.created) AS created , SUM(d.qty) AS taskQty from receipt_container_detail d join receipt_container_header h on d.receiptContainerId = h.id and h.warehouseCode='"+ShiroUtils.getWarehouseCode()+"' WHERE h.created >= DATE_SUB(CURDATE(), INTERVAL 7 DAY) AND d.status=30 GROUP BY DATE(h.created)\n"+") b on a.click_date = b.created ORDER BY a.click_date;";List<LinkedHashMap<String,Object>>list2=mapper.selectCommon(sql);List<LinkedHashMap<String,Object>>result=newArrayList<>();result.addAll(list);result.addAll(list2);List<InventoryDetails>inventoryDetailList=newArrayList<>();for(LinkedHashMap<String,Object>map:result){Iteratoriter=map.entrySet().iterator();Stringdate=null;BigDecimalqty=newBigDecimal(0);while(iter.hasNext()){Map.Entryentry=(Map.Entry)iter.next();Objectkey=entry.getKey();Objectval=entry.getValue();if(date==null){date=val.toString();}else{qty=(BigDecimal)val;}}inventoryDetailList.add(newInventoryDetail(date,qty));}returnAjaxResult.success(inventoryDetailList);}privateInventoryDetailsnewInventoryDetail(Stringdate,BigDecimalqty){InventoryDetailsinventoryDetail=newInventoryDetails();inventoryDetail.setDate(date);inventoryDetail.setQty(qty);returninventoryDetail;}@PostMapping("/getTodayShipmentDetail")@ApiOperation("移动端获得今天发货详情")@Log(title="移动端获得今天发货详情",action=BusinessType.OTHER)publicAjaxResultgetTodayShipmentDetail(@RequestBodyMap<String,String>param){Stringsql="select d.materialName, SUM(d.qty) as qty "+"from shipment_container_header h join shipment_container_detail d "+"on d.shippingContainerId = h.id WHERE h.created >= CURDATE() AND h.`status`>19 GROUP BY d.materialName";List<LinkedHashMap<String,Object>>list=mapper.selectCommon(sql);sql="select m.name, b.taskQty as qty \n"+"from material m \n"+"join (\n"+"select d.materialCode as material, SUM(d.qty) "+"as taskQty from receipt_container_header h join receipt_container_detail d "+"on d.receiptContainerId = h.id WHERE h.created >= CURDATE() AND h.`status`>19 GROUP BY d.materialCode\n"+") b on m.`code` = b.material ORDER BY m.name";List<LinkedHashMap<String,Object>>list2=mapper.selectCommon(sql);List<com.huaheng.mobile.invenory.ShipmentDetail>shipmentDetails=getShipmentDetails(list);shipmentDetails.add(newShipmentDetail("delete",newBigDecimal(0)));shipmentDetails.addAll(getShipmentDetails(list2));returnAjaxResult.success(shipmentDetails);}privateList<com.huaheng.mobile.invenory.ShipmentDetail>getShipmentDetails(List<LinkedHashMap<String,Object>>list){List<com.huaheng.mobile.invenory.ShipmentDetail>shipmentDetails=newArrayList<>();for(LinkedHashMap<String,Object>map:list){Iteratoriter=map.entrySet().iterator();StringmaterialName=null;BigDecimalqty=newBigDecimal(0);while(iter.hasNext()){Map.Entryentry=(Map.Entry)iter.next();Objectkey=entry.getKey();Objectval=entry.getValue();if(materialName==null){materialName=val.toString();}else{qty=(BigDecimal)val;}}shipmentDetails.add(newShipmentDetail(materialName,qty));}returnshipmentDetails;}privatecom.huaheng.mobile.invenory.ShipmentDetailnewShipmentDetail(StringmaterialName,BigDecimalqty){com.huaheng.mobile.invenory.ShipmentDetailshipmentDetail=newcom.huaheng.mobile.invenory.ShipmentDetail();shipmentDetail.setMaterialName(materialName);shipmentDetail.setQty(qty);returnshipmentDetail;}/***移动端根据容器编码获取盘点任务*@paramparam*@return*/@ResponseBody@PostMapping("/findTransferByContainerCode")publicAjaxResultfindTransferByContainerCode(@RequestBodyMap<String,String>param){StringcontainCode=param.get("containCode");if(StringUtils.isEmpty(containCode)){returnAjaxResult.error("容器编码为空");}else{returnAjaxResult.success(taskService.mobileFindTransferTask(containCode));}}/***移动端实盘登记*@paramparam*@return*/@ResponseBody@PostMapping("/confirmGapQty")publicAjaxResultconfirmGapQty(@RequestBodyMap<String,String>param){intdetailId=Integer.parseInt(param.get("detailId"));BigDecimalqty=newBigDecimal(param.get("qty"));returncycleCountDetailService.confirmGapQty(detailId,qty);}@PostMapping("/getEmptyContainerInLocation")@ApiOperation("选取空托出库的库位")@Log(title="选取空托出库的库位",action=BusinessType.OTHER)publicAjaxResultgetEmptyContainerInLocation(@RequestBodyMap<String,String>param){StringwarehouCOde=ShiroUtils.getWarehouseCode();List<Location>list=containerService.getEmptyContainerInLocation(null,null,ShiroUtils.getWarehouseCode());