| | |
| | | } |
| | | |
| | | }, |
| | | searchDeliverFilter:{ |
| | | list:ref([]), |
| | | data:{} |
| | | |
| | | }, |
| | | projectNo:ref(), |
| | | optimizeData:{ |
| | | optimalResults:'', |
| | |
| | | } |
| | | } |
| | | } |
| | | this.searchDeliverFilter={ |
| | | list:[], |
| | | data:{} |
| | | } |
| | | this.projectNo=null |
| | | this.optimizeData={ |
| | | optimalResults:null, |
| | |
| | | destroy-on-close |
| | | :close-on-click-modal="false" |
| | | :close-on-press-escape="false"> |
| | | > |
| | | <SelectOrderList |
| | | style="width: 100%;height: 600px" |
| | | :customer-id="titleUploadData.customerId" |
| | |
| | | <script setup> |
| | | import {Search} from "@element-plus/icons-vue"; |
| | | import {reactive, ref} from "vue"; |
| | | import {onMounted, reactive, ref} from "vue"; |
| | | import {useRouter} from "vue-router" |
| | | import request from "@/utils/request" |
| | | import deepClone from "@/utils/deepClone" |
| | |
| | | |
| | | //筛选条件,有外键需要先定义明细里面的数据 |
| | | let filterData = ref({}) |
| | | let sortData = ref({ |
| | | field:'id', |
| | | order:null |
| | | }) |
| | | |
| | | let selectDate = ref(["",""]) |
| | | |
| | |
| | | pageSize : 100 |
| | | }) |
| | | |
| | | //第一次调用 |
| | | request.post(`/delivery/getSelectShippingOrder/1/${total.pageSize}/${orderInfo.selectDeliveryDate}`,filterData.value).then((res) => { |
| | | |
| | | if(res.code==200){ |
| | | total.dataTotal = res.data.total.total*1 |
| | | total.pageTotal= res.data.total.pageTotal |
| | | |
| | | orderInfo.selectDeliveryDate = res.data.selectDate |
| | | pageNum.value=1 |
| | | produceList = deepClone(res.data.data) |
| | | if(company.companyName=='洛阳北方玻璃技术股份有限公司'){ |
| | | xGrid.value.menuConfig.body.options[0][2].visible=true |
| | | xGrid.value.menuConfig.body.options[0][3].visible=true |
| | | xGrid.value.menuConfig.body.options[0][4].visible=true |
| | | xGrid.value.menuConfig.body.options[0][5].visible=true |
| | | } |
| | | xGrid.value.loadData(produceList) |
| | | gridOptions.loading=false |
| | | }else{ |
| | | ElMessage.warning(res.msg) |
| | | router.push("/login") |
| | | } |
| | | onMounted(async () => { |
| | | filterData.value = orderInfo.searchDeliverFilter.data |
| | | await getDeliveryList() |
| | | orderInfo.searchDeliverFilter.list.forEach(item =>{ |
| | | xGrid.value.getColumnByField(item.field).filters = item.column.filters |
| | | }) |
| | | }) |
| | | |
| | | const getDeliveryList = async () => { |
| | | //加载请求 |
| | | const config = { |
| | | filter: filterData.value, |
| | | sort: sortData.value |
| | | } |
| | | await request.post(`/delivery/getSelectShippingOrder/1/${total.pageSize}/${orderInfo.selectDeliveryDate}`,config).then((res) => { |
| | | |
| | | if(res.code==200){ |
| | | total.dataTotal = res.data.total.total*1 |
| | | total.pageTotal= res.data.total.pageTotal |
| | | |
| | | orderInfo.selectDeliveryDate = res.data.selectDate |
| | | pageNum.value=1 |
| | | produceList = deepClone(res.data.data) |
| | | if(company.companyName=='洛阳北方玻璃技术股份有限公司'){ |
| | | xGrid.value.menuConfig.body.options[0][2].visible=true |
| | | xGrid.value.menuConfig.body.options[0][3].visible=true |
| | | xGrid.value.menuConfig.body.options[0][4].visible=true |
| | | xGrid.value.menuConfig.body.options[0][5].visible=true |
| | | } |
| | | xGrid.value.loadData(produceList) |
| | | gridOptions.loading=false |
| | | }else{ |
| | | ElMessage.warning(res.msg) |
| | | router.push("/login") |
| | | } |
| | | }) |
| | | } |
| | | |
| | | |
| | | |
| | | //定义当前页数 |
| | |
| | | }else{ |
| | | filterData.value[column.property] = value |
| | | } |
| | | request.post(`/delivery/getSelectShippingOrder/1/${total.pageSize}/${orderInfo.selectDeliveryDate}`,filterData.value).then((res) => { |
| | | |
| | | const config = { |
| | | filter: filterData.value, |
| | | sort: sortData.value |
| | | } |
| | | request.post(`/delivery/getSelectShippingOrder/1/${total.pageSize}/${orderInfo.selectDeliveryDate}`,config).then((res) => { |
| | | |
| | | if(res.code==200){ |
| | | total.dataTotal = res.data.total.total*1 |
| | |
| | | xGrid.value.menuConfig.body.options[0][2].visible=true |
| | | xGrid.value.menuConfig.body.options[0][3].visible=true |
| | | } |
| | | |
| | | orderInfo.searchDeliverFilter.list = xGrid.value.getCheckedFilters() |
| | | orderInfo.searchDeliverFilter.data = filterData.value |
| | | gridOptions.loading=false |
| | | }else{ |
| | | ElMessage.warning(res.msg) |
| | |
| | | |
| | | |
| | | const selectOrderList = ()=>{ |
| | | request.post(`/delivery/getSelectShippingOrder/${pageNum.value}/${total.pageSize}/${orderInfo.selectDeliveryDate}`,filterData.value).then((res) => { |
| | | const config = { |
| | | filter: filterData.value, |
| | | sort: sortData.value |
| | | } |
| | | request.post(`/delivery/getSelectShippingOrder/${pageNum.value}/${total.pageSize}/${orderInfo.selectDeliveryDate}`,config).then((res) => { |
| | | |
| | | if(res.code==200){ |
| | | if (res.data.total!=null){ |
| | |
| | | }, |
| | | cellClick({ row }){ |
| | | rowClickIndex.value = row |
| | | }, |
| | | sortChange ({ field, order }) { |
| | | sortData.value = {field,order} |
| | | selectOrderList() |
| | | } |
| | | } |
| | | |
| | |
| | | filterConfig: { //筛选配置项 |
| | | remote: true |
| | | }, |
| | | sortConfig: { //排序配置项 |
| | | remote: true//是否服务端排序 |
| | | }, |
| | | customConfig: { |
| | | storage: true |
| | | }, |
| | |
| | | //筛选条件,有外键需要先定义明细里面的数据 |
| | | let filterData = ref({ |
| | | |
| | | finishedGoodsInventory:{ |
| | | quantityAvailable:'', |
| | | |
| | | }, |
| | | customerId: null, // 新增 |
| | | project: null, // 新增 |
| | | excludeOrderIds: [] // 新增 |
| | | |
| | | }) |
| | | let selectDate = ref(["",""]) |
| | | |
| | |
| | | |
| | | |
| | | // 第一次调用,修改为带筛选条件 |
| | | const fetchOrders = () => { |
| | | // 新增:从props获取筛选条件 |
| | | if(props.customerId!==undefined){ |
| | | filterData.value.customerId = props.customerId |
| | | filterData.value.project = props.project |
| | | filterData.value.excludeOrderIds = props.excludeOrderIds |
| | | gridOptions.toolbarConfig.buttons[0].visible = false |
| | | }else{ |
| | | gridOptions.toolbarConfig.buttons[1].visible = false |
| | | } |
| | | const fetchOrders = async () => { |
| | | |
| | | request.post(`/delivery/getSelectOrderInventory/${pageNum.value}/${total.pageSize}/${orderInfo.selectOrderListDate}`, filterData.value).then((res) => { |
| | | await request.post(`/delivery/getSelectOrderInventory/${pageNum.value}/${total.pageSize}/${orderInfo.selectOrderListDate}`, filterData.value).then((res) => { |
| | | if(res.code==200){ |
| | | total.dataTotal = res.data.total.total*1 |
| | | total.pageTotal= res.data.total.pageTotal |
| | |
| | | } |
| | | |
| | | |
| | | onMounted(() => { |
| | | fetchOrders() |
| | | onMounted(async () => { |
| | | if (props.customerId !== undefined) { |
| | | filterData.value.customerId = props.customerId |
| | | filterData.value.project = props.project |
| | | filterData.value.excludeOrderIds = props.excludeOrderIds |
| | | gridOptions.toolbarConfig.buttons[0].visible = false |
| | | |
| | | await fetchOrders() |
| | | } else { |
| | | gridOptions.toolbarConfig.buttons[1].visible = false |
| | | filterData.value = orderInfo.searchOrderFilter.data |
| | | await fetchOrders() |
| | | orderInfo.searchOrderFilter.list.forEach(item => { |
| | | xGrid.value.getColumnByField(item.field).filters = item.column.filters |
| | | }) |
| | | } |
| | | |
| | | |
| | | }) |
| | | |
| | | const changeFilterEvent = (event, option, $panel,) => { |
| | |
| | | pageNum.value=1 |
| | | produceList = deepClone(res.data.data) |
| | | xGrid.value.loadData(produceList) |
| | | |
| | | //不是弹窗界面 |
| | | if(props.customerId===undefined){ |
| | | orderInfo.searchOrderFilter.list = xGrid.value.getCheckedFilters() |
| | | orderInfo.searchOrderFilter.data = filterData.value |
| | | } |
| | | |
| | | gridOptions.loading=false |
| | | }else{ |
| | | ElMessage.warning(res.msg) |
| | |
| | | {field: 'customerId',width:120, title: t('customer.customerNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'customerName',width:120, title: t('customer.customerName'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'quantity',width:120, title: t('order.quantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'finishedGoodsInventory.quantityAvailable',width:120, title: t('delivery.availableStock'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'finishedGoodsInventory.quantityAvailable',width:120, title: t('delivery.availableStock'), sortable: true}, |
| | | {field: 'project',width:120, title: t('order.project'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'batch',width:120, title: t('order.batch'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'money',width:120, title: t('order.money'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | |
| | | @ApiOperation("发货订单查询接口") |
| | | @SaCheckPermission("selectDelivery.search") |
| | | @PostMapping("/getSelectShippingOrder/{pageNum}/{pageSize}/{selectDate}") |
| | | public Result getSelectShippingOrder(@PathVariable Integer pageNum, @PathVariable Integer pageSize,@PathVariable List<String> selectDate, @RequestBody Delivery delivery) throws JsonProcessingException { |
| | | return Result.success(deliveryService.getSelectShippingOrder(pageNum,pageSize,selectDate,delivery)); |
| | | public Result getSelectShippingOrder(@PathVariable Integer pageNum, @PathVariable Integer pageSize,@PathVariable List<String> selectDate, @RequestBody Map<String,Object> config) throws JsonProcessingException { |
| | | return Result.success(deliveryService.getSelectShippingOrder(pageNum,pageSize,selectDate,config)); |
| | | } |
| | | |
| | | /*发货报表查询*/ |
| New file |
| | |
| | | package com.example.erp.dto.sd; |
| | | |
| | | import com.alibaba.excel.annotation.ExcelProperty; |
| | | import com.example.erp.entity.sd.Order; |
| | | import lombok.Data; |
| | | |
| | | import java.time.LocalDate; |
| | | |
| | | |
| | | @Data |
| | | public class DeliverySearchDTO { |
| | | @ExcelProperty("编号") |
| | | private Long id; |
| | | @ExcelProperty("发货状态") |
| | | private Integer deliveryState; |
| | | @ExcelProperty("出库状态") |
| | | private Integer stockState; |
| | | @ExcelProperty("付款条件") |
| | | private String paymentTerms; |
| | | @ExcelProperty("发货单号") |
| | | private String deliveryId; |
| | | @ExcelProperty("订单编号") |
| | | private String orderId; |
| | | @ExcelProperty("项目名称") |
| | | private String project; |
| | | @ExcelProperty("客户编号") |
| | | private String customerId; |
| | | @ExcelProperty("客户名称") |
| | | private String customerName; |
| | | @ExcelProperty("发货日期") |
| | | private LocalDate deliveryDate; |
| | | @ExcelProperty("支付方式") |
| | | private String payMethod; |
| | | @ExcelProperty("支付日期") |
| | | private LocalDate payDate; |
| | | @ExcelProperty("销售人id") |
| | | private String salesmanId; |
| | | @ExcelProperty("销售人") |
| | | private String salesman; |
| | | @ExcelProperty("创建人id") |
| | | private String creatorId; |
| | | @ExcelProperty("创建人") |
| | | private String creator; |
| | | @ExcelProperty("联系人") |
| | | private String contacts; |
| | | @ExcelProperty("联系电话") |
| | | private String contactNumber; |
| | | @ExcelProperty("送货地址") |
| | | private String deliveryAddress; |
| | | @ExcelProperty("面积") |
| | | private Double area; |
| | | @ExcelProperty("数量") |
| | | private Integer quantity; |
| | | @ExcelProperty("总金额") |
| | | private Double money; |
| | | @ExcelProperty("其他金额") |
| | | private Double otherMoney; |
| | | @ExcelProperty("运费金额") |
| | | private Double freight; |
| | | @ExcelProperty("运费数量") |
| | | private Integer freightQuantity; |
| | | @ExcelProperty("运费单价") |
| | | private Double freightPrice; |
| | | @ExcelProperty("打印次数") |
| | | private Integer printingNumber; |
| | | @ExcelProperty("备注") |
| | | private String remarks; |
| | | @ExcelProperty("创建时间") |
| | | private LocalDate createTime; |
| | | @ExcelProperty("修改时间") |
| | | private LocalDate updateTime; |
| | | |
| | | private Order order; |
| | | } |
| | |
| | | package com.example.erp.mapper.sd; |
| | | |
| | | import com.example.erp.dto.sd.DeliverySearchDTO; |
| | | import com.example.erp.entity.pp.FlowCard; |
| | | import com.example.erp.entity.sd.Delivery; |
| | | import com.example.erp.entity.sd.DeliveryDetail; |
| | |
| | | |
| | | List<Delivery> getSelectShippingOrder(@Param("offset") Integer offset, |
| | | @Param("pageSize") Integer pageSize,String startDate, String endDate, |
| | | @Param("delivery") Delivery delivery); |
| | | @Param("delivery") DeliverySearchDTO delivery,String field, String orderBy); |
| | | |
| | | Delivery getSelectShippingOrderDetailDelivery(@Param("offset") Integer offset, |
| | | @Param("pageSize") Integer pageSize, |
| | |
| | | Order getSelectShippingOrderDetailDeliverys(@Param("offset") Integer offset, |
| | | @Param("pageSize") Integer pageSize, |
| | | @Param("orderDetail") OrderDetail orderDetail); |
| | | Map<String,Integer> getSelectShippingOrderPageTotal(Integer offset, Integer pageSize, String startDate, String endDate, Delivery delivery); |
| | | Map<String,Integer> getSelectShippingOrderPageTotal(Integer offset, Integer pageSize, String startDate, String endDate, DeliverySearchDTO delivery); |
| | | |
| | | List<Order> getSelectOrderInventory(@Param("offset") Integer offset, |
| | | @Param("pageSize") Integer pageSize,String startDate, String endDate, |
| | |
| | | import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; |
| | | import com.example.erp.dto.sd.DeliveryDetailDTO; |
| | | import com.example.erp.dto.sd.DeliveryDetailProductDTO; |
| | | import com.example.erp.dto.sd.DeliverySearchDTO; |
| | | import com.example.erp.dto.sd.OrderSearchDTO; |
| | | import com.example.erp.entity.mm.FinishedOperateLog; |
| | | import com.example.erp.entity.sd.*; |
| | | import com.example.erp.entity.userInfo.Log; |
| | |
| | | FinishedGoodsInventoryService finishedGoodsInventoryService; |
| | | |
| | | |
| | | public Map<String, Object> getSelectShippingOrder(Integer pageNum, Integer pageSize,List<String> selectDate, Delivery delivery) throws JsonProcessingException { |
| | | public Map<String, Object> getSelectShippingOrder(Integer pageNum, Integer pageSize,List<String> selectDate, Map<String,Object> config) throws JsonProcessingException { |
| | | Integer offset = (pageNum - 1) * pageSize; |
| | | String endDate = LocalDate.now().toString(); |
| | | String startDate = LocalDate.now().minusDays(15).toString(); |
| | |
| | | endDate = selectDate.get(1); |
| | | } |
| | | } |
| | | JSONObject orderJson = new JSONObject(config); |
| | | DeliverySearchDTO delivery = JSONObject.parseObject(JSONObject.toJSONString(orderJson.get("filter")), DeliverySearchDTO.class); |
| | | Map<String,String> sortDate = (Map<String, String>) config.get("sort"); |
| | | String field = sortDate.get("field").replaceAll("(?<!^)([A-Z])", "_$1").toLowerCase(); |
| | | String orderBy = sortDate.get("order"); |
| | | |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("data", deliveryMapper.getSelectShippingOrder(offset, pageSize,startDate,endDate, delivery)); |
| | | map.put("data", deliveryMapper.getSelectShippingOrder(offset, pageSize,startDate,endDate, delivery,field, orderBy)); |
| | | map.put("total", deliveryMapper.getSelectShippingOrderPageTotal(offset, pageSize,startDate,endDate, delivery)); |
| | | List<String> list = new ArrayList<>(); |
| | | list.add(startDate); |
| | |
| | | <if test="order.createTime != null and order.createTime != ''"> |
| | | and o.create_time REGEXP #{order.createTime} |
| | | </if> |
| | | <if test="order.finishedGoodsInventory.quantityAvailable != null and order.finishedGoodsInventory.quantityAvailable != ''"> |
| | | and fgi.quantity_available REGEXP #{order.finishedGoodsInventory.quantityAvailable} |
| | | </if> |
| | | </where> |
| | | group by o.order_id order by o.id desc |
| | | limit #{offset},#{pageSize}; |
| | |
| | | </if> |
| | | <if test="order.createTime != null and order.createTime != ''"> |
| | | and o.create_time REGEXP #{order.createTime} |
| | | </if> |
| | | <if test="order.finishedGoodsInventory.quantityAvailable != null and order.finishedGoodsInventory.quantityAvailable != ''"> |
| | | and fgi.quantity_available REGEXP #{order.finishedGoodsInventory.quantityAvailable} |
| | | </if> |
| | | </where> |
| | | group by o.order_id limit #{offset},#{pageSize}) as zu; |
| | |
| | | |
| | | </where> |
| | | group by d.delivery_id |
| | | order by d.id desc |
| | | order by |
| | | <if test="orderBy == null "> |
| | | d.id desc |
| | | </if> |
| | | <if test="orderBy == 'desc'"> |
| | | d.${field} desc |
| | | </if> |
| | | <if test="orderBy == 'asc'"> |
| | | d.${field} |
| | | </if> |
| | | limit #{offset},#{pageSize}; |
| | | </select> |
| | | |